September 29, 2026 · 12 min read
SQLite FTS5로 한글 두 글자 낱말을 검색하면 0건이 나옵니다. 기본 토크나이저 두 개가 모두 한국어를 못 쓰는 이유, 한글 구간만 2-gram으로 쪼개 색인하는 방법, 조각을 AND로 풀면 엉뚱한 문서가 걸리는 문제, 키워드와 의미 검색을 RRF로만 합치면 정확히 일치한 결과가 밀려나는 구조를 실측으로 다룹니다.
September 22, 2026 · 10 min read
다크 모드에서 글자가 어두운 배경에 묻히는 증상을 .dark-mode 개별 선택자로 덮으면 예외가 끝없이 늘어납니다. 사이드 프로젝트 네 곳을 디자인 토큰으로 정리하며 인라인 스타일 38개의 원인이 동적 색이었다는 것, 다크 토큰 두 개가 보정 선택자 19개를 부른 구조, 자기참조 변수와 흰 입력창 함정까지 다룹니다.
September 14, 2026 · 8 min read
rpm -Vac로 기본값에서 바뀐 설정 파일만 뽑을 때, 2>/dev/null이 cannot open Packages database 오류를 삼키면 결과가 조용히 0건이 되어 무변경으로 오독됩니다. 플래그 아홉 자리 해석, DB 손상과 sudo 실패의 구분, 권한 때문에 못 본 항목 처리, RPM이 끝내 못 보는 두 영역까지 서버 이관 기준으로 정리합니다.
September 04, 2026 · 8 min read
nginx -v가 1.20.1로 나온다고 해당 버전의 CVE에 취약한 것은 아닙니다. RHEL 계열은 보안 수정을 백포트하기 때문입니다. 다만 그 안심 논리는 벤더가 아직 패치를 내주는 라인에서만 성립합니다. el7 같은 EOL 라인, EUS 마이너 스트림 고정, changelog 누락까지 판정을 뒤집는 조건과 rpm BUILDTIME으로 확정하는 방법을 정리합니다.
August 25, 2026 · 7 min read
Playwright로 로그인 페이지에 접근하면 Request Blocked가 반환되는데 같은 URL을 curl로 부르면 200이 오는 상황을 다룹니다. 도메인 단위로 범위가 잡힌 브라우저 지문 탐지의 동작 방식, user-agent 위장과 navigator.webdriver 패치가 통하지 않는 이유, 우회 대신 자동화를 접는 판단까지 정리합니다.
August 19, 2026 · 6 min read
패키지 이름을 바꾸면서 버전 범위를 그대로 뒀다. 포크는 이름만 새로 시작하고 버전은 이어받는다. npm은 ETARGET으로 죽고 빌드는 실패했지만 프로덕션 도메인은 이전 배포를 계속 가리켰다. 사이트가 200인 것과 배포가 성공한 것은 다른 일이다.
August 13, 2026 · 14 min read
은퇴 안전인출률 4% 룰의 원 출처인 Bengen 1994와 Trinity Study 1998을 직접 확인하고, 수익률 순서 위험을 Python 시뮬레이션으로, 미국 데이터 편향을 17개국, 38개국 국제 비교로 정량화한다. 한국에서 무엇을 기준으로 삼아야 하는지 국민연금 차감 후 부족액 계산까지 정리한다.