최신 글
14페이지 중 9페이지-
백엔드/API설계
JavaScript 타임존 함정 피하기: UTC vs Local 날짜 처리
1월 31일을 선택했는데 1월 30일로 저장되는 버그를 발견했습니다. JavaScript Date 생성자의 타임존 해석 방식을 이해하고, 정오(12:00) 패턴으로 해결한 방법을 공유합니다.
-
백엔드/API설계
Next.js API에 Rate Limiting 구현하기 (메모리 기반)
API 보안을 위해 Rate Limiting이 필요했습니다. Redis 없이 메모리 기반으로 구현하고 HTTP 429 표준을 준수한 방법을 공유합니다.
-
도구/GitHub
GitHub Issues 완전 가이드: Epic, Sub-Issues, Labels로 프로젝트를 체계적으로 관리하는 법
GitHub Issues를 단순한 버그 트래커가 아닌, 프로젝트 전체 로드맵을 관리하는 도구로 활용하는 실전 가이드. 2025년 GA된 Sub-Issues를 포함해 Epic, Labels, Pin, Projects 통합까지 다룹니다.
-
백엔드/Prisma
Prisma 일괄 업데이트에서 동시성 이슈 해결하기 ($transaction 활용)
두 사용자가 동시에 일괄 상태 변경을 실행했을 때 데이터가 꼬이는 버그를 발견했습니다. Prisma $transaction으로 TOCTOU 취약점을 해결한 방법을 공유합니다.
-
백엔드/Prisma
Prisma Extension으로 민감 데이터 암호화 자동화하기
개인정보보호법 준수를 위해 DB 민감 데이터를 암호화해야 했습니다. Prisma Extension으로 투명한 암호화를 구현하고, Blind Index로 검색 문제까지 해결한 경험을 공유합니다.
-
프론트엔드/React
Vitest와 MSW로 React Hook 테스트하기 (실전 가이드)
Jest 테스트가 느려서 Vitest로 마이그레이션했습니다. MSW와 함께 Custom Hook을 테스트하는 실전 가이드를 공유합니다.
-
개발환경/Python
pyenv rehash 락 파일 에러 해결: "couldn't acquire lock" 60초 멈춤 문제
pyenv rehash가 "couldn't acquire lock" 에러와 함께 60초 동안 멈추는 문제의 원인은 스테일 락 파일입니다. 소스 코드의 noclobber 메커니즘을 분석하고, 해결 방법과 --no-rehash를 활용한 예방법을 정리했습니다.
-
프론트엔드/크롬확장
크롬 확장 공유 모듈 설계: 중복 코드 470줄 제거기
popup, options, manager, onboarding 4개 페이지에 복사된 동일한 코드를 발견했습니다. shared/ 폴더에 기능별 모듈로 추출하여 총 215줄을 줄이고, DOM 메서드로 XSS를 방지하는 아이콘 팩토리까지 구현한 과정을 공유합니다.
-
프론트엔드/크롬확장
크롬 확장 프로젝트 구조 정리하기: popup, options 폴더 분리
크롬 확장 루트 디렉토리에 뒤섞인 파일들을 기능별 폴더로 정리했습니다. manifest.json 경로 업데이트, git mv로 히스토리 보존, 트러블슈팅 팁까지 리팩토링 전 과정을 공유합니다.
-
AI/Claude Code
Astro Starlight + Vercel: 코드 없이 만드는 프로젝트 문서 사이트 실전 가이드
오픈소스 프로젝트 문서 사이트를 Astro Starlight로 구축하고 Vercel에 배포한 실전 가이드. 코드라고 할 만한 것이 거의 없이, 마크다운과 설정 파일 3개만으로 전문적인 다국어 문서 사이트를 완성한 경험을 공유합니다.