2024-05 
๐ ๋งํฌ & ์ฝ์ ๊ฑฐ๋ฆฌ
WASM I/O 2024
์ง๋ 3์ 14์ผ ~ 15์ผ ๋ฐ๋ฅด์ ๋ก๋์์ ์งํ๋์๋ WASM I/O ์ฝํผ๋ฐ์ค์ 35๊ฐ ์ธ์ ์ด ๊ณต๊ฐ๋์๋ค.
๋ค์์ ํฅ๋ฏธ๋ก์ด ์ธ์ ๋ค์ ๋ง๋๋ณผ ์ ์๋ค.
- Filling a Registry-Shaped Hole in the Wasm Component Ecosystem
- ์๋ก์ด wasm ๋ ์ง์คํธ๋ฆฌ์ธ wa.dev๋ฅผ ์๊ฐํ๋ค.
[์ฐธ๊ณ ] ๋ค๋ฅธ ๋ ์ง์คํธ๋ฆฌ๋ก๋ Bytecode Alliance์ Warg(WebAssembly Registry)๊ฐ ์๋ค.
- WebAssembly at Google
- V8, Emscripten ํ์ ํฌํจ WebAssembly๋ Google์ ์ ๋ต์์ ์ค์ํ ์ญํ ์ ๋ด๋นํ๊ณ ์๋ค. ์ด ์ธ์ ์ Google์์ Wasm์ด ์ฌ์ฉ๋๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ๋ํ ํฌ๊ด์ ์ธ ๊ฐ์๋ฅผ ๋ค๋ฃฌ๋ค.
- Extism 1.0, your framework to build with WebAssembly
- 22๋ 12์ ์ถ์๋์๋ Extism์ ํ๋ฌ๊ทธ์ธ ์์คํ ์ ํตํด 16๊ฐ์ ๋ค์ํ ์ธ์ด์์ wasm ๋ชจ๋์ ํ์ฉํ ์ ์๊ฒ ํ๋ ํ๋ ์์ํฌ๋ค.
- WANIX: A WebAssembly Operating and Development Environment
- WANIX๋ ๋ธ๋ผ์ฐ์ ์์ WebAssembly UNIX์ ์ ์ฌํ ํ๊ฒฝ์์ wasm์ ํธ์ง, ์ปดํ์ผ ๋ฐ ์คํํ ์ ์๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํด ์ค๋ค.
- Wasm can do that!?
- ์ด ์ธ์ ์์๋ ์์์น ๋ชปํ ๊ธฐ๊ธฐ์์์ ์คํ๋ถํฐ ํฅ๋ฏธ์ง์งํ ์๋ก์ด ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ๋๊น์ง wsm์ ์ ์๋ ค์ง์ง ์์ ๋ค๋ฅธ ์ธก๋ฉด์ ๋ง์ ๋ผ์ด๋ธ ๋ฐ๋ชจ๋ฅผ ํตํด ์๊ฐํ๋ค.
A TC39 Proposal for Signals

