Etherpad-lite: *๋ผ๋Š” ํŒจ๋“œ๋ฅผ ๋‚ด ๋ณด๋‚ด๋ฉด ์‘๋‹ตํ•˜์ง€ ์•Š๋Š” etherpad ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 04์›” 15์ผ  ยท  13์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ether/etherpad-lite

*๋ผ๋Š” ํŒจ๋“œ๋Š” ๋‚ด๋ณด๋‚ด๊ธฐ์‹œ CPU ์‚ฌ์šฉ๋Ÿ‰์„ 100 %๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

etherpad ๋‚ด๋ณด๋‚ด๊ธฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ƒ๊ฐ ์—” *๋Š” ๋ชจ๋“  ํŒจ๋“œ ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•˜๊ณ  ์ „์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ๋‚ด๋ณด๋‚ด๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
"foobar"๋ผ๋Š” ์ด๋ฆ„์˜ ๋งŽ์€ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊ฐ€์ง„ ํŒจ๋“œ๋กœ ์ธ์Šคํ„ด์Šค์—์„œ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  "foo *"๋ผ๋Š” ์ƒˆ๋กœ ์ƒ์„ฑ ๋œ ํŒจ๋“œ๋ฅผ ๋‚ด๋ณด๋‚ด๋ ค๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. foobaz ๋ฐ foofoo์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ํŒจ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

foo * ์šฉ์œผ๋กœ ๋‚ด ๋ณด๋‚ธ ํŒŒ์ผ์ด foobar ์šฉ์œผ๋กœ ๋‚ด ๋ณด๋‚ธ ํŒŒ์ผ๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค.

Serious Bug

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ชฝ์œผ๋กœ? ์ด๊ฒƒ์€ ์‹ฌ๊ฐํ•œ ๊ธฐ๋ฐ€ ์œ ์ง€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  13 ๋Œ“๊ธ€

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ https://github.com/ether/etherpad-lite/tree/fix/export-wildcards . ๊ณผ๊ฑฐ์—๋Š” https://github.com/ether/etherpad-lite/commit/a0fb65205c7d7ff95f00eb9fd88e93b300f30c3d ์ด์ „์— ์ ‘๋‘์‚ฌ๋ฅผ ์ง€์ •ํ•˜๊ณ  ํ•ด๋‹น ์ ‘๋‘์‚ฌ์™€ ์ผ์น˜ํ•˜๋Š” ํŒจ๋“œ๋ฅผ ๋‚ด๋ณด๋‚ผ ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฒ„๊ทธ๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•˜๋ ค๋ฉด ๋ˆ„๊ตฐ๊ฐ€ ueberdb์˜ query-builder ๋ถ€๋ถ„์„ ์ดํ•ดํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

SQL ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ex. ___๋Š” 3 ์ž ์ด๋ฆ„์˜ ๋ชจ๋“  ํŒจ๋“œ๋ฅผ ๋‚ด ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๋ณด๋‹ค:
https://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html
https://github.com/Pita/ueberDB/blob/5c2ef4dc1476ef24bc475885817816c3e602ec8b/mysql_db.js

ueberdb๊ฐ€ ํ‚ค๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ ํ•  ์ž‘์—… (* ๋ฐ %๋Š” ํŒจ์น˜ ๋œ etherpad์—์„œ ํ•„ํ„ฐ๋ง๋˜์ง€๋งŒ _๋Š” ํŠน์ˆ˜ ๋ฌธ์ž์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค) :
SELECT key FROM store key LIKE?

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ueberdb๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—”๋“œ๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋„ ํ™•์ธํ•ด์•ผํ• ๊นŒ์š”?

๋˜ํ•œ ํŒจ๋“œ ์ด๋ฆ„์˜ ๋ฌธ์ž๋ฅผ ์ง€์›ํ•˜๊ณ  ํ•„ํ„ฐ๋งํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— ์ด์Šค์ผ€์ดํ”„ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚ด์ผ ์ด๊ฒƒ์„ ์กฐ์‚ฌ ํ•  ๊ฒƒ์ด๋‹ค.

์ ์–ด๋„ sqlite์™€ postgresql์—๋Š” ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•ด ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ค์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ...
mysql, postgresql, sqlite ๋ฐ crate๋Š” % ๋ฐ _๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
cassandra, couch, rethink, mongo, dirty, redis๋Š” ์•„๋งˆ๋„ PCRE ์Šคํƒ€์ผ ์ •๊ทœ์‹์„ ์ง€์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

leveldb ๋ฐ lmdb๋Š” findKeys๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ชฝ์œผ๋กœ? ์ด๊ฒƒ์€ ์‹ฌ๊ฐํ•œ ๊ธฐ๋ฐ€ ์œ ์ง€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

FWIW, ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ํŠน์ • ์ด์œ ๋กœ etherpad ๋‚ด๋ณด๋‚ด๊ธฐ ๋์ ์„ ๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ฝ์œผ๋ฉด์„œ etherpad ๋‚ด๋ณด๋‚ด๊ธฐ ๋ ์ ์ด ์˜ˆ๋ฅผ ๋“ค์–ด txt ๋์ ์ฒ˜๋Ÿผ padmanager๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  db ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ์ด ์‹œ์ ๋ถ€ํ„ฐ ethepad์˜ ๋‚ด๋ถ€์— ๋Œ€ํ•œ ์ง€์‹์ด 0 ๊ฐœ์ž„์„ ์ธ์ •ํ•˜์ง€๋งŒ export txt ์—”๋“œ ํฌ์ธํŠธ์—๋Š”์ด ๋ฌธ์ œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— DB ์ˆ˜์ค€์—์„œ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋Œ€์‹  padmanager๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก etherpad ์—”๋“œ ํฌ์ธํŠธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”,
์ด ๋ฒ„๊ทธ์˜ ์ƒํƒœ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๋Š” https://github.com/Pita/ueberDB ์—์„œ๋„ ์ƒ์„ฑ๋˜์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค

์ด ๋ฌธ์ œ๋Š” ๋…ธ๋“œ ํฌ๋ž˜์‹œ (์ฟผ๋ฆฌ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ํ•ญ๋ชฉ๊ณผ ์ผ์น˜ ํ•  ๋•Œ ๋ฐœ์ƒ ํ•จ)๊ฐ€ ์•„๋‹ˆ๋ผ ํŒจ๋“œ์˜ ์ด๋ฆ„์„ ๋ชฐ๋ผ๋„ ์ด๋” ํŒจ๋“œ ์„œ๋ฒ„์˜ ์ „์ฒด ๋‚ด์šฉ์„ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ œ ์ƒ๊ฐ์—๋Š” ueberDB์—์„œ ์ˆ˜์ • ๋  ๋•Œ๊นŒ์ง€ ๋ชจ๋“  sql LIKE ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋” ์ด์ƒ findKeys ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— https://github.com/ether/etherpad-lite/commit/806c9207e365304ef0f3130d7d3ec59f362f8f9d ์—์„œ ์ˆ˜์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ™•์ธ ํ• ์ˆ˜ ์žˆ์–ด์š”?

์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ™์€ ๋ฌธ์ œ์ง€๋งŒ ์กฐ๊ธˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค

ํŒจ๋“œ๋ฅผ ์—ด ์ž๋งˆ์ž ๋…ธ๋“œ๋Š” 100 % CPU ์‚ฌ์šฉ๋Ÿ‰์„ ๋งค์šฐ ํƒ์š•์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. koi do ????

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