Xterm.js: ๋ถ€๋“œ๋Ÿฌ์šด ์Šคํฌ๋กค

์— ๋งŒ๋“  2017๋…„ 12์›” 11์ผ  ยท  16์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: xtermjs/xterm.js

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

xterm.js๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋ถ€๋“œ๋Ÿฌ์šด ํ”ฝ์…€ ๊ธฐ๋ฐ˜ ์Šคํฌ๋กค ์˜ต์…˜์„ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๊นŒ?

์ €๋Š” ์›๋ž˜ @albinekb ์—๊ฒŒ Hyper(https://github.com/zeit/hyper)์— ๋Œ€ํ•ด ๊ฐ™์€ ์งˆ๋ฌธ์„

aremouse-support typenhancement

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

์•„์ฃผ ์†Œ์ˆ˜์˜ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ

ํ„ฐ์น˜ํŒจ๋“œ๋กœ ์Šคํฌ๋กคํ•˜๋Š” ๋ถ„๋“ค์€ ์ข‹๋“  ์‹ซ๋“  VTE์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. :D

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

ํ™•์‹คํžˆ ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์†Œ์ˆ˜์˜ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์—๋Š” ๋งŽ์€ ์ž‘์—…(+๋ณต์žก์„ฑ ์ถ”๊ฐ€)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ๊ฐœ์ธ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ณ  ๊ณต์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ฐธ๊ณ : VTE(GNOME ํ„ฐ๋ฏธ๋„ ๋ฐ ์นœ๊ตฌ๋“ค) ๋Š” ๋ฒ„์ „ 0.44๋ถ€ํ„ฐ

์•„์ฃผ ์†Œ์ˆ˜์˜ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ

ํ„ฐ์น˜ํŒจ๋“œ๋กœ ์Šคํฌ๋กคํ•˜๋Š” ๋ถ„๋“ค์€ ์ข‹๋“  ์‹ซ๋“  VTE์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. :D

@egmontkob ์—ฌ๊ธฐ์— gnome ํ„ฐ๋ฏธ๋„ 3.18.3์ด ์žˆ๋Š”๋ฐ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ”„๋กœํ•„ ์„ค์ •์˜ ์Šคํฌ๋กค ์„น์…˜์—๋„ ์„ค์ •์ด ์—†๋Š” ๊ฒƒ

screen shot 2017-12-18 at 6 57 19 am

gt 3.18.3์€ vte 0.42๊ฐ€ ์žˆ์Œ์„ ์˜๋ฏธํ•˜๋Š” ๋ฐ˜๋ฉด ์ด ๊ธฐ๋Šฅ์€ 0.44์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ์„ค์ •์ด ์—†์œผ๋ฉฐ(ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๋ณด๋ฅ˜ ์ค‘์ธ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ์š”์ฒญ ์ด ์žˆ์Œ) ์ด์ „๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ ์ด๋ฏธ VTE์—์„œ ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋ถˆ๋งŒ์„ ํ‘œ๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  xtermjs์—์„œ ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ• ์ง€ ์—ฌ๋ถ€์™€ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” ์ „์ ์œผ๋กœ ๊ท€ํ•˜์˜ ์„ ํƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์ด VTE์— 1.5๋…„ ์ด์ƒ ์กด์žฌํ–ˆ์œผ๋ฉฐ ํŠธ๋ž™ํŒจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  VTE ์‚ฌ์šฉ์ž์—๊ฒŒ (๋งˆ์šฐ์Šค ํœ ์ด ์Šคํฌ๋กค์˜ "๋‹จ์œ„"๋ฅผ ๋ณด๋‚ด๋Š” ๋Œ€์‹ ์—) "๊ฐ•์ œ์ ์œผ๋กœ" ์กด์žฌํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด ๊ท€ํ•˜์—๊ฒŒ ๊ท€์ค‘ํ•œ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์ „์ฒด ์ค„์„ ์Šคํฌ๋กคํ•ฉ๋‹ˆ๋‹ค), ๊ทธ๋ฆฌ๊ณ  ์ด ์‹œ๊ฐ„ ๋™์•ˆ ๋‚˜๋Š” ์ด์ „ ํ–‰๋™์„ ๋˜์‚ด๋ฆฌ๊ธฐ ์œ„ํ•ด ์ด 2~3๊ฐœ์˜ ๋ถˆ๋งŒ์„ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์ด ํ˜•ํŽธ์—†์—ˆ๋‹ค๋ฉด ๋ถˆ๋งŒ์ด ํ›จ์”ฌ ๋” ๋งŽ์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


