Greasemonkey: ๋ฐฑ์—…/๋ณต์› ์ถ”๊ฐ€

์— ๋งŒ๋“  2017๋…„ 12์›” 05์ผ  ยท  29์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: greasemonkey/greasemonkey

์ด์ „ ๊ทธ๋ฆฌ์Šค๋ชฝํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํฌ๋ฆฝํŠธ/๊ธฐ๋ณธ ์„ค์ • ๋‚ด๋ณด๋‚ด๊ธฐ ๊ธฐ๋Šฅ์ด ์‹ค์ œ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ gm_scripts ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ•œ ํ”„๋กœํ•„/์ปดํ“จํ„ฐ์—์„œ ๋‹ค๋ฅธ ํ”„๋กœํ•„/์ปดํ“จํ„ฐ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์ œ๋Š” ๋” ์ด์ƒ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ๊ทธ๋ฆฌ์Šค๋ชฝํ‚ค 4์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ๋ฏธ๋ž˜์—.

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

๊ทธ๋ž˜์„œ ์„ธ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ณ‘ํ•ฉ ์„ค์น˜๋œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ์ง€์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ํ˜„์žฌ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์Šคํฌ๋ฆฝํŠธ[1]๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  2. ๋ฐ”๊พธ๋‹ค. ํ˜„์žฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•˜๊ณ  ๊ฐ€์ ธ์˜จ ์Šคํฌ๋ฆฝํŠธ๋กœ ๊ต์ฒดํ•˜์‹ญ์‹œ์˜ค.
  3. ๋ฎ์–ด์“ฐ๊ธฐ ๋ณ‘ํ•ฉ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ์ถฉ๋Œ์ด ๋ฐœ๊ฒฌ๋˜๋ฉด[1] ๊ฐ€์ ธ์˜ค๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ œ์ถœํ•˜๊ธฐ ์ „์— ๋‹ค๋ฅธ PR์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

[1] ์Šคํฌ๋ฆฝํŠธ์˜ id ๊ณ ์œ ์„ฑ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

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

๊ธ€์Ž„, Firefox์™€ ๊ทธ ๋ฌธ์ œ. ๊ทธ๋ž˜์„œ ์ €๋Š” ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(๋ฌผ๋ก  '๊ฐ€์ ธ์˜ค๊ธฐ' ๊ธฐ๋Šฅ๋„ ํฌํ•จ). ๊ฑฐ์˜ ๋‹ค ๋๋‚ฌ์ง€๋งŒ, ์‡ผ ์Šคํ† ํผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. browser toolbox ๋ฅผ ์—ด๊ณ  "ํŒ์—… ์ž๋™ ๋‹ซ๊ธฐ ์•ˆ ํ•จ"์„ ์„ ํƒํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ ธ์˜ค๊ธฐ๋Š” <input type="file"> (์œ ์ผํ•œ ๋ฐฉ๋ฒ•)๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰๋˜์ง€๋งŒ ์ฐพ์•„๋ณด๊ธฐ ์ฐฝ์— ํฌ์ปค์Šค๊ฐ€ ์žˆ์œผ๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ํŒ์—…์ด ๋‹ซํžˆ๋ฏ€๋กœ ์ฐฝ์ด ํŒŒ๊ดด๋˜๊ณ  ๊ธฐ๋Šฅ์ด ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๋ฒ„๊ทธ:
https://bugzilla.mozilla.org/show_bug.cgi?id=1292701
https://bugzilla.mozilla.org/show_bug.cgi?id=1366330

์ผํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด ๋„ˆ๋ฌด ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ #2612์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

@Sxderp ํŒ์—… ๋‹ซ๊ธฐ๊ฐ€

ํ•  ์ˆ˜ ์žˆ์–ด์š”. ๊ทธ๊ฒƒ์€ ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋‹ค๋ฅธ ์‹œ๊ฐ„์— ์กฐ์‚ฌํ•  ๊ฒƒ์ด๋‹ค.

๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ ์ž‘์—…์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๊ฐ€ ์—†๊ณ  ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹จ์ˆœํ™”๋ฅผ ์œ„ํ•ด ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฎ์–ด์“ฐ๋„๋ก ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ™•์ธ ํ”„๋กฌํ”„ํŠธ์™€ ํ•จ๊ป˜.

์ด์ƒ์ ์œผ๋กœ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ๊ต์ฒดํ•˜๊ฑฐ๋‚˜ ๋ณ‘ํ•ฉํ•˜๋„๋ก ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ€์ผ๋Ÿฌ์Šค๋Š” ๋ณ‘ํ•ฉ๋งŒ ํ•˜๋ฉฐ ์ด๋Š” IME๋„ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ๊ฐ’๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ์ž ์„ ํƒ์ด ๊ฐ€์žฅ ์ข‹์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก , ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์กฐ๊ฑด๋ฌธ์— ๋ถ€๋”ชํž™๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉ์˜ _์ •ํ™•ํ•œ_ ํŠน์„ฑ์— ๋Œ€ํ•œ ์ผ์ข…์˜ ํ๋ฆ„๋„๋ฅผ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„ ๊ฐˆ๋“ฑ์˜ ์ธก๋ฉด์—์„œ. ์ฝ˜ํ…์ธ  ๋ฎ์–ด์“ฐ๊ธฐ, ํ‚ค/๊ฐ’ ๋ฎ์–ด์“ฐ๊ธฐ(์˜ˆ, ๋‚ด๋ณด๋‚ด๊ธฐ๋„ ํ•จ), ๋ชจ๋“  ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ํ”„๋กฌํ”„ํŠธ(๋‚˜์œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ฒ˜๋Ÿผ ๋ณด์ž„) ๋“ฑ?

๋‚ด ๋ง์€: ํŒŒ์ผ์˜ ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ (ํ•ด๋‹น ์ƒํƒœ๋กœ ์™„์ „ํžˆ ๋ฎ์–ด์”๋‹ˆ๋‹ค), ํŒŒ์ผ์— ์—†๋Š” ์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฑด๋“œ๋ฆฌ๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์˜ค. ํ›จ์”ฌ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ์ข‹์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์„ธ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ณ‘ํ•ฉ ์„ค์น˜๋œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ์ง€์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ํ˜„์žฌ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์Šคํฌ๋ฆฝํŠธ[1]๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  2. ๋ฐ”๊พธ๋‹ค. ํ˜„์žฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•˜๊ณ  ๊ฐ€์ ธ์˜จ ์Šคํฌ๋ฆฝํŠธ๋กœ ๊ต์ฒดํ•˜์‹ญ์‹œ์˜ค.
  3. ๋ฎ์–ด์“ฐ๊ธฐ ๋ณ‘ํ•ฉ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ์ถฉ๋Œ์ด ๋ฐœ๊ฒฌ๋˜๋ฉด[1] ๊ฐ€์ ธ์˜ค๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ œ์ถœํ•˜๊ธฐ ์ „์— ๋‹ค๋ฅธ PR์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

[1] ์Šคํฌ๋ฆฝํŠธ์˜ id ๊ณ ์œ ์„ฑ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

  1. ์—…๋ฐ์ดํŠธ. ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ(๋ฎ์–ด์“ฐ๊ธฐ)ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ 1์„ ๋ณด์™„ํ•ฉ๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉ

  1. ๋ฎ์–ด์“ฐ๊ธฐ ๋ณ‘ํ•ฉ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ์ถฉ๋Œ์ด ๋ฐœ๊ฒฌ๋˜๋ฉด[1] ๊ฐ€์ ธ์˜ค๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

@Sxderp "Like merge"์—๋Š” "ํ˜„์žฌ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์Šคํฌ๋ฆฝํŠธ๋งŒ" ์ œ์•ฝ ์กฐ๊ฑด์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค...
(์ด ์ œ์•ฝ ์กฐ๊ฑด์€ ์—ฌ๊ธฐ์—์„œ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.) ์ฆ‰, ๋ฎ์–ด์“ฐ๊ธฐ = ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ, ์ถฉ๋Œํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋Š” ์•„์นด์ด๋ธŒ๋กœ ๋ฎ์–ด์”๋‹ˆ๋‹ค...

