2026
Latest
5 min read

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๊ธฐ์ดˆ: ๊ฐœ๋… ๋ชจ๋ธ

ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ DB๋ฅผ ๋‹ค๋ฃฐ ๋•Œ๋Š” ๋ณดํ†ต ๋งŒ๋“ค ํ™”๋ฉด์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ…Œ์ด๋ธ”์„ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค. ํ™”๋ฉด์ด ๋จผ์ € ์žˆ๊ณ , ๊ฑฐ๊ธฐ์— ๋งž์ถฐ ์ปฌ๋Ÿผ์„ ๋ถ™์ด๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์•„ํ‚คํ…์ฒ˜(DA)๋Š” ์‹œ์„ ์ด ๋ฐ˜๋Œ€์ž…๋‹ˆ๋‹ค. ์‚ฌ์—…์ด ๋‹ค๋ฃจ๋Š” ๋ฐ์ดํ„ฐ ์ „์ฒด๋ฅผ ๋จผ์ € ์ •๋ฆฌํ•˜๊ณ ,โ€ฆ

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๊ธฐ์ดˆ: ๋…ผ๋ฆฌ ๋ชจ๋ธ (์‹๋ณ„์ž ยท ๊ด€๊ณ„ ยท M:N ํ•ด์†Œ)

์ง€๋‚œ ๊ธ€์—์„œ๋Š” ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์˜ ์ฒซ ๋‹จ๊ณ„์ธ ๊ฐœ๋… ๋ชจ๋ธ๊นŒ์ง€ ๋‹ค๋ค˜์Šต๋‹ˆ๋‹ค. ์—”ํ„ฐํ‹ฐยท์†์„ฑยท๊ด€๊ณ„๋ผ๋Š” ์„ธ ๋‹จ์–ด๋กœ ์‚ฌ์—… ์ „์ฒด์˜ ๋ฐ์ดํ„ฐ ์œค๊ณฝ์„ ์žก๋Š” ๋‹จ๊ณ„์˜€์Šต๋‹ˆ๋‹ค.

Tokio File Write Internals

Tokio๋กœ ํŒŒ์ผ์„ ์“ธ ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ์•Œ์•„์•ผ ํ•  ์‚ฌ์‹ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Next.js 16 ์บ์‹œ ํ•ธ๋“ค๋Ÿฌ์™€ Redis ๋ฆฌ๋ชจํŠธ ์บ์‹œ ์—ฐ๋™

Next.js 16 ์•ฑ์„ ๋‘ ๋Œ€ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋„์›Œ๋†“๊ณ  revalidateTag('post:5')๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด, ์ƒˆ๋กœ๊ณ ์นจ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ–ˆ์„ ๋•Œ ์–ด๋–ค ์š”์ฒญ์€ ์ƒˆ ๋ฐ์ดํ„ฐ, ์–ด๋–ค ์š”์ฒญ์€ ์˜› ๋ฐ์ดํ„ฐ๊ฐ€ ์„ž์—ฌ ๋‚˜์˜ต๋‹ˆ๋‹ค. ๋ฌดํšจํ™” ํ˜ธ์ถœ์ด ๋„๋‹ฌํ•œ ํ•œ ์ธ์Šคํ„ด์Šค์—์„œ๋งŒโ€ฆ

Next.js Pages Router vs App Router ๋ Œ๋”๋ง ๋ชจ๋ธ ๋น„๊ต

Next.js์˜ App Router๋Š” Pages Router์™€ ๋‹จ์ˆœํžˆ "์ตœ์‹  ๋ฒ„์ „"์˜ ๊ด€๊ณ„๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ Œ๋”๋ง ๋ชจ๋ธ ์ž์ฒด๊ฐ€ ๋‹ค๋ฅด๊ณ , ๊ฐ™์€ ์šฉ์–ด("Pre-rendering")๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฒ”์œ„๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ์ด ๊ธ€์€ ๋‘ ๋ผ์šฐํ„ฐ์˜ ์ฐจ์ด๋ฅผ ์šฉ์–ด ์ •์˜๋ถ€ํ„ฐโ€ฆ