VTE์— ๋Œ€ํ•œ ์‚ฌ์šฉ ํšŸ์ˆ˜๋‚˜ ๋น„์œจ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ์€ ์ด ์„ค๋ฌธ ์กฐ์‚ฌ ์˜ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค(๊ธฐ์‚ฌ ๋‚ ์งœ๋Š” ์ฃผ์„์˜ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ์ˆ˜์ •๋จ, 2๋…„ ๋œ ํˆฌํ‘œ์ž„). ์ด๋Š” VTE๊ฐ€ Linux ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์‚ฌ์ด์˜ ์‹œ์žฅ ์ ์œ ์œจ์€ 50%, ์ฆ‰ ๊ฝค ํฝ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๋ฏธ ๋ถ€๋“œ๋Ÿฌ์šด ์Šคํฌ๋กค๋ง์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


์ €๋Š” xtermjs ๋ฐ ์นœ๊ตฌ๊ฐ€ ์ฒ˜์Œ์ด๊ณ  ์•„์ง ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฉ‹์ง„ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๋งˆ์Œ์— ์˜ฌ๋ฐ”๋ฅธ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•œ๋‹ค๋ฉด GNOME ํ„ฐ๋ฏธ๋„์€ VTE์— ๋Œ€ํ•œ hterm์ด xtermjs์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. VTE๋Š” ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ด์…˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” GTK+ ์œ„์ ฏ์ž…๋‹ˆ๋‹ค. GNOME Terminal, Xfce4 Terminal, Terminator, Tilix๋ฅผ ํฌํ•จํ•˜์—ฌ VTE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” 12๊ฐœ ์ •๋„์˜ ์ธ๊ธฐ ์žˆ๋Š” ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์•ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


๋™์ž‘์„ ์‹œ๋„ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•(๋ฐ GNOME ํ„ฐ๋ฏธ๋„์˜ ํ˜‘๋ ฅ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ VTE ๊ธฐ๋Šฅ ํฌํ•จ)์€ VTE๋งŒ ์ปดํŒŒ์ผํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์•ฑ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • git ๋˜๋Š” tarball ์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ
  • ./autogen.sh (git) ๋˜๋Š” ./configure (tarball)
  • make
  • ./src/app/vte-2.91 (0.51๋ถ€ํ„ฐ) ๋˜๋Š” ./src/testvte (0.50๊นŒ์ง€) ๋˜๋Š” ./bindings/vala/vte-2.91 ๋˜๋Š” ./src/vte-2.91 (0.50๊นŒ์ง€, ์–ด๋Š ์‹œ์ ์—์„œ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™๋จ)

๋‚˜๋Š” ๋งˆ์šฐ์Šค ํœ ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๊ทธ๊ฒƒ์ด ๋‚ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค :sweat_smile:

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

IMO ์ด ์‹œ์ ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์˜ˆ์ƒํ•œ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๋ง์€, ์‹ฌ์ง€์–ด hterm์—๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์บ”๋ฒ„์Šค ๋ Œ๋”๋Ÿฌ์—์„œ๋Š” ์‹ค์ œ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์บ”๋ฒ„์Šค ๋ Œ๋”๋Ÿฌ๋ฅผ ๋Œ€์ฒดํ•ด์•ผ ํ•˜๋Š” webgl ๋ Œ๋”๋Ÿฌ https://github.com/xtermjs/xterm.js/pull/1790 ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ๋‹นํžˆ ์‰ฝ๊ฒŒ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DOM ๋ Œ๋”๋Ÿฌ์˜ ๊ฒฝ์šฐ ์ƒ๋‹จ๊ณผ ํ•˜๋‹จ์— ๋ถ€๋ถ„์ ์œผ๋กœ ๋ณด์ด๋Š” ์„ ์„ ๊ฐ€์ง์œผ๋กœ์จ ์ด๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ #1790์—์„œ ์ฐจ๋‹จ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