๋‹ค์Œ ์ค‘ VM, TM ๋˜๋Š” ๊ธฐํƒ€์—์„œ ์ œ๊ณตํ•˜๋Š”(์—…๋ฐ์ดํŠธ/๋ณ‘ํ•ฉ/๋“ฑ) ์˜ต์…˜์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

  1. ์—…๋ฐ์ดํŠธ. ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ(๋ฎ์–ด์“ฐ๊ธฐ)ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ๋ฎ์–ด์“ฐ๊ธฐ = ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ, ์ถฉ๋Œํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋Š” ์•„์นด์ด๋ธŒ๋กœ ๋ฎ์–ด์”๋‹ˆ๋‹ค...

์˜ณ์€.

๋‹ค์Œ ์ค‘ VM, TM ๋˜๋Š” ๊ธฐํƒ€์—์„œ ์ œ๊ณตํ•˜๋Š”(์—…๋ฐ์ดํŠธ/๋ณ‘ํ•ฉ/๋“ฑ) ์˜ต์…˜์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋‚˜์˜ ๋˜ ๋‹ค๋ฅธ ๊ฑฑ์ •๊ฑฐ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์ผ์œผ์ผฐ๋‹ค. ์•„์นด์ด๋ธŒ์™€์˜ ํ˜ธํ™˜์„ฑ. ์ด๋Ÿฌํ•œ ์• ๋“œ์˜จ์ด ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด๋ณด๋‚ด๊ธฐ(์Šคํฌ๋ฆฝํŠธ + ๋ฐ์ดํ„ฐ)๋ฅผ ์ง€์›ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์ด์ƒ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๋Š” ์„œ๋กœ ํ˜ธํ™˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ. ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ(๋ฎ์–ด์“ฐ๊ธฐ)ํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ ์ƒ๊ฐํ•ด๋ณด๋ฉด(์•ฝ 3๋ถ„ ์ •๋„) ๊ฑฑ์ •๊ฑฐ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๋ฐ์ดํ„ฐ(get/setValue)๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ํ˜„์žฌ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์šฐ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์ผ์ข…์˜ ๋ณ‘ํ•ฉ? ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ์˜ต์…˜/์ƒํƒœ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ์ฒ˜์Œ ๋ณด๋Š” ๊ฒƒ๋ณด๋‹ค ์กฐ๊ธˆ ๋” ๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ๋น ๋ฅธ ํ™•์ธ์„ ์ˆ˜ํ–‰ํ–ˆ์ง€๋งŒ ์ด๊ฒƒ์€ 100% ์ฒ ์ €ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ ๊ฐœ์š”์™€ ๊ตฌํ˜„๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ์‚ฌํ•ญ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

VM๊ณผ TM์€ ๋ชจ๋‘ zip ํŒŒ์ผ๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค. zip ํŒŒ์ผ ๋‚ด์—์„œ ๊ฐ ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ .user.js ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ €์žฅ/๊ตฌํ˜„ ๊ด€๋ จ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ ๋‘˜ ๋‹ค ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. VM์€ ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ตฌํ˜„ ๊ด€๋ จ ์„ธ๋ถ€ ์ •๋ณด ๋ฐ ์Šคํฌ๋ฆฝํŠธ ๋ฐ์ดํ„ฐ๋ฅผ violentmonkey ๋‹จ์ผ ํŒŒ์ผ๋กœ ๋ž˜ํ•‘ํ•ฉ๋‹ˆ๋‹ค. TM์€ ์ด๊ฒƒ์„ ์ข€ ๋” ํ•ฉ๋ฆฌ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ๊ตฌํ˜„ ๊ด€๋ จ ์„ธ๋ถ€ ์ •๋ณด๋Š” .options.js ํŒŒ์ผ๋กœ ๋‚ด๋ณด๋‚ด์ง€๊ณ  ์Šคํฌ๋ฆฝํŠธ ๋ฐ์ดํ„ฐ๋Š” .storage.json ๋‚ด๋ณด๋‚ด์ง‘๋‹ˆ๋‹ค.