๋ชจ๋ฐ”์ผ ๋””์ž์ธ ์‹œ์Šคํ…œ์—์„œ CSS๋ฅผ ์˜๋„์˜ ์–ธ์–ด๋กœ ๋‹ค๋ฃจ๊ธฐ

CSS๋Š” ์‹œ๊ฐ์  ๊ฒฐ๊ณผ๋งŒ ๋งž์œผ๋ฉด ํ†ต๊ณผํ•˜๋Š” ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋‹ค๋ค„์ง€๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. padding: 12px 16px์€ ๋ถ„๋ช…ํžˆ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ฝ”๋“œ๋Š” "์™œ 12px์ธ์ง€", "์™œ ์ขŒ์šฐ์™€ ์ƒํ•˜๊ฐ€ ๋‹ค๋ฅธ์ง€", "๋‹ค๋ฅธ ์–ธ์–ด๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๊ดœ์ฐฎ์€์ง€"์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋งํ•˜์ง€โ€ฆ

TypeScript ์ œ๋„ค๋ฆญ์˜ ์—ญ๋ฐฉํ–ฅ ์ถ”๋ก  ํ•œ๊ณ„์™€ infer ํŒจํ„ด

์ œ๋„ค๋ฆญ ํ•จ์ˆ˜์—์„œ ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๋•Œ, TypeScript๊ฐ€ ์ผ๋ถ€ ํƒ€์ž…์„ ์ œ๋Œ€๋กœ ์ถ”๋ก ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํƒ€์ž… ์ฒดํฌ ์ž์ฒด๋Š” ํ†ต๊ณผํ•˜์ง€๋งŒ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ถˆ๋ช…ํ™•ํ•˜๊ฑฐ๋‚˜, ๋ฐ˜ํ™˜ ํƒ€์ž…์ด unknown์œผ๋กœ ํด๋ฐฑ๋˜๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์™œโ€ฆ

Entire: AI ์—์ด์ „ํŠธ ์‹œ๋Œ€์˜ ์ปจํ…์ŠคํŠธ ๋ฒ„์ „ ๊ด€๋ฆฌ

AI ์—์ด์ „ํŠธ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด, ์—์ด์ „ํŠธ๊ฐ€ ์ž˜๋ชป๋œ ๋ฐฉํ–ฅ์œผ๋กœ ๋น ์ง€๋Š” ์ˆœ๊ฐ„์ด ์˜ต๋‹ˆ๋‹ค. ์ˆ˜์‹ญ ํ„ด์˜ ๋Œ€ํ™” ๋์— ์›๋ž˜ ์˜๋„์™€ ์ „ํ˜€ ๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ๋‚˜์˜ค๊ณ , ๋˜๋Œ๋ฆฌ๋ ค๋ฉด ์–ด๋””์„œ๋ถ€ํ„ฐ ์ž˜๋ชป๋๋Š”์ง€ ์ถ”์ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Git์€ ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ๊ด€๋ฆฌํ•˜์ง€๋งŒ,โ€ฆ

Claude Code ์Šคํ‚ฌ๋กœ React ์ปจ๋ฒค์…˜์„ ๊ตฌ์กฐ์ ์œผ๋กœ ๊ฐ•์ œํ•˜๊ธฐ

AI ์ฝ”๋“œ ์–ด์‹œ์Šคํ„ดํŠธ์—๊ฒŒ "React ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค์–ด์ค˜"๋ผ๊ณ  ๋งํ•˜๋ฉด, ์ฝ”๋“œ๋Š” ๋‚˜์˜ต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด ํŒ€์˜ ์ปจ๋ฒค์…˜๋Œ€๋กœ ๋‚˜์˜ฌ๊นŒ์š”? props ๋„ค์ด๋ฐ, ํด๋” ๊ตฌ์กฐ, ์ƒํƒœ๊ด€๋ฆฌ ํŒจํ„ด, ํ…Œ์ŠคํŠธ ๋ฐฉ์‹ โ€” ๋งค๋ฒˆ ๊ฐ™์€ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ˜๋ณตํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ๋ฌธ์ œ๋Š” AI๊ฐ€ ์•„๋‹ˆ๋ผโ€ฆ

