TECH NOTES
기술노트
현장에서 검증된 개발 지식을 기록합니다.
151215111510150915081507150615051504150315021501
Frontend
useActionState — React 19 폼 상태와 서버 액션을 한 훅으로
React 19의 useActionState 훅으로 폼 액션 실행·결과 상태·pending을 한 번에 관리하는 법. useFormState와의 차이, 서버 액션 연동, 흔한 함정까지 실전 정리.
Etc
epoch 시계 vs 단조 시계(monotonic) — 시간 측정엔 뭘 써야 하나
epoch 시계는 몇 시냐를, 단조 시계는 얼마나 흘렀냐를 잽니다. 벽시계가 거꾸로 가 타임아웃이 음수가 되는 버그, 두 시계의 용도 구분과 실전 함정을 정리했습니다.
Infra
DNS TTL과 캐싱 — 'DNS 전파'의 진짜 정체
DNS 전파가 느리다는 통념의 실체는 TTL 캐시 만료입니다. 계층별 캐시 구조, 마이그레이션 전 TTL 조정, 네거티브 캐싱까지 실무 관점으로 풀었습니다.
Backend
Graceful Shutdown — 배포할 때마다 뜨는 502를 없애는 법
배포 때마다 502가 튀는 진짜 이유는 프로세스를 그냥 죽여서입니다. readiness 전환부터 드레이닝 대기까지 올바른 종료 순서를 코드와 쿠버네티스 설정으로 정리했습니다.
AI
컨텍스트 엔지니어링 — 프롬프트가 아니라 컨텍스트를 설계하는 법
프롬프트 문장이 아니라 컨텍스트 윈도우에 무엇을·얼마나·어떤 순서로 넣을지 설계하는 컨텍스트 엔지니어링. 토큰 예산 함수, 롤링 요약, 캐시 정렬까지 실전 정리.
Frontend
ResizeObserver — 요소 크기 변화를 감지하는 실전 패턴
window.resize로는 못 잡는 개별 요소의 크기 변화를 ResizeObserver로 감지합니다. borderBoxSize 사용법, 악명 높은 loop 에러 회피, 컨테이너 기준 반응형 실전 패턴까지 정리했습니다.
AI
LLM 양자화 — GPTQ·AWQ·GGUF, INT4가 뭘 버리고 뭘 지키나
가중치를 4비트로 줄여도 왜 멀쩡한지, GPTQ·AWQ·GGUF의 차이와 Q4_K_M 같은 이름 읽는 법, 품질과 크기의 스위트스폿까지 정리한 로컬 LLM 양자화 가이드.
Etc
ANSI 이스케이프 코드 — 터미널에 색과 커서를 다루는 법
ls의 색깔, 진행 막대, 스피너는 모두 ANSI 이스케이프 코드로 동작합니다. CSI·SGR 색 코드, 커서 제어, 리셋·파이프·폭 계산 함정까지 원리부터 실전까지 정리했습니다.
Database
prepared statement 플랜 캐시 — generic vs custom plan
빠르라고 넣은 prepared statement가 오히려 느려지는 이유. generic vs custom plan의 저울질, 편중 데이터의 함정, plan_cache_mode와 PgBouncer 조합까지.
Infra
NUMA와 hugepages — 메모리 지역성 튜닝의 기본
멀티소켓 서버의 NUMA 원격 접근과 hugepages의 TLB 최적화, THP의 지연 스파이크 함정까지. 언제 손대고 언제 두어야 하는지 실전 기준으로 설명합니다.
Backend
2단계 커밋(2PC) — 분산 트랜잭션의 원자성과 그 대가
여러 시스템에 걸친 트랜잭션을 전부 커밋 아니면 전부 롤백으로 만드는 2PC의 원리와 치명적 블로킹 문제, 그리고 사가·아웃박스 같은 현대적 대안을 비교합니다.
Frontend
AbortSignal.timeout() · any() — fetch 취소를 한 줄로
fetch 타임아웃에 더는 setTimeout·clearTimeout이 필요 없습니다. AbortSignal.timeout()과 any()로 취소 로직을 한 줄로 줄이고 타임아웃과 사용자 취소를 구분하는 최신 패턴을 소개합니다.