Signals ์ ์์ ์ค Rob Eisenberg๊ฐ Signals๋ฅผ ์๊ฐํ๋ ๊ธ์ด๋ค.
Signals ์ ์์ ์ํ ์
๊ณผ ํ์ ๊ณ์ฐ์ ์ด์ฉํด ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์๋ฃํ์ด๋ค.
์ด ๋น์ํ ๊ทธ๋ํ ๊ตฌ์กฐ๋ ์์ค์ ์ฑํฌ๋ฅผ ํฌํจํ๊ณ , ๋ณํ๊ฐ ์์ ๋๋ ์ฆ์ ์
๋ฐ์ดํธ ํ๋๊ทธ๋ง์ ํธ์ํ๋ฉฐ ์ค์ ๊ณ์ฐ์ ํ์ํ ๋๊น์ง ์ง์ฐ๋๋ค.
์ด ๋ฐฉ์์ ์๋ ๋ฉ๋ชจ์ด์ ์ด์
๊ณผ ๋ถํ์ํ ๊ณ์ฐ ๋ฐฉ์ง ๊ฐ์ ์ด์ ์ ์ ๊ณตํ๋ค.
์ฐธ๊ณ ๋ก Signals๋ Stage 1 ์ด ๋์๋ค.
Printing music with CSS Grid
์น์์ ์ ๋ณด ํ๊ธฐ๋ฒ์ ํ ์คํธ์ฒ๋ผ ์ ๊ทผํ๊ธฐ ์ฝ๊ณ ์ ๋์ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด CSS grid๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ๋์ง ์๊ฐํ๋ค. ์ ์๋ ์ด๋ฅผ ๋ฐํ์ผ๋ก Scribe๋ผ๋ ์ ๋ณด ๋ ๋๋ฌ๋ฅผ ๊ฐ๋ฐํ๊ณ , HTML custom element๋ฅผ ํตํด ์ ๋ณด ํ๊ธฐ๋ฒ์ ํตํด ์ ๋ณด๋ฅผ ๋ ๋๋ง ํ๋ค.
<scribe-music type="sequence" clef="treble" meter="4/4">
0 chord Dmaj 4
0 F#5 0.2 1
0 A4 0.2 1
0 D4 0.2 1
</scribe-music>
Every React 19 Feature Explained in 8 Minutes

React 19๋ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์๋ํํ๊ณ ์๋ ๋ฉ๋ชจ์ด์ ์ด์ ๋ฅผ ์์ ๋ฉฐ ํ๋ก์ ํธ ๊ฐ๋ฐ ์๋๋ฅผ ๋์ด๊ธฐ ์ํ ์๋ก์ด ๊ธฐ๋ฅ์ด ๋์ ๋๋ค.
๋ ๋์ ์ฑ๋ฅ์ ์ํด React ์ฝ๋๋ฅผ ์๋์ผ๋ก ์ต์ ํํ๋ ์๋ก์ด ์ปดํ์ผ๋ฌ ๋์ ๊ณผ useCallback ๋ฐ useMemo์ ๊ฐ์ ์๋ ๋ฉ๋ชจ์ด์ ์ด์ ๋๊ตฌ์ forwardRef๊ฐ ๋๋ ํ์ํ์ง ์์ผ๋ฉฐ, ๋ฐ์ดํฐ fetching๊ณผ ์ปจํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ ์๋ก์ด useEffect ํ ์ ๋์ ํ์ฌ ์ฝ๋๋ฅผ ๋ ๊น๋ํ๊ณ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค.
[์ฐธ๊ณ ] 4์ 25์ผ React 19 Beta๊ฐ ๊ณต๊ฐ๋์๋ค.
4 React Tips to Instantly Improve Your Code

React ์ฝ๋๋ฅผ ๊ฐ์ ํ ์ ์๋ ๋ค ๊ฐ์ง ํ์ ์๊ฐํ๋ค.
- ์ด๋ฒคํธ ํธ๋ค๋ฌ์์ ํจ์๋ฅผ ๋ฐํํ์ฌ ์ฝ๋ ์ค๋ณต ์ ๊ฑฐ
- ์ปดํฌ๋ํธ์ ์ฑ ์(UI, Logic/Model, Lib)์ ๋ถ๋ฆฌ
- ์กฐ๊ฑด๋ฌธ ๋์ ๊ฐ์ฒด ๋งต์ ์ฌ์ฉ
- React ๋ผ์ดํ์ฌ์ดํด ์ธ๋ถ์์ ๋ ๋ฆฝ์ ๋ณ์ ์ฌ์ฉ
์ด ํ๋ค์ React ์ปดํฌ๋ํธ์ ๊ฐ๋ ์ฑ์ ๋์ด๋๋ฐ ๋์์ด ๋๋ค.
wizard zines