React ๋กœ๋”ฉ UX ์ „๋žต

๋กœ๋”ฉ UI๋Š” ๋‹จ์ˆœํ•œ ์Šคํ”ผ๋„ˆ ์„ ํƒ์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋กœ๋”ฉ์„ ์–ธ์ œ ๋ณด์—ฌ์ค„์ง€, ์•„์˜ˆ ์•ˆ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ”๋€” ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ๊ฐฑ์‹ ํ• ์ง€๊นŒ์ง€ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ๋กœ๋”ฉ ํ”Œ๋ฆฌ์ปค ๋ฌธ์ œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ, ์บ์‹œ์™€ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๊นŒ์ง€โ€ฆ

JavaScript Map vs Object Deep Dive

JavaScript์—์„œ ํ‚ค-๊ฐ’ ์Œ์„ ์ €์žฅํ•  ๋•Œ, ๋Œ€๋ถ€๋ถ„ {} ๊ฐ์ฒด๋ฅผ ์”๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ES6์—์„œ Map์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์™œ Object๊ฐ€ ์žˆ๋Š”๋ฐ Map์„ ๋”ฐ๋กœ ๋งŒ๋“ค์—ˆ์„๊นŒ์š”? "๋‘˜ ๋‹ค ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ ์•„๋‹ˆ์•ผ?"๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ, ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ถ€ํ„ฐโ€ฆ

Nitro ๋”ฅ๋‹ค์ด๋ธŒ - UnJS์˜ ์„œ๋ฒ„ ์—”์ง„

ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ Express, Fastify, Hono ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋– ์˜ฌ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐฐํฌ ํ™˜๊ฒฝ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”? Node.js, Cloudflare Workers, Vercel,โ€ฆ

Passkey & WebAuthn Deep Dive

Google์— ๋กœ๊ทธ์ธํ•  ๋•Œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋Œ€์‹  ์ง€๋ฌธ์„ ์ฐ๋Š” ๊ฒฝํ—˜์„ ํ•ด๋ณธ ์ ์ด ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์ง€๋„ ์•Š์•˜๋Š”๋ฐ ๋กœ๊ทธ์ธ์ด ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒŒ passkey์ž…๋‹ˆ๋‹ค.

BMAD Method Deep Dive

AI ์‹œ๋Œ€์˜ ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ BMAD Method๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค

Schema ๊ธฐ๋ฐ˜ Encoding/Decoding ๋น„๊ต

๊ฒ€์ฆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ•œ ๊ฐ€์ง€ ๋‹น์—ฐํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด๋Š” ์ „์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒ€์ฆํ•  ๋•Œ์˜ ํƒ€์ž…๊ณผ ๊ฒ€์ฆ๋œ ๊ฒฐ๊ณผ์˜ ํƒ€์ž…์ด ๊ฐ™๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Zod์—์„œ z.string()์œผ๋กœ ๊ฒ€์ฆํ•˜๋ฉด ์ž…๋ ฅ๋„ string์ด๊ณ  ๊ฒฐ๊ณผ๋„ string์ž…๋‹ˆ๋‹ค. z.number()๋กœโ€ฆ

OAuth Deep Dive