๋‚˜๋Š” TM์„ ๋”ฐ๋ฅด๊ธฐ ์œ„ํ•ด ๊ตฌํ˜„์„ ๋‹ค์‹œ ์ž‘์—…ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๋ฐ์ดํ„ฐ์™€ ๋ถ„๋ฆฌํ•˜๋ฏ€๋กœ ๋” ๋‚˜์€ ํ‘œ์ค€์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

'๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐฉ๋ฒ•'(์œ„์˜ ๋‚ด ๊ฒŒ์‹œ๋ฌผ์— ์„ค๋ช…๋จ):

TM์€ '๊ฐ ์Šคํฌ๋ฆฝํŠธ ์„ ํƒ' ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์•„์นด์ด๋ธŒ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ๊ฐ ํŠน์ • ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฐ€์ ธ์˜ฌ์ง€ ์—ฌ๋ถ€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ฒดํฌํ•˜๋ฉด ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

VM์€ ์œ„์—์„œ ์„ค๋ช…ํ•œ '๋ฎ์–ด์“ฐ๊ธฐ'๋งŒ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฐ๊ฒฐ๋œ ์Šคํฌ๋ฆฝํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค(๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•ด ์ „์—ญ). UI ๊ด€์ ์—์„œ GM์—์„œ ํ•ด๋‹น ์˜ต์…˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ค์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด๋ณด๋‚ด๊ธฐ/๊ฐ€์ ธ์˜ค๊ธฐ์— TM ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ์•„์นด์ด๋ธŒ๋ฅผ ์—ด๊ณ  .storage.json ํŒŒ์ผ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ์ด์ „์— ๋…ผ์˜ํ•œ .zip ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๋„๋ก sxderp:import-export-database-merge ๋ถ„๊ธฐ๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. @Eselce๊ฐ€ ์ œ์•ˆํ•œ update ์˜ต์…˜์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„์ง ์„ธ๋ถ€ ์‚ฌํ•ญ์ด ํ™•์‹คํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@Sxderp ์ด ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  Firefox ๊ฐœ๋ฐœ์ž ์—๋””์…˜์— ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค(์„œ๋ช…๋˜์ง€ ์•Š์€ ํ™•์žฅ ์„ค์น˜๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด). ํ•ด๋‹น ๋ธŒ๋ผ์šฐ์ € ๋ฒ„์ „์œผ๋กœ ๊ธฐ์กด ํ”„๋กœํ•„์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ๊ธฐ์กด GreaseMonkey ์„ค์น˜๋ฅผ ๋ฎ์–ด์“ฐ๊ณ  ๋ฌธ์ œ ์—†์ด ๋‚ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‚ด๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.

์ด GreaseMonkey๊ฐ€ ์„ค์น˜๋œ ์ƒˆ Firefox ํ”„๋กœํ•„์„ ๊ฐ€์ ธ์˜ค๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฝค ํฐ ํ•˜๋‚˜์˜ ํŠน์ • ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ(user.js ๋ฐ gm_details.js ๋ชจ๋‘ ์•ฝ 230K์ž„)๊ฐ€ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ต์ฒดํ•œ ํ›„ GM์ด ์ž‘๋™์„ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค. GM ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๋ฉด ๋นˆ ๋“œ๋กญ๋‹ค์šด(์•ฝ 10x10 ์ •์‚ฌ๊ฐํ˜•)์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค.

