2024-04 
๐ ๋งํฌ & ์ฝ์ ๊ฑฐ๋ฆฌ
The quiet, pervasive devaluation of frontend
์ ์๋ Front-end ์ถ์ธ๊ฐ ๊ด๋ฒ์ํ๊ฒ ๊ฐ์ํ๋ฉฐ, ๋ชจ๋ ๊ณณ์์ ์ค์์ฑ์ด ์ต์ํ๋๊ฑฐ๋ ๊ณผ์ ์์ค์ด ๋ฎ์์ง๊ณ ์์์ ๋ฐ๊ฒฌํ๊ณ ์๋ค๊ณ ๋งํ๋ค.
๋ค์ํ ์ธก๋ฉด์์ Front-end๋ฅผ ๋ฐ๋ผ๋ณด๋ ์ธ์๊ณผ ๊ณผ์ ๋ค์ ํตํด ๋๋ ์ ์ ๋ค๋ฃจ๋ฉฐ, ๋ช ๋ด์ฉ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ฐ์ ์ธ์ด์ ์ธก๋ฉด์์ Front-end ์ธ์ด ์ค ํ๋์ธ CSS๋ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ต๋ค๊ฑฐ๋, ์ง์ ๋ถํ๋ฉฐ, ๋ณต์กํ๋ฉฐ ์ ๋ชฝ ๊ฐ๋ค๊ณ ์๊ธฐํ๋ค. HTML๋ ์ ์ฌํ ์ทจ๊ธ์ ๋ฐ๊ธฐ๋ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋ํ ์๋ฏธ๋, ์ด๋ค์ "์ง์ง ํ๋ก๊ทธ๋๋ฐ ์คํฌ๋ฆฝํ ์ธ์ด๊ฐ ์๋๋ค."๋ผ๊ณ ์๊ฐํ๋ ์ ์ด๋ค.
- Front-end ๊ฒฐ๊ณผ๋ฌผ์ ์ด๋ ์ ๋ ์์ ์ ์ด๋ฉฐ, ์์ ์ ์ธ ๊ฒ๋ค์ ๋จ์ํ๊ณ ์ฌ๋ฏธ์์ด ๋ณด์ธ๋ค๋ ์ด์ ๋ง์ผ๋ก ๋น๊ทน์ ์ผ๋ก ํ๊ฐ ์ ํ๋ ์ค๋ ์ญ์ฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- Front-end ๋๊ตฌ๋ค์ ๋ง์น Front-end๋ฅผ ์๋ฌด๋ ํ๊ณ ์ถ์ด ํ์ง ์๋ ์ผ์ธ ๊ฒ์ฒ๋ผ ์ค์ค๋ก๋ฅผ ํ๋ณดํ๋ฉฐ, ์๋ฌด๋ ํ์ํ ๊ฒ ์ด์์ผ๋ก ์ ๊ฒฝ ์จ์๋ ์ ๋๋ค๊ณ ๋งํ๋ค.
How npm install scripts can be weaponized: A real-world example of a harmful npm package
์ด๋ป๊ฒ NPM์ preinstall๊ณผ postinstall ์คํฌ๋ฆฝํธ๊ฐ ์คํ์์ค ํจํค์ง์ ์ ์ฑ์ฝ๋๋ฅผ ์ฝ์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ๋ ์ ์๋์ง๋ฅผ ๋ค๋ฃฌ๋ค.
์์ฅ๋ ํจํค์ง๋ preinstall
์คํฌ๋ฆฝํธ๋ฅผ ํตํด ํจํค์ง์ ํฌํจ๋ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ํํ๊ณ , ์ด ์ ์คํฌ๋ฆฝํธ๋ ๋๋
ํ๋์ด ์ฝ๊ฒ ์์์ฑ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค์ด์ ธ ์๋ค.
์ค์น ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉํ๋ 3๊ฐ์ง ์ผ๋ฐ์ ์ธ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
- Package takeover
- ์ ์ฅ์ ๋๋ ๋ ์ง์คํธ๋ฆฌ์ ํจํค์ง ์ง์ ๋ฐฐํฌ ๊ถํ์ ์ป๋ ๊ณต๊ฒฉ
- Typosquatting
- ์ธ๊ธฐ ์๋ ํจํค์ง์ ์ ์ฌํ ์ด๋ฆ์ ํจํค์ง๋ฅผ ํตํด ์ ์ฑ ํจํค์ง ์ค์น๋ฅผ ์ ๋ (ex. nextt ํจํค์ง๋ฅผ ํตํด next ํจํค์ง๋ฅผ ์ค์นํ๋๋ก ์ ๋)
- Dependency confusion
- ๊ธฐ์ /์กฐ์ง ๋ด๋ถ ํจํค์ง๊ฐ ์์กด(๊ณต๊ฒฉ ๋์ ๋ด๋ถ ํจํค์ง ์ง์์ด ํ์) ํ๋ ํจํค์ง ๋ฒ์ ๋ณด๋ค ๋์ ๋ฒ์ ์ ๊ฐ๋ ๋์ผ ์ด๋ฆ์ ํจํค์ง๋ฅผ ๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ์ ๋ฐฐํฌํด ์ค์น๋๋๋ก ์ ๋ํ๋ ๊ณต๊ฒฉ
๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก๋ ํจํค์ง ์ค์น ์ --ignore-scripts
์ต์
์ ์ฌ์ฉํด pre/postinstall ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ง ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
[์ฐธ๊ณ ] ์คํ์์ค ๋ ์ง์คํธ๋ฆฌ๋ค์ ์ฌ์ฉ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ, ๋ณด์ ๋ํ ์ค์ํด์ง๊ณ ์๋ค. ๋ฏธ๊ตญ์ ์ฌ์ด๋ฒ ๋ณด์์ ๋ด๋นํ๋ CISA๋ ์ค์ ์ธํ๋ผ ๋ณดํธ๋ฅผ ๊ฐํํ๋ ๊ณํ์ ๋ฐํํ๊ธฐ๋ ํ๋ค.
Node.js TSC Confirms: No Intention to Remove npm from Distribution
Node.js TSC(๊ธฐ์ ์ด์ ์์ํ)๋ ๋ค์ํ ํจํค์ง ๊ด๋ฆฌ์๋ค์ ์ค์นํ์ง ์๊ณ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ Corepack์ ๊ธฐ๋ณธ ํ์ฑํ(์ ํํ๋ package.json์ packageManager
ํ๋๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ)์ ๋ํ ์ด๋ค ๋
ผ์๊ฐ ์ด๋ค์ก์๋ค.
Corepack์ด ํ์ฑํ๋๋ค๋ฉด, ํ๋ก์ ํธ๋ณ๋ก ํจํค์ง ๋งค๋์ ๋ฅผ ๋ค๋ฅด๊ฒ ์ง์ ํด ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์, ๊ฒฐ๊ณผ์ ์ผ๋ก Node.js ๋ฐฐํฌ์ NPM์ ํฌํจํ์ง ์๋ ๋ฐฉ์๋ ๊ฐ์ด ๊ฒํ ๊ฐ ์ด๋ค์ก๋ค. ๋ ผ์ ๋์ TSC ๋ฉค๋ฒ๋ค์ NPM์ ์ ๊ฑฐํ ์๋๊ฐ ์์์ ํฉ์ํ๊ณ ์ด๋ฅผ ๋ฌธ์์์ผ๋ก๋ ๋ช ํํ ํ๋ค.
Garbage Collection in V8
V8 ์์ง์ ๊ฐ๋น์ง ์ปฌ๋ ์ (GC) ๊ณผ์ ์ ์์ธํ ๋ค๋ฃจ๋ ๊ธ๋ก, Minor/Major GC์ ๊ฐ๋ ๊ณผ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ป๊ฒ ํ ๋น๋๊ณ ์ถ์ ๋๋์ง๋ฅผ ๋ค๋ฃฌ๋ค.
๋น์์ง ์ดํ ๋น ๊ณต๊ฐ์ ์ด๋ป๊ฒ ๋๋์ง, ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๊ฐ๋น์ง ์์ง์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง ๋ฑ์ ์ดํด๋ณผ ์ ์๋ค.
WebSockets vs Server-Sent-Events vs Long-Polling vs WebRTC vs WebTransport
์ค๋๋ ์ค์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์ด๋ฒคํธ๋ฅผ ๋ณด๋ด๋ ๊ธฐ๋ฅ์ ํ์์ ์ด๋ค. ๊ณผ๊ฑฐ Long polling์ด ์ ์ผํ ์ต์ ์ด์์ง๋ง, WebSocket์ด ์ด๋ฅผ ๊ณ์นํ๊ณ , ๋ค์ Server-Sent-Events๋ฅผ ํตํด ์๋ฒ์์ ํด๋ผ์ด์ธํธ ๋จ๋ฐฉํฅ ํต์ ์ ์ํ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
์ด์ WebTransport ํ๋กํ ์ฝ(HTTP/3 ๊ธฐ๋ฐ)์ ๋ ํจ์จ์ ์ด๊ณ , ํ์ฅ ๊ฐ๋ฅํ ๋ฐฉ์์ ์ ๊ณตํ ๊ฒ์ ์ฝ์ํ๊ณ ์๋ค.
์ด ๊ธ์ ์ด๋ค ๊ธฐ์ ์ ์ฑ๋ฅ๊ณผ ์ฅ์ ํ๊ณ๋ค์ ๋น๊ตํ๋ฉฐ, ๊ฐ๊ฐ์ ์ฌ์ฉ ์ฌ๋ก์ ์ฅ๋จ์ ์ ๋ค๋ฃฌ๋ค.
[์ฐธ๊ณ ] Using WebTransport
a global design system
์ ์ธ๊ณ ์น ๋์์ด๋์ ๊ฐ๋ฐ์์๊ฒ ๊ณตํต UI ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ ๊ธ๋ก๋ฒ ๋์์ธ ์์คํ ์ ๋ง๋ค๊ธฐ ์ํ ํ๋์ ์ด๊ตฌํ๋ ๊ธ์ด๋ค.
๊ฐ ๊ฐ๋ณ ํ๋ก๋ํธ๋ค์ ๋ํ ๋ง์ถคํ ์ธํฐํ์ด์ค๋ฅผ ์ค๊ณํ๊ณ ๊ตฌ์ถ/์ ์ง์ ๋ํ ๋น์ฉ๊ณผ ๋นํจ์จ์ฑ์ผ๋ก ์ธํด, "๋ฐํด๋ฅผ ์ฌ๋ฐ๋ช ํ๋ ๊ฒ"์ ๋ฉ์ถ๋ ๊ฒ์ ๋ํ ๋ชฉ์๋ฆฌ๊ฐ ๋์์ง๊ณ , ๋ชจ๋์ UI ๊ฐ๋ ์ ์ฑ์๊ณผ ๊ธฐ์ ์ ํ์์ผ๋ก ๋ฐ์ ํด ์๋ค.
๋์์ธ ์์คํ ์ด ์ ์๋ํ๋ค๋ฉด, ๊ฐ๋ฐ ์๋์ ์์ฐ์ฑ์ ๋์ฌ ๋ ๊ฐ์น ์๋ ์์ ์ ์ง์คํ ์ ์๋ค. ๊ทธ๋ฌ๋ ์กฐ์ง ์ ์ฒด์ ๋์์ธ ์์คํ ์ ๊ณตํต ์๋ฃจ์ ์ ํ์ฉํด ๊ฐ๋ฐํ๋ ๊ฐ์ธ์ ๋ถ๋ด์ ์ค์ฌ์ฃผ์์ง๋ง, ์กฐ์ง ์๋ฃจ์ ๋ค์ ์์ด๋ฌ๋ํ๊ฒ ์ค๋ณต๋๋ ํจํด์ด ๋ํ๋๊ฒ ๋๋ค.
[์ฐธ๊ณ ] ๊ธ๋ก๋ฒ ๋์์ธ ์์คํ ์ ๋ค์ ๋จ๊ณ๋ ๋ฌด์์ผ๊น? ์ ์์ ๋ค์ ๊ธ์ ์ด์ด์ ์ฝ์ด๋ณผ ์ ์๋ค.
JSDoc as an alternative TypeScript syntax
์ง๋ 23๋ 5์, Svelte์ TS โ JSDoc ์ ํ ์์์ ์ปค๋ฎค๋ํฐ๋ฅผ ๋ ๋ค์ฉํ๊ฒ ๋ง๋ค์์๋ค.
์ด ๊ธ์ JSDoc ์ ํ์ ์ด๊ตฌํ๊ธฐ ๋ณด๋ค๋, TypeScript๋ฅผ ์ฌ์ฉํ ์ ์๋ ํ๊ฒฝ์์ JSDoc์ ํ์ฉํด ์ ์ ํ์ดํํ ์ ์๋ ๋ฐฉ๋ฒ๋ค์ ๋ค์ํ ์์ ์ ํจ๊ป ์๊ฐํ๋ค.
// Type casting ์์
function example(arg: unknown) {
const num = arg as number; // TypeScript
const num = /** @type {number} */ arg; // JSDoc
...
}
require(esm) in Node.js
Node.js๋ CJS๊ฐ ๊ธฐ๋ณธ ๋ชจ๋ ์์คํ ์ด์๊ณ , ์ดํ ESM ์ง์์ด ์ถ๊ฐ๋์๋ค. ๊ทธ๋ฌ๋ ํ์์ ์์ ์ด๋ ํ์ชฝ์ ๋ชจ๋ ์์คํ (CJS๋ณด๋ค ESM์ด๊ฒ ์ง๋ง)๋ง์ ์ฌ์ฉํ๋ ๊ฒ์ ์ด๋ ต๊ธฐ ๋๋ฌธ์, ํจํค์ง๋ค๋ conditional exports๋ฅผ ํตํด ๋ ๋ชจ๋ ์์คํ ์ ๋ชจ๋ ์ง์ํด์ผ ํ๋ค.
์ด ๊ธ์ ์ ์๊ฐ CJS์ import๋ฅผ ์ํ require()
๋ฅผ ํตํด ESM ๋ชจ๋์ ์ง์ํ๊ธฐ ์ํด PR์ ์ ์ถํ ๊ฒฝํ๊ณผ ์ ์์ ์ PR ์ ์ ์ด๋ฌํ ์๋๊ฐ ๋ ๋น ๋ฅด๊ฒ ์ผ์ด๋์ง ์์๋์ง ๋ฑ์ ๋ํด ์ด์ผ๊ธฐํ๋ค.
What's the difference between JavaScript engines and JavaScript runtimes?
"JavaScript ์์ง"๊ณผ "JavaScript ๋ฐํ์"์ ์ ์ฌํด ๋ณด์ด๋ฉฐ "JavaScript๋ฅผ ์คํํ๋ ํ๋ก๊ทธ๋จ"์ด๋ผ๋ ์๋ฏธ๋ก ํผ์ฉ๋์ด ์ฌ์ฉ๋๊ณ ์๋ ๊ฒ ๊ฐ๋ค. ๋ํ ์ข ์ข V8, Node.js ๋ฑ์ ์กฐํฉ์ ์ฐธ์กฐํ์ฌ ํผ์ฉ๋๊ธฐ๋ ํ๋ค.
ํ์ง๋ง ๋ฒ์์ ๊ธฐ๋ฅ ๋ฉด์์ JavaScript ์์ง๊ณผ ๋ฐํ์ ์ด ๋์ ์๋นํ ์ฐจ์ด๊ฐ ์๋ค.
๋ฐฑ์๋ ๊ฐ๋ฐ์์ ํ๋ํ React ์บ๋ฆฐ๋ ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ ๋์์ (feat. Props Drilling)

