Electron: Electron์œผ๋กœ ์•ฑ์„ ๋นŒ๋“œํ•˜๋ฉด ์†Œ์Šค๊ฐ€ ์ •๋ง ๋ณดํ˜ธ๋˜๋‚˜์š”?

์— ๋งŒ๋“  2015๋…„ 08์›” 24์ผ  ยท  66์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: electron/electron

์–˜๋“ค ์•„,

์ด๊ฒƒ์€ ์™„์ „ํžˆ ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ถ๊ธˆํ–ˆ๋‹ค. Electron์œผ๋กœ ๋นŒ๋“œ๋œ ์•ฑ์ด ์†Œ์Šค๋ฅผ ๋ณดํ˜ธํ•ฉ๋‹ˆ๊นŒ? JxCore๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์†Œ์Šค๋ฅผ ๋ณดํ˜ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ „์ž๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

๊ฑด๋ฐฐ

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

์ด๊ฒƒ์— ์ •๋ง ๊ด€์‹ฌ์ด ์žˆ์–ด์„œ @craftpip ๊ธฐ์‚ฌ๋„ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œ

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

์•„๋‹ˆ์š”, asar ์•„์นด์ด๋ธŒ์— ํŒจํ‚ค์ง•ํ•œ ๊ฒฝ์šฐ์—๋„ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์–ป๋Š” ๊ฒƒ์€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. V8 JavaScript ์—”์ง„์€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ˆจ๊ธฐ๋„๋ก ์„ค๊ณ„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. NW.js๋Š” ์†Œ์Šค ์ฝ”๋“œ์˜ ํ•œ ํŒŒ์ผ์„ ์™„์ „ํžˆ ์ˆจ๊ธฐ๋Š” ๋ฐ ์„ฑ๊ณตํ•˜์ง€๋งŒ ์ƒ๋‹นํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ •๋ง๋กœ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๋ ค๋ฉด C++๋กœ ์ž‘์„ฑํ•˜๊ณ  ๋„ค์ดํ‹ฐ๋ธŒ Node ๋ชจ๋“ˆ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์ง€๋งŒ ์ œ๊ณตํ•˜๋Š” ๋ณดํ˜ธ ์ˆ˜์ค€์€ @zcbenz๊ฐ€ ์–ธ๊ธ‰ํ•œ ์ด์œ ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

  • C++ ๋…ธ๋“œ ์• ๋“œ์˜จ์—์„œ ์ž์ฒด์ ์œผ๋กœ ์ผ๋ถ€ ์•”ํ˜ธ ํ•ด๋… ๋…ผ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ํ”„๋กœ๊ทธ๋žจ์„ ๋””๋ฒ„๊ทธํ•˜๊ณ  ์•”ํ˜ธ ํ•ด๋… ํ›„ ํ‰๊ฐ€ ์ „์— ์†Œ์Šค ๋ณต์‚ฌ).
  • ๋„ ์žˆ์Šต๋‹ˆ๋‹ค EncloseJS ์€ ์ „์ž ์ž‘๋™ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฃผ์žฅ, Node.js๋ฅผ / io.js์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ์„.
  • ์œ ์‚ฌํ•œ ํ”„๋กœ์ ํŠธ์ธ nw.js ๋Š” ์ผ์ข…์˜ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” v8 ์Šค๋ƒ…์ƒท์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ ์ฐธ์กฐ).

์ด ๋ชจ๋“  ๋ฐฉ๋ฒ•์—๋Š” ์•ฝ๊ฐ„์˜ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@etiktin ๋‚˜๋„ ์ด ๋ฌธ์ œ๋ฅผ
C++ ์• ๋“œ์˜จ์—์„œ node.js ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@fritx , ๋…ธ๋“œ์—๋Š” ์ฝ”๋“œ๋ฅผ
์‚ฌ์šฉ์ž๋Š” ์—ฌ์ „ํžˆ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์—ด๊ณ  ๋กœ๋“œ๋œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ Electron ๋นŒ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐจ๋‹จํ•˜๊ณ  Electron ๋นŒ๋“œ๊ฐ€ ๋ณ€์กฐ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์• ๋“œ์˜จ ๊ฒ€์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์‚ฌ์šฉ์ž๋Š” ์—ฌ์ „ํžˆ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฌธ์ž์—ด๋กœ ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ข‹์€ ์†Œ๋ฆฌ ์†Œ์Šค๋ฅผ ๋ณดํ˜ธ! :์—ด์‡ :

๊ทธ๋ ‡๋‹ค๋ฉด GitKraken, Whatsapp ๋˜๋Š” Slack๊ณผ ๊ฐ™์€ ํ์‡„ํ˜• ์ฝ”๋“œ ์ „์ž ์•ฑ์ด ์ฝ”๋“œ๋ฅผ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@ alexis57 ๊ฐ™์€ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ฒ€์‚ฌ ์š”์†Œ๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์—ˆ๊ฑฐ๋‚˜ ๋ญ”๊ฐ€๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ๋ฉด ์ฃผ์š” ์ฝ”๋“œ๊ฐ€ C/C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ GUI์šฉ์œผ๋กœ ์ „์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

whatsapp๊ณผ slack์ด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

AFAIK ๊ทธ๊ฒƒ์€ ๋‹จ์ˆœํžˆ ๋ณดํ˜ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. app.asar๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์†Œ์Šค ์ฝ”๋“œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฏผ๊ฐํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์œ„์—์„œ ์ œ์•ˆํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ผ๋ฐ˜์ ์œผ๋กœ C/C++์™€ ๊ฐ™์€ ์ปดํŒŒ์ผ๋œ ์–ธ์–ด๋กœ ์‚ฌ์šฉ์ž ์ง€์ • ์• ๋“œ์˜จ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

C++ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@boeserwolf ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! :)

๊ตฌ๋…

node-ffi ๋กœ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Electron์€ UI์—๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

C/C++๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ๋‹ค์Œ emscripten ๊ณผ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ข‹์Šต๋‹ˆ๋‹ค . ์ด๊ฒƒ์€ Chromium์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ถฉ๋ถ„ํ•œ ๋…ธ๋ ฅ์œผ๋กœ ๋ฌด์—‡์ด๋“  ๋ถ„ํ•ด/๋‚œ๋…ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JavaScript๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ASAR์— ํฌํ•จ์‹œํ‚ค๋ฉด ๋Œ€๋‹ค์ˆ˜์˜ ์‚ฌ๋žŒ๋“ค์ด ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ €์ž‘๊ถŒ/๋ผ์ด์„ ์Šค๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ๋ณดํ˜ธํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์—ฌ๊ธฐ ๋‚ด 2์„ผํŠธ, NW๊ฐ€ v8 ์Šค๋ƒ…์ƒท ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://nwjs.io/blog/js-src-protect-perf/