OAuth 2.0 ์ด์ „์—๋Š” ์ œ3์ž ์•ฑ์ด ์‚ฌ์šฉ์ž์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ ์œ„์ž„ ํ”„๋กœํ† ์ฝœ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. 2006~2007๋…„๊ฒฝ Twitter API๋ฅผ ์—ฐ๋™ํ•˜๋Š” ์„œ๋“œํŒŒํ‹ฐ ํด๋ผ์ด์–ธํŠธ๋“ค์€ ์‚ฌ์šฉ์ž์˜ Twitter ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ง์ ‘ ์ž…๋ ฅ๋ฐ›์•„ ์ €์žฅํ•˜๋Š”โ€ฆ

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ฐ™์€ ์‚ฌ์ดํŠธ๋ฅผ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€

๋ธŒ๋ผ์šฐ์ €์˜ SameSite ์ฟ ํ‚ค ์ •์ฑ…์€ eTLD+1์„ ๊ธฐ์ค€์œผ๋กœ same-site ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค. TLD, eTLD, eTLD+1 ๊ฐ๊ฐ์˜ ์ •์˜์™€ ๊ด€๊ณ„๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Cookie Deep Dive

์ฟ ํ‚ค์™€ JavaScript ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ† ํฐ ์ €์žฅ์†Œ๋กœ์„œ ๋ณด์•ˆ ํŠน์„ฑ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ฟ ํ‚ค๋Š” ์ž๋™ ์ „์†ก๋˜์–ด CSRF์— ๋…ธ์ถœ๋˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋Š” JavaScript๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ด XSS์— ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์œ„ํ˜‘์˜ ๊ตฌ์กฐ์™€ ๋ฐฉ์–ด ์ˆ˜๋‹จ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ํ•จ์ˆ˜ํ˜• ๋ฆฌํŒฉํ† ๋ง

๋ฆฌํŒฉํ† ๋ง์„ ํ•˜๋ ค๋ฉด ๋จผ์ € ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ๋ณ€์ˆ˜๊ฐ€ ์–ด๋””์„œ ๋ณ€ํ•˜๋Š”์ง€, ์–ด๋–ค ์—ฐ์‚ฐ์ด ๋ถ€์ˆ˜ํšจ๊ณผ๋ฅผ ์ผ์œผํ‚ค๋Š”์ง€, ์–ด๋–ค ๊ฐ’์ด ์–ด๋–ค ์ž…๋ ฅ์— ์˜์กดํ•˜๋Š”์ง€. ์ด๊ฑธ ์‚ฌ๋žŒ์ด ๋ˆˆ์œผ๋กœ ์ฝ์–ด์„œ ํŒ๋‹จํ•˜๋ฉด ๋น ๋œจ๋ฆฌ๋Š” ๋ถ€๋ถ„์ด ์ƒ๊ธฐ๊ณ , AI์—๊ฒŒ "์ด ์ฝ”๋“œโ€ฆ

React Compiler ๋™์ž‘ ์›๋ฆฌ

React๋Š” ์ƒํƒœ๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ์ตœ์ ํ™”๋Š” useMemo, useCallback, React.memo๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ํ•ด์•ผ ํ–ˆ๊ณ , ์ด ์ˆ˜๋™ ๋ฉ”๋ชจ์ด์ œ์ด์…˜์˜ ํ•œ๊ณ„๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด React Compiler๊ฐ€ ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

CSS word-break ์ •๋ฆฌ

ํ•œ๊ธ€์€ ์ปจํ…Œ์ด๋„ˆ ๋„ˆ๋น„์— ๋งž์ถฐ ์•Œ์•„์„œ ์ค„๋ฐ”๊ฟˆ๋˜๋Š”๋ฐ, ์˜๋ฌธ์ด๋‚˜ ์ˆซ์ž๋Š” ์…€์„ ๋šซ๊ณ  ๋‚˜๊ฐ‘๋‹ˆ๋‹ค. ์ด๊ฑด CSS๊ฐ€ ์•„๋‹ˆ๋ผ ์œ ๋‹ˆ์ฝ”๋“œ ๋ช…์„ธ์—์„œ ๋น„๋กฏ๋œ ๋™์ž‘์ž…๋‹ˆ๋‹ค.

css4 min

DatePicker ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„