Back-end ๊ฐ๋ฐ์๊ฐ React ์บ๋ฆฐ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๊ณผ์ ์์ ๊ฒฝํ์ ๋ค๋ฃจ๋ฉฐ, Back-end ๊ฐ๋ฐ ๊ด์ ์์ ๋ ํนํ๋ค๊ณ ์๊ฐํ ์ ๊ณผ Props drilling ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฒ๋ฒ๋ค์ ์๊ฐํ๋ค.
Node.js: The Documentary | An origin story

2008๋ ๋ง ํด๋ ๋๋ถ๋ถ์ ์ฌ๋์ JavaScript๋ฅผ ํด๋ผ์ด์ธํธ ์ธก ์ธ์ด๋ก๋ง ์๊ฐํ๋ค. ๊ตฌ๊ธ์ V8์ด ๋ฑ์ฅํ์ ๋ Ryan Dahl์ non-blocking ์๋ฒ, V8๊ณผ JavaScript๋ฅผ ์ฐ๊ฒฐํ๊ณ ํต์ฌ ์์๋ค์ ๊ฒฐํฉํด Node.js๋ฅผ ๋ง๋ค ์ ์์๋ค.
๋คํ๋ฉํฐ๋ฆฌ๋ Node.js์ ๊ธฐ์๊ณผ ์ด๊ธฐ ๊ธฐ์ฌ์๋ค์ ๋ง๋๊ณ , ์คํ ์์ค ๊ธฐ์ ์ ์ฌ์ฉํ๋ ๊ธฐ์ ๊ณผ ๊ทธ ๋ฐ์ ์ ์ด์งํ๋ ํ์ ์ ์ธ ์ปค๋ฎค๋ํฐ ๊ตฌ์ฑ์ ๊ฐ์ ๋ณต์กํ ์ญํ ๊ด๊ณ๋ฅผ ์ดํด๋ณผ ์ ์๋ค.
[์ฐธ๊ณ ] 23๋ 5์ ์์์์ ์๊ฐํ์๋ Ryan Dahl์ ์ธํฐ๋ทฐ ๋ด์ฉ๋ ๊ฐ์ด ์ฐธ๊ณ ํด ๋ณด๊ธฐ ๋ฐ๋๋ค.
Dan Abramov - Bluesky, Core React Team, RSC, Strict Dom, and the more!