nwjs์—์„œ ์ด์ „์— 30%์˜€๋˜ "์ปดํŒŒ์ผ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๊ฐ€ ์ด์ œ ์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ ์—†์ด JS ์†Œ์Šค ์ฝ”๋“œ๋งŒํผ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋จ"์ด๋ผ๋Š” ๊ธฐ์‚ฌ๋ฅผ ๋ณด์•˜๊ณ  NW์˜ ์ดํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ์ •๋ง ๊ด€์‹ฌ์ด ์žˆ์–ด์„œ @craftpip ๊ธฐ์‚ฌ๋„ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œ

๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ๋Š” ๋„ˆ๋ฌด ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค. ํฌ๊ธฐํ•˜๊ณ  NW๋กœ ๋ฐ”๊พธ์„ธ์š”...

๋งค์šฐ ์šฐ์•„ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ ๋ณดํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ node.js ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค: https://github.com/zeit/pkg

Electron์— ์†Œ์Šค ๋ณดํ˜ธ์— ๋Œ€ํ•œ ํฌ๋ง์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ผ๋ถ€ ๋ถ€๋ถ„์— C++๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ JavaScript ์†Œ์Šค๋ฅผ ์ถ•์†Œํ•˜๊ณ  _obfuscate_ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: javascript-obfuscator ์‚ฌ์šฉ ).

์ถ•์†Œ์™€ ๋‚œ๋…ํ™”๋Š” ์ฝ”๋“œ๋ฅผ "๋„์šฉ"ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋…ธ๋ ฅ์„ _๊ทน์ ์œผ๋กœ_ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ(๋”ฐ๋ผ์„œ _๋น„์šฉ_), ์ข…์ข… ์ฒ˜์Œ๋ถ€ํ„ฐ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋งํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์‹คํ˜„ ๊ฐ€๋Šฅํ•ด์ง€๋Š” ์ง€์ ๊นŒ์ง€ ๊ฐ‘๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์™„์ „ํ•œ ๋„ค์ดํ‹ฐ๋ธŒ๊ฐ€ ๋˜๋”๋ผ๋„ ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง์— ๋Œ€ํ•ดํ•˜์‹ญ์‹œ์˜ค (๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ ์™ธ์—๋Š” ์•„๋ฌด ๊ฒƒ๋„ ์—†์Œ).

์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ˆจ๊ธฐ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜์ง€ ์•Š์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋น„๋ฐ€์„ ์ˆจ๊ธฐ๊ณ  ์‹ถ๋‹ค๋ฉด:

  • OAuth ์ž๊ฒฉ ์ฆ๋ช…
  • ๊ณต๊ฐœ ๋Œ€์ƒ์ด ์•„๋‹Œ URL(์˜ˆ: ๋น„๊ณต๊ฐœ ๋ฐฑ์—”๋“œ API ์—”๋“œํฌ์ธํŠธ)
  • REST API ์ž๊ฒฉ ์ฆ๋ช…
  • ๋ชจ๋“  ํ‚ค ๋ฐ ๋น„๋ฐ€
  • ๋น„๋ฐ€๋ฒˆํ˜ธ

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด๋ฃŒ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒ์šฉ ์ „์ž ์•ฑ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋Š”๋ฐ ์ž๊ฒฉ ์ฆ๋ช…์ด ๋„์šฉ๋ ๊นŒ ๊ฑฑ์ •์ด ๋˜์–ด ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์‹ค์ œ ์ „์ž ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ IFF๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋„์šฐ๋ฏธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•˜๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์ž๊ฒฉ ์ฆ๋ช…์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ •๋ณด:

์†Œ๊ฐœ:
https://medium.com/@rocketlaunchr.cloud/introducing -electron-vault-d09ade2c2020

์„ ์  ์„œ๋ฅ˜ ๋น„์น˜:
https://rocketlaunchr.github.io/electron-vault-docs/

@JohnWeisz

If the data is indeed sensitive, I think it should be handled by a remote server.

์›๊ฒฉ ์„œ๋ฒ„ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ Electron ์•ฑ์ž„์„ ์–ด๋–ป๊ฒŒ ์ง„์ •์œผ๋กœ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

Client Credentials ๋ถ€์—ฌ ์œ ํ˜•๊ณผ ํ•จ๊ป˜ OAuth๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ client_secret ๋Š” ์—ฌ์ „ํžˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ตฌ์›Œ์ง€๊ณ  ์ด๋ก ์ ์œผ๋กœ ๋ˆ„๊ตฌ๋‚˜ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Electron ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ 100% ์—ด๋ ค ์žˆ๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ "ํฅ๋ฏธ๋กœ์šด" ๋ฌธ์ž์—ด์„ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” 100% ํ™•์‹คํ•œ ๋ฐฉ๋ฒ•์€ ์—†์ง€๋งŒ ๋‚ด ์†”๋ฃจ์…˜์ด ํ™•์‹คํ•œ ๊ฐœ์„ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์›นํŒฉ์ด๋‚˜ angular2/4/6 ๋˜๋Š” vuejs2์™€ ๊ฐ™์€ SPA ํ”„๋ ˆ์ž„์›Œํฌ๋กœ JS ์•ฑ์„ ๋นŒ๋“œํ•˜๋ฉด ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด asar ํŒŒ์ผ์„ ์ถ”์ถœํ•˜๋”๋ผ๋„ ์ฝ”๋“œ๋ฅผ ์ฝ๊ธฐ ํž˜๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๊ฐ€ ์‹ค์ œ ์•”ํ˜ธํ™”์—๋งŒ ์ดˆ์ ์„ ๋งž์ถฐ์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์‹ค ๋‹ค๋ฅธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ/์‚ฌ์šฉ์ž๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณ€์กฐํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์„œ๋ช…๋œ asar๋ฅผ ๋ณด๊ด€ํ•˜๊ฑฐ๋‚˜ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋กœ๋“œ๋˜๋Š” ์œ ์‚ฌํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ „์ž๊ฐ€ ํŒŒ์ผ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์ „์ž ๋ฐ”์ด๋„ˆ๋ฆฌ ์ž์ฒด์— ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋นŒ๋“œ ์‹œ ์ „์ž๋Š” --include-integrity-check ํ”Œ๋ž˜๊ทธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค.

@tulpn

๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์ „์ž ๋ฐ”์ด๋„ˆ๋ฆฌ ์ž์ฒด์— ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ...