design system์—์„œ ์ง์ ‘ ์ž…๋ ฅ ๊ฐ€๋Šฅํ•œ DatePicker๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•œ ๊ณผ์ •์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

AI ์‹œ๋Œ€, frontend testing ์ „๋žต

AI๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์‹œ๋Œ€์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฑด test code์ž…๋‹ˆ๋‹ค. AI๊ฐ€ ๋งŒ๋“  ์ฝ”๋“œ๊ฐ€ ์˜๋„๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋‹ˆ๊นŒ์š”. ๊ทธ๋Ÿฐ๋ฐ frontend์—์„œ testing์€ ์—ฌ์ „ํžˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

line-height๋Š” ์ง์ˆ˜์—ฌ์•ผ ํ•œ๋‹ค

design system์—์„œ font size๋ณ„ line-height๋ฅผ ์„ค์ •ํ•  ๋•Œ ์ง์ˆ˜ ๊ฐ’์„ ์จ์•ผ ํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Next.js ์ŠคํŠธ๋ฆฌ๋ฐ SSR: Lambda ์‘๋‹ต ๋ฐฉ์‹์˜ ์ดํ•ด์™€ SST

์ตœ๊ทผ ์„œ๋น„์Šค์˜ SSR ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋ฉด์„œ Next.js์˜ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ Œ๋”๋ง์„ ์ ์šฉํ•ด๋ณด๋ ค ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ์—์„œ๋Š” Suspense์™€ ์ŠคํŠธ๋ฆฌ๋ฐ์ด ์˜๋„๋Œ€๋กœ ์ž‘๋™ํ–ˆ์ง€๋งŒ, AWS Amplify์— ๋ฐฐํฌํ•˜์ž ์ „ํ˜€ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค.

2025

WebSocket with Protocol Buffers

์ตœ๊ทผ ์‹ค์‹œ๊ฐ„ ํ˜‘์—… ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ–ˆ๋˜ ๊ฒฝํ—˜์„ ํ† ๋Œ€๋กœ ๊ธฐ์กด REST API ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋กœ๋Š” ๋ช‡ ๊ฐ€์ง€ ์‹ฌ๊ฐํ•œ ํ•œ๊ณ„์— ๋Œ€ํ•ด ์ธ์ง€ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Effect functional programming

์ฃผ๋ณ€์˜ ๊ฐœ๋ฐœ์ž ๋ถ„๋“ค๊ณผ ๋ฆฌ์•กํŠธ์™€ DI์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Building Context-Query Library

๋ฆฌ์•กํŠธ์—์„œ๋Š” ์—ญํ™œ ๋ณ„๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‚˜๋ˆ„์–ด ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ๊ฐ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Dynamic import in Next.js

Dynamic import๋ฅผ ์ด์šฉํ•˜๋ฉด ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Next.js Hidden Optimizations

Next.js๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ์šฐ์—ฐํžˆ ๋ฐœ๊ฒฌํ•œ ์ตœ์ ํ™” ๊ณผ์ •์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Styled components with SSR

React์—์„œ ์Šคํƒ€์ผ์„ ์ž…ํžˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘์—์„œ CSS-in-JS๋Š” JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํƒ€์ผ์„ ์ •์˜ํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. styled-components๋‚˜ emotion๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์ด ํŒจํ„ด์„ ๊ตฌํ˜„ํ•˜๊ณ โ€ฆ

PNPM v10 braking changes

๋ณธ ๊ธ€์€ PNPM ๋ฌธ์„œ์™€ ์กฐ์‚ฌํ•œ ์ž๋ฃŒ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ claud.ai๊ฐ€ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค

pnpm2 min

PNPM vs Yarn Berry

Yarn Berry์™€ pnpm ๋ชจ๋‘ ๋น ๋ฅธ ์†๋„์™€ ํšจ์œจ์ ์ธ ๋””์Šคํฌ ์‚ฌ์šฉ์„ ๋ชฉํ‘œ๋กœ ํ•˜์ง€๋งŒ ๋‚ด๋ถ€ ๋™์ž‘ ๋ฐฉ์‹์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