React์ ์ฝ์ด ํ ๋ฉค๋ฒ์ธ Dan Abramov์ ์ธํฐ๋ทฐ๋ก, ๊ทธ๋ 23๋ 8์ Meta๋ฅผ ํด์ฌํ๊ณ ํ์ค์ํ ์์ ๋คํธ์ํฌ์ธ Bluesky์ ํฉ๋ฅ(FE News 23/10 ์์ ์ฐธ๊ณ )ํ์๋ค.
์ธํฐ๋ทฐ์์๋ ์๋ก ํฉ๋ฅํ ๊ณณ์์ ์ด๋ค ์ผ์ ํ๊ณ ์๋์ง ์ด์ผ๊ธฐํ๋ฉฐ ๋ค์ํ React ์ฃผ์ ๋ค์ธ ์๋ฒ ์ปดํฌ๋ํธ์ ์ญ์ฌ, ์๋ก์ด React ์ปดํ์ผ๋ฌ, ๊ทธ๋ฆฌ๊ณ React์ ๋ฏธ๋ ๋ฑ์ ๋ํ ์๊ฐ์ ๋ค์ด๋ณผ ์ ์๋ค.
[์ฐธ๊ณ ] ๋ค์ ๋งํฌ์์ Podcast ํํ๋ก ๋ค์ด๋ณผ ์ ์๋ค.
- https://www.devtools.fm/episode/92
Introducing our team, investors & moreโฆ
20๋ 3์, GitHub์ NPM ์ธ์์ ์๋ก์ด ๋ ์ง์คํธ๋ฆฌ์ธ JSR์ ๋ฑ์ฅ์ผ๋ก ์ธํด ๋ณํ๊ฐ ์์ด ๋ณด์ด๋ ๋ ์ง์คํธ๋ฆฌ ์์ญ์ ์๋ก์ด ํ๊ฒฝ์ด ์กฐ์ฑ๋์๋ค.
์ด์ ๋ ๋ค๋ฅธ ํจํค์ง ๋๊ตฌ์ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๋ง๋ค๊ธฐ ์ํด vlt technology๊ฐ ์ค๋ฆฝ๋์๊ณ NPM์ ๋ง๋ค์๋ Issac Schlueter๊ฐ ์ฐธ์ฌํ๊ณ ์๋ค. ์ด๊ธฐ ๋ฉค๋ฒ ๊ตฌ์ฑ๊ณผ ํฌ์์๋ค์ ๋ํ ๋ด์ฉ์ ๊ณต์ ํ๋ฉด์, ํ์ ๋ฏธ์ ์ ๋ํด ๋ค์๊ณผ ๊ฐ์ด ๋ฐํ๊ณ ์๋ค.
ํจํค์ง ์ํ๊ณ๋ ์ ์ฒด๋์ด ์์ด ํ์ ํ ์ ์๋ ๊ธฐํ๊ฐ ๋ง์ต๋๋ค. ์ ํฌ์ ์ฌ๋ช ์ ํญ์ ๊ฐ๋ฐ์ ๊ฒฝํ์ ๊ฐ์ ํ๋ ๊ฒ์ด์์ผ๋ฉฐ, ๋ค์ ํ๋ฒ ํจ๊ป ์ผํ ์ ์๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
๋น๊ทผํ์ด FE, 4๊ฐ์ ํ๋ก์ ํธ๋ฅผ ํ๋๋ก ํฉ์น๋ฉฐ ๋๋ ๋ํ๋ค