wizard zines์ ๋ช ๊ฐ์ ์งง์ ์นดํฐ ์ปท์ ํตํด ๋ค์ํ ๊ธฐ์ ์ ์ฝ๊ฒ ์ดํดํ ์ ์๊ฒ ํ๋ค. ์ถ๊ฐ์ ์ผ๋ก CSS examples๋ฅผ ํตํด์๋ ์นดํฐ ์ปท๊ณผ ํจ๊ป ์ง์ ํ์ตํด ๋ณผ ์ ์๋ snippet ๋ค์ ํ์ธํด ๋ณด๊ธฐ ๋ฐ๋๋ค.
์น์์ ํ๋ฆฌ ๋๋ก์ ๋ฐ๋ฐ๋ฅ๋ถํฐ ๊ตฌํํ๊ธฐ

์ฝด๋ค๋ ํ๋ธ๋ฆฟ์์ ๋ฌธ์ ๋ฅผ ํ๋ฉฐ ์์ฐ์ค๋ฌ์ด ํ๊ธฐ ๊ฒฝํ์ ์ ๊ณตํ๊ธฐ ์ํ ์๋ฃจ์
์ ๊ฐ๋ฐํ๊ณ ์๋ค. ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉ ์ค ํ๊ณ๋ก ์ธํด ์ง์ ๊ฐ๋ฐํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.
Pointer Move ์ด๋ฒคํธ๋ฅผ ํตํด ์
๋ ฅ๋ฐ์ ์ ๋ค์ ์ฌ์ฉ์๊ฐ ์์ฐ์ค๋ฌ์ด ๋๋ก์ ๊ฒฝํ์ ํ ์ ์๋๋ก ๋ฒ ์ง์ด ๊ณก์ ์ ์ ์ฉํ๊ณ ์คํ๋ผ์ธ ๋ณด์ ํ์๋ค.
๋, Pen Event์ ๋์ํ๊ณ , ์ธ์ ํ ์ ๊ฐ์ํ ๋ฑ์ ํตํด ์์ฐ์ค๋ฝ๊ฒ ๋
ธ์ถ ๋๋ ๊ณผ์ ์ ์๊ฐํ๋ค.
polyfill.io์ ์ํ์ฑ๊ณผ ๊ทธ ๋์
๊ตญ๋ด ํ๋ฐํธ์๋ ๋ถ์ผ ๊ธฐ์ ๊ณต์ ์๋ก ์ ๋ช
ํ ZeroCho์ ์ ํ๋ธ ์์์ด๋ค. ์์์์๋ polyfill.io ์๋น์ค๊ฐ ์ค๊ตญ์ ํ์ฌ์ ๋งค๊ฐ๋๋ฉฐ, ์ฝ๊ด์ด ๋ณ๊ฒฝ๋ ์ ์ ์ง์ ํ๋ฉฐ ๋์์ ์ ์ํ๋ค.
Upgrading jQuery: Working Towards a Healthy Web
2024๋
์ ์๋ก์ด ํ๋ก์ ํธ์ jQuery๋ฅผ ์ ํํ๋ ๊ฐ๋ฐ์๋ ๋ง์ง ์์ง๋ง, IDC ์กฐ์ฌ์ ๋ฐ๋ฅด๋ฉด ์ฌ์ ํ ์ ์ฒด ์น์ฌ์ดํธ์ 90%๋ jQuery๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ๊ทธ์ค์ 1/3์ ์ค๋๋ ๋ฒ์ ์ ์ฌ์ฉ ์ค์ด๋ค.
jQuery ํ๊ณผ OpenJS ์ฌ๋จ์ Healthy Web checkup ์บ ํ์ธ์ ์ผํ์ผ๋ก ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฉฐ, ์ด ๊ฐ์ด๋๋ฅผ ํตํด์ jQuery๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์ ์งํ๋ ๊ฒ์ ํ์์ฑ์ ์ค๋ช ํ๊ณ ์ ๊ทธ๋ ์ด๋ ๊ณผ์ ์ ์๋ดํ๋ค.
jQuery ํ์ด ์ ๊ณตํ๋ jQuery Migrate ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ jQuery ์ ๊ทธ๋ ์ด๋๋ฅผ ์ฝ๊ฒ ํ ์ ์์ผ๋ฉฐ, ๋ค๊ฐ์ค๋ jQuery 4.0๋ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ ๊ทธ๋ ์ด๋๋ฅผ ์ ๊ณตํ ์์ ์ด๋ผ๊ณ ํ๋ค.
๐น ํํ ๋ฆฌ์ผ
Learn JavaScript
๊ตฌ๊ธ์ด ์ด์ํ๋ ํ์ต ์ ๋ณด ์ฌ์ดํธ์ธ web.dev์ JavaScript ํ์ต ๊ณผ์ ์ด ์๋กญ๊ฒ ์ถ๊ฐ๋์๋ค. ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ๊ณผ ํจ๊ป ์กฐ๊ธ์ ๊น์ ๋ด์ฉ๋ค๋ ๋ชจ๋ ๋ค๋ฃจ๊ณ ์๊ธฐ ๋๋ฌธ์ JavaScript ์ด์ฌ์ ๋๋ ๊ฐ๋ ์ ๋ฐ๋ก ์ฐพ์ ์ดํดํ ๋ ํ์ฉํ๊ธฐ ์ข๋ค.
type hero