Remix and Qwik Exploration

Next.js๋Š” React ๊ธฐ๋ฐ˜ SSR์˜ ๋Œ€ํ‘œ๋กœ ์ธ์ง€๋˜๊ณ  ์žˆ์ง€๋งŒ ๋ณต์žก์„ฑ๊ณผ ๋ฌด๊ฑฐ์šด ๋ฒˆ๋“ค ํฌ๊ธฐ ๋“ฑ์˜ ๋ฌธ์ œ์ ๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

Why React Created Functional Components

ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ž‘์„ฑ ํ•  ๋•Œ, ๋ณดํ†ต ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

React Fiber Architecture

๋ฆฌ์•กํŠธ์˜ ๋ Œ๋”๋ง ๊ณผ์ •์€ ๋ฆฌ์•กํŠธ ์—˜๋ฆฌ๋จผํŠธ์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

Vanilla Extract

Vanilla Extract์„ ์‚ฌ์šฉํ•ด๋ณธ ๊ณ„๊ธฐ๋Š” Next.js์˜ ์•ฑ ๋ผ์šฐํ„ฐ ํ™˜๊ฒฝ์—์„œ ๊ธฐ์กด CSS in js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ํ•œ๊ณ„๋ฅผ ๋А๊ผˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Linear Function Graph

Visualization and Analysis of Linear Functions

math1 min

How to parse String?

Exploring String Parsing

2024

Lessons Learned from My Side Project

Next.js: The Good, The Bad, and The Surprising

Rendering Strategies

์š”์ฆ˜๋“ค์–ด SSR์— ๊ด€ํ•œ ์ด์•ผ๊ธฐ๊ฐ€ ๋งŽ์ด ๋…ธ์ถœ๋˜๊ณ  ์žˆ๊ณ  ์‹ค์ œ ์„œ๋น„์Šค์—์„œ SEO์˜ ์ค‘์š”์„ฑ์œผ๋กœ ์ธํ•ด์„œ SSR์„ ๋„์ž…ํ•˜๋Š” ํšŒ์‚ฌ๋“ค์ด ๋งŽ์•„์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Understanding Concurrency Types in Rust

Exploring the concurrency types in Rust

rust1 min

Rust File I/O

Exploring different file I/O handling methods in Rust

rust1 min

Enum and const enum

Comparing enum and const enum in TypeScript: How to choose the best option for your project

Infer

Exploring the infer keyword in TypeScript: How to use it effectively for more precise type inference

Tangent

Exploring the concept of the tangent and its application in mathematics

math1 min

Cubic-bezier

Description of the cubic-bezier curve function

math2 min

Linear Interpolation

Exploring the concept of linear interpolation and its mathematical proof

math3 min

Yarn

Exploring the concept of Yarn and its features

yarn1 min

Read GraphQL docs

Exploring the concept of GraphQL and its benefits

graphql3 min

ESLint Boundaries plugin

Creating an ESLint plugin to enforce boundaries between packages in a monorepo

eslint3 min

Git commit strategy

Exploring different strategies for managing Git commit messages to improve collaboration and code quality

git2 min

Tanstack Query for Angular

ํšŒ์‚ฌ์—์„œ๋Š” Angular๊ณผ ์ผ๋ ‰ํŠธ๋ก ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ˜‘์—… ํˆด์„ ์›น๊ณผ ์•ฑ์œผ๋กœ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.

Multi-Account Git Setup Guide Using SSH

A comprehensive guide to configuring multiple Git accounts using SSH keys

git2 min

2023 Reflection

A reflection on 2023

2023

Advanced Required type

Learn how to create and implement advanced Required types in TypeScript for better type safety and validation

๋ชจ๋“  ๊ธ€์„ ์ฝ์œผ์…จ์Šต๋‹ˆ๋‹ค โœฆ