๋น๊ทผ ํ์ด ๊ฐ๋ฐ ์ด๊ธฐ์ ์ํ ๋ถ๋ด์ ์ค์ด๊ณ ์ ์ํ๊ฒ ๊ฐ๋ฐํ๊ธฐ ์ํด ํ๋ก์ ํธ๋ฅผ ๋ถํ ํ์ฌ ์งํํ๋ค. ์๊ฐ์ด ํ๋ฅด๋ฉฐ ํ๋ก์ ํธ ๊ฐ ์ญํ ๊ณผ ๋ฒ์์ ๋ชจํธํจ, ๋ณต์ก์ฑ ์ฆ๊ฐ, ๋ฐ๋ณต ์์ ๋ฑ์ ๋จ์ ์ด ๋๋ฌ๋ฌ๋ค.
์ด์ ๋น๊ทผ ํ์ด Front-end ๊ฐ๋ฐ์ ๋ค ๋ช ์ด ๋ชจ์ฌ ํ๋์ ํ๋ก์ ํธ๋ก ํตํฉํด ์ ์ง ๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ ๋ฐฉ์์ ๋ ผ์ํ๋ค. ์ด ๊ธ์ ๊ทธ ๋ ผ์ ๊ณผ์ ๊ณผ ๊ฒฐ์ ์ ๊ณต์ ํ๋ค. ์ ํ๋ก์ ํธ๋ฅผ ๊ณํ ์ค์ด๋ผ๋ฉด ํด๋ ๊ตฌ์กฐ์ ๊ทธ๋ผ์ด๋๋ฃฐ์ ์ฐธ๊ณ ํ ๋งํ๋ค.
ํ๋ซํผ ํ ์๋ ์คํ ์์ค ๊ธฐ๋ฐ์ ๋์์ธ ์์คํ ๊ตฌ์ถ ํ๊ณ
์จ๋ผ์ธ ์ปค๋ฆฌ์ด(๊ต์ก) ํ๋ซํผ์ธ ์ธํ๋ฉ์์ ๋์์ธ ์์คํ ์ ๊ตฌ์ถํ๋ฉด์ ๊ฒช์ ๊ฒฝํ์ ๊ณต์ ํ๋ค. ์ด์ ์ 3๊ฐ์ ๋์์ธ ์์คํ ์ด ์์์ผ๋, ์ฑ๊ณต์ ์ด์ง ์์๊ธฐ ๋๋ฌธ์ ์๋ก์ด ๋์์ธ ์์คํ ์ ๊ตฌ์ถ์ UI ์คํ์์ค๋ฅผ ํ์ฉํ๊ธฐ๋ก ํ๋ค๊ณ ํ๋ค.
์ด ๊ธ์ Mantine์ ์ ์ ํ, ์กฐ์ง ๋ด ๋ค์ํ ์ดํด๊ด๊ณ์๋ค๊ณผ์ ํ์์ ๊ตฌ์ถ ๊ณผ์ ์์์ 2๋ ์ฌ๊ฐ์ ๊ฒฝํ์ ๋ค๋ฃจ๊ณ ์๋ค.
How to be a -10x Engineer
๋ฐ์ด๋ ์ฑ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๋ +10๋ฐฐ
์ ์์ง๋์ด๋ ์ ํ์ ๊ฐ์์ง ๋ชฐ๋ผ๋, ๊ทธ ๋ฐ๋์ -10๋ฐฐ
์์ง๋์ด๋ ์กด์ฌํ๋ค.
๊ธ์์ ์๊ฐํ๋ ๋ช ๊ฐ์ง ์ํฉ๋ค์ ํตํด ๋ฐ๋ก ์ฃผ๋น 400์๊ฐ์ ์์ง๋์ด๋ง ์๊ฐ์ ๋ญ๋นํ๋๋ก ๋ง๋ค ์ ์์์ ์๊ฐํ๋ค.
In Loving Memory of Square Checkbox