ํŠน์ • ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ณต๊ฐœ์ ์œผ๋กœ ๊ณต์œ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ท€ํ•˜์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ฐพ์•˜์œผ๋ฉฐ ๊ทธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘: GM์ด ์ค‘๋‹จ๋œ ํ›„ ์ž‘๋™ํ•˜๊ฒŒ ํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ํ™•์žฅ์„ ์ œ๊ฑฐํ•˜๊ณ  Firefox๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ๋‹ค์Œ ๋‹ค์‹œ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

GMExport_20180 2 17_164139.zip ???

๋ถˆ๋งŒ ์—†์ด 3.4MB zip ํŒŒ์ผ์—์„œ (๋ถ€๋ถ„์ ์œผ๋กœ) ํฐ ์Šคํฌ๋ฆฝํŠธ ์ „์ฒด(> 20)๋ฅผ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๊ฒ€์‚ฌ๋Š” ์—†์ง€๋งŒ...

  return 'GMexport_'
       + date.getFullYear().toString()
       + date.getMonth().toString().padStart(2, '0')
       + date.getDate().toString().padStart(2, '0')
       + '_'
       + date.getHours().toString().padStart(2, '0')
       + date.getMinutes().toString().padStart(2, '0')
       + date.getSeconds().toString().padStart(2, '0')
       + '.zip'

IIRC, getMonth() ๋Š” 0์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค... ; ๋ˆ„๋ฝ...

IIRC, getMonth()๋Š” 0์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค... ; ์—†์–ด์ง„...

์ฐข๋‹ค

๋‚˜๋Š” ํ•œ๋™์•ˆ ์ด ์ง€์ ์—์„œ ์ผํ•˜์ง€ ์•Š์•˜๋‹ค. ๋‚˜๋Š” ์˜ค๋Š˜์„ ๊ฐ€์ง€๊ณ  master์— rebaseํ•˜๊ณ  ๋งŽ์€ ์ •๋ฆฌ๋ฅผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” master์— ๋‚ด ๋ธŒ๋žœ์น˜๋ฅผ ๋‹ค์‹œ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ๋” ๋‚˜์€ ๊ฐ€๋…์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ์— ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ์„ ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
@ArmEagle ์—…๋ฐ์ดํŠธ๋œ ์ง€์ ์—์„œ ๋ณด๋‚ด์ฃผ์‹  ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

7fe8bfe94efbadb1da1a6491aaf424fc8275f09 ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณธ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ์ถ”์ /ํ† ๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ์—ฝ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ณธ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ์ถ”์ /ํ† ๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ์—ฝ๋‹ˆ๋‹ค.

์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‚˜์š”?

์ผํšŒ์„ฑ ๋น ๋ฅธ ํ…Œ์ŠคํŠธ์˜€์Šต๋‹ˆ๋‹ค. ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ค์น˜ํ•ด์•ผ ํ•  ์Šคํฌ๋ฆฝํŠธ์˜ ์ผ๋ถ€๊ฐ€ ๋‚˜์—ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ฐ˜๋ณตํ•˜๊ณ ์ฃผ์˜ ๊นŠ๊ฒŒ ์ถ”์ ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋งˆ์นจ๋‚ด ์ด๊ฒƒ์„ ์กฐ๊ธˆ ์กฐ์‚ฌํ–ˆ๋‹ค.