-- ๊ทธ๋Ÿฌ๋ฉด ์ด๋ฏธ Electron์ด ํ•˜๋Š” ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ๋‚˜ ์•”ํ˜ธํ™”/๋ณตํ˜ธํ™”๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ๋ฟ์ด๋ฉฐ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚œ๋…ํ™”๊ฐ€ ์—ฌ๊ธฐ์—์„œ ์ทจํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค(์ถ•์†Œ, ์ถ•์†Œ+๋‚œ๋…ํ™” ๋˜๋Š” ๊ธฐ๋ณธ ์ฝ”๋“œ ์ปดํŒŒ์ผ).

๋˜๋Š” ์ผ๋ถ€ ์•ฑ ์ฝ”๋“œ๋ฅผ ์›๊ฒฉ ์„œ๋น„์Šค๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค(๋ณด์•ˆ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ธ์ฆ ํฌํ•จ).

๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๊ณ  ๋Ÿฐํƒ€์ž„์— ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•˜๊ณ  ํ† ํฐ์ด๋‚˜ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ์™€ ๊ฐ™์€ ๋ณ€์ˆ˜์— ์ง์ ‘ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ „์ฒด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์•”ํ˜ธํ™”์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒฝ์šฐ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค. Node C++ Addons์— ๊ธฐํšŒ๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

nodejs๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•ฉ๋‹ˆ๋‹ค.

Node.js ์• ๋“œ์˜จ์€ C++๋กœ ์ž‘์„ฑ๋œ ๋™์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๊ณต์œ  ๊ฐ์ฒด๋กœ, require() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Node.js์— ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ผ๋ฐ˜ Node.js ๋ชจ๋“ˆ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋กœ Node.js์—์„œ ์‹คํ–‰๋˜๋Š” JavaScript์™€ C/C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ปดํŒŒ์ผํ•˜๋ฏ€๋กœ ์ฝ”๋“œ๋ฅผ ์ถ”์ƒํ™”ํ•  ์ˆ˜ ์žˆ๊ณ  ์„ฑ๋Šฅ์ด ํ›จ์”ฌ ๋นจ๋ผ์ง€๊ณ  ์ฝ”๋“œ๋ฅผ ์–ด๋Š ์ •๋„ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, asar ์•„์นด์ด๋ธŒ์— ํŒจํ‚ค์ง•ํ•œ ๊ฒฝ์šฐ์—๋„ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์–ป๋Š” ๊ฒƒ์€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. V8 JavaScript ์—”์ง„์€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ˆจ๊ธฐ๋„๋ก ์„ค๊ณ„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. NW.js๋Š” ์†Œ์Šค ์ฝ”๋“œ์˜ ํ•œ ํŒŒ์ผ์„ ์™„์ „ํžˆ ์ˆจ๊ธฐ๋Š” ๋ฐ ์„ฑ๊ณตํ•˜์ง€๋งŒ ์ƒ๋‹นํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ •๋ง๋กœ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๋ ค๋ฉด C++๋กœ ์ž‘์„ฑํ•˜๊ณ  ๋„ค์ดํ‹ฐ๋ธŒ Node ๋ชจ๋“ˆ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

C++ ์• ๋“œ์˜จ์—์„œ devtools๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ C++ ์• ๋“œ์˜จ์—์„œ ์ „์ž์˜ ๋ชจ๋“  API์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ด๋ฉฐ devtool ์—†์ด ์•ฑ์„ ํŒจํ‚ค์ง•ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ? ํ•ดํ‚น์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค( @ zcbenz )

์šฐ๋ฆฌ๋Š” ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ๊ณต๊ฐœ๋˜๋Š” ๊ฒƒ์— ์ง€์ณค์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” nw๋กœ ์ด์‚ฌํ•œ๋‹ค

@ahmtcn123 ๊ท€ํ•˜์˜ ์˜๊ฒฌ์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์–ด๋–ป๊ฒŒ ๋„์›€์ด ๋ฉ๋‹ˆ๊นŒ?

essense์— ์˜ํ•ด ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๊ณต๊ฐœ๋˜์–ด ์žˆ๋Š” ์›น ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์„ ๋นŒ๋“œํ•˜๊ณ  ์‹ถ์œผ๋ฏ€๋กœ ๊ทธ๋Ÿฌํ•œ ํƒœ๋„๋ฅผ ์œ ์ง€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

  • ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Electron์— ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • C++ ๋ชจ๋“ˆ ์ž‘์„ฑ
  • ์ฝ”๋“œ ์ถ•์†Œ/๋‚œ๋…ํ™”/๋งน๊ธ€๋ง(์†Œ์Šค ๋งต์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค)
  • ๋‹ค๋ฅธ ์œ ์‚ฌํ•œ ๊ธฐ์ˆ (์˜ˆ: nw.js)๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ณธ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์ด ์—ฌ๊ธฐ์—์„œ ๊ณต์œ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ๋‚œ๋…ํ™”๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(Electron์˜ ์„ฑ๋Šฅ/๋ฆฌ์†Œ์Šค ์†Œ๋น„๋ฅผ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ ‡๊ฒŒ ๋ถ„๋ช…ํ•˜์ง€ ์•Š์€ ์„ ํƒ์ž…๋‹ˆ๋‹ค)

๊ฑด๋ฐฐ!

_ํŽธ์ง‘: ๊ณ„์† ๋ฐ˜๋Œ€ ํˆฌํ‘œํ•˜์„ธ์š”_ ๐Ÿฟ

์™œ v8snapshot์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์™„์ „ํžˆ ๋ณดํ˜ธํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ๋…ผ๋ฆฌ ์ฝ”๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  localhost๋ฅผ ํ†ตํ•ด ์ „์ž UI์—์„œ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ ์ปดํŒŒ์ผ๋œ ๊ธฐ์ˆ (์˜ˆ: golang)์„ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ๋ง

๋ถ์„œ

์ด ๋ฌธ์ œ๊ฐ€ ์ข…๋ฃŒ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์†Œ์Šค ์ฝ”๋“œ ๋ฅผ ์ˆจ๊ธฐ๋Š” ๊ฒƒ์€ ์ฝ”๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋งค์šฐ ๋‚˜์œ ๋ฐฉ๋ฒ•์ธ

๋ณดํ˜ธ๋ฅผ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ค‘์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ธ์ฆ, ์•”ํ˜ธํ™” ๋“ฑ๊ณผ ๊ฐ™์€ ๋ณด๋‹ค ํ‘œ์ค€์ ์ธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