type hero๋ ๋ณต์กํ ํ์ ์์คํ ์ ๋ํด ๋ ๋ง์ด ๋ฐฐ์ธ ์ ์๋ ์ปค๋ฎค๋ํฐ ํ๋ซํผ์ ์งํฅํ๋ค. ์ค์ค๋ก ํ์ตํ ์ ์๋ ์์ค๋ณ ๋ฌธ์ ๋ค์ ์ ๊ณตํ๋ฉฐ, ํ์ ํ๊ฒฝ ๋ฑ์ ์ ๊ณตํ๋ค.
CSS in React Server Components
์ด ๊ธ์์๋ ๊ธฐ์กด CSS-in-JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์์ ์ดํด๋ณด๊ณ RSC์ ์๋ฒฝํ๊ฒ ํธํ๋์ง ์๋ ๋ฌธ์ ์ ์ ํ์
ํด ๋ณธ๋ค.
์ด๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์๊ฐํ๋ค.
์ปดํ์ผ ์์ ์ CSS๋ฅผ ์ฒ๋ฆฌํ๋ Zero-Runtime CSS-in-JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ํด ์์ธํ ์ค๋ช
ํ๋ฉฐ, ์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ป๊ฒ RSC์ ์ ์๋ํ ์ ์๋์ง๋ฅผ ์ค๋ช
ํ๋ค.
Building an interactive 3D event badge with React Three Fiber
Vercel Ship 2024 ์น์ฌ์ดํธ์ ์ฌ์ฉ๋ ๋ชฉ๊ฑธ์ด ์ ๋๋ฉ์ด์ ์ ๋ง๋๋ ๊ณผ์ ์ ์๊ฐํ๋ Vercel์ ๋ธ๋ก๊ทธ์ด๋ค.
ํ์ three.js, react-three-fiber ๋ฑ์ ํ์ฉํ ์ธํฐ๋ํฐ๋ธํ 3d ์ฒ๋ฆฌ์ ๊ด์ฌ์ด ์๋ค๋ฉด ์ฌ๋ฏธ์๊ฒ ์ฝ์ ์ ์์ ๊ฒ์ด๋ค.
From 0 to Production - The Modern React Tutorial (RSCs, Next.js, Shadui, Drizzle, TS and more)

์ ๋ช ํ ๊ธฐ์ ์ ํ๋ฒ์ธ Theo๊ฐ ์ ์ํ ๋ชจ๋ React ํ์ต ์์์ผ๋ก Next.js, ์๋ฒ ๊ตฌ์ฑ ์์, ์๋ฒ ๋์, TypeScript, Tailwind, Drizzle, Vercel์ Postgres ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ ํ๋ก๋์ ์ฑ ๊ตฌ์ถ์ ์ํ ์ต์ ๋๊ตฌ ๋ฐ ๊ธฐ์ ๋ก์ ์ ํ์ ๋ํ ๋ด์ฉ์ ํ์ตํ ์ ์๋ค.
JavaScript Visualized - Event Loop, Web APIs, (Micro)task Queue

