GSoC 2018 Ideas - minsuk-jang/teamproject GitHub Wiki

์ด ๋ชฉ๋ก์— ๊ธฐ์—ฌ :

์†Œ๊ฐœ

๋‹ค์Œ์€ GSoC 2018์— ๋Œ€ํ•œ ํ”„๋กœ์ ํŠธ ์•„์ด๋””์–ด ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋“ค์€ C, Makefiles, Python, Lua ๋˜๋Š” vimscript์— ์ต์ˆ™ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Neovim์€ Vim์„ ํ™•์žฅ ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Neovim์˜ vision์€ Projects ๋ชฉํ‘œ์™€ Non-goals์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜๋Š” "ํ•ดํ‚น"๊ณผ ํ˜‘์—…์„ ์กฐ์žฅํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ์—ฌ์ž์˜ ์žฅ๋ฒฝ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋ฌธ์„œ๋ฅผ ๊ฐœ์„ ํ•˜๋ ค๋Š” ๋…ธ๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์œ„ํ‚ค์—๋Š” Neovim ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ฐœ๋ฐœ ๋ฐ ๊ณตํ—Œ์— ๊ด€ํ•œ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Neovim ์†Œ์Šค๋Š” 1987 ๋…„์œผ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค. ์ฆ‰, ๊ทธ ๋‹น์‹œ์—๋Š” libuv์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ์œ ์ง€ํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ ์•„์ด๋””์–ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋‹จ์ˆœํžˆ ์ถ”๊ฐ€ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ์•„์ด๋””์–ด๋ณด๋‹ค ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ๋” ์˜ค๋ž˜๋˜๊ณ  ๋ณต์žกํ•œ ๋ถ€๋ถ„์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์€ ๋” ๊ฐ„๋‹จํ•˜๊ณ  ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ํ•™์Šต ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์šธ ์ˆ˜ ์žˆ๊ณ  ํŒ€๊ณผ ํ˜‘๋ ฅํ•˜์—ฌ ๊ฐ€์žฅ ๋งŽ์€ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐพ์„ ์ˆ˜์žˆ๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ๊ธฐ์ˆ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

#neovim IRC ๋˜๋Š” gitter channel์— ๊ฐ€์ž…ํ•˜์—ฌ ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง€์—ญ ์‚ฌํšŒ ๋ฐ ๋ฉ˜ํ† ์™€ ๋…ผ์˜ ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ํ†ต์‹ ์€ ์˜คํ”ˆ ์†Œ์Šค ๊ฐœ๋ฐœ์˜ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด๋ฏ€๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ธฐ ์ „์— ์—ฐ๋ฝ์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก์€ ๋ช‡ ๊ฐ€์ง€ ์•„์ด๋””์–ด ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ท€ํ•˜๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ œ์•ˆ์„ ๊ธฐ์œ ๋งˆ์Œ์œผ๋กœ ๋“ฃ์Šต๋‹ˆ๋‹ค.

