개발일지알림이 한 채널에 섞이던 문제, 등급 라우터로 나눈 기록자동화 스크립트 알림이 한 채널에 섞여 오던 문제를, 상태 없는 포맷터 하나로 등급별 채널에 나눠 보낸 1인 개발 빌드로그예요.2026년 10월 17일·6분 읽기
개발일지launchd로 돌린 업로더가 이미지 0장을 올린 이유예약 실행된 wrangler가 설정 파일을 못 찾아 이미지 없이 글이 나간 사고를 작업 디렉터리 고정으로 고친 1인 개발 빌드로그예요.2026년 10월 16일·5분 읽기
개발일지launchd로 돌린 자동 게시가 이미지 0장만 올린 이유launchd 작업은 작업 디렉터리가 /에서 시작해요. 그래서 wrangler가 설정을 못 찾고 이미지 업로드가 조용히 비었던 과정과 고친 방법을 정리했어요.2026년 10월 13일·6분 읽기
개발일지UI 문구 통일, 상태당 용어 하나: e2e 테스트까지 같이 고친 이유플랜비 회비 화면 문구를 상태당 용어 하나로 통일하면서 e2e 스펙과 DESIGN.md까지 한 묶음으로 고친 과정과 1인 개발 교훈을 정리했어요.2026년 10월 10일·6분 읽기
개발일지Python 날짜 미세초 파싱과 무한 재시도 디버깅 기록날짜 문자열의 미세초 형식 차이로 재시도가 멈추지 않을 때 확인한 Python 테스트와 수정 흐름을 기록합니다.2026년 10월 5일·4분 읽기
개발일지자동 게시 전 본문 재검사, 5개 파일로 연결한 기록게시 직전 본문을 다시 확인하는 흐름을 만들며, 자동화 경계와 책임 분리를 정리한 1인 개발 빌드로그입니다.2026년 10월 4일·5분 읽기
개발일지자동 게시 전 본문 재검사, 1인 개발자가 잡은 경계자동 게시 흐름에 본문 재검사 단계를 더하며, 1인 개발자가 입력과 게시 사이의 경계를 정리한 기록입니다.2026년 10월 3일·5분 읽기
개발일지Python 3.9 마이크로초 파싱 오류를 고친 알림 큐 기록알림 큐에서 시간 문자열 파싱이 어긋났을 때, 재시도 흐름과 테스트를 함께 점검한 1인 개발 빌드로그예요.2026년 10월 2일·4분 읽기
개발일지알림 재시도 루프를 추적하며 고친 1인 개발 기록시간 문자열 파싱 문제로 멈춘 알림 소비기를 추적하며 재시도 조건과 테스트를 함께 정리한 기록입니다.2026년 10월 1일·4분 읽기
개발일지자동 게시 전 본문 재검사 게이트를 만든 빌드로그자동 게시 흐름에 본문 재검사 단계를 추가하며, 배선과 검증 항목을 분리한 1인 개발 빌드로그예요.2026년 9월 30일·5분 읽기
개발일지n8n 운영 점검을 UI 밖으로 꺼낸 빌드로그n8n 상태를 화면에 의존하지 않고 점검·드레인하는 스크립트를 추가하며 정리한 1인 개발의 운영 기준입니다.2026년 9월 29일·5분 읽기
개발일지n8n 수집기를 소스별로 분리한 빌드 로그n8n 벤치마크 수집기를 소스별 독립 실행과 fail-closed 흐름으로 다시 정리한 1인 개발 빌드 기록입니다.2026년 9월 27일·5분 읽기
개발일지마이그레이션이 안 먹힌 이유, 셸에 DB URL이 없었다대화형 셸에 DB URL이 없어 마이그레이션이 미적용으로 끝나던 문제를, 적용 스크립트를 세 번 고치며 잡은 1인 개발 빌드로그예요.2026년 9월 26일·6분 읽기
개발일지launchd 잡이 조용히 죽는 이유, /usr/bin/python3와 Xcode 라이선스맥 launchd 잡이 로그 없이 죽어 있다면 /usr/bin/python3가 Xcode 라이선스 게이트에 막힌 걸 의심해 보세요. plist에 DEVELOPER_DIR을 고정한 빌드로그.2026년 9월 25일·5분 읽기
개발일지DB URL이 없어 미적용으로 끝난 마이그레이션, 커밋 3번의 기록대화형 셸에 DB 접속 주소가 없어 미적용으로 끝나던 마이그레이션을, 적용 스크립트 파일 하나를 세 번 고치며 잡은 1인 개발 빌드로그예요.2026년 9월 24일·5분 읽기
개발일지launchd 잡이 조용히 죽어 있던 이유, Xcode 라이선스와 python3macOS launchd 잡 5개가 코드 변경 없이 멈춘 원인은 Xcode 라이선스 게이트에 막힌 /usr/bin/python3였어요. DEVELOPER_DIR로 고친 과정을 적어요.2026년 9월 23일·5분 읽기
개발일지환경변수가 있는데 비어 보인다? 마이그레이션 적용 스크립트 하룻밤 6커밋 빌드로그대화형 셸에 DB URL이 없어 마이그레이션이 미적용으로 끝난 날, 적용 스크립트를 만들고 고치고 읽기 전용 검증까지 붙인 6커밋 과정을 남겨요.2026년 9월 22일·6분 읽기
개발일지launchd 잡이 조용히 죽어 있었어요 — Xcode 라이선스 게이트맥에서 스케줄 잡 5개가 아무 소리 없이 멈춰 있던 원인이 Xcode 라이선스 동의 게이트였던 이야기와, 잡마다 개발자 도구 경로를 고정해 막은 과정입니다.2026년 9월 21일·7분 읽기
개발일지승인 우회를 막으려다 배운 것: 증거가 있으면 못 빠져나간다관리자 승인 우회를 막는 과정에서 검증 순서를 헤더 전으로 옮기고 전송 이력 전체를 보게 만든 1인 개발 빌드로그입니다.2026년 9월 20일·6분 읽기
개발일지감시 스크립트가 과거 에러 한 줄로 영구 DOWN 되던 문제로그 기반 헬스체크에서 에러 패턴만 보다가 복구를 인식 못 하는 버그를 만났습니다. success 패턴을 함께 보는 방식으로 고친 과정을 정리했어요.2026년 9월 19일·7분 읽기
개발일지감시 스크립트가 영구 DOWN에 빠진 이유로그 한 줄의 error만 보고 상태를 판정하던 감시 로직이 과거 실패에 발목 잡힌 과정과, success 패턴을 추가해 풀어낸 기록입니다.2026년 9월 18일·7분 읽기
개발일지감시 스크립트가 옛날 에러 한 줄로 영구 DOWN 되던 문제로그에서 error 문자열만 찾던 헬스체크가 과거 기록 때문에 계속 실패로 뜨던 걸 success 패턴 추가로 고친 기록이에요.2026년 9월 17일·6분 읽기
개발일지감시 스크립트가 과거 에러 한 줄로 영구 DOWN이 된 이유로그를 뒤에서부터 읽는 헬스체크가 오래된 에러 한 줄에 걸려 계속 DOWN을 띄웠고, success 패턴을 함께 보게 고쳐서 해결한 기록이에요.2026년 9월 15일·5분 읽기
개발일지dry-run이 하트비트 마커를 건드리면 감시가 거짓말을 해요미리보기 실행이 deadman 마커를 갱신해 버리면 죽은 파이프라인도 살아 있는 것처럼 보입니다. 커밋 두 건으로 정리한 과정을 적었어요.2026년 9월 14일·6분 읽기
개발일지에이전트 브리프 파서 빌드로그: unknown 레인을 먼저 판 이유매일 쌓이는 에이전트 브리프를 DB로 옮기는 파서를 만들며, 분류 실패를 버리지 않고 unknown 레인으로 격리한 1인 개발 빌드로그예요.2026년 9월 13일·5분 읽기
개발일지AI 브리프 파서, 모르는 줄은 버리지 않고 격리했어요에이전트가 쓴 마케팅 브리프를 DB에 적재하는 파서를 하루 9커밋으로 만들며 unknown 레인을 2계층으로 둔 이유와 fix 4건을 정리했어요.2026년 9월 12일·5분 읽기
개발일지dry-run이 데드맨 마커를 건드리면 생기는 가짜 초록불1인 개발 배치 파이프라인에서 dry-run 모드가 데드맨 마커까지 갱신해 감시기를 속이던 문제를 찾고 고친 빌드로그예요.2026년 9월 11일·6분 읽기
개발일지n8n 자격증명 토큰 회전 자동화, 3단계로 나눈 이유SNS 자동화에 쓰는 Meta 토큰을 n8n 자격증명에 한 번에 덮어쓰다 막힌 지점과, staged→PATCH→commit 회전 저널로 다시 만든 빌드로그예요.2026년 9월 10일·5분 읽기
개발일지dry-run이 실행 흔적을 남기면 안 되는 이유미리보기 실행이 데드맨 마커를 갱신해버리면 감시 장치가 조용히 눈을 감습니다. 이번 주 커밋으로 정리한 dry-run 격리 규칙을 정리했어요.2026년 9월 8일·6분 읽기
개발일지launchd 스크립트가 node를 못 찾을 때, fnm default로 PATH 고정하기launchd로 도는 셸 스크립트가 node를 못 찾는 이유와, fnm default 별칭 경로를 PATH에 한 줄 넣어 5개 스크립트를 고친 과정을 정리했어요.2026년 9월 7일·5분 읽기
개발일지launchd에서 node 못 찾는 문제, fnm default alias로 해결터미널에선 되는데 launchd·cron에선 node를 못 찾는 이유와, fnm default alias로 PATH를 고정해 무인 스크립트 5개를 고친 과정을 정리했어요.2026년 9월 6일·5분 읽기
개발일지Next.js 보안 패치를 3개 저장소에 같은 날 적용한 기록인증 없이 원격 코드가 실행되는 취약점 수정이 포함된 Next.js 16.3.3을 플랜비·플랜씨·플랜엘 세 저장소에 적용한 과정과 확인 습관을 정리했어요.2026년 9월 5일·5분 읽기
개발일지Next.js 보안 패치, 저장소 3개에 적용하며 정리한 절차1인 개발자가 Next.js 보안 업데이트를 저장소 3곳에 반복 적용한 과정과 4단계 절차를 빌드로그로 정리했어요.2026년 9월 4일·4분 읽기
개발일지Next.js 보안 패치 나온 날, 서비스 3개 업그레이드한 기록인증 없이 원격 코드가 실행되는 취약점 패치 소식에 Next.js를 16.3.3으로 올린 과정이에요. 1인 개발자가 저장소 3곳을 같은 날 업그레이드하며 확인한 것들을 정리했어요.2026년 9월 3일·4분 읽기
개발일지Next.js 보안 패치, 저장소 3개에 하루 만에 적용한 기록Next.js 보안 업데이트가 나온 날, 플랜비·플랜씨·플랜엘 세 저장소에 같은 패치를 적용하며 정리한 1인 개발자의 유지보수 절차예요.2026년 9월 2일·4분 읽기
개발일지Next.js 보안 패치, 저장소 3개에 새벽에 적용한 기록Next.js 16.3.3 보안 패치를 1인 개발 서비스 저장소 3개에 적용하며 정리한 의존성 업그레이드 절차와 확인 포인트를 기록했어요.2026년 9월 1일·4분 읽기
개발일지Next.js 보안 패치, 저장소 3개를 하루에 업그레이드한 기록Next.js의 인증 없는 원격 코드 실행 취약점 수정 버전 16.3.3을 서비스 저장소 3개에 같은 날 적용한 1인 개발 빌드로그예요.2026년 8월 31일·4분 읽기
개발일지Next.js 보안 패치, 저장소 3곳에 같은 날 적용한 기록Next.js 원격 코드 실행 취약점 패치를 서비스 3곳에 같은 날 적용한 과정과, 미리 정비해 둔 CI 게이트가 어떻게 도움이 됐는지 정리했어요.2026년 8월 30일·5분 읽기
개발일지CI 파이프라인 재사용과 롤백에서 만난 grep 함정세 프로젝트 CI를 재사용 품질 게이트로 묶고, 롤백에서 grep이 UUID를 두 개 뱉는 버그를 고친 1인 개발 기록이에요.2026년 8월 28일·4분 읽기
개발일지CI 파이프라인 손보기: 재사용 게이트와 grep 한 줄의 함정세 프로젝트 CI를 재사용 워크플로로 묶고 롤백·알림·커버리지 게이트를 붙이며 겪은 시행착오를 빌드로그로 정리했어요.2026년 8월 27일·4분 읽기
개발일지플랜씨 계산기 3곳에 플래너 연결을 넓힌 기록플랜씨(plan-c)에서 연봉, 대출, 목표 계산기 3곳을 플래너 흐름으로 잇기까지 제가 정리한 구현 기준과 확인 포인트를 적었습니다.2026년 8월 26일·5분 읽기
개발일지CI 롤백이 엉뚱한 배포 ID를 집은 이유 (grep과 UUID 두 개)배포 실패 시 자동 롤백을 붙이다 grep이 한 줄에서 UUID 두 개를 집는 버그를 만났어요. 사람용 CLI 출력을 파싱할 때의 함정과 수정 과정을 정리했어요.2026년 8월 25일·5분 읽기
개발일지롤백 스크립트의 grep 함정, 한 줄에 UUID가 두 개 잡힐 때배포 롤백을 자동화하다 이전 배포 ID를 뽑는 grep이 한 줄에서 UUID 두 개를 돌려주는 버그를 만났어요. 원인과 수정 과정을 정리했어요.2026년 8월 24일·4분 읽기
개발일지흩어진 분석 이벤트, 정의 파일 하나로 잠근 하루5개 프로젝트에 흩어진 분석 이벤트를 정의 파일 SSOT와 타입 유니온, 런타임 allowlist로 잠근 1인 개발 빌드로그입니다.2026년 8월 23일·5분 읽기
개발일지AI 개발일지의 거짓 정보, git 사실 시트로 막은 방법AI가 쓴 개발일지 초안에 섞이는 지어낸 수치를 git 이력 파생 사실 시트와 결정론 검사로 막은 1인 개발 빌드로그예요.2026년 8월 21일·5분 읽기
개발일지자동 발행 확인, HTTP 200만 믿으면 안 되는 이유블로그 자동 발행 파이프라인의 확인 로직을 글별 URL 200 응답과 본문 렌더 검사 두 단계로 바꾼 과정을 정리했어요.2026년 8월 16일·4분 읽기
개발일지블로그 자동 발행 검증, 성공 로그 대신 URL로 확인하기블로그 자동 발행의 마지막 확인을 글별 URL 200 응답과 본문 렌더 검사로 교체한 1인 개발 기록이에요.2026년 8월 15일·5분 읽기
개발일지git worktree로 AI 에이전트 병렬 작업 격리하기AI 에이전트를 병렬로 돌리다 리뷰어가 낡은 커밋을 보고 통과시키는 사고를 겪고, git worktree와 SHA 대조로 막아낸 1인 개발 기록이에요.2026년 8월 14일·4분 읽기
개발일지Sentry에 배포 릴리스가 안 잡힐 때, Railway 커밋 SHA 직접 주입하기Railway 배포에서 Sentry 릴리스 탭이 계속 비어 있던 원인과, RAILWAY_GIT_COMMIT_SHA를 release로 직접 주입해 해결한 과정을 정리했어요.2026년 8월 13일·4분 읽기
개발일지대화형에선 붙던 MCP가 크론에서만 죽은 이유대화형 세션에선 잘 붙던 MCP 서버가 크론에서만 연결 실패하던 문제를 환경변수 세션 스코프로 풀어낸 빌드로그예요.2026년 8월 12일·5분 읽기
개발일지pnpm minimumReleaseAge 604800의 함정 — 단위는 초가 아니라 분이었어요공급망 방어로 pnpm minimumReleaseAge를 604800으로 박았는데, 단위가 초가 아니라 분이라 실제로는 420일을 기다리는 설정이었어요. 7일은 10080이 맞았습니다.2026년 8월 11일·4분 읽기
개발일지헤드리스 codex exec가 훅을 건너뛰는 false-green 막기헤드리스 codex exec가 대화형 훅을 조용히 건너뛰어 생기는 false-green을, 게이트를 실행 경로에 배선해 막은 1인 개발 기록이에요.2026년 8월 10일·4분 읽기
개발일지DB 없이 URL에 상태를 담아 계산 결과를 공유하기플랜씨(plan-c) 계산기 결과를 링크 하나로 공유하려고 서버 DB 대신 URL에 상태를 담기로 한 과정과 트레이드오프를 정리했어요.2026년 8월 9일·4분 읽기
개발일지한글 입력 중 onChange가 두 번 터질 때 — IME 조합 이벤트 다루기한글로 폼을 채우면 onChange가 여러 번 터지고 Enter가 두 번 실행되는 이유와, isComposing으로 잡는 법을 빌드로그로 정리했어요.2026년 8월 8일·4분 읽기
개발일지이미지 미리보기가 메모리를 먹는 이유 — createObjectURL 정리하기이미지 업로드 미리보기를 만들다 메모리가 계속 늘던 문제를, createObjectURL을 revoke하지 않아 생긴 일과 useEffect 정리 함수로 잡은 과정으로 풀었어요.2026년 8월 6일·4분 읽기
개발일지튜토리얼 없이 첫 화면에서 바로 쓰게 만든 과정온보딩 화면을 지우고 첫 화면에 핵심 기능 하나만 남긴 이유와, 1인 개발자로서 그 과정에서 겪은 선택을 정리했어요.2026년 8월 5일·4분 읽기
개발일지빌더는 리뷰어가 될 수 없다 — 커밋 게이트를 훅으로 강제한 이유혼자 개발하면서 구현과 리뷰를 같은 손이 하면 안 된다는 걸 깨닫고, 커밋 게이트를 훅으로 강제한 과정을 정리했어요.2026년 8월 3일·5분 읽기
개발일지삭제 확인 UX 만들기: 되돌릴 수 없는 작업을 안전하게 하는 3가지맥 정리 도구를 직접 만들며 적용한, 되돌릴 수 없는 삭제를 안전하게 감싸는 세 가지 장치를 빌드로그로 정리했어요.2026년 8월 2일·4분 읽기
개발일지다국어 앱스토어 스크린샷, 텍스트가 박스를 넘칠 때 Canvas로 맞춘 기록언어마다 카피 길이가 달라 앱스토어 스크린샷 텍스트가 박스를 넘칠 때, Canvas measureText와 이진탐색으로 폰트를 자동으로 맞춘 과정을 정리했어요.2026년 8월 1일·5분 읽기
개발일지Upstash Redis 무료 DB 1개, prefix로 서비스 여러 개 굴리기Upstash Redis 무료 DB 1개를 key prefix로 나눠 여러 서비스에서 쓰는 네임스페이스 설계와 FLUSHDB·라이브러리 키·한도 공유 함정을 정리했어요.2026년 7월 31일·5분 읽기
개발일지Supabase 무료 프로젝트 4개 잠들지 않게 하기 — Workers Cron 설계Supabase 무료 플랜은 7일 비활동이면 프로젝트가 잠들어요. 프로젝트 4개를 Workers Cron 하나로 깨워두는 keepalive 설계와 시행착오를 정리했어요.2026년 7월 30일·5분 읽기
개발일지스크린샷 실시간 미리보기, Canvas 합성 성능 잡기미리보기가 버벅일 때 Canvas를 매번 통째로 다시 그리지 않고 비트맵 캐싱·rAF·devicePixelRatio 보정으로 성능을 잡은 1인 개발 빌드로그예요.2026년 7월 29일·5분 읽기
개발일지긴 세션이 코드 품질을 갉아먹어요: 컨텍스트 예산 규율긴 코딩 세션에서 코드 품질이 조용히 나빠지는 이유와, 컨텍스트 예산으로 세션을 끊어 관리한 1인 개발 경험을 정리했어요.2026년 7월 28일·4분 읽기
개발일지status=success인데 글이 안 올라갔다: 발행 파이프라인 false-green 잡기자동 발행 실행 기록은 전부 성공인데 블로그엔 새 글이 없던 문제를, 표면을 직접 확인하는 점검으로 잡은 1인 개발 빌드로그예요.2026년 7월 27일·5분 읽기
개발일지SNS 자동화에서 자동승인을 뺀 이유SNS 자동화에서 자동승인을 걷어내고 게시 직전 검토 한 단계를 남긴 이유를, 1인 개발 빌드로그로 정리했어요.2026년 7월 26일·4분 읽기
개발일지n8n 자동 업그레이드 사고 회고, credential이 사라진 날n8n 컨테이너 자동 업그레이드 후 credential과 데이터가 사라진 사고를 복구한 기록. 암호화 키 고정, 버전 고정, 백업 3가지로 재발을 막았어요.2026년 7월 24일·5분 읽기
개발일지launchd, n8n, Codex 예약 작업을 나눠 쓰는 기준반복 작업을 전부 한 도구에 맡기면 운영이 흐려져요. 로컬 Mac mini에서는 launchd, n8n, Codex/Cowork 예약, GitHub Actions를 성격별로 나눠 쓰는 편이 안정적이었어요.2026년 7월 7일·6분 읽기
개발일지로컬 AI 회사가 멈췄을 때 먼저 확인한 것들24시간 돌아가는 로컬 AI 회사가 멈춘 것처럼 보일 때, 저는 모델 한도보다 먼저 스케줄러, 실행 모드, 로그, 실제 컨테이너 상태를 확인해요. 오늘 점검한 순서를 기록해 둡니다.2026년 7월 7일·6분 읽기
개발일지1인 개발자가 금융계산기에 꼭 넣는 기능 7가지와 수익화 구조무료 금융계산기 플랜씨(plan-c)를 혼자 만들며 정리한 필수 기능 7가지와 애드센스·제품 유입으로 이어지는 수익화 구조를 공유해요.2026년 7월 6일·5분 읽기
개발일지Supabase로 로그인 있는 MVP 만드는 방법: Next.js 예제Next.js와 Supabase Auth로 로그인 되는 MVP를 최소 코드로 만드는 흐름을, 혼자 개발하며 정리한 방식으로 담았어요.2026년 7월 2일·5분 읽기
개발일지가계부 자동화, Supabase·Notion 말고 쓸 수 있는 저장 구조 비교개인 가계부를 자동으로 정리할 때 데이터를 어디에 쌓을지, 구글 시트·Notion·Supabase·로컬 파일을 상황별로 비교해봤어요.2026년 7월 1일·4분 읽기
개발일지FastAPI와 Supabase로 로그인 MVP 만들기: 1인개발 실전 구조혼자 MVP를 만들 때 가장 막히는 인증과 DB 조합, FastAPI와 Supabase로 어떻게 나눠 붙이는지 실전 구조로 정리했어요.2026년 6월 30일·5분 읽기
개발일지블로그 홈을 참고 사이트처럼: 썸네일 중심 레이아웃과 생성형 커버색만 바꿨더니 '구성이 안 바뀌었다'는 피드백을 받았어요. 참고 사이트를 실제로 뜯어보고, 모든 글에 자동으로 붙는 생성형 커버부터 다시 만든 과정을 기록해요.2026년 6월 29일·7분 읽기
개발일지데이터 밀도 높은 리서치 콘솔을 만들며 배운 4가지근거를 인용으로 묶어 환각을 막고, 판단을 결정론적 규칙으로 바꾸고, 실행 전에 시뮬레이션을 기본값으로 두는 — 데이터가 빽빽한 대시보드를 만들며 정리한 엔지니어링 패턴이에요.2026년 6월 29일·6분 읽기
개발일지트위터 API가 막혔을 때 Bluesky로 우회한 기록 — 1인 개발자의 n8n 마케팅 자동화트위터 syndication API가 429로 막혀서 Bluesky AT Protocol 공개 API로 우회해, 인디 빌더 5명 158개 글의 engagement를 실측 수집한 기록이에요. n8n 마케팅 자동화와 Claude·Codex 분담 워크플로우도 함께 정리했어요.2026년 6월 27일·9분 읽기
개발일지Next.js 15 static export + Cloudflare Pages 배포 설정기Next.js 15 App Router에서 output:'export'로 정적 빌드를 만들고 Cloudflare Pages에 배포하는 과정을 정리했어요. 함정이 몇 가지 있었어요.2026년 6월 25일·3분 읽기
개발일지블로그 자동 발행을 launchd로 무인화한 기록 — 게이트·빌드·푸시를 하나로자체 블로그는 git push만으로 Cloudflare Pages에 배포돼요. 그 점을 이용해 거짓정보 게이트 → 빌드 → 커밋 → 푸시를 매일 자동으로 돌리는 발행 파이프라인을 launchd로 묶은 과정을 정리했어요.2026년 6월 24일·4분 읽기
개발일지라이프케어로그 기술 블로그를 시작하며 — Next.js 16 정적 블로그 빌드 기록1인 개발 회사의 기술 블로그를 Next.js 16 + MDX 정적 사이트로 만들고 Cloudflare Pages에 올린 과정을 정리했어요. 무인 자동발행을 염두에 두고 fail-closed 발행 게이트를 넣은 이야기예요.2026년 6월 21일·3분 읽기