๋ธ๋ผ์ฐ์ ์ event loop, task queue, microtask queue ๊ทธ๋ฆฌ๊ณ Web APIs๊ฐ ํจ๊ป ์๋ํ์ฌ non-blocking ๋น๋๊ธฐ JavaScript๋ฅผ ํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์์ผ๋ฉฐ, ์๊ฐ์ ์ค๋ช ์ ํตํด ๊ฐ ์์ญ๋ค์ ์ฝ๊ฒ ์ดํดํ ์ ์๋ค.
๐ฆ ์ฝ๋์ ๋๊ตฌ
Introducing TypeSpec: A New Language for API-Centric Development
๋ง์ดํฌ๋ก์ํํธ๊ฐ ๊ฐ๋ฐํ๊ณ ์๋ API ์ ์ ์ธ์ด์ธ TypeSpec์ API๋ฅผ ์ ์ํ๊ณ , ์ด๋ฅผ ํตํด ๋ค์ํ ํ๋กํ ์ฝ, ํด๋ผ์ด์ธํธ, ์๋ฒ, ๋ฌธ์ ๋ฑ์ ๋์์ ์ถ๋ ฅํ ์ ์๋ ๋ ๋์ ์์ค์ ์ ์ ์ธ์ด์ด๋ค.
Infinitown
Three.js, Blender, Unity๋ฅผ ํ์ฉํ WebGL ์คํ์ ์๋๊ฐ ์๊ณ ๋ณด๋ ์ฌ๋ฏธ๊ฐ ์๋ ์ ์ฐจ์ ๋์๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์๋์ด๋ค. ๋ฌด์์ ๋์ ๋ธ๋ก์ผ๋ก ๊ตฌ์ฑ๋ ์ ํ ๊ทธ๋ฆฌ๋๋ฅผ ์์ฑํ ํ ๋ช ๊ฐ์ง ํธ๋ฆญ์ ์ฌ์ฉํด ๋์๋ ๋์ ํ๊ฒฝ์ ๋ง๋ค์ด ๋ธ๋ค.
tinyworldmap

tinyworldmap์ Leaflet๊ณผ ํจ๊ป ์ฌ์ฉํ๋๋ก ์ค๊ณ๋์ผ๋ฉฐ, 450kB(gzipped) ํฌ๊ธฐ์ ๋ถ๊ณผํ๋ค. ํด๋ผ์ด์ธํธ์์ ๋ ๋๋ง์ 10๋ ์ด์ ๋ ์ ์ฌ์ ํด๋ํฐ์์๋ ์ง์ฐ ์์ด ์ ์๋ํ๋ค.
OpenStreetMap์ ์ถ๊ฐ๋ ๊ฐ์ฅ ์ธ๊ตฌ๊ฐ ๋ง์ 10k ๊ฐ์ ๋์๋ฅผ ํ์ํ๋ฉฐ, ์ธ๊ตฌ๊ฐ 48k ์ด์์ธ ๋ชจ๋ ๋์์ ๋ง์์ ํฌํจํ๋ค.
es-hangul
import { josa } from 'es-hangul';
const word1 = '์ฌ๊ณผ';
const sentence1 = josa(word1, '์/๋ฅผ') + ' ๋จน์์ต๋๋ค.';
console.log(sentence1); // '์ฌ๊ณผ๋ฅผ ๋จน์์ต๋๋ค.'
const word2 = '๋ฐ๋๋';
const sentence2 = josa(word2, '์ด/๊ฐ') + ' ๋ง์์ต๋๋ค.';
console.log(sentence2); // '๋ฐ๋๋๊ฐ ๋ง์์ต๋๋ค.'
toss์์ ๊ณต๊ฐํ ์ฝ๊ฒ ํ๊ธ์ ๋ค๋ฃฐ ์ ์๋๋ก ๋๋ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ด์ฑ ๊ฒ์ ๋ฐ ์กฐ์ฌ ๋ถ์ด๊ธฐ ๋ฑ์ ๊ธฐ๋ฅ์ ์ง์ํ๋ค.