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

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

    2024-06

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

    Web at Google I/O 2024

    ์ง€๋‚œ 5์›” 14์ผ ์ง„ํ–‰๋œ ์ด๋ฒˆ ํ–‰์‚ฌ์—์„œ๋Š” ์›น๊ณผ ๊ด€๋ จ๋œ ์ด 27๊ฐœ์˜ ์„ธ์…˜์ด ์ง„ํ–‰๋˜์—ˆ์œผ๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํฅ๋ฏธ๋กœ์šด ์ฃผ์ œ๋“ค์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    • What's new in the Web
      • ์›น ํ”Œ๋žซํผ์˜ Baseline์„ ์ œ๊ณตํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์›น ๊ธฐ๋Šฅ๊ณผ API์˜ ์ƒํ˜ธ์šด์šฉ์„ฑ ์ƒํƒœ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.
      • ์ƒˆ๋กœ์šด Web Platform Status ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ๊ธฐ๋Šฅ๋“ค์˜ ํ˜„์žฌ ์ƒํƒœ์™€ ๋ธŒ๋ผ์šฐ์ € ์ง€์› ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Navigating the JavaScript framework ecosystem
      • ์ตœ์‹  ํŠธ๋ Œ๋“œ์™€ ์—…๋ฐ์ดํŠธ ๋“ฑ์˜ ํฌ๊ด„์ ์ธ ๊ฐœ์š”๋ฅผ ํ†ตํ•ด Angular, React, Vue์™€ ๊ฐ™์€ ์ธ๊ธฐ ํ”„๋ ˆ์ž„์›Œํฌ์™€ Svelte ๋ฐ SolidJS์™€ ๊ฐ™์€ ๋– ์˜ค๋ฅด๋Š” ์Šคํƒ€ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
      • ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ๊ฐœ๋ฐœ์ž์˜ ์ƒ๊ฐ์„ ์‚ดํŽด๋ณด๊ณ , ๋‹ค์Œ ์›น ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ์ •๋ณด์— ์ž…๊ฐํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋„๋ก ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.
    • From fast loading to instant loading (๋ฐ๋ชจ)
      • ์ƒˆ๋กœ์šด Speculation Rules API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Chrome๊ณผ ์›น ํ”Œ๋žซํผ์—์„œ ๊ฑฐ์˜ ์ฆ‰๊ฐ์ ์ธ ํŽ˜์ด์ง€ ๋กœ๋“œ๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ•œ๋‹ค.
      • ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ Application > Speculative loads ํƒญ์„ ํ†ตํ•ด ํ˜„์žฌ ์‚ฌ์ดํŠธ์— ์„ค์ •๋œ ๊ทœ์น™๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Automate browser testing with tools & best practices from Chrome
      • ํ…Œ์ŠคํŠธ์šฉ ํฌ๋กฌ, ํฌ๋กฌ์˜ ์ƒˆ๋กœ์šด Headless ๋ชจ๋“œ, Puppeteer, ๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด ํ‘œ์ค€ ๋ธŒ๋ผ์šฐ์ € ์ž๋™ํ™” ํ”„๋กœํ† ์ฝœ์ธ WebDriver BiDi์™€ ๊ฐ™์€ ์ตœ์‹  ์›น ํ‘œ์ค€์„ ์†Œ๊ฐœํ•œ๋‹ค.

    Why, after 6 years, Iโ€™m over GraphQL

    ์ €์ž๋Š” 2018๋…„๋ถ€ํ„ฐ GraphQL์„ ํ”„๋กœ๋•์…˜์—์„œ ์‚ฌ์šฉํ•ด ์™”๊ณ , ์—ด๋ ฌํ•œ ํŒฌ์ด์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋ช‡ ๋…„์ด ์ง€๋‚˜๊ณ  ๋ณด์•ˆ, ์„ฑ๋Šฅ, ์œ ์ง€ ๋ณด์ˆ˜์„ฑ ๊ฐ™์€ ๊ธฐ๋Šฅ ์™ธ์ ์ธ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋” ์ค‘์š”ํ•œ ํ™˜๊ฒฝ์— ๋ฐฐํฌํ•  ๊ธฐํšŒ๊ฐ€ ์ƒ๊ธฐ๋ฉด์„œ ๊ด€์ ์ด ๋ฐ”๋€Œ์—ˆ๊ณ , ์ง€๋‚œ ๋ช‡ ๋…„๊ฐ„ ๊ฒฝํ—˜ํ•œ ์ตœ์•…์˜ ์ƒํ™ฉ๋“ค๋กœ ์ธํ•ด ์˜ค๋Š˜๋‚  ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ GraphQL์„ ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š” ์ด์œ ์™€ ๋” ๋‚˜์€ ๋Œ€์•ˆ์ด ๋ฌด์—‡์ธ์ง€๋ฅผ ์„ค๋ช…ํ•œ๋‹ค.

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

    An even faster Microsoft Edge

    Edge 122๋ถ€ํ„ฐ ๋ธŒ๋ผ์šฐ์ € ์ž์ฒด ์ฃผ์š” ๊ธฐ๋Šฅ๋“ค์˜ ์„ฑ๋Šฅ๋“ค๊ณผ ๋ฐ˜์‘ํ˜• ์ง€์›์ด ๋”์šฑ ํ–ฅ์ƒ๋˜์—ˆ์Œ์„ ๋ฐํ˜”๋‹ค. UI ์‘๋‹ต์„ฑ ๊ฐœ์„ ์€ ์‚ฌ์šฉ์ž ๊ธฐ๊ธฐ๋กœ๋ถ€ํ„ฐ ์ˆ˜์ง‘๋œ ์ง€ํ‘œ๋ฅผ ํ†ตํ•ด ์ด๋ค„์กŒ๊ณ  UI๋Š” 42%, SSD๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋˜๋Š” 8GB ๋ฉ”๋ชจ๋ฆฌ ์ดํ•˜ ๊ธฐ๊ธฐ์—์„œ๋Š” 76%๊นŒ์ง€ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์—ˆ๋‹ค๊ณ  ๊ณต๊ฐœํ–ˆ๋‹ค.

    Edge UI๋ฅผ ์œ„ํ•œ ๋ฒˆ๋“ค์˜ ํฌ๊ธฐ๊ฐ€ ๋น„๋Œ€ํ–ˆ์œผ๋ฉฐ, ์ด๋Š” 2๊ฐ€์ง€ ์š”์ธ์—์„œ ๊ธฐ์ธ๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

    • Edge์—์„œ UI ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์€ ์ถฉ๋ถ„ํžˆ ๋ชจ๋“ˆํ™”๋˜์–ด ์žˆ์ง€ ์•Š์•˜๊ณ , ์„œ๋กœ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ž‘์—…ํ•˜๋Š” ํŒ€๋“ค์€ ๊ผญ ํ•„์š”ํ•˜์ง€ ์•Š์•„๋„ ๊ณตํ†ต ๋ฒˆ๋“ค๋ง์ด ์ด๋ฃจ์–ด์กŒ๋˜ ๋ฌธ์ œ
    • ๋งŽ์€ ์ฝ”๋“œ๊ฐ€ JavaScript๋ฅผ ํ†ตํ•ด ๋ Œ๋”๋ง(CSR) ๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ(React)๋ฅผ ์‚ฌ์šฉ

    ์ด๋Š” ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ค์šด๋กœ๋“œ ํ›„ ํด๋ผ์ด์–ธํŠธ ์˜์—ญ์—์„œ ๋ Œ๋”๋ง์ด ์ง„ํ–‰๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ–ˆ๊ณ , ๋‚ฎ์€ ์‚ฌ์–‘์˜ ๊ธฐ๊ธฐ์—์„  ๋งŽ์€ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•  ์ˆ˜๋ฐ–์— ์—†์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

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

    Misconceptions about CSS Specificity

    ๋™์ผํ•œ ์š”์†Œ๋“ค์ด ์„ ํƒ๋  ์ˆ˜ ์žˆ๋Š” ๋‹ค์ˆ˜์˜ CSS ์„ ํƒ์ž๋“ค ์ค‘, ์–ด๋–ค ๊ฒƒ์ด ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ–๊ฒŒ ๋˜๋Š”์ง€๋Š” specificity๋ฅผ ํ†ตํ•ด ๊ฒฐ์ •๋œ๋‹ค. Specificity๋Š” 3๊ฐœ์˜ ๊ตฌ์„ฑ์š”์†Œ(A, B, C์™€ ๊ฐ™์ด ํ‘œํ˜„)๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ทธ์— ๋”ฐ๋ผ ์ ์ˆ˜๊ฐ€ ๊ณ„์‚ฐ๋œ๋‹ค.

    ์ด ๊ธ€์€ ๋ช‡ ๊ฐ€์ง€ ์ž˜๋ชป ์•Œ๋ ค์ง€๊ฑฐ๋‚˜ ์˜คํ•ด๋˜๊ณ  ์žˆ๋Š” specificity์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ๋‹ค.

    CSS ์„ ํƒ์ž์— ๋”ฐ๋ฅธ Specificity๋Š” ๋‹ค์Œ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ๊ณ„์‚ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    Ryan Dahl - Node, Deno, and JSR The Modern JavaScript Registry

    Deno ๊ฐœ๋ฐœ์ž์ธ Ryan Dahl์ด Node.js์˜ ์˜ํ–ฅ, Deno์˜ ๊ฐœ๋ฐœ, JSR๊ณผ Deno Deploy์˜ ๊ฐœ๋ฐœ ๋™๊ธฐ๋ฅผ ๋“ค์–ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    Deno๋Š” Node.js์™€ ๋‹ฌ๋ฆฌ ๋” ์‹œ๊ธ‰ํ•˜๊ฒŒ ํ˜์‹ ํ•˜๊ณ  ๋” ํ˜„๋Œ€์ ์ธ ์ƒํƒœ๊ณ„ ์ œ๊ณต์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— linter, code formatter, language server๋ฅผ ๋‚ด์žฅํ•ด ์ „์ฒด ํˆด์ฒด์ธ์„ ์ œ๊ณตํ•ด ๋‹จ์ˆœ์„ฑ๊ณผ ์‚ฌ์šฉ ํŽธ์˜์„ฑ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.

    JSR์— ๋Œ€ํ•ด์„  ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋Š” ESM ์ „์šฉ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ œ๊ณต์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” deno.land/x์˜ ๋‹ค์Œ ๋ฒ„์ „์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ์„ ์–˜๊ธฐํ•œ๋‹ค. ๋˜ํ•œ ์ดˆ๊ธฐ ๋ฉค๋ฒ„๋กœ ์ฐธ์—ฌํ•˜๊ณ  ์žˆ๋Š” WinterCG ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ์— ๋Œ€ํ•ด์„œ๋Š” ๊ณตํ†ต ์„œ๋ฒ„ ์ธก JavaScript API๋ฅผ ์ •์˜ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ๋Ÿฐํƒ€์ž„๋“ค์„ ํ†ตํ•ฉํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชฉํ‘œ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Œ๋„ ์–˜๊ธฐํ•œ๋‹ค.

    ์ถ”๊ฐ€๋กœ JSR์— ํŒจํ‚ค์ง€๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•œ ์‹œ์—ฐ์€ ๋‹ค์Œ์„ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

    The Story of React Query

    ๋น„๋™๊ธฐ ์ƒํƒœ ๊ด€๋ฆฌ์ž์ธ TanStack Query(๊ตฌ React Query)๋Š” 6๊ฐœ์˜ React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค ์ค‘ 1๊ฐœ์—์„œ ์‚ฌ์šฉ๋ ๋งŒํผ ์ธ๊ธฐ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๊ฐ„์†Œํ™”ํ•˜์—ฌ 5 O'Clock Rule์„ ํ•ด๊ฒฐํ•œ๋‹ค.

    ์ด ๊ทœ์น™์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ƒ๊ฐ์„ ๋ฉˆ์ถ”๊ณ  5์‹œ์— ์ง‘์— ๊ฐˆ ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋†’์•„์ง„๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

    TanStack Query๋Š” ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋Š” ๋น„๋™๊ธฐ ์ƒํƒœ ๊ด€๋ฆฌ์ž๋กœ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ, ์บ์‹ฑ, ๋ฌดํšจํ™” ๋“ฑ์˜ ๋ณต์žกํ•œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ด ์ฃผ์–ด ๊ฐœ๋ฐœ์ž๋Š” ๋ณต์žกํ•œ use effect์— ์–ฝ๋งค์ด์ง€ ์•Š๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

    [์ฐธ๊ณ ] React Query๋Š” TanStack Query๋กœ v4๋ถ€ํ„ฐ ๋ฆฌ๋ธŒ๋žœ๋”ฉ ๋˜์—ˆ์œผ๋ฉฐ, ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•จ์ด๋ผ๊ณ  ์ด์œ ๋ฅผ ๋ฐํ˜”๋‹ค.

    React Conf 2024

    ์ง€๋‚œ 5์›” 15~16์ผ 3๋…„ ๋งŒ์— ์ง„ํ–‰๋œ React Conf 2024๋Š” React์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ฐจ๊ธฐ ๋ฆด๋ฆฌ์Šค์ธ 19์— ๋Œ€ํ•œ ์†Œ์‹๊ณผ ์ƒˆ๋กœ์šด React Compiler ๊ทธ๋ฆฌ๊ณ  Server Component ๋“ฑ์— ๋Œ€ํ•œ ์ฃผ์š”ํ•œ ์„ธ์…˜๋“ค์€ ๋‹ค์Œ์„ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์„ธ์…˜๋ณ„ ์˜์ƒ์€ ๋ณ„๋„๋กœ ์ œ๊ณต๋˜์ง€๋Š” ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์ผ์ž๋ณ„ ์˜์ƒ์„ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

    [์ฐธ๊ณ ] ์ „์ฒด ์„ธ์…˜์— ๋Œ€ํ•œ ๋น ๋ฅธ ์š”์•ฝ์„ ํ™•์ธํ•ด ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด, ๋‹ค์Œ ๋งํฌ๋“ค์„ ์ฐธ๊ณ ํ•˜๋ผ.

    App.js Conf 2024

    App.js Conf๋Š” React Native์™€ Expo์— ์ดˆ์ ์„ ๋งž์ถ˜ ๊ธฐ์ˆ  ์ฝ˜ํผ๋Ÿฐ์Šค๋กœ ์ง€๋‚œ 5์›” 22~24์ผ์— ํด๋ž€๋“œ์˜ KRAKร“W์—์„œ ๊ฐœ์ตœ๋˜์—ˆ๋‹ค. ๋‹ค์Œ์˜ ํฅ๋ฏธ ์žˆ๋Š” ์„ธ์…˜๋“ค์„ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    Canvas Engines Comparison

    ์ง์‚ฌ๊ฐํ˜• ๊ฐ์ฒด๋“ค์ด ๋‹ค์–‘ํ•œ ์Šคํ”ผ๋“œ๋กœ ์บ”๋ฒ„์Šค ๋‚ด์—์„œ ์ด๋™ํ•˜๋Š” ๋ Œ๋”๋ง์˜ ์„ฑ๋Šฅ์„ ๋น„๊ตํ•œ ๊ฒฐ๊ณผ๋ฅผ 17๊ฐœ์˜ ๊ฐ๊ฐ ๋‹ค๋ฅธ ์บ”๋ฒ„์Šค ๋ Œ๋”๋ง ์—”์ง„์„ ํ†ตํ•ด ์ง์ ‘ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

    8k์˜ ๊ฐ์ฒด๋“ค์ด ๋ Œ๋”๋ง ๋˜๋Š” ํ…Œ์ŠคํŠธ ์กฐ๊ฑด์—์„œ, PixiJS์™€ Scrawl-canvas๊ฐ€ ๊ฐ€์žฅ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ๋‹ค.

    OROR Forge: Figma to Code ๋„๊ตฌ ์ œ์ž‘๊ธฐ

    ์ „ํ†ต์ ์ธ ์›น ๊ฐœ๋ฐœ์€ ๋””์ž์ธ๋œ ์‹œ๊ฐ์  ํ™”๋ฉด์„ ๋งˆํฌ์—…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ์ˆ˜๋ฐ˜๋œ๋‹ค. ๊ณผ์ •์€ ๋‹จ์ˆœํ•˜๊ฒŒ ์„ค๋ช…๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ค์ œ ์ž‘์—…์€ ๋ณต์žกํ•˜๊ณ  ๋””์ž์ธ๋œ ํ™”๋ฉด์„ ์ •ํ™•ํ•˜๊ฒŒ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์— ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒ๋˜๊ธฐ๋„ ํ•ด์„œ, ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ์— ๋Œ€ํ•œ ๋””์ž์ธ ๊ฒ€์ˆ˜ ๊ณผ์ •์„ ๊ฑฐ์น˜๊ธฐ๋„ ํ•œ๋‹ค.

    Figma๋ฅผ ํ™”๋ฉด ์ƒ์„ธ์„ค๊ณ„์™€ ๋””์ž์ธ ๋„๊ตฌ๋กœ์˜ ํ™œ์šฉ์ด ํ™•๋Œ€๋จ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ฐ”๋กœ ์ฝ”๋“œ๋กœ ์ „ํ™˜ํ•ด ๊ธฐ์กด์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ ‘๊ทผ์„ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ๋‹ค.

    ์ƒ์šฉ์ œํ’ˆ๋“ค์„ ๊ณ ๋ คํ–ˆ์œผ๋‚˜, ๋‚ด๋ถ€ ์š”๊ตฌ์‚ฌํ•ญ์— ๋ถ€ํ•ฉ๋˜์ง€ ์•Š๋Š” ๋ฉด์ด ์žˆ์–ด ์ง์ ‘ Figma ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ธฐ์ˆ ๊ณผ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•œ๋‹ค.

    OROR Forge (BETA) - Figma to React, HTML/CSS

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

    How JavaScript manages memory

    ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ํ”„๋กœํŒŒ์ผ๋ง์„ ํ†ตํ•ด JavaScript ๋ฉ”๋ชจ๋ฆฌ GC๋ฅผ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    GC๋Š” ํฌ๊ฒŒ ๋‹ค์Œ์˜ ๋‘ ๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

    • Minor GC: "nursery collection/young generation"์„ ์ฒญ์†Œํ•˜๋ฉฐ, ๊ฐ์ฒด๊ฐ€ ์ด ๋‹จ๊ณ„๋ฅผ ํ†ต๊ณผํ•˜๋ฉด "tenured/old generation"(๋˜๋Š” long-lived) ํž™์œผ๋กœ ์ด๋™ํ•œ๋‹ค.
    • Major GC: tenured ํž™์„ ์ฒญ์†Œํ•˜๋ฉฐ, mark-and-sweep ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๋ฉฐ, ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์˜ค๋žœ ์‹œ๊ฐ„ ๋ธ”๋ก ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ ์ง„์  GC ์ „๋žต์ด ์‚ฌ์šฉ๋œ๋‹ค.

    RegexLearn

    ๋‹จ๊ณ„๋ณ„ ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•œ ๋ฌธ์ œ ์‹ค์Šต์„ ํ†ตํ•ด ์ •๊ทœ์‹์„ ์ฐจ๊ทผ์ฐจ๊ทผ ํ•™์Šตํ•ด ๋ณผ์ˆ˜ ์žˆ๋‹ค.

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

    Terminal Text Effects

    TTE๋Š” ํ„ฐ๋ฏธ๋„ ์‹œ๊ฐ ํšจ๊ณผ ์—”์ง„์œผ๋กœ ํ„ฐ๋ฏธ๋„์—์„œ ํšจ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์„ค์น˜ํ•˜์—ฌ Python ์Šคํฌ๋ฆฝํŠธ/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ํšจ๊ณผ๋ฅผ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

    Colorable

    ์„ค์ •๋œ ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ๋ฅผ ๊ฐ€์ ธ์™€ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์— ๋Œ€ํ•œ ๋Œ€๋น„ ๊ฐ’์„ ๊ฐ€์ ธ์™€ ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ƒ‰์ƒ์œผ๋กœ ์•ˆ์ „ํ•œ ์ƒ‰์ƒ ์กฐํ•ฉ์„ ์ฐพ๋Š” ๋ฐ ์œ ์šฉํ•˜๋ฉฐ WCAG ์ ‘๊ทผ์„ฑ ๊ฐ€์ด๋“œ๋ผ์ธ์— ๋Œ€ํ•œ ํ•ฉ๊ฒฉ/๋ถˆํ•ฉ๊ฒฉ ์ ์ˆ˜๋ฅผ ํฌํ•จํ•œ๋‹ค.

    CanIWebView

    ์›น ํ”Œ๋žซํผ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ˜ธํ™˜์„ฑ ํ™•์ธ์„ ์œ„ํ•ด ์ž˜ ์•Œ๋ ค์ง„ Can I Use์™€ ์œ ์‚ฌํ•˜๊ฒŒ WebView์˜ ํ˜ธํ™˜์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. W3C ์‚ฐํ•˜์˜ WebView CG๊ฐ€ ์ฃผ๋„ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋‹ค.

    Bulletproof React

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

    ๋˜ํ•œ ์‹ค์ œ ๋ฌธ์ œ ๋Œ€๋ถ€๋ถ„์„ ์‹ค์šฉ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๊ณ , ๋” ๋‚˜์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๊ณ ์ž ํ•œ๋‹ค.

    Knip

    Knip์€ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ, dependencies, exports๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๋„๊ตฌ๋กœ, ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•ด ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

    nrr

    ๋ฏธ๋‹ˆ๋ฉ€ํ•œ ์ดˆ๊ณ ์† npm ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰๊ธฐ๋กœ, npm ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋ถˆํ•„์š”ํ•œ ํ™˜๊ฒฝ ์„ค์ •์„ ์ค„์—ฌ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ์ž์ฒด ์ˆ˜ํ–‰ ๋ฒค์น˜๋งˆํฌ ๊ฒฐ๊ณผ์—์„ , ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์‹œ npm ๋ณด๋‹ค 99% ๋น ๋ฅด๊ณ , bun ๋ณด๋‹ค 69% ๋น ๋ฅธ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ๋‹ค.

    css stats

    Stylesheets์— ๋Œ€ํ•œ ๋ถ„์„ ๋ฐ ์‹œ๊ฐํ™”๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋กœ, ํ™•์ธ์„ ์›ํ•˜๋Š” ์‚ฌ์ดํŠธ์˜ URL์„ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ์‚ฌ์ดํŠธ์˜ CSS ํŒŒ์ผ์„ ๋ถ„์„ํ•ด ๋‹ค์–‘ํ•œ ํ†ต๊ณ„๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

    typing.works

    ์˜จ๋ผ์ธ ๊ธฐ๋ฐ˜ ํ•„์‚ฌ ํƒ€์ดํ•‘ ์„œ๋น„์Šค๋กœ ๋ฌธํ•™์ž‘ํ’ˆ์˜ ๊ตฌ์ ˆ์„ ํƒ€์ดํ•‘ํ•˜๋ฉฐ ํƒ€์ž ์—ฐ์Šต๊ณผ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

    Wasmphobia

    wasm ํŒŒ์ผ์„ ๋ถ„์„ํ•˜์—ฌ ๋ชจ๋“ˆ์˜ ํฌ๊ธฐ์— ๊ธฐ์—ฌํ•œ ์š”์ธ์„ ๋ถ„์„ํ•ด ์ฃผ๋Š” ๋„๊ตฌ๋‹ค. WebAssembly ๋ฐ”์ด๋„ˆ๋ฆฌ์— DWARF ๋””๋ฒ„๊น… ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ์—๋งŒ ์œ ์šฉํ•˜๋‹ค.

    Create SoundWave

    ์†Œ๋ฆฌ์˜ ํŒŒ์žฅ์„ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋„๊ตฌ๋กœ, ์›ํ•˜๋Š” ์˜ค๋””์˜ค ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•œ ํ›„ ์ƒ์„ฑ๋œ ํŒŒ์žฅ์„ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.