์ง„์‹ฌ์œผ๋กœ, ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ์•ฑ์„ C๋กœ ์ž‘์„ฑํ•˜๊ณ  ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์–ป์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

PD: ๋‹น์‹ ์€ ๋น… ๋ณด์ด์ฆˆ(whatsapp web, slack, ํŒ€, vscode)์˜ ์†Œ์Šค ์ฝ”๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ  ๊ทธ๋“ค ์ค‘ ๋ˆ„๊ตฌ๋„ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋‹น์‹ ์ด ๋ญ”๊ฐ€ ์ž˜๋ชปํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"""PD: ๋น… ๋ณด์ด์ฆˆ(whatsapp web, slack, ํŒ€, vscode)์˜ ์†Œ์Šค ์ฝ”๋“œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ทธ๋“ค ์ค‘ ๋ˆ„๊ตฌ๋„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋‹น์‹ ์ด ๋ญ”๊ฐ€ ์ž˜๋ชปํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค."""

์ด๋ณด๋‹ค ๋” ๋ฉ์ฒญํ•œ ์ฃผ์žฅ์€ ๊ฑฐ์˜ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง๋˜๊ณ  ๋น„์ •์ƒ์ ์ด์ง€ ์•Š์€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๊ณ  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํŒ๋งคํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ๊ณ„์† ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์ง€ ์•Š๋Š” ์ •ํ™•ํžˆ ์ด์— ๋Œ€ํ•œ ๋ฒ•๋ฅ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@kidandcat

์ง„์‹ฌ์œผ๋กœ, ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ์•ฑ์„ C๋กœ ์ž‘์„ฑํ•˜๊ณ  ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์–ป์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ณ„์†ํ•ด์„œ Microsoft Word, Photoshop ๋˜๋Š” ์ตœ๊ณ  ํŒ๋งค ๊ฒŒ์ž„๊ณผ ๊ฐ™์€ ๋ชจ๋“  ์ตœ๊ณ  ํŒ๋งค ์•ฑ์˜ ์†Œ์Šค๋ฅผ ์–ป์œผ์‹ญ์‹œ์˜ค. ๋‹น์‹ ์€ ์–ต๋งŒ ์žฅ์ž์ด๊ณ  ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ชจ๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, ์ €๋Š” ์–ต๋งŒ์žฅ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์“ธ๋ชจ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ๋ฌด์—‡์„ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์—ฌ๋Ÿฌ๋ถ„, ์ด ์Šค๋ ˆ๋“œ์—๋Š” ๊ฐ ๋Œ“๊ธ€์— ๋Œ€ํ•ด ์•Œ๋ฆผ์„ ๋ฐ›๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑด์„ค์ ์ธ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜์„ธ์š”.

์ œ ์ƒ๊ฐ์—๋Š” JavaScript์˜ ์†Œ์Šค ์ฝ”๋“œ ํŠน์„ฑ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋งŽ์€ ๊ฒฝ์šฐ์— ๊ฑฐ๋ž˜ ์ฐจ๋‹จ๊ธฐ๊ฐ€ ์•„๋‹Œ ์ด์œ ๋ฅผ ์š”์•ฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์—ฌ๊ธฐ์— ๋‚˜์—ด๋œ ๋งŽ์€ ์˜ˆ์‹œ ์•ฑ/์„œ๋น„์Šค๋Š” ์ฃผ๋กœ _traction_์— ์˜ํ•ด ๊ตฌ๋™๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Twitter๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ ์ˆ˜ ์—†์ง€๋งŒ ์™„์ „ํžˆ ๋ณต์‚ฌํ•˜๊ณ  ์ „์ฒด๋ฅผ ๋ณต์ œํ•˜๋”๋ผ๋„ ํŠธ๋ž˜ํ”ฝ, ๊ด‘๊ณ , ๋ธŒ๋žœ๋“œ, ์ง€์› ์ธํ”„๋ผ, ๋“ฑ.
  • ์ ์ ˆํ•œ ๋‚œ๋…ํ™”๋กœ ์ธํ•ด ์˜๋ฏธ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒƒ์ด ๊ทน๋„๋กœ, _๊ธˆ์ง€์ ์œผ๋กœ_ ์–ด๋ ค์›Œ์ง€๋ฉฐ, ์›๋ณธ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž์ฒด์˜ ๋™์ž‘์„ ๋‹จ์ˆœํžˆ ๊ด€์ฐฐํ•˜๊ณ  ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋งํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์‹คํ˜„ ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ -- ์˜ˆ๋ฅผ ๋“ค์–ด C++์˜ ๊ฒฝ์šฐ์™€ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ €์ž‘๊ถŒ๋ฒ•์œผ๋กœ ๋ณดํ˜ธ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์•„์ด๋””์–ด ๋ฐ/๋˜๋Š” ์†”๋ฃจ์…˜์„ ํ›”์น˜๋Š” ๊ฒƒ์€ ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฒ•์  ๋ฌธ์ œ์ด๋ฏ€๋กœ ๊ตฌํ˜„๋œ ๋ณดํ˜ธ ์ˆ˜์ค€์— ๊ด€๊ณ„์—†์ด ๊ตฌํ˜„์„ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์€ ๋ฒ•์  ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์–ด์„คํ”ˆ ์ค‘๊ตญ ํšŒ์‚ฌ๋Š” JavaScript๋กœ ์ž‘์„ฑ๋˜์—ˆ๋Š”์ง€ ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ์ž‘์„ฑ๋˜์—ˆ๋Š”์ง€์— ๊ด€๊ณ„์—†์ด ๋ฌธ์ œ ์—†์ด ๊ท€ํ•˜์˜ ๋กœ๊ณ ์™€ ์•ฑ์„ ํ›”์น  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ๋‚œ๋…ํ™”์— ๋Œ€ํ•ด ํ™•์‹ ์ด ์„œ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— C++ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ(C++ ํฌํ•จ)๊ณผ ๋‹ฌ๋ฆฌ ์ง์ ‘ ๊ฒ€์‚ฌ(์—ญ์„ค๊ณ„๊ฐ€ ์•„๋‹Œ)๋กœ๋ถ€ํ„ฐ ์™„๋ฒฝํ•˜๊ฒŒ ๋ณดํ˜ธ๋˜๋Š” ์›๊ฒฉ ์„œ๋น„์Šค๋กœ ์ฝ”๋“œ๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ)

@JohnWeisz ๋Š” ์ •๋ง ํ•ฉ๋ฆฌ์ ์ธ ๋ง์„ ๋งŽ์ด ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์˜ค๋Š˜ WebAssembly๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ง๋ถ™์ž…๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ์ธก๋ฉด์—์„œ ์ด๋Š” ์ƒ๋‹นํžˆ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://developer.mozilla.org/en-US/docs/WebAssembly

