TECH NOTES
기술노트
현장에서 검증된 개발 지식을 기록합니다.
150014991498149714961495149414931492149114901489
AI
지식 증류(Distillation) — 큰 모델의 지능을 작은 모델에 옮기기
큰 교사 모델의 확률 분포를 작은 학생이 따라 배우는 지식 증류. 부드러운 라벨이 왜 강한지, 온도의 역할과 데이터 증류의 라이선스 주의점까지 짚었다.
Etc
IEEE 754 심화 — NaN, 무한대, 그리고 음의 0
NaN·무한대·음의 0은 버그가 아니라 IEEE 754가 정의한 특수값입니다. 비트 구조, NaN이 자기 자신과도 다른 이유, 무한대·음의 0의 함정과 안전한 검사법을 정리했습니다.
Database
카디널리티 추정 — 플래너가 행 수를 예측하는 법
인덱스가 있는데 왜 안 탈까. 범인은 대개 틀린 행 수 추정입니다. pg_stats 통계와 EXPLAIN의 추정 대 실제, 확장 통계로 컬럼 상관을 바로잡는 법을 다룹니다.
Infra
OCSP 스테이플링 — 인증서 폐기 확인을 빠르게
OCSP 스테이플링이 인증서 폐기 확인의 왕복과 프라이버시 노출을 없애는 원리와 Nginx 설정. 왜 이 기법이 나왔고 무엇을 해결했는지 짚어봅니다.
Backend
CDC(변경 데이터 캡처) — DB 변경을 실시간 스트림으로 흘려보내기
DB의 삽입·수정·삭제를 트랜잭션 로그에서 뽑아 실시간 스트림으로 내보내는 CDC. 폴링 대 로그 기반 비교, Debezium, 아웃박스 패턴, 도입 주의점을 정리했습니다.
Frontend
Intl.Segmenter — 이모지·한글을 사람이 보는 글자 수로 세기
str.length가 이모지 하나를 8로 세는 이유와 해법을 파헤칩니다. Intl.Segmenter로 grapheme·단어·문장을 로케일 규칙에 맞게 정확히 쪼개고 글자 수를 제대로 세는 실전 패턴과 성능 팁까지 정리했습니다.
AI
전문가 혼합(MoE) — 파라미터는 크게, 계산은 조금만
토큰마다 일부 전문가만 켜서 파라미터는 키우고 계산은 아끼는 MoE 구조. 라우팅과 로드 밸런싱, 그리고 메모리는 왜 못 아끼는지 그 대가까지 정리했다.
Etc
2의 보수 — 컴퓨터가 음수를 표현하는 방법
2의 보수는 비트를 뒤집고 1을 더해 음수를 만드는 규칙입니다. 덧셈 회로로 뺄셈까지 되는 이유, -128~127 비대칭, 정수 오버플로와 부호 함정을 직접 계산하며 설명합니다.
Database
work_mem — 정렬과 해시가 디스크로 새는 순간
정렬·해시가 디스크로 스필하면 쿼리가 급격히 느려집니다. work_mem이 연산당이라는 함정, EXPLAIN으로 스필을 잡는 법, OOM 없이 안전하게 올리는 국소 튜닝.
Infra
journald — systemd의 구조화 로깅 제대로 쓰기
journald가 로그를 구조화 필드로 저장하는 원리와, journalctl 필터 실전, 재부팅 시 로그가 날아가는 휘발성 함정과 영구 저장 설정까지 정리했습니다.
Backend
HyperLogLog — 수억 개의 유니크를 12KB로 세는 법
수억 개의 유니크 방문자를 12KB로 추정하는 HyperLogLog. 앞자리 0 개수라는 직관부터 메모리·오차 맞교환, 병합(union)의 위력까지 실무 관점으로 풀었습니다.
Frontend
reading-flow · reading-order — 탭 순서가 화면과 어긋날 때
order로 화면 배치를 바꿨더니 키보드 탭 순서가 엉켰다면 reading-flow·reading-order가 답입니다. tabindex 지옥 없이 시각 순서와 포커스 순서를 맞추는 CSS 접근성 기법을 예제로 설명합니다.