.user.js ๋ฐ "์„ธ๋ถ€ ์ •๋ณด"๋งŒ ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์—ฐํžˆ ํ•„์š”ํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ํฌํ•จํ•˜์ง€๋งŒ ๋ฆฌ์†Œ์Šค๋ฅผ ๋†“์น˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(Blob์„ {} ๋กœ ์ง๋ ฌํ™”ํ•˜๋Š” JSON). AFAICT ๋น„์–ด ์žˆ๊ฑฐ๋‚˜ ๊นจ์ง„ ์–ผ๋ฃฉ์ด ์žˆ๋Š” .setKnownResources() ์ด๋ฏ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ์— ์ž์ฒด ํด๋”๊ฐ€ ์žˆ๊ณ  ํ•ด๋‹น ํด๋”์— ๊ธฐ๋ณธ .user.js , ๊ฐ @require ๋ฐ @resource ๋Œ€ํ•œ ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ๋‚˜๋จธ์ง€๋Š” ๊ตฌ๋ฌธ ๋ถ„์„๋œ/ ์‚ฌ์šฉ์ž ์ง€์ • ์„ธ๋ถ€ ์ •๋ณด ๋ฐ ์ €์žฅ๋œ ๊ฐ’. ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ˜ธํ™˜์„ฑ์„ ํฌ๊ธฐํ•  ์ •๋„๋กœ ์ด๊ฒƒ์ด ํ›จ์”ฌ ๋” ๋‚˜์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ „์ ์œผ๋กœ ๋™์˜ ํ•œ. ๋ฌธ์„œ๋ฅผ "์›น ํŽ˜์ด์ง€๋กœ" ์ €์žฅํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ htm -document์™€ ์ข…์†์„ฑ์ด ์žˆ๋Š” ๋™์ผํ•œ(๊ธฐ๋ณธ) ์ด๋ฆ„์˜ ํด๋”๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค...

์‹ค์ˆ˜๋กœ ํ•„์š”ํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ํฌํ•จํ•˜๋Š” ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค ...

์šฐ์—ฐ์ด ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐœ์ƒํ–ˆ์„ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋กœ์ปฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์˜๋„์ ์œผ๋กœ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋ฅผ '๊ตฌํ˜„ ์„ธ๋ถ€ ์ •๋ณด'๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ๋”ฐ๋ผ์„œ '์„ธ๋ถ€ ์ •๋ณด'๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค. TM์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‚ด๋ณด๋‚ด์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค / ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฆฌ์†Œ์Šค๋ฅผ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(Blob์„ {}๋กœ ์ง๋ ฌํ™”ํ•˜๋Š” JSON). AFAICT๋Š” ๋น„์–ด ์žˆ๊ฑฐ๋‚˜ ๊นจ์ง„ ์–ผ๋ฃฉ์ด ์žˆ๋Š” .setKnownResources() ์ด๋ฏ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์–ผ๋ฃฉ์ด ๋ฉ‹์ง€๊ฒŒ ๋ฌธ์ž์—ดํ™”๋˜๋Š”์ง€ ์•Œ์•„๋‚ด๋Š” TODO๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ PR์„ ์ œ์ถœํ•˜๊ธฐ ์ „์— ๊ธฐ์ˆ ์ ์œผ๋กœ ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹น๋ถ„๊ฐ„ Blob ๋ฌธ์ œ๋Š” #2937๋กœ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—… ์•„์นด์ด๋ธŒ์— ๋” ๋งŽ์€ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ชจ๋“  ์ด์ ์„ ์ œ๊ณตํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค ๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ ๋ฐ ๊ธฐํƒ€ ์‚ฌํ•ญ์„ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ๋ณด๊ด€ํ•˜๋Š” ๊ฒƒ์€ ์ถ”์ถœํ•  ๋•Œ ๋ณด๊ธฐ ์ข‹๊ฒŒ_ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ„๋‹จํ•œ ๋คํ”„๊ฐ€ ์•„๋‹Œ ๋งŽ์€ ์ž‘์€ ๊ฒƒ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๊ฐ€ ๋” ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ 4.4์˜ "ํฐ ๊ธฐ๋Šฅ"์ด๋ฏ€๋กœ ์ด ๊ธฐ๋Šฅ์„ ๊ณง ์™„๋ฃŒ/๊ฐœ์„ ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์ƒ๊ฐ, ์ด๊ฒƒ์€ ๊ธฐ๋Šฅ์ ์ž…๋‹ˆ๋‹ค. ์ถ”์ ํ•˜๊ณ  ์‹ถ์€ ๋ช‡ ๊ฐ€์ง€ ๊ฐœ์„  ์‚ฌํ•ญ์ด ์žˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋Œ€์ƒ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๊ฐ๊ฐ์˜ ๋ฌธ์ œ๋Š” ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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