@kidandcat ์‚ฌ์‹ค์ž…๋‹ˆ๊นŒ?"์ง„์‹ฌ์œผ๋กœ C๋กœ ์•ฑ์„ ์ž‘์„ฑํ•˜๊ณ  ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์–ป์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค."

Google์—์„œ ๊ฒ€์ƒ‰ํ–ˆ๋Š”๋ฐ C/C++์—์„œ ์ปดํŒŒ์ผ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ธฐ๊ปํ•ด์•ผ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฌธ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์—…์šฉ Windows ๋ฐ์Šคํฌํ†ฑ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ ๋กœ์ง์€ ํ•ต์‹ฌ ์—ญ๋Ÿ‰์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋…ผ๋ฆฌ๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜์ง€๋งŒ ๊ฒฝ์Ÿ์—…์ฒด๊ฐ€ ์ด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ ๋ณดํ˜ธ๋Š” ์ œ ๊ฒฝ์šฐ์—๋Š” ๊ฑฐ๋ž˜ ์ฐจ๋‹จ๊ธฐ์ž…๋‹ˆ๋‹ค.

@z1988hf

C/C++์—์„œ ์ปดํŒŒ์ผ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ธฐ๊ปํ•ด์•ผ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฌธ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋Š” ์›๋ณธ ์†Œ์Šค ์ฝ”๋“œ ๋˜๋Š” ์ด์™€ ๋™๋“ฑํ•œ ๊ฒƒ์„ ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋งํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋„ˆ๋ฌด ์–ด๋ ต๊ณ  ๋น„์šฉ์ด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค. ๋‚œ๋…ํ™”๋œ ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

@kidandcat ์‚ฌ์‹ค์ž…๋‹ˆ๊นŒ?"์ง„์‹ฌ์œผ๋กœ C๋กœ ์•ฑ์„ ์ž‘์„ฑํ•˜๊ณ  ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์–ป์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค."

Google์—์„œ ๊ฒ€์ƒ‰ํ–ˆ๋Š”๋ฐ C/C++์—์„œ ์ปดํŒŒ์ผ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ธฐ๊ปํ•ด์•ผ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฌธ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์—…์šฉ Windows ๋ฐ์Šคํฌํ†ฑ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ ๋กœ์ง์€ ํ•ต์‹ฌ ์—ญ๋Ÿ‰์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋…ผ๋ฆฌ๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜์ง€๋งŒ ๊ฒฝ์Ÿ์—…์ฒด๊ฐ€ ์ด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ ๋ณดํ˜ธ๋Š” ์ œ ๊ฒฝ์šฐ์—๋Š” ๊ฑฐ๋ž˜ ์ฐจ๋‹จ๊ธฐ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ์ฝ”๋“œ ๋ฉ”์ดํŠธ์ด๋ฉฐ ๋…ผ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ฝ”๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋Ÿฌ๋‚˜ @JohnWeisz๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋งค์šฐ ๋น„์‹ธ๋ฏ€๋กœ ๊ฒฝ์Ÿ์ž๊ฐ€ ์‹œ๋„ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜์ฒœ ๋‹ฌ๋Ÿฌ๋ฅผ ํˆฌ์žํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์—†๋‹ค๋ฉด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค)

Slack๊ณผ ๊ฐ™์€ ์•ฑ์„ ์†Œ์Šค ์ฝ”๋“œ ๋ณดํ˜ธ์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š”๋‹ค๊ณ  ์–ธ๊ธ‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๋ชจ๋“  ์•ฑ์— ๋Œ€ํ•œ ์ตœ์ƒ์˜ ๋น„๊ต๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. Slack์€ ์˜จ๋ผ์ธ์—์„œ ์ž‘๋™ํ•˜๋Š” ์„œ๋น„์Šค์ด๋ฉฐ ์ „์ž ์•ฑ์€ ์›น ์•ฑ์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ์…ธ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. slack๊ณผ ๊ฐ™์€ ์•ฑ์˜ ๋น„๋ฐ€ ์†Œ์Šค์˜ ๋Œ€๋ถ€๋ถ„์€ ์›น ์„œ๋ฒ„์— ์žˆ์Šต๋‹ˆ๋‹ค.

Slack๊ณผ ๊ฐ™์€ ์•ฑ์„ ์†Œ์Šค ์ฝ”๋“œ ๋ณดํ˜ธ์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š”๋‹ค๊ณ  ์–ธ๊ธ‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๋ชจ๋“  ์•ฑ์— ๋Œ€ํ•œ ์ตœ์ƒ์˜ ๋น„๊ต๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. Slack์€ ์˜จ๋ผ์ธ์—์„œ ์ž‘๋™ํ•˜๋Š” ์„œ๋น„์Šค์ด๋ฉฐ ์ „์ž ์•ฑ์€ ์›น ์•ฑ์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ์…ธ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. slack๊ณผ ๊ฐ™์€ ์•ฑ์˜ ๋น„๋ฐ€ ์†Œ์Šค์˜ ๋Œ€๋ถ€๋ถ„์€ ์›น ์„œ๋ฒ„์— ์žˆ์Šต๋‹ˆ๋‹ค.

@๋‹น์‹ ์ด ์ข‹์•„ํ•˜๋Š”
Spotify๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ!!!,์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์•Œ์ง€๋งŒ ์˜คํ”„๋ผ์ธ ์•ฑ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ??

@annymosse Spotify์˜ ๋น„๋ฐ€ ์†Œ์Šค๋Š” ๊ทธ๋“ค์˜ ์•ฑ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ Spotify ์•ฑ ์†Œ์Šค๋ฅผ ํ›”์ณค๋‹ค๋ฉด ๋ณ„๋กœ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ฑ์€ ์ถฉ๋ถ„ํžˆ ์ข‹์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด Spotify๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๋Š” ์ง„์งœ ์ด์œ ๋Š” ์ œ๊ณต๋˜๋Š” ์ฝ˜ํ…์ธ ์™€ ์Œ์•… ์ŠคํŠธ๋ฆฌ๋ฐ์˜ ํŽธ๋ฆฌํ•จ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ Spotify ๊ณ ๊ฐ์ด ๋Œ€์•ˆ๋ณด๋‹ค ์„ ํ˜ธํ•˜๋Š” ์ผ๋ถ€ UX ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ์žˆ์ง€๋งŒ ๊ฒฝ์Ÿ์—…์ฒด๋Š” ์ด๋ฅผ ๋ณต์‚ฌํ•˜๊ธฐ ์œ„ํ•ด ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์‹ค์ œ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Spotify์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณด๋ ค๊ณ  ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์–ด๋”˜๊ฐ€์— ์•ฑ์— ์ผ์ข…์˜ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ C ์• ๋“œ์˜จ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ผ๋ถ€ ๊ฒฌ๊ณ ํ•œ ๋‚œ๋…ํ™” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด DRM์œผ๋กœ ์ธํ•ด ๊ทธ๋“ค์—๊ฒŒ ํ•„์š”ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@yourfavorite ์†Œ์Šค๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”. ๋•Œ๋•Œ๋กœ ์ƒ์šฉ ์•ฑ์— ๋Œ€ํ•œ ์†Œ์Šค๋ฅผ asar files ๋ฐ package.json ๋ฐ *.js ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ตœ์†Œํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•

