블로그
웹 유틸리티·스크립트 레시피·utilrepo에서 만드는 도구에 관한 메모.
- 개발자
CSV를 JSON으로: 따옴표, 타입, 인코딩의 함정
CSV는 직접 파싱하기 전까지는 사소해 보입니다. 따옴표 규칙, 모든 값이 문자열이라는 문제, 필드 안의 줄바꿈, 그리고 깔끔해 보이던 스프레드시트를 깨진 JSON으로 바꿔 버리는 인코딩 문제를 다룹니다.
- 계산기
일본의 실수령액(手取り) 계산법: 액면에서 실수령까지
일본에서 명시된 급여와 실제 통장에 들어오는 돈 사이에서 무엇이 공제되는지(건강보험·연금·고용보험·소득세·주민세), 그리고 왜 첫해와 둘째 해의 주민세 차이가 발생하는지 설명합니다.
- 시간
일본 연호 날짜: 레이와·헤이세이·쇼와를 서력 연도로 변환하기
일본의 연호(元号) 달력이 작동하는 방식, 변환이 고정 오프셋이 아닌 이유, 전환 연도의 경계 사례, 그리고 연호 날짜가 여전히 공식 문서에 등장하는 곳을 설명합니다.
- 계산기
한국 연차 규칙: 유급휴가는 어떻게 쌓이는가
근로기준법에 따른 연차유급휴가의 작동 방식. 입사 첫해의 월별 발생, 1년 이후 15일 기준, 장기근속 가산, 그리고 근로자와 사용자 모두가 걸려 넘어지는 지점들을 다룹니다.
- 텍스트
한국어 로마자 표기: 국어의 로마자 표기법(RR) vs 매큔-라이샤워(MR)
같은 한국어 이름이 서로 다른 두 가지 철자로 나타나는 이유, 공식 표기법인 국어의 로마자 표기법(RR)과 더 오래된 매큔-라이샤워(MR)의 차이, 그리고 언제 어느 것을 써야 하는지 정리합니다.
- 보안
RSA 키 쌍 설명: 공개키, 개인키, 그리고 각각이 하는 일
RSA 키의 공개키와 개인키가 실제로 하는 일, 암호화와 서명의 차이, 키 크기가 중요한 이유, 그리고 언제 대신 EdDSA를 선택해야 하는지를 다룹니다.
- 시간
시간대, UTC 오프셋, 그리고 UTC를 저장해야 하는 이유
UTC 오프셋과 시간대의 차이, 일광 절약 시간이 오프셋을 신뢰할 수 없게 만드는 이유, 그리고 대부분의 날짜 버그를 막는 규칙. UTC를 저장하고 경계에서 변환합니다.
- 개발자
UUID v4 vs v7: ID에 어떤 버전을 써야 하나
랜덤 v4 UUID와 시간순 정렬되는 v7 UUID는 서로 다른 문제를 해결합니다. 왜 v7이 대체로 더 나은 기본 키인지, v4가 여전히 적절한 경우는 언제인지, 버전 비트가 실제로 무엇을 뜻하는지 설명합니다.
- 이미지
QR코드 안에는 무엇이 있는가: 구조, 용량, 오류 정정
QR코드가 데이터를 저장하는 방식, 파인더 패턴과 조용한 영역의 역할, 오류 정정 수준이 인코딩 가능한 양을 바꾸는 이유, 그리고 코드를 생성하기 전에 알아둘 만한 실질적 한계를 설명합니다.
- 개발자
YAML 함정: 노르웨이 문제와 그 밖의 조용한 덫
YAML의 편리함은 암묵적 타입 추론에서 나오며, 바로 그 지점에서 문제가 생깁니다. 국가 코드가 false로 바뀌고, 버전 번호가 자릿수를 잃고, 시간이 정수가 됩니다. 이런 함정과 피하는 방법을 정리합니다.
- 개발자
퍼센트 인코딩: 예약 문자와 이중 인코딩 버그
URL 퍼센트 인코딩이 어떻게 작동하는지, 왜 공백이 경로에서는 %20이고 폼 본문에서는 +인지, encodeURIComponent vs encodeURI, 그리고 이중 인코딩 버그가 어떻게 %2520을 만드는지 정리합니다.
- 보안
HMAC으로 웹훅 서명 검증하기
웹훅 엔드포인트에 HMAC 인증이 왜 필요한지, 표준 제공자 서명 패턴, 원시 본문·상수 시간 함정, 그리고 HMAC이 보호하지 않는 것을 정리합니다.
- 개발자
JSON Schema로 API 페이로드 검증하기
JSON Schema가 손으로 쓴 페이로드 검증을 선언적 계약으로 어떻게 대체하는지, 중요한 키워드들, 그리고 사람들을 무는 format 함정을 정리합니다.
- 개발자
Unix 타임스탬프, 에폭, 그리고 2038년 문제
Unix 타임스탬프가 실제로 무엇인지, 모두를 무는 초 vs 밀리초 버그, 그리고 부호 있는 32비트 시간이 왜 2038년 1월 19일 03:14:07 UTC에 오버플로하는지 정리합니다.
- 개발자
해싱, 암호화, 인코딩: 사람들이 혼동하는 세 가지
인코딩, 암호화, 해싱은 서로 다른 문제를 풉니다. 이것을 섞어 쓰는 것이 비밀번호가 새고 토큰이 위조되는 방식입니다. 그 정확한 구분을 정리합니다.
- 개발자
파국적 백트래킹과 그 밖의 정규식 함정
백트래킹 정규식 엔진이 악의적 입력에서 어떻게 폭발하는지, 중첩 수량자가 왜 ReDoS를 일으키는지, 그리고 이를 고치는 앵커·아토믹 그룹·선형 엔진을 정리합니다.
- 개발자
cron 표현식의 함정: 필드, 범위, 그리고 Vixie vs POSIX
cron 필드와 특수 문자, 사람들을 무는 일(날짜) vs 요일 OR 함정, 타임존·DST 위험, 그리고 초 필드 이식성 함정을 정리합니다.
- 개발자
CIDR 표기 읽는 법: 서브넷, 마스크, 호스트 수
CIDR 표기를 읽는 법을 정리합니다. /n의 의미, 프리픽스를 넷마스크로 변환하기, 사용 가능한 호스트 수 계산, 네트워크·브로드캐스트 주소 찾기, 그리고 /31과 /32 예외까지 다룹니다.
- 개발자
Base64는 암호화가 아닙니다: 실제로 하는 일
Base64는 바이너리를 텍스트로 옮기는 전송용 인코딩이지 보안 수단이 아닙니다. 작동 방식과 쓰이는 곳, 그리고 이를 기밀성으로 착각하는 것이 왜 실제 사고로 이어지는지 정리합니다.
- 개발자
JSON vs YAML: 언제 무엇을 쓸지, 그리고 각각의 함정
JSON과 YAML은 같은 데이터를 모델링하지만, 실패 양상이 날카롭게 다릅니다. YAML의 타입 강제 변환과 공백 함정 대 JSON의 주석 부재와 장황함을 정리합니다.
- 개발자
AWS Cost Explorer CSV 읽기: 필드별 가이드
AWS Cost Explorer CSV 내보내기의 각 열이 실제로 무엇을 뜻하는지, 처음 읽는 사람을 당황시키는 스키마 함정, 그리고 보통 원하는 답을 얻기 위해 파일을 어떻게 나눠 볼지 정리합니다.
- 개발자
일본 기업의 AWS 비용 관리에서 흔한 7가지 실수
품의(稟議), 연도 예산, 태그 통제, 환율 리스크 등 일본 엔터프라이즈에 특유한 AWS 비용 관리의 함정과 그 대처법을 정리합니다.
- 개발자
JWT 서명 알고리즘 비교: HS256, RS256, ES256, EdDSA
2026년에 중요한 네 가지 JWT 서명 알고리즘의 트레이드오프, 각각이 키 배포에 어떤 의미인지, 그리고 실제 시스템에 여전히 나타나는 알고리즘 혼동 공격을 정리합니다.
- 개발자
AWS 청구서가 갑자기 치솟는 이유 — 흔한 7가지 원인
예상치 못한 AWS 비용 증가가 띠는 일곱 가지 형태, 각각이 Cost Explorer에서 어떻게 보이는지, 그리고 재발하기 전에 추적해 내는 방법을 정리합니다.
- 달력
영업일 vs 달력일: 공휴일을 포함한 마감 계산
영업일을 올바르게 세고 더하는 법, 즉 O(1) 평일 공식, 공휴일 달력 문제, 그리고 순진한 코드를 깨뜨리는 포함/제외 끝점과 시간대 가장자리 사례를 정리합니다.
- 계산기
한국 실수령액은 어떻게 계산되나: 4대 보험과 소득세
한국의 세전 급여 제안이 어떻게 실수령액이 되는지, 즉 네 가지 국민 보험, 근로자·사용자 분담, 원천징수 세금, 그리고 연말정산을 정리합니다.
- 텍스트
URL 슬러그화: 유니코드, 발음구별부호, 충돌
제목을 URL 안전 슬러그로 바꾸는 법, 즉 소문자화-정규화-음역 파이프라인, 발음구별부호와 비라틴 스크립트가 왜 그것을 깨뜨리는지, 그리고 충돌을 어떻게 다루는지 정리합니다.
- 디자인
색 대비와 WCAG: 접근성 검사 통과하기
WCAG 색 대비비가 어떻게 계산되는지, 텍스트와 UI의 AA·AAA 임계값, 감사가 가장 자주 표시하는 실패, 그리고 WCAG 2 수학이 부족한 지점을 정리합니다.
- 이미지
EXIF 메타데이터: 사진이 드러내는 것과 제거하는 법
EXIF 메타데이터가 사진에 무엇을 심는지 — 장치, 타임스탬프, GPS 좌표 — 어디서 살아남고 어디서 벗겨지는지, 그리고 이미지를 망치지 않고 안전하게 제거하는 법을 정리합니다.
- 개발자
curl 명령을 읽고 코드로 옮기기
curl 명령을 필드별로 정확히 읽고 fetch나 파이썬 requests로 옮기는 법, 그리고 대부분의 번역이 걸려 넘어지는 암묵적 POST 함정을 정리합니다.
- 보안
TOTP 인증 앱 코드는 실제로 어떻게 작동하는가
TOTP(RFC 6238)가 공유 비밀과 현재 시각을 어떻게 여섯 자리 코드로 바꾸는지, 왜 양쪽이 일치하는지, 그리고 무엇을 막고 무엇을 막지 못하는지 정리합니다.
- 보안
비밀번호 엔트로피 설명: 무엇이 실제로 비밀번호를 강하게 만드는가
비밀번호 엔트로피를 비트로 어떻게 재는지, 왜 무작위 길이가 복잡도 규칙을 이기는지, 그리고 키·토큰·패스프레이즈에 엔트로피 기준을 어디에 둘지 정리합니다.