์ฌ๊ฐํ ์ฒดํฌ๋ฐ์ค์ ๋ฅ๊ทผ ๋ชจ์์ ๋ผ๋์ค ๋ฒํผ์ ๊ณผ๊ฑฐ๋ถํฐ ๊ฐ๊ฐ ์ฒดํฌ์ ์ ํ์ ๋ํ๋ด๋ ํ์ค์ ์ธ ๋์์ธ์ผ๋ก ์ฌ์ฉ๋์ด ์๋ค. ๊ทธ๋ฌ๋ ์น์ ๋ฑ์ฅ๊ณผ ํจ๊ป ์ด๋ฌํ ์ ํต์ ์ธ ๊ตฌ๋ถ์ ํฌ์๋์๊ณ ํ๋์ ๋ค์ด์๋ ์ฌ๊ฐํ๊ณผ ๋ฅ๊ทผ ๋ชจ์์ด ํผ์ฌํ๊ฒ ๋์๋ค.
์ด๋ฌํ ํผ๋์ ๋ํด ๊ธ์ด์ด๋ ๋นํํ๋ฉฐ, ํนํ ์ ํ์ด ์๋ก์ด ์ด์ ์ฒด์ ์ธ visionOS์์ ๋ฅ๊ทผ ์ฒดํฌ๋ฐ์ค๋ฅผ ๋์ ํ๋ ๊ฒ์ ๋ํด ์ง์ ํ๊ณ ์๋ค.
๐น ํํ ๋ฆฌ์ผ
Automate Package Scaffolding in NPM/Yarn/PNPM Monorepo Workspaces
NPM/Yarn/PNPM Workspace๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ธฐ ๋ชจ๋ ธ๋ ํฌ๋ฅผ ์ค์ ํ ํ, ์ฒซ ๋ฒ์งธ ํจํค์ง๋ฅผ ์์ฑํ ๋ค์์ ํด์ผ ํ ์์ ์ผ๋ก๋ ์ด ํจํค์ง์ ์์ฑ ํ๋ก์ธ์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๋ณต์ ํ๋ ๊ฒ์ด๋ค. ์๋์ผ๋ก ๋ณต์ฌํ๊ณ ์์ ํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ๊ณผ ๋ฒ๊ฑฐ๋ก์์ด ์๋ค.
์ด ๊ฐ์ด๋๋ ๊ธฐ์กด Workspace์์ Nx๋ฅผ ํ์ฉํ์ฌ ์ ํจํค์ง ์์ฑ์ ์๋ํํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃจ๋ฉฐ, ๋ชจ๋ ธ๋ ํฌ ๋ด์์ "ํด๋ง ํจํค์ง"(๋๋ Nx ํ๋ฌ๊ทธ์ธ)๋ฅผ ์์ฑํ๋ ์์ธํ ๋จ๊ณ์ Nx devkit์ ์ฌ์ฉํด ์๋ก์ด TypeScript ํจํค์ง ์ค์ผํด๋ฉ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์๋ค.
๐ฆ ์ฝ๋์ ๋๊ตฌ
WinterJS 1.0
๋ ๋ค๋ฅธ JavaScript ๋ฐํ์์ธ WinterJS๊ฐ ์ถ์๋์๋ค. Rust๋ก ์์ฑ๋์์ผ๋ฉฐ, SpiderMonkey ์์ง์ ์ฌ์ฉํ๋ค. ์ด๋ก์จ ์ํ๊ณ์๋ V8, JavaScriptCore, ๊ทธ๋ฆฌ๊ณ SpiderMonkey๊น์ง ์ฃผ์ํ ์์ง๋ค์ ์ฌ์ฉํ๋ ๋ฐํ์์ ํ์์ ๋ง๊ฒ ์ ํํ ์ ์๊ฒ ๋์๋ค.
WinterJS๋ ์ด๋น 150k ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ, ์ด๋ ๋ค๋ฅธ ๊ฒฝ์ ๋ฐํ์๋ค ๋ณด๋ค ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋ค.