์†Œ์Šค ์ฝ”๋“œ ๋ณดํ˜ธ์— ๋ฐ˜๋Œ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Slack๊ณผ Spotify๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ์ „์ž๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ์ตœ์ƒ์˜ ๋น„๊ต๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์†Œ์Šค ์ฝ”๋“œ ๋ณดํ˜ธ๊ฐ€ ์ œํ’ˆ์— ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ์ „์ž๊ฐ€ ํ˜„์žฌ๋กœ์„œ๋Š” ๊ฐ€์žฅ ์ ํ•ฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ถ„๋ช…ํžˆ ๋งํ•˜์ž๋ฉด, ๋‚˜๋Š” ์ „์ž์— ์˜ค๋Š” ์ผ์ข…์˜ ์†Œ์Šค ์ฝ”๋“œ ๋ณดํ˜ธ์— ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์†Œ์Šค ์ฝ”๋“œ ๋ณดํ˜ธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Google ๋ฒˆ์—ญ API๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฒˆ์—ญ ์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ๋ฐ˜์„ ๊ตฌ์ถ•ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ .srt/.ass ์ž๋ง‰ ํŒŒ์ผ์„ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๋“œ๋ž˜๊ทธํ•˜๋ฉด ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ Google ๋ฒˆ์—ญ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋ผ์ธ์„ ๋ฒˆ์—ญํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

์‚ฌ์šฉ์ž๋Š” 1๊ฐœ์˜ ๋น„๋””์˜ค์™€ 1๊ฐœ์˜ ์˜์–ด ์ž๋ง‰์„ ๋‹ค์šด๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด์ œ ๊ทธ๋“ค์€ ์ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์˜์–ด ์ž๋ง‰์„ ๋ฒˆ์—ญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ค‘๊ตญ์–ด ๋˜๋Š” ๋‹ค๋ฅธ ์–ธ์–ด๋กœ.
๊ทธ๋ž˜์„œ ๊ทธ๋“ค์€ ๋‚ด์šฉ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ

์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ.
๋ถ„๋ช…ํžˆ ๊ณต๊ฒฉ์ž๊ฐ€ ๋‚ด API ํ‚ค ๋ฐ ๋น„๋ฐ€์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ๋‚จ์šฉํ•˜์‹ญ์‹œ์˜ค.
Google์—์„œ ์—„์ฒญ๋‚œ ์ฒญ๊ตฌ์„œ๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค($500? $1000? ๋”?)

๋น ๋ฅธ ์—…๋ฐ์ดํŠธ(2020๋…„ 3์›” 29์ผ)

Vue.js + Webpack์„ Electron.js์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ์ถ•์†Œ๋˜๋ฏ€๋กœ ๋” ์ด์ƒ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@1c7

๊ธ€์Ž„, ์•„๋งˆ๋„ ์ด๊ฒƒ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์™ธ๋ถ€ ๋ณดํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. C++ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ๋„ API ํ‚ค๋ฅผ ์‰ฝ๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ์ „์ž ๊ด€๋ จ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

@lvkins ์•„
ํŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ํฐ ๊ฑฑ์ •๊ฑฐ๋ฆฌ์˜€์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ณดํ˜ธ๊ฐ€ ๋ณดํ˜ธ๊ฐ€ ์—†๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚ซ๋‹ค๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ด์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋“  ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๊ฒฝ์šฐ C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ ์ถ”๊ฐ€ ์†Œ๊ธˆ์„ ๋„ฃ๊ณ  node.js์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

@lvkins ๋‹ต์žฅ
์ œ์•ˆํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ์กฐ์‚ฌํ•  ๊ฒƒ์ด๋‹ค.

์ด ๋ฒˆ์—ญ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ Mac๊ณผ Windows์—์„œ ๋ชจ๋‘ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Electron.js๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Electron.js + ์ผ๋ถ€ C++๊ฐ€ ๋‚ด API ํ‚ค ๋ฐ ๋น„๋ฐ€์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@lvkins๋‹˜ ๊ฐ์‚ฌ

@1c7 ๊ณผ์—ฐ ๐Ÿ˜ƒ

์—ฌ๊ธฐ์—์„œ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค: https://nodejs.org/api/addons.html

์ „์ž์˜ ๋ณด์•ˆ ๋ถ€์กฑ์ด ์šฐ๋ ค๋œ๋‹ค๋ฉด NW.js๋ฅผ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค!

@1c7 ๊ณผ Linux๊ฐ€ ์•„๋‹Œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?! ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ชจ๋“  ํ”Œ๋žซํผ์— ๋™์ผํ•œ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ??!

@annymosse ๋ฐฉ๊ธˆ Linux์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค. Linux์— ๋Œ€ํ•œ ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ:

  • ์ €๋Š” Macbook Pro 2017 15์ธ์น˜(Mac)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋Š” Windows(Windows)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋‚ด ์†Œํ”„ํŠธ์›จ์–ด ์‚ฌ์šฉ์ž๊ฐ€ Linux(Linux)์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

https://github.com/1c7/Translate-Subtitle-File์„ ๋Œ๋ฆฌ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„์ง€ํ•œ ํ”„๋กœ์ ํŠธ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค(๋ˆ์„ ์ฒญ๊ตฌํ•˜๊ณ  ํ’ˆ์งˆ์„ ๋†’์ด์‹ญ์‹œ์˜ค(์‹œ๊ฐ„์„ ๋” ๋งŽ์ด ํˆฌ์ž)).
๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ง€๊ธˆ ์—ฐ๊ตฌ๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค

์ด ๋„๊ตฌ๋Š” ํ˜„์žฌ ์ฃผ๋กœ ์ค‘๊ตญ ์‹œ์žฅ์„ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. (๋ชจ๋“  ๋ฒ„ํŠผ๊ณผ ํ…์ŠคํŠธ๋Š” ์ค‘๊ตญ์–ด๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค)
i18n์€ ์ง€๋„์— ์žˆ์ง€๋งŒ ๊ณง ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

i18n ๋ฐ Yandex ๋ณ€ํ™˜๊ธฐ API๋ฅผ ๋งŒ๋“ค ๊ณ„ํš์ด ์žˆ์—ˆ์ง€๋งŒ ๋™์ผํ•œ ๋ฌธ์ œ๋กœ ์ธํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ทจ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Linux์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์‹ ๊ทœ ์‚ฌ์šฉ์ž๋Š” Linux์— ์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋Œ€์•ˆ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ํ™•์‹ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉ์ž ๋Œ€์ƒ์ด ๋ฏธ๋””์–ด๋งŒ ๋ฒˆ์—ญํ•˜๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  Linux ๋ฐฐํฌํŒ์ด๋‚˜ ๋‚ด๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ๋ฐฐํฌํŒ(์ค‘๊ตญ์–ด Linux ๋ฐฐํฌํŒ)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ๊ณผ ๋ชจ๋“  Linux ์‚ฌ์šฉ์ž์—๊ฒŒ ์ตœ์„ ์„ ๋‹คํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

API ํ‚ค ๋ฐ ๋น„๋ฐ€์€ ๊ฒŒ์‹œ๋œ ์•ฑ์— ์žˆ์œผ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  ๊ฐ€์ง€๊ณ 
๋‹น์‹ ์˜ API/๋ฐฑ์—”๋“œ์—์„œ ๊ทธ๊ฒƒ๋“ค์„, abd ์–ด๋–ค ์œ ํ˜•์œผ๋กœ ๊ทธ๋“ค์„ ๋ณดํ˜ธํ•˜์‹ญ์‹œ์˜ค.
์ธ์ฆ/์กฐ์ ˆ. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์•ฑ์—์„œ API๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

Em dom, 2019๋…„ 10์›” 20์ผ 10:22, Cheng Zheng [email protected]
์—์Šคํฌ๋กœ:

@annymosse https://github.com/annymosse ๋ฐฉ๊ธˆ Linux์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค.
๋ฆฌ๋ˆ…์Šค์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„

โ€”
์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/electron/electron/issues/2570?email_source=notifications&email_token=ADCOXMFCSHRX3PZTE7GHKDTQPRLQRA5CNFSM4BODX2F2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXH
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/ADCOXMCKPUOMQPM3JKZP5J3QPRLQRANCNFSM4BODX2FQ
.

์•„๋ฌด๋„ ์ฝ์„ ์ˆ˜ ์—†๋„๋ก Javascript ํŒŒ์ผ์„ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” bytenode๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


๋จผ์ € ์„œ๋ฒ„์™€ ํด๋”์— bytenode๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.

>npm i -g bytenode
>npm i bytenode

๋‹ค์Œ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ ์ผ๋ฐ˜ nodeJS ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ์˜ ์ด๋ฆ„์„ ok.js๋กœ ์ง€์ •ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

