naver/fe-news ๋‰ด์Šค๋ ˆํ„ฐ ๋ทฐ์–ด (๋น„๊ณต์‹)

๋ชฉ์ฐจ
๋ชฉ์ฐจ

    2023-12

    ๐Ÿ“š ๋งํฌ & ์ฝ์„ ๊ฑฐ๋ฆฌ

    2023๋…„๋„ ๊ฐœ๋ฐœ์ž ์—์ฝ”์‹œ์Šคํ…œ ํ˜„ํ™ฉ

    Jetbrains์—์„œ ๋ฐœํ‘œํ•œ 2023 ๊ฐœ๋ฐœ์ž ์„ค๋ฌธ์กฐ์‚ฌ ๊ฒฐ๊ณผ์ด๋‹ค. ์˜ฌํ•ด๋Š” AI ๊ด€๋ จ ์งˆ๋ฌธ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์„ค๋ฌธ ๋ฒ”์œ„๋ฅผ ํ™•๋Œ€ํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, ์ธ๊ตฌ ํ†ต๊ณ„, AI, ๋ผ์ดํ”„ ์Šคํƒ€์ผ ๋“ฑ์˜ ํ†ต๊ณ„๋ฅผ ์ œ๊ณตํ•œ๋‹ค. JavaScript์— ๋Œ€ํ•œ ๋‚ด์šฉ๋„ ํ•จ๊ป˜ ์‚ดํŽด๋ณด๋ฉด ์žฌ๋ฏธ์žˆ๋‹ค.

    Declarative UI ์ƒ๊ฐํ•˜๊ธฐ

    ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์ธ React๋Š” ์ž์‹ ์„ Declarative ํ•˜๋‹ค๊ณ  ์ผ์ปซ๋Š”๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํ˜น์‹œ Declarative UI๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ์žˆ๋Š”๊ฐ€? ๋ณธ ๊ธ€์—์„œ ํ•„์ž๋Š” Imperative์™€ Declarative๋ฅผ ๋น„๊ตํ•˜๊ณ , ํ˜„๋Œ€์˜ Declarative UI๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๊ณ  ํŠน์ง•์„ ๊ฐ€์ง€๋Š”์ง€ ์„ค๋ช…ํ•œ๋‹ค.

    KLED: ํ•œ๊ตญ์–ด๋ฅผ ์ง€์›ํ•˜๋Š” ํผ์ง€ ๊ฒ€์ƒ‰ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

    ์ง€๋‚œ 2021๋…„ 2์›”ํ˜ธ์—์„œ ํผ์ง€ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ๊ธ€์„ ์†Œ๊ฐœํ•œ ์ ์ด ์žˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ฐœ์ „์‹œ์ผœ ๋” '์ œ๋Œ€๋กœ' ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค๊ณ  ํ•œ๋‹ค. ํŠนํžˆ ํ•œ๊ธ€๋„ ๊ณ ๋ คํ•˜์—ฌ ๋งŒ๋“  ์ ์ด ๋ˆˆ์— ๋ˆ๋‹ค.

    ํผ์ง€ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰: ๋ฌธ์ž์—ด์„ ์ •ํ™•ํžˆ ์ž…๋ ฅํ•˜์ง€ ์•Š์•„๋„ ์›ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•. (e.g. ใ„ฑใ„ดใ…‡ -> ๊ฐ•๋‚จ์—ญ)

    MOBX + STANDARD DECORATORS

    ์–ผ๋งˆ ์ „ MobX๊ฐ€ 6.11 ๋ฒ„์ „์„ ์ถœ์‹œํ•˜์˜€๊ณ , ๊ณต์‹์ ์œผ๋กœ '๋‹ค์‹œ' decorator๋ฅผ ์ง€์›ํ•œ๋‹ค๊ณ  ๋ฐํ˜”๋‹ค. 3๋…„ ์ „ 6.0 ๋ฒ„์ „ ๋ฐœํ‘œ ๋‹น์‹œ์—๋Š” decorator ๋Œ€์‹  makeObservable, makeAutoObservable์ด๋ž€ ๋Œ€์•ˆ์ฑ…์„ ์ œ์‹œํ–ˆ๋Š”๋ฐ, ์™œ ๋‹ค์‹œ decorator๋ฅผ ์ง€์›ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”์ง€, ๋˜ ์•ž์œผ๋กœ์˜ ๊ณ„ํš์€ ์–ด๋–ค์ง€ ํ•œ๋ฒˆ ์‚ดํŽด๋ณด์ž.

    UI Design Tips

    UI๋ฅผ ๊ตฌ์„ฑ์„ ๊ณ ๋ฏผํ•  ๋•Œ ์ ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ์†Œ์†Œํ•œ ํŒ๋“ค์„ ๋ชจ์•„๋‘” ๊ณณ์ด๋‹ค. ๊ฐ€๋ณ๊ฒŒ ์ฝ์–ด๋ณด๋ฉด ์ข‹์„ ๋“ฏํ•˜๋‹ค.

    OpenNext

    Next.js๋Š” ์ž์‚ฌ์˜ ์„œ๋น„์Šค์ธ Vercel์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์„œ๋ฒ„๋ฆฌ์Šค ํ”Œ๋žซํผ์—์„œ ํ˜ธ์ŠคํŒ…ํ•˜๋„๋ก ์ œ๊ณต๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋Š”๊ฐ€?

    Vercel์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, Node.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(Next.js ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ด ์ง์ ‘ ์„œ๋น™ํ•˜๊ฑฐ๋‚˜ ์ •์  ๋นŒ๋“œ๋ฅผ ์‚ฌ์šฉ)์œผ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฝ์šฐ์—๋Š”, Vercel์„ ์‚ฌ์šฉํ•  ๋•Œ์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.

    OpenNext๋Š” Next.js ๋นŒ๋“œ๋ฅผ ํŒจํ‚ค์ง€ํ™”ํ•ด์„œ FaaS ํ”Œ๋žซํผ(ํ˜„์žฌ๋Š” ASW Lambda๋งŒ ์ง€์›)์— ๋ฐฐํฌ๋˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์–ด๋Œ‘ํ„ฐ๋กœ, ํ”„๋ ˆ์ž„์›Œํฌ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” Next.js ์šฉ ์˜คํ”ˆ ์†Œ์Šค ์„œ๋ฒ„๋ฆฌ์Šค ์–ด๋Œ‘ํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.

    [์ฐธ๊ณ ] Is NextJS A TRAP??? Vendor Lock In Rant

    Building towards a new default rendering model for web applications

    ์ง€๋‚œ 10์›” 26์ผ ๊ณต๊ฐœ๋œ Next.js 14์—์„œ๋Š” ๋น ๋ฅธ ์ดˆ๊ธฐ ์ •์  ์‘๋‹ต์„ ์ œ๊ณตํ•˜๋Š” ๋™์  ์ฝ˜ํ…์ธ ๋ฅผ ์œ„ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ PPR(Partial Prerendering) ํ”„๋ฆฌ๋ทฐ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

    PPR์€ ISR(Incremental Static Regeneration)์˜ ์‹ ๋ขฐ์„ฑ๊ณผ ์Šคํ”ผ๋“œ, ๊ทธ๋ฆฌ๊ณ  SSR(Server-Side Rendering)์˜ ๋™์  ๊ธฐ๋Šฅ์„ ํ˜ผํ•ฉํ•œ ํ†ตํ•ฉ ๋ชจ๋ธ์„ ์ œ๊ณตํ•œ๋‹ค.

    PPR์ด ํ™œ์„ฑํ™”๋˜๋ฉด ๋‹จ์ผ React ๋ Œ๋”๋ง ํŠธ๋ฆฌ์—์„œ ๋ Œ๋”๋ง์ด ๋ฐœ์ƒ๋˜๋ฉฐ, <Suspense />ย ๊ฒฝ๊ณ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •์  ์…ธ์„ ์ƒ์„ฑํ•œ๋‹ค. fallback์œผ๋กœ ์ง€์ •ํ•œ ์š”์†Œ๋Š” ์‚ฌ์ „ ๋ Œ๋”๋ง ๋œ๋‹ค.

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

    [์ฐธ๊ณ ] Partial Prerendering in Next.js 14 (Preview)

    performance.now() 2023

    ์ง€๋‚œ 11์›” 2~3์ผ ์•”์Šคํ…Œ๋ฅด๋‹ด์—์„œ ์—ด๋ฆฐ performance.now()๋Š” ์›น ์„ฑ๋Šฅ์„ ๋‹ค๋ฃจ๋Š” ์ฝ˜ํผ๋Ÿฐ์Šค๋‹ค. 14๊ฐœ์˜ ์„ธ์…˜๋“ค์„ ํ†ตํ•ด ์›น ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ๋“ค์–ด๋ณด๊ณ  ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค.

    ESLint: Deprecation of formatting rules

    ์ง€๋‚œ 11์›” 3์ผ ๋ฆด๋ฆฌ์Šค๋œ ESLint v8.53.0์—์„œ ํฌ๋งคํŒ… ๊ทœ์น™์„ deprecate ์ฒ˜๋ฆฌ๋˜์—ˆ๊ณ , ์ดํ›„ v10์—์„œ ์™„์ „ํžˆ ์ œ๊ฑฐํ•  ๊ณ„ํš์„ ๋ฐœํ‘œํ–ˆ๋‹ค.

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

    ๋Œ€์‹  ์ฝ”๋“œ์˜ ํ˜•์‹์„ ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด, ์ฝ”๋“œ ํฌ๋งคํ„ฐ์ธ Prettier ๋˜๋Š” Rust ๊ธฐ๋ฐ˜์˜ dprint๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

    Design Tools Survey 2023

    ๋งคํ•ด ์ง„ํ–‰๋˜๋Š” ๋””์ž์ธ ๋„๊ตฌ ์„ค๋ฌธ์กฐ์‚ฌ๋กœ, Front-end ๊ด€์ ์—์„œ ๋ช‡ ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ๋ถ€๋ถ„๋“ค์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์—ฟ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    ๊ฐ€๋ น ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š”์ง€(๊ทธ๋ฆฌ๊ณ  ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์–ด๋–ค ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€), ๊ธฐ๋ณธ ๋˜๋Š” ๊ณ ๊ธ‰ ํ”„๋กœํ† ํƒ€์ž…์„ ๋งŒ๋“ค ๋•Œ ๋„๊ตฌ๋Š” ๋ฌด์—‡์„ ํ™œ์šฉํ•˜๋Š”์ง€ ๋“ฑ ๋‹ค์–‘ํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

    How to fix nasty circular dependency issues once and for all in JavaScript & TypeScript

    ํ”„๋กœ์ ํŠธ๊ฐ€ ์ ์ฐจ ์ง„ํ–‰๋ ์ˆ˜๋ก ํŒŒ์ผ๋“ค์ด ๋งŽ์•„์ง€๊ณ  import, export ๊ด€๊ณ„๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ์–ด๋–ค ํ•œ ํŒŒ์ผ๊ณผ ๋‹ค๋ฅธ ํŒŒ์ผ์ด ์„œ๋กœ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ '์ˆœํ™˜ ์ฐธ์กฐ(circular dependency) ๋ฌธ์ œ'๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด ๋ฌธ์ œ๋Š” ๋Œ€๊ฐœ ์˜ˆ์ƒ ๋ฐ–์˜ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋ฅผ ์ธ์‹ํ•˜๊ธฐ๋„ ํ•ด๊ฒฐํ•˜๊ธฐ๋„ ์‰ฝ์ง€ ์•Š๋‹ค.

    ๋ณธ ๊ธ€์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ˆœํ™˜ ์ฐธ์กฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ/์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ํŒจํ„ด์„ ์ œ์‹œํ•œ๋‹ค.

    Transition animations: a practical guide

    ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ๋ชจ์…˜์€ ์ œํ’ˆ ๋””์ž์ธ์˜ ํ•ต์‹ฌ์ด์ง€๋งŒ ์ด๊ฒƒ๋“ค์„ ๊ตฌ์„ฑํ•  ๋•Œ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ท ํ˜•์„ ์ฐพ๊ธฐ๋ž€ ์—ฌ๊ฐ„ ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ๋‹ค. ์ด ๊ธ€์€ ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ๋ชจ์…˜ ์ค‘์—์„œ ํŠนํžˆ Transition์— ์ค‘์ ์„ ๋‘๊ณ  6๊ฐ€์ง€ ์›์น™๊ณผ ๊ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์„ธ์„ธํ•œ ์˜ˆ์ œ๋“ค์„ ํ•จ๊ป˜ ์ œ์‹œํ•˜๊ณ  ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ œํ’ˆ ๋‹จ๊ณ„์—์„œ Transition ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ ์šฉํ•  ๋•Œ ๊ณ ๋ คํ•  ๋งŒํ•œ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์–ป์–ด ๋ณด์ž.


    ๊ธ€์—์„œ ์ œ์‹œํ•˜๋Š” '๋” ๋‚˜์€ ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์œ„ํ•œ 6๊ฐ€์ง€ ์›์น™'์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    1. ๋ถˆํˆฌ๋ช…๋„(opacity)๋กœ fade in ๋ฐ fade out ์ ์šฉ
    2. ์ƒ๋™๊ฐ์„ ๋”ํ•˜๊ธฐ ์œ„ํ•œ ์Šค์ผ€์ผ๋ง
    3. ์ผ๊ด€๋œ ๋ฐฉํ–ฅ์„ฑ ์œ ์ง€
    4. ์†๋„ ๊ท ํ˜• ๋งž์ถ”๊ธฐ
    5. ์šฐ์„ ์ˆœ์œ„ ์ง€์ •, ์ˆœ์„œ ์ง€์ • ๋ฐ ๊ทธ๋ฃนํ™”ํ•˜๊ธฐ
    6. ๊ณต๊ฐ„์„ฑ ํ™•๋ฆฝํ•˜๊ธฐ

    ๐Ÿ•น ํŠœํ† ๋ฆฌ์–ผ

    React Internals Deep Dive

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

    An Interactive Guide to CSS Grid

    ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” CSS Grid์˜ ๊ธฐ๋ณธ๋ถ€ํ„ฐ ์‚ฌ์šฉ๋ฒ•๊นŒ์ง€ ๋Œ€ํ™”ํ˜• ์˜ˆ์ œ๋กœ ์„ค๋ช…ํ•˜๋Š” ์ ์ด ๋งค๋ ฅ์ ์ด๋‹ค. ๋จผ์ €, ์ž‘๊ฐ€๋Š” ๊ธ€์—์„œ ํ˜„์žฌ CSS Grid๋Š” caniuse ๊ธฐ์ค€ 97.8%์˜ ์œ ์ €๋ฅผ ์ง€์›ํ•˜๋ฉฐ, Flexbox๋Š” ์ด๋ณด๋‹ค 0.5%๋งŒ์ด ๋†’๋‹ค๊ณ  ์ด์•ผ๊ธฐํ•œ๋‹ค.
    CSS Grid๋Š” 1์ฐจ์› Flexbox๋ณด๋‹ค ๋ณต์žกํ•œ 2์ฐจ์› ๋ ˆ์ด์•„์›ƒ์„ ์‰ฝ๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์ด๋‹ค. ๋•Œ๋•Œ๋กœ ์ด ๋‘ ๊ธฐ์ˆ ์€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ๋” ๊ฐ•๋ ฅํ•œ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ ๋‹ค. ์ด์ œ ์ตํ˜€๋ณด๋„๋ก ํ•˜์ž.

    ๐Ÿ“ฆ ์ฝ”๋“œ์™€ ๋„๊ตฌ

    SST

    SST

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

    SST๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด IDE์—์„œ ์ง์ ‘ ๋””๋ฒ„๊น…๊ณผ ์›น ๊ธฐ๋ฐ˜์˜ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ฝ”๋“œ๋กœ ํ‘œํ˜„๋œ AWS ์ธํ”„๋ผ๋ฅผ AWS CDK๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

    [์ฐธ๊ณ ] SST in 100 seconds

    jsvu

    jsvu๋Š” "JavaScript (engine) Version Updater"๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, ๋‹ค์–‘ํ•œ JavaScript ์—”์ง„๋“ค์˜ ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•  ํ•„์š” ์—†์ด ์ตœ์‹  ๋ฒ„์ „๋“ค์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ๋‹ค.

    LLM Visualization

    ์ด ๋„๊ตฌ๋Š” LLM(Large Language Model)์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์‹œ๊ฐํ™”ํ•ด ๋ณด์—ฌ์ฃผ๋ฉฐ, PyTorch์˜ ์ตœ์†Œ GPT ๊ตฌํ˜„์ธ minGPT ํ”„๋กœ์ ํŠธ์—์„œ ์˜๊ฐ์„ ์–ป์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

    ํ•™์Šต๋ณด๋‹ค๋Š” ์ถ”๋ก ์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ์œผ๋ฉฐ, toy ๋ชจ๋ธ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๋ฏธ๋ฆฌ ํ•™์Šตํ•˜๊ณ  ์ถ”๋ก  ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•ด ์ค€๋‹ค. FE ๊ด€์ ์—์„œ๋Š” ๋‚ด์šฉ ์ž์ฒด๋ณด๋‹ค๋Š” ๊ฐ€์ด๋“œ์˜ ๊ตฌํ˜„(wasm์„ ์‚ฌ์šฉ)๊ณผ ๊ตฌ์„ฑ ์ธก๋ฉด์—์„œ ํฅ๋ฏธ๋กญ๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

    package-majors

    ์ด ์›น์„œ๋น„์Šค ๋„๊ตฌ๋Š” NPM ํŒจํ‚ค์ง€๋“ค์˜ ๋ฉ”์ด์ € ๋ฒ„์ „๋“ค์˜ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์ฐจํŠธ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

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

    ts-remove-unused

    ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” TypeScript ์ฝ”๋“œ๋ฅผ ์ฐพ์•„์„œ ์‚ญ์ œํ•ด ์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค. CLI๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.