[์ฐธ๊ณ ] ๋ฒค์น๋งํฌ ๊ฒฐ๊ณผ
Million Lint is in public beta

Million Lint(ESLint์ ๋น์ทํ์ง๋ง ์ฑ๋ฅ์ ์ด์ ์ ๋ง์ถ)๋ React ์น์ฌ์ดํธ๋ฅผ ๋น ๋ฅด๊ฒ ์ ์งํด ์ฃผ๋ VSCode ์ต์คํ ์ ์ผ๋ก, ๋๋ฆฐ ์ฝ๋๋ฅผ ์๋ณํ๊ณ ํด๊ฒฐํ๊ธฐ ์ํ ์ ์์ ์ ๊ณตํ๋ค.
๋ง์ ๊ฐ๋ฐ์๊ฐ ๋ถํ์ํ ๋ ๋๋ง์ ์ฐพ๊ธฐ ์ํด React Devtools ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ง๋ง, flamegraph๋ฅผ ํตํด ๋ฌธ์ ์ง์ ์ ๋ฐ๋ก ์ฐพ์๊ฐ๋ ๊ฒ์ ์ฝ์ง ์๋ค. ๋๋ถ๋ถ์ ๋ณต์ก์ฑ์ ์ ๋๋ก ์ดํดํ๊ฑฐ๋ ๊ด๋ฆฌํ์ง ๋ชปํ๋ค. Million Lint๋ linter์ ์ ์ฌํ๊ฒ ์ฑ๋ฅ์ ๋ฌธ์ ๊ฐ ์๋ ์ฝ๋๋ฅผ ์๋ณํ๊ณ , ์ด์ ๋ํ ์ฑ๋ฅ์ ๋ฌธ์ ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํด ์ค๋ค.
ํ์ฌ๋ ์ด๊ธฐ ์คํ์ ๋จ๊ณ ์ํ๋ก ๋ถํ์ํ ์ฌ ๋ ๋๋ง์ ๊ฒ์ถํ๋ ๊ฒ์ ์ด์ ์ ๋ง์ถ๊ณ ์์ผ๋ฉฐ, ํฅํ ์์ฉ ์๋น์ค์ธ Lint++์ ์ถ์ํ ๊ณํ์ด๋ผ๊ณ ํ๋ค.
Brick Break Anywhere
Chrome ํ์ฅ ํ๋ก๊ทธ๋จ์ผ๋ก ์ํ๋ ์น ํ์ด์ง์์ ๋ฒฝ๋ ๊นจ๊ธฐ ๊ฒ์์ ์ฆ๊ธธ ์ ์๋ค.
[์ฐธ๊ณ ] ์ด๋ป๊ฒ ๋์ํ๋์ง ๊ถ๊ธํ๋ค๋ฉด, ๋ค์ ๋ฐํ ์ฌ๋ผ์ด๋๋ฅผ ์ฐธ๊ณ ํ๋ผ.
Tinylibs
์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ชจ์ ํ๋ก์ ํธ๋ก, ๋ค์ ํจํค์ง๋ค์ ์ฌ์ฉํ ์ ์๋ค.
- tinyspy: ์ฝ 10KB ํฌ๊ธฐ์ ํ ์คํธ ์คํ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Nano Spy ํฌํฌ)
- tinyspy: Node.js worker pool (piscina ํฌํฌ)
- tinybench: ๋ฒค์น๋งํฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- tinyrainbow: ํฐ๋ฏธ๋ ๋๋ ๋ธ๋ผ์ฐ์ ์ฝ์์ ๋ค์ฑ๋ก์ด ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- tinylet: Web Worker ํฌํผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- tinyhightlight JS/TS/JSX/TSX ๋ฌธ๋ฒ ํ์ด๋ผ์ดํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (@babel/highlight ํฌํฌ)
monolith
์นํ์ด์ง๋ฅผ ๋จ์ผ HTML ํ์ผ๋ก ์ ์ฅํด ์ฃผ๋ CLI ๋๊ตฌ๋ก CSS, ์ด๋ฏธ์ง, JavaScript ๋ฑ์ ํ๋์ ํ์ผ๋ก ๋ฌถ์ด์ค๋ค. ๋ชจ๋ ์์ ๋ค์ dataURLs๋ก ์ธ๋ผ์ธํํ๊ณ , ์จ๋ผ์ธ์์ ๋ณด๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ๋ ๋๋ง ๋๊ฒ ํ๋ค.
[์ฐธ๊ณ ] Monolith wasm ํฌํธ๋ฅผ ํ์ฉํ Chrome ์ต์คํ ์ ๋ ์ ๊ณต๋๋, ํ ์คํธํด ๋ณธ ๊ฒฐ๊ณผ ์์ ๋ค์ด ๋ชจ๋ ์ธ๋ผ์ธํ๋์ง ์๋ ๊ฒฝ์ฐ๋ค์ด ์์๋ค.