>console.log('bytenode works!);
๊ทธ๋Ÿฐ ๋‹ค์Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์€ ํŒŒ์ผ๊ณผ ์ด๋ฆ„์ด ๊ฐ™์€ .JSC ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

user<strong i="15">@machine</strong>:~$ bytenode -c ok.js
๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ธฐ๋ณธ ์ „์ž JS ํŒŒ์ผ์—์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. test.js๋ผ๊ณ  ํ•ฉ์‹œ๋‹ค.

const bytenode = require('bytenode'); 
const myFile=require('./ok.jsc'); 
myFile;

์ €์žฅํ•ด.

๊ทธ๋Ÿฐ ๋‹ค์Œ test.js: node test.js๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค. "cat ok.jsc"๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ทธ๊ฒƒ์ด ์‹ค์ œ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ์ด๊ณ  ์•„๋ฌด๋„ ๋‹น์‹ ์˜ ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์›๋ณธ ์ผ๋ฐ˜ ํ…Œ์ŠคํŠธ js ํŒŒ์ผ์„ ๋‹ค๋ฅธ ์œ„์น˜๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ์ „์ž์—์„œ ๊ทธ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๊ทธ๊ฒƒ์ด ์ž‘๋™ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

@dotbloup

์•„๋ฌด๋„ ์ฝ์„ ์ˆ˜ ์—†๋„๋ก Javascript ํŒŒ์ผ์„ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” bytenode๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€

์•„๋ฌด๋„ ์›๋ณธ ์†Œ์Šค๋ฅผ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค(๋‚œ๋…ํ™” ๋˜๋Š” ์ถ•์†Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ). ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง๋  ์ˆ˜ ์žˆ๊ณ /์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ฑ ๋น„๋ฐ€์ด๋‚˜ ๊ธฐํƒ€ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ”๋“œ์— ์ €์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋˜‘๊ฐ™์ด ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„ ๋ฌธ์ œ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด ์†Œ์Šค ์ฝ”๋“œ์˜ ์ผ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜ "ํ›”์น˜๋Š”" ๊ฒƒ์„ ๋ง‰๊ณ  ์‹ถ๋‹ค๋ฉด ์ด ๋„๊ตฌ๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ _๋” ํž˜๋“ค๊ณ _ ๋งŽ์€ ๊ฒฝ์šฐ ์—„์ฒญ๋‚˜๊ฒŒ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ํ›Œ๋ฅญํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ C++ ์ปดํŒŒ์ผ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ค์ œ ๋ณด์•ˆ์—๋Š” ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

@JohnWeisz
๋ˆ„๊ตฐ๊ฐ€๊ฐ€ V8 ๋ฐ”์ดํŠธ์ฝ”๋“œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์˜ ์ฝ”๋“œ๋ฅผ ๊นจ๋œจ๋ ธ๋‹ค๋Š” ์ฆ๊ฑฐ๋ฅผ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. nwjs๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ–ˆ์œผ๋ฉฐ bytenode์™€ ์ •ํ™•ํžˆ ๋™์ผํ•œ nwjc๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ bin ํŒŒ์ผ์˜ ์—”์ง„์„ ๋ณ€ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ Sitecozy ๋Š์–ด์ง„ ๋งํฌ ๊ฒ€์‚ฌ๊ธฐ์ด๋ฉฐ Microsoft Store์—์„œ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„์ „์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.
๋ˆ„๊ตฐ๊ฐ€ ๋‚ด ์•ฑ์˜ bin ํŒŒ์ผ ์ฝ”๋“œ๋ฅผ ๊นจ๊ณ  ๋‚ด bin ํŒŒ์ผ์˜ ๊ธฐ๋Šฅ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ๋ณด๋‚ด๋ฉด 150์œ ๋กœ๋ฅผ ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ณ€์ˆ˜๋‚˜ JSON ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋ฐ”๋ณด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‹น์‹ ์€ hotmail DOT com์—์„œ stepsa์— ๋‚˜์—๊ฒŒ ํŽธ์ง€๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

@dotbloup

๋‚ด ๋ง์€ ์‚ฌ๋žŒ๋“ค์€ ๋ณดํ†ต ๋ช‡ ์ฃผ ๋งŒ์— C++์—์„œ ์ปดํŒŒ์ผ๋œ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ์˜ ๋ณต์‚ฌ ๋ฐฉ์ง€ ์‹œ์Šคํ…œ์„ ๊นจ๊ณ  ์ˆ˜์‹ญ ๋…„ ๋™์•ˆ ํ•ด์ ํŒ ๊ฒŒ์ž„์„ ์ƒ๊ฐํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์š”์ ์€ ๊ธฐ๊ณ„์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฅผ ์—ด ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ฑ ๋น„๋ฐ€์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์™€ ๊ฐ™์€ ๋ด‰์ธ๋œ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์š”์ ์€ ๊ท€์ค‘ํ•œ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ ๋ฐ ๋ฐฉ๋ฒ•์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฌ๊ธฐ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ

์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ. ๋ถ„๋ช…ํžˆ ๊ณต๊ฒฉ์ž๊ฐ€ ๋‚ด API ํ‚ค ๋ฐ ๋น„๋ฐ€์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ๋‚จ์šฉํ•˜์‹ญ์‹œ์˜ค. Google์—์„œ ์—„์ฒญ๋‚œ ์ฒญ๊ตฌ์„œ๋ฅผ ๋ฐ›์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ($500? $1000? $10000? ๋ˆ„๊ฐ€ ์••๋‹ˆ๊นŒ?)

์•ฑ์€ ์„œ๋ฒ„์— ํ…์ŠคํŠธ๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋ฉฐ, ์„œ๋ฒ„๋Š” ์ด๋ฅผ Google์— ์ „๋‹ฌํ•˜๊ณ  ๋ฒˆ์—ญ์„ ์ˆ˜์‹ ํ•˜์—ฌ ๋‹ค์‹œ ์•ฑ์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๊ณ ๊ฐ๊ณผ Google ๋ฒˆ์—ญ ์„œ๋น„์Šค ์‚ฌ์ด์—์„œ ์ค‘๊ฐœ์ž ์—ญํ• ์„ ํ•˜๋Š” ์ž์ฒด ์„œ๋ฒ„๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์„œ๋ฒ„์—๋งŒ API ํ‚ค๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์–ด์จŒ๋“  API ํ‚ค๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์€ Google์˜ ์‚ฌ์šฉ ์•ฝ๊ด€์— ์œ„๋ฐฐ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ

์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ. ๋ถ„๋ช…ํžˆ ๊ณต๊ฒฉ์ž๊ฐ€ ๋‚ด API ํ‚ค ๋ฐ ๋น„๋ฐ€์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ๋‚จ์šฉํ•˜์‹ญ์‹œ์˜ค. Google์—์„œ ์—„์ฒญ๋‚œ ์ฒญ๊ตฌ์„œ๋ฅผ ๋ฐ›์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ($500? $1000? $10000? ๋ˆ„๊ฐ€ ์••๋‹ˆ๊นŒ?)

์•ฑ์€ ์„œ๋ฒ„์— ํ…์ŠคํŠธ๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋ฉฐ, ์„œ๋ฒ„๋Š” ์ด๋ฅผ Google์— ์ „๋‹ฌํ•˜๊ณ  ๋ฒˆ์—ญ์„ ์ˆ˜์‹ ํ•˜์—ฌ ๋‹ค์‹œ ์•ฑ์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๊ณ ๊ฐ๊ณผ Google ๋ฒˆ์—ญ ์„œ๋น„์Šค ์‚ฌ์ด์—์„œ ์ค‘๊ฐœ์ž ์—ญํ• ์„ ํ•˜๋Š” ์ž์ฒด ์„œ๋ฒ„๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์„œ๋ฒ„์—๋งŒ API ํ‚ค๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์–ด์จŒ๋“  API ํ‚ค๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์€ Google์˜ ์‚ฌ์šฉ ์•ฝ๊ด€์— ์œ„๋ฐฐ๋ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๋น„์šฉ๊ณผ ํŒ€ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ž์› ์ž๊ธˆ์„ ์ œ๊ณตํ•˜๋Š” ์ƒ์šฉ ํ”„๋กœ์ ํŠธ์—๋Š” ๊ดœ์ฐฎ์ง€๋งŒ, ์ตœ์†Œํ•œ ๋””๋ฒ„๊ทธํ•˜๊ณ  ์ผ๋ถ€ ๋ธ”๋ž™ ํ•ต์„ ๋งŒ๋“ค๊ธฐ ์–ด๋ ต๊ฒŒ ์œ ์ง€ํ•˜๋ ค๋ฉด ์ด๋Ÿฌํ•œ ๋„๊ตฌ์™€ ๊ฐ™์€ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์†Œ์Šค ๋ณดํ˜ธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ๋ช‡ ๋…„ ์ „์— ํ•ด๊ฒฐ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด์„œ Electron์„ ์ž ์‹œ ํฌ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ํ•ด๊ฒฐ์ฑ…์ด ์—†์Šต๋‹ˆ๊นŒ? ๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฌ์šด. ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋‚ด ์ž์‹ ์˜ ํ•ด๊ฒฐ์ฑ…์„ ์ƒ๊ฐํ•ด ๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํˆฌ์žํ•  ์‹œ๊ฐ„์„ ๊ฐ€์กŒ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜Ÿ

์ด ๋ฌธ์ œ๊ฐ€ ๋ช‡ ๋…„ ์ „์— ํ•ด๊ฒฐ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด์„œ Electron์„ ์ž ์‹œ ํฌ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ํ•ด๊ฒฐ์ฑ…์ด ์—†์Šต๋‹ˆ๊นŒ? ๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฌ์šด. ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋‚ด ์ž์‹ ์˜ ํ•ด๊ฒฐ์ฑ…์„ ์ƒ๊ฐํ•ด ๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํˆฌ์žํ•  ์‹œ๊ฐ„์„ ๊ฐ€์กŒ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜Ÿ

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

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