ํŒ

  • Vim ๊ฐœ๋… (์˜ˆ : "textlock")์ด ์–ธ๊ธ‰ ๋œ ๊ณณ์ด๋ฉด neovim (: help textlock) ๋‚ด์—์„œ ": help" ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜๋ฏธ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์งˆ๋ฌธ์„ํ•˜๊ณ  ๋ถ€๋ถ„ ์—…๋ฌด๋ฅผ ์ž์ฃผ ๊ฒŒ์‹œํ•˜์‹ญ์‹œ์˜ค (๊ฐ€๋Šฅํ•œ ํ•œ ๋งค์ผ ๋˜๋Š” 2 ๋ฒˆ). ์ผ์ด ์ง€์ €๋ถ„ํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ "[WIP]"๋ฅผ pull ์š”์ฒญ (PR) ์ œ๋ชฉ์— ๋„ฃ์œผ์‹ญ์‹œ์˜ค.
  • ํ’€ ์š”์ฒญ์— ๋Œ€ํ•ด ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋Š” CI(Continuous Integration) ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•˜์‹ญ์‹œ์˜ค. PR์— ์ž‘์—…์„ ๋ณด๋‚ด๋ฉด ๊ณ„์†ํ•ด์„œ ๋กœ์ปฌ์—์„œ ์ž‘์—…ํ•˜๋Š” ๋™์•ˆ ์ „์ฒด ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๊ฐ€ PR์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • [wiki] (https://github.com/neovim/neovim/wiki)์—๋Š” ๋นŒ๋“œ, ๋””๋ฒ„๊น… ๋ฐ ๊ฐœ๋ฐœ ํŒ์— ๋Œ€ํ•œ ์ตœ์‹  ๋ฌธ์„œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • Neovim์„ ๊ฐœ๋ฐœํ•˜๋ ค๋ฉด ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ, cmake ๋ฐ ์ปดํŒŒ์ผ๋Ÿฌ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ctags๋„ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • contributing guidelines๋„ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

Projects

๋ชฉ์ฐจ

Refactoring


์™ธ๋ถ€ UI API ๊ฐœ์„ 

๋ฐ”๋žŒ์งํ•œ ๊ธฐ์ˆ : C ์–ธ์–ด

๊ธฐ์ˆ : Neovim์€ msgpack rpc api๋ฅผ ํ†ตํ•ด ํฌํ•จ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ๋งŽ์€ ์–ธ์–ด์—์„œ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ ์žˆ๋Š” project๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” API ๋‹ค์Œ์— ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋‚ด๋ถ€ ํ‘œํ˜„์„ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๊ธ‰ ์–ธ์–ด์˜ ํด๋ผ์ด์–ธํŠธ๋Š” ํ˜„์žฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ตœ์ ํ™”๋ฅผ ์ ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์–ธ์–ด์˜ ์ฃผ์š” ์„ฑ๋Šฅ bottle neck์€ boxed values์— ์˜ํ•ด ๋ฐฉํ•ด๋ฐ›๋Š” ์ดˆ๋‹น ๋งŽ์€ ๊ฐ’ ์กฐํšŒ๊ฐ€ ํ•„์š”ํ•œ ์Šคํฌ๋กค๋ง์ด๋ฉฐ boxed values์— ์˜ํ•ด ๋ฐฉํ•ด๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

API๋ฅผ ๊ฐœ์„  ํ•  ์ˆ˜์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • screen.c์—์„œ ํ™”๋ฉด ๊ทธ๋ฆฌ๊ธฐ ๋ช…๋ น์„ ์ตœ์ ํ™”ํ•˜์‹ญ์‹œ์˜ค.
  • frontend gui's ๊ฐœ๋ฐœ์„ ์œ„ํ•œ SDK
  • Api๊ฐ€ ๋ฏธ๋ž˜์˜ improvements์„ ๊ณ ๋ ค

์˜ˆ์ƒ ๊ฒฐ๊ณผ: ์™ธ๋ถ€ API๋กœ ๊ตฌํ˜„ ๋œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋” ๋น ๋ฅด๊ณ  ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์–ด๋ ค์›€: ... ์ค‘๊ฐ„~์–ด๋ ค์›€

๋ฉ˜ํ† : Justin M Keyes (@justinmk)

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ


"๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ" ๊ธฐ๋Šฅ

๋ฐ”๋žŒ์งํ•œ ๊ธฐ์ˆ : ๋™์‹œ์„ฑ ์œ ํ˜• ๋ฌธ์ œ ๋ฐ ๋„คํŠธ์›Œํ‚น ๊ฒฝํ—˜

๊ธฐ์ˆ :

์—ฌ๋Ÿฌ nvim ์žฅ์น˜๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ณต์œ ๋ฅผ ์œ„ํ•œ p2p ๊ธฐ์ˆ . ํŒŒ์ด์ฌ์˜ "๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ" ๋ชจ๋“ˆ๊ณผ ๋น„์Šทํ•˜๊ฒŒ, ์•„์ด๋””์–ด๋Š” Nvim ๊ณ„์‚ฐ (VimL ๋ฐ / ๋˜๋Š” Lua)์„ ํ•˜์œ„ Nvim ํ”„๋กœ์„ธ์Šค๋กœ offloadํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด๋ ค์›€: ์ค‘๊ฐ„~์–ด๋ ค์›€

๋ฉ˜ํ† : Justin M Keyes (@justinmk)


if_perl ํ˜ธํ™˜์„ฑ layer

๋ฐ”๋žŒ์งํ•œ ๊ธฐ์ˆ : any(lua, perl, python)

๊ธฐ์ˆ : Vim์˜ legacy perl API๋ฅผ ๊ตฌํ˜„ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด ruby layer๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. Vim์€ python / lua / ruby โ€‹โ€‹/ perl ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ง€์›ํ•˜๋„๋ก ์ปดํŒŒ์ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Neovim์€ ์–ด๋–ค ์–ธ์–ด๋กœ๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž‘์„ฑํ•  ์ˆ˜์žˆ๋Š” rpc ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ธฐ์ˆ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. perl API ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜์ง€๋งŒ, ๋น ์ง„ ์œ ์ผํ•œ ๋ถ€๋ถ„์€ vim perl ์ง€์›๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” neovim ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค.

์–ด๋ ค์›€: ์ค‘๊ฐ„~์–ด๋ ค์›€

์˜ˆ์ƒ ๊ฒฐ๊ณผ: Vim perl ํ”Œ๋Ÿฌ๊ทธ์ธ์€ neovim์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ˜ํ† : Justin M Keyes (@justinmk)


Haxe ํด๋ผ์ด์–ธํŠธ

๋ฐ”๋žŒ์งํ•œ ๊ธฐ์ˆ : Haxe ๋˜๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ Java / C # / Python / JS

๊ธฐ์ˆ : haxe๋กœ ์ž‘์„ฑ๋œ api ํด๋ผ์ด์–ธํŠธ๋Š” ๋” ๋งŽ์€ ์–ธ์–ด๊ฐ€ ์œ ์ง€ ๊ด€๋ฆฌ๋œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜์žˆ๊ฒŒํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ƒ ๊ฒฐ๊ณผ: ํ˜„์žฌ python-client์˜ ๋Œ€๋ถ€๋ถ„์˜ ํ…Œ์ŠคํŠธ๋Š” haxe python ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋ ค์›€: ์ค‘๊ฐ„

๋ฉ˜ํ† : Justin M Keyes (@justinmk)


LSP ์ง€์›

๋ฐ”๋žŒ์งํ•œ ๊ธฐ์ˆ : Lua์™€ Vim์— ๋Œ€ํ•œ ์ง€์‹ (๋˜๋Š” ๋ฌธ์„œํ™” ๋Šฅ๋ ฅ)

๊ธฐ์ˆ : initial discussion continued here

์ด ์•„์ด๋””์–ด๋Š” Microsoft LSP์— ๋Œ€ํ•œ ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‘ ๋ฐฐ์˜ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

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

์˜ˆ์ƒ ๊ฒฐ๊ณผ: neovim๊ณผ ํ•จ๊ป˜ ์ œ๊ณต ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์  LSP Client.

์–ด๋ ค์›€: ์ค‘๊ฐ„

๋ฉ˜ํ† : Justin M Keyes (@justinmk)

์งˆ๋ฌธ์€ TJ DeVries (@ tjdevries)๋กœ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„๊ตฌ ๋ฐ ์ธํ”„๋ผ


์ง€์†์ ์ธ ํ†ตํ•ฉ ํ–ฅ์ƒ

๋ฐ”๋žŒ์งํ•œ ๊ธฐ์ˆ : command line์—์„œ์˜ ์ต์ˆ™ํ•จ

๊ธฐ์ˆ : ๋นŒ๋“œ ๋ฐ ๊ธฐํƒ€ ์ž‘์—…์„ ์ž๋™ํ™”ํ•˜๋ฉด ์ฐธ์—ฌ์ž์˜ ์žฅ์• ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…์—๋Š” ์ž๋™์œผ๋กœ ๋นŒ๋“œ artifacts๋ฅผ github releases, html ๋ฌธ์„œ ์ƒ์„ฑ, ์ผ๋ถ€ awk ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํŒŒ์ด์ฌ์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑ, ๊น”๋”ํ•œ ๋นŒ๋“œ ๋“ฑ์œผ๋กœ pushํ•˜๋Š” ์ž‘์—…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. Neovim / bot-ci repo๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์–ด๋ ค์›€: ์‰ฝ๋‹ค.

๋ฉ˜ํ† : Justin M Keyes (@justinmk)


ํ”Œ๋Ÿฌ๊ทธ์ธ ๋„๊ตฌ

๋ฐ”๋žŒ์งํ•œ ๊ธฐ์ˆ : ์ข‹์€ prototyping ์–ธ์–ด.

๊ธฐ์ˆ : Neovim ํ”Œ๋Ÿฌ๊ทธ์ธ ๋„๊ตฌ๋Š” ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž ์œ ํ˜•์— ๋งž๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ : CheckHealth ๋ช…๋ น์„ ๊ฐœ์„ ํ•˜์—ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ถฉ๋Œ ๋˜๋Š” ๋ˆ„๋ฝ๋œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ฐ์ง€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

neovim์„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ํฌํ•จํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž๋Š” SDK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Plugin Manager์™€ ๊ฐ™์€ Intellij๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋ ค์›€: ์‰ฝ๋‹ค.

๋ฉ˜ํ† : Justin M Keyes (@justinmk)


Benchmarking

๋ฐ”๋žŒ์งํ•œ ๊ธฐ์ˆ : benchmarking ๊ฒฝํ—˜, ํ˜„๋Œ€ ์›น ์‚ฌ์ดํŠธ ์ œ์ž‘ ๋Šฅ๋ ฅ.

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

์–ด๋ ค์›€: ๋Œ€์ฒด๋กœ ์‰ฝ๋‹ค.

๋ฉ˜ํ† : Justin M Keyes (@justinmk)

ํ”„๋กœ์ ํŠธ ์•„์ด๋””์–ด๋ฅผ ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

ํ”„๋กœ์ ํŠธ ์‚ฌ์–‘

ํ•˜์œ„ ํ”„๋กœ์ ํŠธ


์ œ๋ชฉ

๋ฐ”๋žŒ์งํ•œ ๊ธฐ์ˆ :

๊ธฐ์ˆ :

์˜ˆ์ƒ ๊ฒฐ๊ณผ:

์–ด๋ ค์›€:

๋ฉ˜ํ† : ๋ฉ˜ํ†  ์ด๋ฆ„ (@MentorName)