๊ณ ๋ คํ•ด์•ผ ํ•  ๋‹ค๋ฅธ ์‚ฌํ•ญ: ydisp ์ด ์ •์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ณ  ํ‘œ์‹œ๋˜๋Š” ํ–‰์ด Terminal.rows ๋ณด๋‹ค ๋งŽ์œผ๋ฉด ์ฝ”๋“œ์—์„œ ์ผ๋ถ€ ๊ฐ€์ •์ด ๊นจ์ง‘๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์Šคํฌ๋ฆฐ ๋ฆฌ๋” ์ง€์›์— ์–ด๋–ค ์˜ํ–ฅ์„ ์ค๋‹ˆ๊นŒ?

์บ”๋ฒ„์Šค ๋ Œ๋”๋Ÿฌ๋กœ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์™œ ์•ˆ ๋ผ? viewportHeight + 2 ํ–‰ ์ˆ˜๋ฅผ ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ์Šคํฌ๋กค ์œ„์น˜์˜ ํ”ฝ์…€ ์˜คํ”„์…‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ํ–‰๊ณผ ๋‘ ๋ฒˆ์งธ ํ–‰ ์‚ฌ์ด ์–ด๋”˜๊ฐ€์—์„œ ์˜คํ”„์…‹ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ™•์‹คํžˆ ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์†Œ์ˆ˜์˜ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์—๋Š” ๋งŽ์€ ์ž‘์—…(+๋ณต์žก์„ฑ ์ถ”๊ฐ€)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ๊ฐœ์ธ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

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

์™œ ์•ˆ ๋ผ?

@sdegutis ๋„ค, ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‹น์‹œ์—๋Š” ์บ”๋ฒ„์Šค ๋ Œ๋”๋Ÿฌ๊ฐ€ ํ•„์š”ํ•œ ์ฝ˜ํ…์ธ  ์„น์…˜๋งŒ ๋ฌดํšจํ™”ํ•˜๋Š” ํŠน์ˆ˜ ๋กœ์ง์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ๋„๋กœ ์ตœ์ ํ™”๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์บ”๋ฒ„์Šค ๋ Œ๋”๋Ÿฌ๋กœ ํ„ฐ๋ฏธ๋„์„ ์Šคํฌ๋กคํ•˜๋ฉด ์–ด์จŒ๋“  ๋ชจ๋“  ํ–‰์ด ๋‹ค์‹œ ๋ Œ๋”๋ง๋˜๋ฉฐ ๊ธฐ๋ณธ ๊ณ„ํš์€ ์–ด์จŒ๋“  ์บ”๋ฒ„์Šค ๋ Œ๋”๋Ÿฌ๋ฅผ ๋‹จ๊ณ„์ ์œผ๋กœ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊ฝค ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 3๊ฐœ์˜ ๋ Œ๋”๋Ÿฌ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋ฉฐ ํŠนํžˆ webgl์—๋Š” ๋ช‡ ๊ฐ€์ง€ ํŠน๋ณ„ํ•œ ์กฐ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(ํ–‰ * ์—ด๋ณด๋‹ค ๋” ๋งŽ์€ ์…€์ด ๊ทธ๋ ค์ง€๊ธฐ ๋•Œ๋ฌธ์— ์†์„ฑ ๋ฒ„ํผ์˜ ํฌ๊ธฐ ์ฆ๊ฐ€).

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

Visual Studio Code์—์„œ ํ„ฐ๋ฏธ๋„์„ ์Šคํฌ๋กคํ•  ๋•Œ๋งˆ๋‹ค ๋‚ด๊ฐ€ ์–ด๋””์— ์žˆ์—ˆ๋Š”์ง€ ์ถ”์ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋“œ๋Ÿฌ์šด ์Šคํฌ๋กค์€ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์ด๋ฉฐ ์šฐ๋ฆฌ์—๊ฒŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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