개발일지알림이 한 채널에 섞이던 문제, 등급 라우터로 나눈 기록자동화 스크립트 알림이 한 채널에 섞여 오던 문제를, 상태 없는 포맷터 하나로 등급별 채널에 나눠 보낸 1인 개발 빌드로그예요.2026년 10월 17일·6분 읽기
개발일지launchd로 돌린 업로더가 이미지 0장을 올린 이유예약 실행된 wrangler가 설정 파일을 못 찾아 이미지 없이 글이 나간 사고를 작업 디렉터리 고정으로 고친 1인 개발 빌드로그예요.2026년 10월 16일·5분 읽기
브랜딩·마케팅확인 버튼 위치와 아이콘 방향, 취향 아닌 브랜드 규칙으로 고정하기확인 버튼은 오른쪽, 새로고침은 시계방향. 플랫폼 관습을 1인 브랜드 규칙 문서로 적어 두고 앱·스크린샷·SNS 카드까지 같은 모양을 유지하는 방법이에요.2026년 10월 14일·6분 읽기
제품소개분류 결과에 unknown 레인을 꼭 두는 이유, 조용한 오분류 막기자동 분류가 틀리면 조용히 넘어가는 게 가장 무섭습니다. 플랜비 회비 처리 예시로 unknown 레인을 강제하는 이유와 구현 방법을 정리했어요.2026년 10월 14일·6분 읽기
프론트엔드법률정보 화면에 출처와 기준일을 남기는 프론트엔드 원칙법령·판례 검색 화면에서 출처와 기준일이 빠지지 않게 만드는 컴포넌트 타입 설계, 확인 중 상태, 날짜 표시 함정을 정리했어요.2026년 10월 14일·6분 읽기
백엔드릴리스 노트에 '수정됨' 대신 재현 조건과 확인 방법을 쓰는 이유백엔드 릴리스 노트는 '버그 수정됨' 한 줄로 끝나기 쉬워요. 재현 조건·기대 응답·확인 명령을 적으면 회귀 테스트와 롤백 판단까지 한 번에 풀려요.2026년 10월 14일·5분 읽기
개발일지launchd로 돌린 자동 게시가 이미지 0장만 올린 이유launchd 작업은 작업 디렉터리가 /에서 시작해요. 그래서 wrangler가 설정을 못 찾고 이미지 업로드가 조용히 비었던 과정과 고친 방법을 정리했어요.2026년 10월 13일·6분 읽기
브랜딩·마케팅1인 브랜드가 계산 로직을 테스트 함수로 분리한 이유복리·회비 계산을 순수 함수로 떼어 테스트하니 제품 화면과 블로그·SNS에 올리는 숫자가 같은 함수에서 나와요. 1인 브랜드의 콘텐츠 운영 관점 기록.2026년 10월 13일·4분 읽기
제품소개AI 마음기록 앱에 'AI입니다' 고지, 어디에 어떻게 넣었나AI와 대화하며 마음을 기록하는 플랜티에 'AI입니다' 고지를 넣은 자리 3곳과 문구 규칙을 정리했어요. EU AI Act 적용 시점과 함께 봐요.2026년 10월 13일·5분 읽기
프론트엔드AI가 '실행됨'과 '검증됨'을 섞지 못하게 만드는 상태 UIAI 에이전트 작업 기록에서 실행과 검증을 분리한 상태 모델과 배지 컴포넌트를 1인 개발 관점으로 구현한 과정이에요.2026년 10월 13일·5분 읽기
백엔드카드 한쪽 액센트 바를 테스트로 차단하기: no-one-sided-accent디자인 금지 규칙을 문서 대신 테스트로 강제하는 법. 한 변 액센트 바를 정규식 3종으로 잡아 CI에서 fail-closed로 막는 과정을 정리했어요.2026년 10월 13일·5분 읽기
브랜딩·마케팅필터 상태를 URL searchParams로 옮기면 링크가 콘텐츠가 돼요다중 필터를 useState 대신 URL 쿼리에 두면 SNS·뉴스레터 링크가 그대로 랜딩 화면이 돼요. Next.js 구현 3단계와 1인 브랜드 운영 팁을 정리했어요.2026년 10월 12일·5분 읽기
제품소개금융계산기에서 3억을 입력받는 법, 단위 토글 대신 입력 에코대출이자 계산기에서 만원과 원이 섞여 3억이 3조가 되는 입력 혼동을, 단위 토글 없이 한글 금액 에코 한 줄로 풀어 본 과정이에요.2026년 10월 12일·6분 읽기
프론트엔드제10조가 제2조 앞에 오는 정렬 버그, 조문 번호 natural sort로 고치기법령 조문 목록에서 제10조가 제2조 앞에 오는 문자열 정렬 버그를 Intl.Collator numeric 옵션과 '조의2' 파싱으로 해결한 프론트엔드 구현기예요.2026년 10월 12일·5분 읽기
백엔드같은 경기 두 번 안 만드는 dedupe 키: 날짜·장소·상대팀동호회 경기 일정 등록 API에서 날짜·장소·상대팀을 묶은 유니크 키와 ON CONFLICT로 중복 등록을 DB 층에서 막는 방법을 정리했어요.2026년 10월 12일·5분 읽기
AI 정보플랜비에서 경기 참가와 권한, 스탯을 분리한 이유플랜비의 경기 참가, 운영 권한, 개인 스탯을 분리해 AI 자동화 흐름을 더 명확하게 설계한 방법을 정리합니다.2026년 10월 12일·4분 읽기
브랜딩·마케팅AI 에이전트 승인 버튼에 예상 토큰 비용을 붙인 이유1인 브랜드가 콘텐츠 자동화 에이전트의 승인 화면에 예상 토큰 비용과 하루 상한을 표시한 뒤 운영 습관과 브랜드 메시지가 어떻게 달라졌는지 정리했어요.2026년 10월 11일·5분 읽기
제품소개금융계산기 입력값, 막을까 경고할까 고칠까: 거부·경고·자동보정 3단 분류플랜씨 금융계산기를 만들며 정리한 입력값 처리 기준이에요. 거부·경고·자동보정 세 단계로 나누는 판단 순서를 소개해요.2026년 10월 11일·5분 읽기
프론트엔드계산기 결과 화면, 저장 버튼 대신 다음 결정 버튼 만들기금융계산기 결과를 저장만 하고 끝내지 않고, 비교 카드와 URL 복원으로 사용자가 다음 결정을 내리게 돕는 프론트엔드 구현 방법을 정리했어요.2026년 10월 11일·5분 읽기
개발일지UI 문구 통일, 상태당 용어 하나: e2e 테스트까지 같이 고친 이유플랜비 회비 화면 문구를 상태당 용어 하나로 통일하면서 e2e 스펙과 DESIGN.md까지 한 묶음으로 고친 과정과 1인 개발 교훈을 정리했어요.2026년 10월 10일·6분 읽기
브랜딩·마케팅LocaleShots 설계기: 스크린샷 현지화를 비동기 잡으로 만든 이유1인 브랜드가 앱스토어 스크린샷 현지화를 비동기 잡으로 돌리는 이유를 상태 전이와 재시도 설계 중심으로 정리했어요.2026년 10월 10일·6분 읽기
제품소개농구 동호회 엑셀 가져오기, 부분 저장보다 전체 검증이 먼저인 이유동호회 멤버 명단을 엑셀로 옮길 때 절반만 저장되는 상황이 왜 더 위험한지, 전체 검증 후 한 번에 저장하는 설계를 플랜비 관점에서 정리했어요.2026년 10월 10일·5분 읽기
프론트엔드하루 2번 자동 발행 블로그에서 열어둔 탭이 ChunkLoadError를 내는 이유자동 발행 블로그에서 오래 열어둔 탭이 ChunkLoadError로 깨지는 원인과 error.tsx 한 파일로 1회 새로고침 가드를 넣는 방법을 정리했어요.2026년 10월 10일·5분 읽기
백엔드앱스토어 스크린샷 현지화, 네모(□) 글자를 렌더 전에 잡는 글리프 검사 게이트폰트에 없는 글자가 네모(□)로 찍히는 사고를 렌더 전에 cmap 조회로 막고, 잡 상태와 HTTP 422 응답으로 사람에게 드러내는 백엔드 게이트 설계예요.2026년 10월 10일·6분 읽기
AI 정보마음기록 앱 오프라인 저장 큐 설계, AI 분석은 뒤로 미루기네트워크가 끊겨도 마음기록이 사라지지 않게 로컬 우선 큐를 두고, AI 분석은 동기화 뒤 별도 워크플로우로 돌리는 설계를 정리했어요.2026년 10월 10일·6분 읽기
브랜딩·마케팅new Date('2026-05-14')가 하루 밀리는 이유와 해결법date-only 문자열을 new Date()에 넣으면 시간대에 따라 날짜가 하루 밀립니다. 만기일 계산기에서 이 버그를 잡는 법과 1인 브랜드가 숫자 신뢰를 지키는 방법을 정리했어요.2026년 10월 9일·5분 읽기
제품소개금융계산기 공유 링크, 계산 신뢰도를 지키는 4가지 설계금융계산기 결과를 링크로 공유할 때 숫자가 바뀌지 않도록 입력값 보존, 공식 버전, 기준일 표기를 설계하는 방법을 실제 계산 예시로 정리했어요.2026년 10월 9일·5분 읽기
개발일지Python 날짜 미세초 파싱과 무한 재시도 디버깅 기록날짜 문자열의 미세초 형식 차이로 재시도가 멈추지 않을 때 확인한 Python 테스트와 수정 흐름을 기록합니다.2026년 10월 5일·4분 읽기
개발일지자동 게시 전 본문 재검사, 5개 파일로 연결한 기록게시 직전 본문을 다시 확인하는 흐름을 만들며, 자동화 경계와 책임 분리를 정리한 1인 개발 빌드로그입니다.2026년 10월 4일·5분 읽기
개발일지자동 게시 전 본문 재검사, 1인 개발자가 잡은 경계자동 게시 흐름에 본문 재검사 단계를 더하며, 1인 개발자가 입력과 게시 사이의 경계를 정리한 기록입니다.2026년 10월 3일·5분 읽기
제품소개1인 회사 콕핏, 운영의 빈칸을 찾는 법대시보드 숫자를 늘리기보다, 1인 개발 브랜드의 운영에서 빠진 확인·결정·실행을 찾는 콕핏 설계법을 정리해요.2026년 10월 3일·4분 읽기
개발일지Python 3.9 마이크로초 파싱 오류를 고친 알림 큐 기록알림 큐에서 시간 문자열 파싱이 어긋났을 때, 재시도 흐름과 테스트를 함께 점검한 1인 개발 빌드로그예요.2026년 10월 2일·4분 읽기
브랜딩·마케팅완벽한 출시보다 일관된 개선이 만드는 1인 개발 신뢰1인 개발 브랜드가 개발블로그로 개선 과정과 판단 기준을 꾸준히 공유해 신뢰를 쌓는 방법을 정리합니다.2026년 10월 2일·4분 읽기
제품소개플랜비 카드 한쪽 두꺼운 띠를 테스트로 막은 이유플랜비 운영 화면에서 카드 한쪽의 두꺼운 띠를 금지한 이유와 이를 테스트 조건으로 관리하는 방법을 소개합니다.2026년 10월 2일·4분 읽기
프론트엔드AI 에이전트 성공 응답을 믿지 않는 프론트엔드 설계AI 에이전트의 성공 문자열 대신 멱등키와 화면 상태로 쓰기 요청을 안전하게 다루는 프론트엔드 구현 기록입니다.2026년 10월 2일·5분 읽기
백엔드Workers 응답 후 로그가 사라질 때 ctx.waitUntil 점검법Workers 엣지 게이트웨이에서 응답 뒤 로그 전송이 누락되는 floating promise 문제와 ctx.waitUntil 적용 기준을 정리해요.2026년 10월 2일·4분 읽기
AI 정보출석과 출전을 분리하는 농구 운영툴 데이터 모델농구 운영툴에서 출석, 출전 가능, 실제 로테이션을 분리하고 AI 자동화에 활용하는 데이터 모델을 정리합니다.2026년 10월 2일·5분 읽기
개발일지알림 재시도 루프를 추적하며 고친 1인 개발 기록시간 문자열 파싱 문제로 멈춘 알림 소비기를 추적하며 재시도 조건과 테스트를 함께 정리한 기록입니다.2026년 10월 1일·4분 읽기
제품소개플랜비에서 운영과 출전 기록을 분리한 이유플랜비가 운영 권한, 세션 참석, 실제 출전, 개인 기록을 나눠 보는 이유와 동호회 운영에 쓰이는 방식을 정리합니다.2026년 10월 1일·4분 읽기
프론트엔드계산기 결과 URL 공유, 입력값 검증 설계법계산기 결과를 URL로 공유할 때 입력값을 안전하게 복원하고 화면에서 안내하는 프론트엔드 구현 원칙을 정리합니다.2026년 10월 1일·4분 읽기
백엔드법률정보 출처 변경과 응답 정합성 설계법령·판례 데이터의 출처가 갱신될 때, 문서 개정 이력과 검색 응답을 일관되게 관리하는 백엔드 설계를 정리해요.2026년 10월 1일·4분 읽기
개발일지자동 게시 전 본문 재검사 게이트를 만든 빌드로그자동 게시 흐름에 본문 재검사 단계를 추가하며, 배선과 검증 항목을 분리한 1인 개발 빌드로그예요.2026년 9월 30일·5분 읽기
브랜딩·마케팅카드 한쪽 액센트 바를 정적 검사로 막는 방법카드 UI의 한쪽 액센트 바를 정적 검사로 감지해 1인 브랜드의 화면 일관성을 지키는 방법을 정리합니다.2026년 9월 30일·4분 읽기
제품소개계산 결과를 다시 확인하는 재현성 원칙비공개 투자도구를 만들며 정리한 입력값, 계산식, 결과 확인의 재현성 원칙을 제품 사용 관점에서 설명해요.2026년 9월 30일·4분 읽기
프론트엔드shadcn v4 Base UI에서 asChild를 render로 바꾸는 법shadcn Base UI 전환 뒤 사라진 asChild를 render prop으로 옮겨 버튼과 링크를 합성하는 화면 구현 방법입니다.2026년 9월 30일·4분 읽기
백엔드oklch 시맨틱 토큰으로 상태 배지 API 설계하기클린맥 스캔 결과처럼 상태가 많은 화면을 위해 DB 상태값, API 응답, oklch 시맨틱 토큰을 분리하는 방법을 정리해요.2026년 9월 30일·4분 읽기
AI 정보Inter 대신 Pretendard와 Geist를 고른 이유AI 자동화로 여러 제품의 문구와 화면을 만들 때 Pretendard와 Geist 한 쌍으로 글자 체계를 유지하는 방법을 정리해요.2026년 9월 30일·4분 읽기
개발일지n8n 운영 점검을 UI 밖으로 꺼낸 빌드로그n8n 상태를 화면에 의존하지 않고 점검·드레인하는 스크립트를 추가하며 정리한 1인 개발의 운영 기준입니다.2026년 9월 29일·5분 읽기
브랜딩·마케팅Next.js 대시보드 숫자 카드 로딩 UI 설계Next.js 대시보드의 숫자 카드가 로딩과 갱신 중에도 흔들리지 않도록 설계하는 방법을 정리해요.2026년 9월 29일·5분 읽기
제품소개LocaleShots로 앱스토어 현지화 데이터를 정리하는 법LocaleShots에서 앱스토어 스크린샷 현지화 결과를 비교 가능한 데이터로 정리하는 방법을 소개해요.2026년 9월 29일·5분 읽기
프론트엔드농구 동호회 운영 화면, 모바일 정보 밀도 설계법출석·라인업·경기 기록을 모바일 한 화면에서 빠르게 확인하도록 컴포넌트 우선순위와 터치 흐름을 설계하는 방법입니다.2026년 9월 29일·5분 읽기
백엔드MCP 토큰은 있는데 스킬이 실패한 env 이름 문제MCP 서버와 스킬이 같은 외부 서비스를 써도 환경 변수 이름이 다르면 인증이 조용히 실패하는 이유와 점검 순서를 정리해요.2026년 9월 29일·5분 읽기
AI 정보Railway 배포에서 Sentry release를 git SHA로 고정하는 법Railway의 git SHA 환경 변수를 Sentry release로 명시해 n8n 자동화 오류를 배포 코드와 연결하는 방법을 정리해요.2026년 9월 29일·4분 읽기
개발일지n8n 수집기를 소스별로 분리한 빌드 로그n8n 벤치마크 수집기를 소스별 독립 실행과 fail-closed 흐름으로 다시 정리한 1인 개발 빌드 기록입니다.2026년 9월 27일·5분 읽기
브랜딩·마케팅플랜씨 금융계산기의 의사결정 경로 설계법금융계산기 결과 화면보다 사용자가 다음 행동을 고를 수 있는 의사결정 경로를 먼저 설계한 과정을 정리합니다.2026년 9월 27일·4분 읽기
프론트엔드폼 제출 중복 클릭, disabled만으로 막기 어려운 이유폼 제출 버튼의 disabled 처리만으로는 막기 어려운 중복 요청을 화면 상태와 UX 관점에서 정리해요.2026년 9월 27일·4분 읽기
백엔드Supabase Free 프로젝트 7일 비활성, Workers Cron으로 관리하기Supabase Free 프로젝트의 비활성 일시정지 조건을 이해하고 Workers Cron과 인증된 DB 요청으로 점검 흐름을 구성합니다.2026년 9월 27일·5분 읽기
개발일지마이그레이션이 안 먹힌 이유, 셸에 DB URL이 없었다대화형 셸에 DB URL이 없어 마이그레이션이 미적용으로 끝나던 문제를, 적용 스크립트를 세 번 고치며 잡은 1인 개발 빌드로그예요.2026년 9월 26일·6분 읽기
브랜딩·마케팅LLM 분류기에 unknown 레인이 없으면 오분류가 조용히 통과해요콘텐츠 자동 분류에 '모르겠다'는 선택지를 안 주면 엉뚱한 글이 브랜드 이름을 달고 나가요. 1인 브랜드 운영에서 unknown 레인을 만든 이유와 방법을 정리했어요.2026년 9월 26일·5분 읽기
제품소개맥 용량이 Finder와 다르게 보일 때: GB와 GiB 표시 기준 맞추기클린맥 같은 정리 도구의 용량이 Finder 숫자와 다른 이유는 GB(1000)와 GiB(1024) 차이예요. 표시 기준을 통일하는 방법을 정리했어요.2026년 9월 26일·5분 읽기
프론트엔드마음기록 앱 AI 대화에 'AI입니다' 고지를 어디에 넣을까EU AI Act 50조 고지 의무를 마음기록 앱 채팅 화면에 구현할 때, 온보딩·상단 라벨·말풍선 배지 3곳과 React 컴포넌트 1개로 푸는 방법을 정리했어요.2026년 9월 26일·6분 읽기
개발일지launchd 잡이 조용히 죽는 이유, /usr/bin/python3와 Xcode 라이선스맥 launchd 잡이 로그 없이 죽어 있다면 /usr/bin/python3가 Xcode 라이선스 게이트에 막힌 걸 의심해 보세요. plist에 DEVELOPER_DIR을 고정한 빌드로그.2026년 9월 25일·5분 읽기
브랜딩·마케팅에러 메시지 3단 공식으로 제품마다 달랐던 톤 통일하기제품 4개의 에러 문구가 제각각이던 걸 상황→원인→해결 3단과 해요체로 맞춘 과정, 1인 브랜드가 에러 화면을 브랜드 접점으로 쓰는 법을 정리했어요.2026년 9월 25일·5분 읽기
제품소개플랜비 경기 일정이 하루 밀린 이유, 날짜에 시간대가 없었어요날짜만 저장한 경기 일정이 KST에서 하루 앞뒤로 어긋나는 ±1일 버그의 원인과, JS Date 대신 문자열로 분리해 고친 3단계를 정리했어요.2026년 9월 25일·6분 읽기
프론트엔드벡터 검색은 권한을 모른다: RAG 필터를 서버에 둔 프론트엔드 계약RAG 검색 화면에서 user_id를 클라이언트가 보내면 안 되는 이유와, 프론트엔드가 query만 보내도록 요청 계약을 바꾼 과정을 적었어요.2026년 9월 25일·6분 읽기
백엔드FastAPI 응답 camelCase 통일로 프론트 변환 레이어 없애기Pydantic alias_generator로 FastAPI 응답을 camelCase로 통일하면 프론트의 snake→camel 변환 코드가 사라져요. 설정 2줄과 주의점 3가지를 정리했어요.2026년 9월 25일·4분 읽기
개발일지DB URL이 없어 미적용으로 끝난 마이그레이션, 커밋 3번의 기록대화형 셸에 DB 접속 주소가 없어 미적용으로 끝나던 마이그레이션을, 적용 스크립트 파일 하나를 세 번 고치며 잡은 1인 개발 빌드로그예요.2026년 9월 24일·5분 읽기
브랜딩·마케팅마음기록 앱 카피, 게시 전 넛지 vs 다크패턴 3질문 체크감정을 다루는 앱은 카피 한 줄이 넛지와 다크패턴 사이를 오가요. 1인 브랜드가 게시 전 돌리는 3질문 체크 방법을 정리했어요.2026년 9월 24일·5분 읽기
제품소개블로그 카테고리 6개로 고정했더니 글이 늘었어요라이프케어로그 블로그 카테고리를 6개로 묶은 뒤 글 쓰는 속도와 브랜드 톤이 어떻게 달라졌는지, 플랜 시리즈 화면 설계와 함께 정리했어요.2026년 9월 24일·5분 읽기
프론트엔드세션 중간에 CLAUDE.md를 고쳤더니 캐시가 사라진 이유, 화면으로 잡기프롬프트 캐시 무효화는 로그를 눈으로 훑어서는 안 보여요. cache_read 비율을 턴별로 그리는 작은 React 패널로 원인을 찾은 과정을 정리했어요.2026년 9월 24일·7분 읽기
백엔드감정 기록 API에서 '아직 안 씀'과 '기록 없음'을 나눈 이유플랜티 감정 기록 API가 null 하나로 뭉개던 두 상태를 날짜 경계·상태 enum·인증 오류로 나눠 돌려주게 된 설계 이유를 정리했어요.2026년 9월 24일·5분 읽기
개발일지launchd 잡이 조용히 죽어 있던 이유, Xcode 라이선스와 python3macOS launchd 잡 5개가 코드 변경 없이 멈춘 원인은 Xcode 라이선스 게이트에 막힌 /usr/bin/python3였어요. DEVELOPER_DIR로 고친 과정을 적어요.2026년 9월 23일·5분 읽기
브랜딩·마케팅매일 갱신되는 codegraph 인덱스가 조회 0회, 규칙 대신 훅으로 살린 기록코드 인덱스가 18일간 조회 0회였던 로그를 보고 규칙 문장 대신 훅으로 바꾼 과정과, 1인 브랜드 콘텐츠 운영에 같은 구조를 적용한 기준을 정리했어요.2026년 9월 23일·5분 읽기
제품소개NL2SQL 보안: LLM이 만든 SQL은 AST 검증 게이트 없이 실행하지 않기LLM이 생성한 SQL은 값이 아니라 문장 전체가 입력이라 파라미터 바인딩으로 못 막아요. AST로 뜯어 SELECT만·허용 테이블·테넌트 필터 3규칙을 검사하는 게이트 만들기.2026년 9월 23일·6분 읽기
프론트엔드제품은 여럿, 로고는 2개만: 1인 개발 브랜드 자산 프론트 구현제품마다 로고를 그리는 대신 워드마크 컴포넌트와 SVG 심볼 하나, 시맨틱 토큰으로 브랜드 자산을 코드에서 파생시킨 프론트엔드 구현 기록이에요.2026년 9월 23일·5분 읽기
백엔드LLM 출력은 shell 문자열 아닌 argv로: execFile 배열과 allowlist에이전트가 만든 값을 exec 문자열에 붙이면 명령 인젠션이 열려요. execFile 배열, verb allowlist, 인자 정규식으로 막는 백엔드 래퍼를 정리했어요.2026년 9월 23일·4분 읽기
개발일지환경변수가 있는데 비어 보인다? 마이그레이션 적용 스크립트 하룻밤 6커밋 빌드로그대화형 셸에 DB URL이 없어 마이그레이션이 미적용으로 끝난 날, 적용 스크립트를 만들고 고치고 읽기 전용 검증까지 붙인 6커밋 과정을 남겨요.2026년 9월 22일·6분 읽기
브랜딩·마케팅브랜드 가이드의 독자는 AI, DESIGN.md를 토큰 YAML 2층으로 바꾼 이유산문으로 쓴 브랜드 가이드를 AI가 매번 다르게 읽길래, DESIGN.md를 시맨틱 토큰 YAML과 사용규칙 2층으로 나눈 과정과 1인 브랜드 운영 기준을 정리했어요.2026년 9월 22일·5분 읽기
제품소개앱스토어 스크린샷 현지화, 끊겨도 이어 돌리는 작업 상태 설계언어×화면 셀 단위로 상태를 쪼개고 입력 해시로 변경분만 다시 만드는, 재실행 가능한 스크린샷 현지화 파이프라인 설계 기록이에요.2026년 9월 22일·6분 읽기
프론트엔드MDX slug 중복, 빌드 깨지기 전에 잡는 30줄 검증 스크립트MDX 프론트매터 slug가 겹치면 빌드가 깨지거나 페이지 하나가 조용히 사라져요. Node 기본 모듈만으로 30줄 안에 빌드 전 중복을 잡는 스크립트를 정리했어요.2026년 9월 22일·7분 읽기
백엔드git status 미추적 14개: 자동 발행이 커밋을 빼먹은 걸 찾은 방법매일 글을 쓰는 자동 발행 파이프라인이 파일만 만들고 커밋은 안 한 채 성공으로 보고했어요. git status로 잡은 원인과 마지막 단계를 검증하는 방법을 정리했어요.2026년 9월 22일·5분 읽기
개발일지launchd 잡이 조용히 죽어 있었어요 — Xcode 라이선스 게이트맥에서 스케줄 잡 5개가 아무 소리 없이 멈춰 있던 원인이 Xcode 라이선스 동의 게이트였던 이야기와, 잡마다 개발자 도구 경로를 고정해 막은 과정입니다.2026년 9월 21일·7분 읽기
브랜딩·마케팅OG 이미지를 제품별로 안 만들고 템플릿 1개로 끝낸 이유1인 브랜드가 제품마다 OG 이미지를 따로 만들면 관리가 무너집니다. 템플릿 하나로 통일했을 때 생기는 브랜드 인지 효과와 운영 이점을 정리했어요.2026년 9월 21일·6분 읽기
제품소개자동 발행이 5편에서 2편으로 줄었을 때 막힌 곳 찾기매일 돌던 블로그 자동 발행 파이프라인의 산출량이 절반 이하로 떨어졌을 때, 로그부터 보지 않고 결과물부터 세어 보는 점검 순서를 정리했어요.2026년 9월 21일·6분 읽기
프론트엔드minimumReleaseAge 7일이 왜 10080일까, 분 단위 설정값을 화면에 보여준 이야기pnpm-workspace.yaml의 minimumReleaseAge는 분 단위라 7일이 10080입니다. 이 숫자를 사람이 읽는 값으로 바꿔주는 입력 컴포넌트를 직접 만들어 봤어요.2026년 9월 21일·6분 읽기
백엔드큰 테이블에 인덱스 추가하다 쓰기를 막은 뒤 배운 3원칙운영 중인 Postgres 테이블에 인덱스를 그냥 추가하면 쓰기가 멈춥니다. CONCURRENTLY, NOT VALID, 배치 backfill 세 가지 원칙을 실습으로 정리했어요.2026년 9월 21일·7분 읽기
AI 정보서브에이전트 모델을 '알아서' 고르게 했더니 전부 최고가로 돌았다fan-out 프롬프트에 모델 지정을 빼면 서브에이전트가 전부 상위 모델을 잡습니다. 단계별 모델 명시로 비용을 줄인 과정을 정리했어요.2026년 9월 21일·6분 읽기
개발일지승인 우회를 막으려다 배운 것: 증거가 있으면 못 빠져나간다관리자 승인 우회를 막는 과정에서 검증 순서를 헤더 전으로 옮기고 전송 이력 전체를 보게 만든 1인 개발 빌드로그입니다.2026년 9월 20일·6분 읽기
브랜딩·마케팅제품 이름을 '플랜OO'으로 통일한 대가 — 3개월 회고1인 브랜드가 제품 이름을 한 패밀리로 묶었을 때 검색·기억·확장성에서 실제로 무엇을 얻고 무엇을 잃는지 3개월 운영 회고로 정리했어요.2026년 9월 20일·7분 읽기
제품소개대시보드 숫자가 흔들려 보일 때, tabular-nums 한 줄관리 화면 숫자 컬럼이 미세하게 떨려 보이는 이유와 CSS 한 줄로 정렬을 잡는 방법을 플랜 시리즈 작업 맥락에서 정리했어요.2026년 9월 20일·6분 읽기
프론트엔드CI는 초록불인데 화면은 깨져 있었어요 — 프론트 훅이 조용히 건너뛰는 문제로컬에선 잡히던 프론트엔드 검사가 자동 실행 환경에서만 통과하는 false-green 현상을 추적하고, 화면 단에서 증거를 남기는 구조로 바꾼 기록이에요.2026년 9월 20일·6분 읽기
백엔드이벤트 필드 하나 바꿨더니 소비자가 조용히 죽었어요발행 로그는 전부 성공인데 소비자가 멈춰 있던 이유와, payload 스키마를 바꾸기 전에 확인해야 할 인벤토리 절차를 정리했어요.2026년 9월 20일·7분 읽기
개발일지감시 스크립트가 과거 에러 한 줄로 영구 DOWN 되던 문제로그 기반 헬스체크에서 에러 패턴만 보다가 복구를 인식 못 하는 버그를 만났습니다. success 패턴을 함께 보는 방식으로 고친 과정을 정리했어요.2026년 9월 19일·7분 읽기
브랜딩·마케팅13px, 19px이 브랜드를 망친다 — 8px 토큰 하나로 여백 통일하기제품이 여러 개인 1인 브랜드에서 여백이 제각각이면 같은 브랜드로 안 보여요. 8px 간격 토큰 하나로 정리한 과정을 공유해요.2026년 9월 19일·6분 읽기
프론트엔드pnpm minimumReleaseAge 7은 7분입니다 — 단위와 설정 위치 함정프론트엔드 의존성 추가 전 숙성 대기를 걸었는데 단위가 분이라 7분만 기다렸고, 글로벌 설정은 조용히 무시됐던 이야기예요.2026년 9월 19일·5분 읽기
백엔드분류기에 unknown 레인 없으면 오분류가 조용히 통과한다API 요청 타입 분류에서 매칭 실패를 else로 흘려보내면 장애가 로그 없이 사라져요. unknown 레인을 명시적으로 두는 백엔드 설계를 정리했어요.2026년 9월 19일·6분 읽기
AI 정보재시도 횟수 대신 실패 원인으로 라우팅하는 자율루프 설계AI 자율루프가 3회 실패하면 무조건 멈추는 방식은 왜 위험할까요. 실패를 원인별로 분류해 라우팅하는 재시도 설계를 정리했어요.2026년 9월 19일·8분 읽기
개발일지감시 스크립트가 영구 DOWN에 빠진 이유로그 한 줄의 error만 보고 상태를 판정하던 감시 로직이 과거 실패에 발목 잡힌 과정과, success 패턴을 추가해 풀어낸 기록입니다.2026년 9월 18일·7분 읽기
브랜딩·마케팅맥 정리 전에 '되돌리는 길'부터 만든 순서1인 브랜드가 맥 청소 도구를 쓰기 전에 복구 경로를 먼저 세운 과정과, 그 기준을 콘텐츠 자산 관리에 그대로 옮긴 이야기.2026년 9월 18일·6분 읽기
제품소개검색 0건 화면을 둘로 나눈 이유 — 플랜엘 이야기법령 검색에서 결과가 없을 때 '해당 법령 없음'과 '아직 수집 안 됨'을 다른 화면으로 분리한 과정과 판단 기준을 정리했어요.2026년 9월 18일·6분 읽기
프론트엔드모바일 100vh가 주소창에 잘리는 문제, svh/dvh로 끝낸 기록모바일 브라우저에서 100vh가 주소창 높이만큼 잘리는 이유와 svh·lvh·dvh 단위로 JS 없이 해결한 과정을 정리했어요.2026년 9월 18일·8분 읽기
백엔드감정 태그를 5개로 줄이니 기록 완료율이 달라졌어요선택지가 많을수록 기록이 끊깁니다. 감정 태그를 5개로 고정하면서 바뀐 스키마 설계와 API 응답 구조를 정리했어요.2026년 9월 18일·6분 읽기
AI 정보서브에이전트 자기리뷰는 왜 편향될까 — 평가자를 루프 밖에 두기구현한 에이전트가 자기 결과를 리뷰하면 거의 통과시킵니다. 평가자를 실행 루프 밖에 분리하는 구조와 실제 적용 방법을 정리했어요.2026년 9월 18일·8분 읽기
개발일지감시 스크립트가 옛날 에러 한 줄로 영구 DOWN 되던 문제로그에서 error 문자열만 찾던 헬스체크가 과거 기록 때문에 계속 실패로 뜨던 걸 success 패턴 추가로 고친 기록이에요.2026년 9월 17일·6분 읽기
브랜딩·마케팅자동화는 조용히 멈춘다 — 1인 브랜드 콘텐츠 파이프라인 안전장치헤드리스로 돌린 자동화가 검증 단계를 건너뛰는 문제를 1인 브랜드 콘텐츠 운영 관점에서 풀어봤어요. 게이트를 실행 스크립트 안에 넣는 방법까지.2026년 9월 17일·6분 읽기
제품소개첫 실행에서 전체 스캔 대신 폴더 하나만 스캔하게 만든 이유정리 도구 첫 화면에서 디스크 전체를 훑는 대신 폴더 하나만 고르게 했더니, 사용자가 결과를 이해하고 실제로 삭제까지 가는 비율이 달라졌습니다.2026년 9월 17일·8분 읽기
AI 정보모바일에서 표를 카드로 안 바꾸고 읽히게 만드는 법좁은 화면에서 표가 깨질 때 카드로 뒤집는 대신, AI에게 열 우선순위를 정하게 하고 규칙으로 고정해 읽기 좋게 만드는 방법을 정리했어요.2026년 9월 17일·6분 읽기
브랜딩·마케팅다중 제품 운영을 위한 프론트엔드 디자인 토큰 최소 단위1인 브랜드가 여러 제품의 화면 일관성과 콘텐츠 자산을 함께 관리하는 디자인 토큰의 최소 구조를 정리해요.2026년 9월 16일·4분 읽기
제품소개앱스토어 스크린샷 현지화와 텍스트 길이 대응앱스토어 스크린샷을 여러 언어로 준비할 때, 달라지는 텍스트 길이를 제품 메시지와 함께 관리하는 방법을 정리합니다.2026년 9월 16일·5분 읽기
프론트엔드프로젝트마다 DB가 따로면 프론트는 뭐가 달라지나서비스별로 DB를 분리하면 프론트엔드 화면에서는 클라이언트 인스턴스와 로딩 상태 설계가 달라집니다. 실제로 겪은 구현 패턴을 정리했어요.2026년 9월 16일·7분 읽기
백엔드1인 회사 콕핏 데이터를 오늘 화면으로 모으는 백엔드 설계여러 서비스의 데이터를 하나의 오늘 화면에 안전하게 모으기 위한 API, DB, 인증 설계를 정리합니다.2026년 9월 16일·5분 읽기
AI 정보LLM SQL 자동화에 AST 검증 게이트를 두는 법LLM이 만든 SQL을 자동 실행할 때 파라미터화만으로 부족한 이유와 AST 검증 게이트 설계 방법을 정리합니다.2026년 9월 16일·4분 읽기
개발일지감시 스크립트가 과거 에러 한 줄로 영구 DOWN이 된 이유로그를 뒤에서부터 읽는 헬스체크가 오래된 에러 한 줄에 걸려 계속 DOWN을 띄웠고, success 패턴을 함께 보게 고쳐서 해결한 기록이에요.2026년 9월 15일·5분 읽기
제품소개input type=number의 배신 — 금융계산기 입력창을 다시 만든 이유플랜씨 금융계산기 입력창을 number 타입에서 inputmode+pattern 조합으로 바꾼 이유와 적용 과정을 정리했습니다.2026년 9월 15일·7분 읽기
개발일지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분 읽기
브랜딩·마케팅AI가 자꾸 그리는 한 변 액센트 바, 테스트 코드로 막은 브랜드 금지선AI가 만든 화면에 매번 붙는 한 변 액센트 바를 프롬프트가 아닌 테스트 코드로 차단해 1인 브랜드의 디자인 일관성을 지킨 방법을 정리했어요.2026년 9월 12일·5분 읽기
제품소개버튼은 '동사+하기', 문장은 해요체, 플랜 시리즈 카피 톤을 맞춘 규칙 3줄제품마다 제각각이던 버튼과 문장 말투를 규칙 3줄로 통일한 과정과, 문서 대신 검사 스크립트로 규칙을 지키게 만든 방법을 정리했어요.2026년 9월 12일·5분 읽기
프론트엔드블롭·일러스트 없이 빈 화면 채우기: 데코 없는 empty state 컴포넌트데코 금지 브랜드에서 그림 없이 빈 목록 화면을 설계하는 법. 상태 3종 분리, 3조각 컴포넌트, 틴트·1px 보더·8px 간격으로 채우는 구현을 정리해요.2026년 9월 12일·5분 읽기
개발일지dry-run이 데드맨 마커를 건드리면 생기는 가짜 초록불1인 개발 배치 파이프라인에서 dry-run 모드가 데드맨 마커까지 갱신해 감시기를 속이던 문제를 찾고 고친 빌드로그예요.2026년 9월 11일·6분 읽기
브랜딩·마케팅생원색 배지 대신 채도 낮춘 oklch 상태색으로 대시보드 톤 잡기빨강·초록 배지가 브랜드 색을 가리는 문제를 oklch 상태색 토큰 4개로 정리하는 방법, 1인 브랜드 스크린샷 운영 관점에서 풀었어요.2026년 9월 11일·6분 읽기
제품소개커밋 게이트 훅 하나로 Claude Code와 Codex 드리프트 막기플랜 시리즈를 Claude Code와 Codex로 함께 개발하며 커밋 게이트 스크립트 하나를 두 런타임 훅에 물려 로직 중복과 드리프트를 없앤 방법이에요.2026년 9월 11일·5분 읽기
프론트엔드MCP 도구 스키마가 컨텍스트를 먹는다면, 화면으로 먼저 재보세요MCP 도구 스키마를 번들 크기처럼 화면에 올려 재고, 스키마 크기와 호출 빈도 2축으로 어떤 도구를 CLI로 내릴지 정하는 프론트엔드식 기준을 정리해요.2026년 9월 11일·5분 읽기
백엔드MCP 서버 env는 스킬 런타임에 안 간다: 3일 조용히 실패한 자동화MCP 설정에 넣은 환경변수가 스킬 프로세스엔 전달되지 않아 3일간 조용히 실패한 사례와, 부팅 검사·로그·실표면 확인으로 막는 방법을 정리해요.2026년 9월 11일·6분 읽기
개발일지n8n 자격증명 토큰 회전 자동화, 3단계로 나눈 이유SNS 자동화에 쓰는 Meta 토큰을 n8n 자격증명에 한 번에 덮어쓰다 막힌 지점과, staged→PATCH→commit 회전 저널로 다시 만든 빌드로그예요.2026년 9월 10일·5분 읽기
브랜딩·마케팅플랜티 마음기록 앱에 감정 그래프를 넣지 않은 이유, 브랜드 관점1인 브랜드가 '일부러 안 넣은 기능'을 브랜드 문장과 콘텐츠로 바꾸는 방법을, 플랜티 감정 그래프 결정을 예로 풀어요.2026년 9월 10일·6분 읽기
제품소개플랜비 출석 체크에 '미정'을 넣고 나서 달라진 것농구 동호회 출석 체크에 참석·불참 말고 '미정'을 추가했더니 출전 로테이션 짜는 방식이 어떻게 바뀌었는지 플랜비 개발 과정으로 정리했어요.2026년 9월 10일·5분 읽기
프론트엔드FastAPI 응답을 camelCase로: Pydantic CamelModel 하나로 Next.js 필드명 통일Pydantic to_camel alias 생성기를 베이스 모델에 한 번 걸어 FastAPI 응답을 camelCase로 바꾸고, Next.js 컴포넌트에서 변환 유틸을 지우는 방법을 정리했어요.2026년 9월 10일·5분 읽기
백엔드pnpm minimumReleaseAge, 글로벌 설정이 안 먹힌 이유와 워크스페이스 이동pnpm minimumReleaseAge를 글로벌 config에 넣었다가 효과가 없어 pnpm-workspace.yaml로 옮긴 과정과, 백엔드 빌드에서 그게 맞는 자리인 이유를 정리했어요.2026년 9월 10일·5분 읽기
AI 정보목표함수를 하나로 합치면 AI 에이전트는 제약을 협상해요품질 점수와 안전 제약을 한 점수로 합치면 에이전트가 제약을 깎아 통과해요. 제약을 별도 게이트로 분리하는 설계와 계산 예시를 정리했어요.2026년 9월 10일·6분 읽기
브랜딩·마케팅같은 주제 5편이 쌓인 뒤에야 슬러그 중복 방지를 넣었어요블로그 자동 발행 파이프라인이 비슷한 글을 반복 생산한 이유와, 1인 브랜드가 콘텐츠 중복을 막는 슬러그·주제 이력 관리 방법을 정리했어요.2026년 9월 9일·6분 읽기
제품소개승인 버튼보다 되돌리기 경로를 먼저 그렸어요에이전트 산출물 승인 카드를 설계할 때 승인 버튼이 아니라 취소 경로부터 그린 이유와, 플랜 시리즈에 적용해 본 3단 구조를 정리했어요.2026년 9월 9일·7분 읽기
프론트엔드탈퇴 화면, 결제 이력은 어떻게 보여줘야 할까결제 이력이 남는 탈퇴 플로우를 프론트에서 어떻게 설계했는지, 화면 구성과 컴포넌트 분리 기준을 정리했어요.2026년 9월 9일·7분 읽기
백엔드AI가 만든 각주는 인용이 아니다 — 추출과 검증을 분리한 백엔드 파이프라인LLM이 뽑은 출처를 그대로 저장하면 없는 논문이 DB에 남습니다. 추출 API와 검증 API를 분리하고 unknown 레인을 두는 백엔드 설계를 정리했어요.2026년 9월 9일·7분 읽기
개발일지dry-run이 실행 흔적을 남기면 안 되는 이유미리보기 실행이 데드맨 마커를 갱신해버리면 감시 장치가 조용히 눈을 감습니다. 이번 주 커밋으로 정리한 dry-run 격리 규칙을 정리했어요.2026년 9월 8일·6분 읽기
브랜딩·마케팅삭제 대신 격리 폴더를 쓰는 1인 브랜드 콘텐츠 관리법지운 글은 되돌릴 수 없지만 격리한 글은 되돌아옵니다. 클린맥의 삭제 되돌리기 흐름을 1인 브랜드 콘텐츠 운영에 옮겨 본 기록이에요.2026년 9월 8일·7분 읽기
제품소개LLM이 뽑고, 코드가 확인한다 — 플랜엘에 적용한 검증 분리법령 검색에 AI를 붙이면서 배운 원칙 하나. 추출은 모델에게, 검증은 코드에게 맡기니 환각이 사용자 화면까지 못 왔어요.2026년 9월 8일·6분 읽기
백엔드한 화면 = 한 API로 바꾸니 모바일 로딩이 정리됐다화면 하나에 API를 여러 번 부르던 구조를 집계 엔드포인트 하나로 합친 과정과, 어디까지 합치고 어디서 멈춰야 하는지 판단 기준을 정리했어요.2026년 9월 8일·7분 읽기
개발일지launchd 스크립트가 node를 못 찾을 때, fnm default로 PATH 고정하기launchd로 도는 셸 스크립트가 node를 못 찾는 이유와, fnm default 별칭 경로를 PATH에 한 줄 넣어 5개 스크립트를 고친 과정을 정리했어요.2026년 9월 7일·5분 읽기
브랜딩·마케팅브랜드 모션 규칙은 3줄이면 된다: ease-out-expo와 reveal 1회 원칙1인 브랜드의 모션 가이드는 길 필요가 없어요. 이징 하나, 등장 1회, 길이 상한. 이 3줄로 랜딩·앱·콘텐츠의 움직임을 통일하는 방법을 정리했어요.2026년 9월 7일·5분 읽기
제품소개계산 결과 아래에 전제 조건을 함께 보여주는 이유, 플랜씨 금융계산기 설계플랜씨 금융계산기가 결과 숫자 아래에 계산 방식·미반영 항목·기준 시점을 함께 보여주는 이유를 대출·복리 예시로 풀어요.2026년 9월 7일·5분 읽기
프론트엔드Supabase Free 7일 잠듦과 무한 스피너, Cron keepaliveSupabase 무료 프로젝트는 7일 비활동이면 멈춰요. Cloudflare Workers Cron으로 깨워 두는 법과, 잠든 서버를 만난 화면이 무한 로딩 대신 보여줄 것을 정리했어요.2026년 9월 7일·6분 읽기
백엔드1인 개발자의 NestJS vs FastAPI 선택 기준, 분기선 3개NestJS와 FastAPI를 같이 굴리는 1인 개발자가 핵심 의존성·타입 계약·동시성 모델 세 질문으로 정한 프레임워크 분기선을 정리했어요.2026년 9월 7일·6분 읽기
개발일지launchd에서 node 못 찾는 문제, fnm default alias로 해결터미널에선 되는데 launchd·cron에선 node를 못 찾는 이유와, fnm default alias로 PATH를 고정해 무인 스크립트 5개를 고친 과정을 정리했어요.2026년 9월 6일·5분 읽기
브랜딩·마케팅에러 메시지도 브랜드예요, 상황·원인·해결 3단 해요체 카피 규칙1인 브랜드가 에러 메시지를 상황·원인·해결 3단 해요체로 통일하면 신뢰가 쌓여요. 직접 적용해 본 카피 규칙과 점검 기준을 정리했어요.2026년 9월 6일·6분 읽기
제품소개법령 조문 옆 시행일 뱃지, 플랜엘이 붙인 이유법령 검색 결과가 오늘 기준으로 유효한 조문인지 바로 알 수 있도록, 플랜엘이 조문 옆에 시행일 뱃지를 붙인 설계 배경을 정리했어요.2026년 9월 6일·5분 읽기
프론트엔드launchd에서만 죽는 프론트 빌드 스크립트, 환경변수 휘발 디버깅기터미널에선 잘 되던 Next.js 빌드·OG 이미지 스크립트가 launchd에선 죽는 이유와, 환경변수 휘발을 잡는 3단계 점검법을 정리했어요.2026년 9월 6일·5분 읽기
백엔드Supabase RLS 두고 서버에서 권한을 한 번 더 검증하는 이유RLS는 마지막 방어선으로 남기고, 분기가 많은 인가 로직은 단위테스트 가능한 서버 코드로 옮기는 백엔드 설계 정리.2026년 9월 6일·6분 읽기
AI 정보컨텍스트 50% 넘긴 AI 세션, /compact 말고 새로 시작하는 이유AI 코딩 세션의 컨텍스트가 절반을 넘으면 산출물 신뢰도가 떨어져요. /compact 대신 상태를 남기고 세션을 재시작하는 기준과 절차를 정리했어요.2026년 9월 6일·5분 읽기
개발일지Next.js 보안 패치를 3개 저장소에 같은 날 적용한 기록인증 없이 원격 코드가 실행되는 취약점 수정이 포함된 Next.js 16.3.3을 플랜비·플랜씨·플랜엘 세 저장소에 적용한 과정과 확인 습관을 정리했어요.2026년 9월 5일·5분 읽기
브랜딩·마케팅다크모드는 색 반전이 아니다 — 멀티프로덕트 브랜드 토큰 설계다크모드를 색 반전으로 만들면 브랜드가 무너져요. 4개 제품을 혼자 운영하며 정리한 시맨틱 토큰 3층 설계로 다크모드에서도 한 브랜드로 보이는 방법을 담았어요.2026년 9월 5일·4분 읽기
제품소개코트 옆에서 쓰는 앱의 입력 설계, 한 손 엄지 존에 다 넣기농구 동호회 매니저 앱 플랜비를 만들며 배운 한 손 입력 설계 이야기예요. 엄지 존 하단 배치, 44pt 터치 영역, 탭 수 줄이기를 정리했어요.2026년 9월 5일·6분 읽기
프론트엔드대시보드 숫자가 덜덜 떨리는 이유, tabular-nums 한 줄로 잡기실시간으로 바뀌는 숫자가 좌우로 미세하게 흔들리는 원인은 비례폭 숫자예요. font-variant-numeric: tabular-nums 한 줄로 잡는 방법을 정리했어요.2026년 9월 5일·5분 읽기
백엔드pnpm minimumReleaseAge 7일 설정, 글로벌 config는 조용히 무시돼요pnpm minimumReleaseAge로 새 패키지 7일 지연을 걸었는데 글로벌 config에서는 조용히 무시됐어요. pnpm-workspace.yaml에 옮기고 검증한 과정을 정리했어요.2026년 9월 5일·5분 읽기
AI 정보MCP 서버 env와 스킬 런타임 env는 다르다 — 3일 조용히 실패한 토큰 하나MCP 설정에 넣은 토큰이 왜 스킬에서는 안 읽힐까요. 에러 로그 없이 3일간 멈춘 자동화의 원인과 env 주입 경계, 재발 방지 체크리스트를 정리했어요.2026년 9월 5일·5분 읽기
개발일지Next.js 보안 패치, 저장소 3개에 적용하며 정리한 절차1인 개발자가 Next.js 보안 업데이트를 저장소 3곳에 반복 적용한 과정과 4단계 절차를 빌드로그로 정리했어요.2026년 9월 4일·4분 읽기
브랜딩·마케팅1인 개발사 홈은 회사 소개일까 제품 진열대일까: 허브 페이지 정보구조 정하기1인 개발 브랜드 홈을 회사 소개와 제품 진열대 중 무엇으로 잡을지, 질문 3개로 정보구조를 정한 과정을 정리했어요.2026년 9월 4일·4분 읽기
제품소개에이전트 승인 화면에서 일괄 승인 버튼을 뺀 이유AI 에이전트 작업 승인 화면에 일괄 승인 버튼을 넣었다가 뺀 과정을 1인 개발 운영 경험으로 정리했어요. 검토 없는 승인을 막는 화면 설계 이야기예요.2026년 9월 4일·5분 읽기
프론트엔드경기 일정이 하루 밀렸다? date-only 문자열과 new Date()의 UTC 함정달력엔 14일인데 화면엔 13일로 뜨는 버그, 원인은 new Date()의 UTC 파싱 규칙이에요. date-only 문자열을 다루는 프론트엔드 해법을 정리했어요.2026년 9월 4일·4분 읽기
백엔드Railway 재배포 때 뜨는 500 에러, SIGTERM 핸들링으로 없애기Railway 재배포 순간에만 발생하는 500 에러의 원인과 SIGTERM 핸들링, graceful shutdown 구현을 Node.js 예제로 정리했어요.2026년 9월 4일·4분 읽기
개발일지Next.js 보안 패치 나온 날, 서비스 3개 업그레이드한 기록인증 없이 원격 코드가 실행되는 취약점 패치 소식에 Next.js를 16.3.3으로 올린 과정이에요. 1인 개발자가 저장소 3곳을 같은 날 업그레이드하며 확인한 것들을 정리했어요.2026년 9월 3일·4분 읽기
브랜딩·마케팅폰트 페어링, 두 벌이면 끝: Pretendard·Geist 타이포 규칙1인 브랜드가 Pretendard와 Geist 두 폰트만으로 제품·블로그·SNS 카드까지 타이포를 통일하는 운영 규칙을 정리했어요.2026년 9월 3일·4분 읽기
제품소개맥 클리너, 용량 순 대신 '지워도 되는 확신 순'으로 정렬한 이유맥 클리너 스캔 결과를 용량 순이 아니라 지워도 되는 확신 순으로 정렬한 이유와, 판단 부담을 줄이는 정렬 기준이 도구를 어떻게 바꾸는지 정리했어요.2026년 9월 3일·5분 읽기
프론트엔드차트가 리사이즈를 안 따라올 때, window.resize 대신 ResizeObserver사이드바를 접어도 차트가 그대로일 때, window.resize 대신 ResizeObserver로 컨테이너 크기를 직접 관찰해 해결하는 방법을 정리했어요.2026년 9월 3일·4분 읽기
백엔드결제 webhook 중복 처리, HMAC 서명검증과 idempotency 키로 막기결제 webhook은 재시도 때문에 같은 이벤트가 두 번 올 수 있어요. HMAC 서명검증과 DB UNIQUE 제약 기반 idempotency 키로 중복 처리를 막는 구현을 정리했어요.2026년 9월 3일·5분 읽기
AI 정보AI 스킬 자동 호출, 언제 켜고 언제 꺼야 할까AI 에이전트 스킬의 user-invoked vs model-invoked 트리거 설계 기준과 description 세금을 줄이는 방법을 정리했어요.2026년 9월 3일·4분 읽기
개발일지Next.js 보안 패치, 저장소 3개에 하루 만에 적용한 기록Next.js 보안 업데이트가 나온 날, 플랜비·플랜씨·플랜엘 세 저장소에 같은 패치를 적용하며 정리한 1인 개발자의 유지보수 절차예요.2026년 9월 2일·4분 읽기
브랜딩·마케팅OG 이미지 자동 생성 — 템플릿 1장으로 브랜드 일관성 지키기글마다 OG 이미지를 손으로 만들면 브랜드 톤이 흔들려요. 템플릿 1장을 canvas 코드로 고정해 공유 카드를 자동 생성하는 방법을 정리했어요.2026년 9월 2일·5분 읽기
제품소개저장 버튼 대신 URL 공유, 금융계산기에 계정을 안 만든 이유1인 개발자가 금융계산기 플랜씨에 로그인과 저장 기능 대신 URL 쿼리 공유를 선택한 이유와 장단점을 정리했어요.2026년 9월 2일·4분 읽기
프론트엔드'미검증' 배지, 프런트 단일 소스로 관리한 이유실시간 리서치 대시보드에서 화면마다 어긋나던 '미검증' 배지를 유틸 1개와 컴포넌트 1개로 모은 과정과 이유를 정리했어요.2026년 9월 2일·5분 읽기
백엔드재배포마다 사라지는 FastAPI BackgroundTasks, 큐 없이 살리는 법Railway 재배포 때마다 FastAPI BackgroundTasks가 증발하는 이유와, Celery 없이 Postgres 테이블 하나로 잡을 지키는 설계를 정리했어요.2026년 9월 2일·5분 읽기
AI 정보자기 코드 자기 리뷰 금지, Claude 구현·Codex 교차리뷰 커밋 게이트 배선기AI가 짠 코드를 같은 AI가 리뷰하면 맹점도 함께 통과합니다. 구현은 Claude, 리뷰는 Codex로 나누고 git 훅으로 커밋 게이트를 배선한 과정을 정리했어요.2026년 9월 2일·5분 읽기
개발일지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분 읽기
브랜딩·마케팅로고 없이 브랜딩하기: 워드마크와 컬러 토큰으로 멀티프로덕트 운영제품 4개를 혼자 만들면서 로고를 그리지 않기로 했어요. 워드마크와 컬러 토큰 3개로 멀티프로덕트 브랜드를 운영하는 방법을 정리했어요.2026년 8월 23일·5분 읽기
제품소개비공개 리서치 도구, 원문과 출력 포맷 분리하는 법혼자 쓰는 리서치 도구에서 내부 원문과 외부 출력 포맷을 분리해야 하는 이유와 3단계 구조를 플랜엘 사례로 정리했어요.2026년 8월 23일·5분 읽기
프론트엔드CJK 캡션 잘림 방지: 캔버스 자동 줄바꿈과 축소 구현기캔버스에는 word-break가 없어요. measureText와 Intl.Segmenter로 CJK 캡션 자동 줄바꿈·폰트 축소를 구현한 과정을 정리했어요.2026년 8월 23일·5분 읽기
백엔드cron이 조용히 멈출 때: launchd 데드맨 스위치로 감지하기잡이 돌다 실패하면 로그가 남지만 아예 안 돌면 로그조차 없어요. launchd 데드맨 스위치로 조용히 멈춘 cron 자동화를 감지하는 방법을 정리했어요.2026년 8월 23일·6분 읽기
제품소개에이전트 상황판에서 완료율보다 단계 이벤트를 먼저 둔 이유에이전트 상황판에서 완료율보다 단계 이벤트를 먼저 보여준 이유를 라이프케어로그 제품 운영 관점에서 풀어봤어요.2026년 8월 22일·4분 읽기
프론트엔드Plan-C localStorage 스키마 검증 이유Plan-C 플래너에서 localStorage를 그대로 믿지 않고 스키마 검증과 버전 업그레이드를 붙인 이유를 프론트엔드 UX 관점에서 정리했어요.2026년 8월 22일·4분 읽기
백엔드무중단 Postgres 마이그레이션 잠금 피하는 법Postgres에서 CREATE INDEX CONCURRENTLY와 NOT VALID를 써서 쓰기 잠금 없이 마이그레이션하는 흐름을 정리했어요.2026년 8월 22일·5분 읽기
AI 정보surface check 뒤 조용한 실패, deadman으로 잡기surface check가 통과해도 멈추는 AI 자동화 루프를 deadman과 semantic success 기준으로 잡는 방법을 정리했어요.2026년 8월 22일·4분 읽기
개발일지AI 개발일지의 거짓 정보, git 사실 시트로 막은 방법AI가 쓴 개발일지 초안에 섞이는 지어낸 수치를 git 이력 파생 사실 시트와 결정론 검사로 막은 1인 개발 빌드로그예요.2026년 8월 21일·5분 읽기
브랜딩·마케팅코트 옆 한 손 입력 UX 설계기, 1인 브랜드 콘텐츠가 되다농구 경기 기록을 한 손으로 입력하는 UX를 설계하며 얻은 원칙과, 그 과정을 1인 브랜드 콘텐츠로 바꾸는 방법을 정리했어요.2026년 8월 21일·5분 읽기
제품소개실시간 숫자가 깜빡이지 않게, 데이터 화면 플리커 잡는 3가지 패턴입력할 때마다 결과 숫자가 깜빡이고 레이아웃이 밀리는 문제, tabular-nums와 이전 값 유지, 디바운스 세 패턴으로 잡는 방법을 정리했어요.2026년 8월 21일·4분 읽기
프론트엔드macOS엔 timeout이 없다 — 프론트 자동화가 127로 멈춘 날macOS에서 timeout 명령이 종료 코드 127로 실패하는 이유와, 프론트엔드 자동화 스크립트를 gtimeout·Node 타임아웃으로 고친 과정을 정리했어요.2026년 8월 21일·5분 읽기
백엔드Expo 55에서 57로 한 번에 올리다 라우터와 인증이 같이 깨진 날Expo 57 업그레이드로 expo-router import가 깨지면 딥링크 인증 콜백까지 막혀요. 백엔드 관점의 원인과 점검 순서를 정리했어요.2026년 8월 21일·5분 읽기
AI 정보깨진 이미지를 통과시키는 텍스트 채점자, 비전 모델 1회로 막기이미지 자동 생성 파이프라인에서 텍스트 채점자만 쓰면 깨진 이미지도 통과합니다. 비전 모델 채점 1회를 넣는 방법을 정리했어요.2026년 8월 21일·5분 읽기
개발일지자동 발행 확인, HTTP 200만 믿으면 안 되는 이유블로그 자동 발행 파이프라인의 확인 로직을 글별 URL 200 응답과 본문 렌더 검사 두 단계로 바꾼 과정을 정리했어요.2026년 8월 16일·4분 읽기
브랜딩·마케팅금액 입력 콤마 자동완성, 커서 튐 잡고 브랜드 신뢰 지키기금액 인풋에 콤마를 붙일 때 커서가 끝으로 튀는 원인과 setSelectionRange 복원법, 이런 수정기를 1인 브랜드 콘텐츠 자산으로 쓰는 방법을 정리했어요.2026년 8월 16일·5분 읽기
제품소개금융계산기 결과 화면, 숫자 하나만 크게 보여주는 이유플랜씨(plan-c) 금융계산기 결과 화면을 숫자 하나 중심으로 바꾼 이유를 정리했어요. 항목 6개를 줄이고 핵심 숫자만 키웠더니 답이 빨라졌어요.2026년 8월 16일·4분 읽기
프론트엔드탭 안 볼 때 폴링 멈추기, visibilitychange로 요청 절반 줄이기탭이 백그라운드일 때도 계속 나가던 대시보드 폴링을 visibilitychange 이벤트로 멈추고, 복귀 시 즉시 갱신해 요청을 줄이는 방법을 정리했어요.2026년 8월 16일·4분 읽기
백엔드크론 두 번 실행 방지, Postgres advisory lock으로 잠그기서버 2대에서 크론이 겹쳐 돌아 알림이 중복 발송될 때, Postgres advisory lock으로 실행을 하나로 잠그는 방법을 정리했어요.2026년 8월 16일·5분 읽기
개발일지블로그 자동 발행 검증, 성공 로그 대신 URL로 확인하기블로그 자동 발행의 마지막 확인을 글별 URL 200 응답과 본문 렌더 검사로 교체한 1인 개발 기록이에요.2026년 8월 15일·5분 읽기
브랜딩·마케팅'한 번에 정리' 버튼이 기본으로 꺼져 있는 이유, 기본값이 브랜드입니다맥 정리 앱이 '한 번에 정리'를 기본 비활성으로 두는 이유를 1인 브랜드의 기본값 설계와 신뢰 관점에서 풀어봤어요.2026년 8월 15일·5분 읽기
제품소개법률정보 앱에서 '정보'와 '자문'의 선을 UI로 긋는 방법법률정보 앱이 자칫 법률 자문처럼 보이면 위험해요. 플랜엘(plan-l)을 만들며 문구·버튼·출처 표기로 그 선을 화면 위에 그어 본 경험을 정리했어요.2026년 8월 15일·5분 읽기
프론트엔드한글 입력 중 Enter가 두 번 실행될 때, IME composition 이벤트 처리법한글 입력창에서 Enter가 두 번 발동하는 IME composition 이슈의 원인과 isComposing 가드 한 줄로 해결하는 방법을 정리했어요.2026년 8월 15일·4분 읽기
백엔드Upstash Redis 무료 플랜 DB 1개, prefix로 나눠 쓰는 법Upstash Redis 무료 플랜은 DB가 1개예요. 여러 서비스가 키 prefix 규칙 하나로 한 Redis를 안전하게 나눠 쓰는 방법을 정리했어요.2026년 8월 15일·4분 읽기
AI 정보세션 중간에 룰 파일 고치면 토큰 비용이 뛰는 이유, 캐시 실수 5가지세션 중간 룰 파일 수정은 프롬프트 캐시를 전부 무효화해요. 토큰 비용을 조용히 올리는 5가지 실수와 캐시 적중률을 지키는 습관을 정리했어요.2026년 8월 15일·5분 읽기
개발일지git worktree로 AI 에이전트 병렬 작업 격리하기AI 에이전트를 병렬로 돌리다 리뷰어가 낡은 커밋을 보고 통과시키는 사고를 겪고, git worktree와 SHA 대조로 막아낸 1인 개발 기록이에요.2026년 8월 14일·4분 읽기
브랜딩·마케팅이 카피, 넛지일까 다크패턴일까? 게시 전 3질문 게이트1인 브랜드가 마케팅 카피를 올리기 전 넛지와 다크패턴을 가르는 3가지 질문 게이트를 만든 이유와 운영 방법을 정리했어요.2026년 8월 14일·5분 읽기
제품소개재배포 때마다 사라지던 요청, Railway와 FastAPI 안전 종료로 지키기Railway 재배포 시 SIGTERM을 제대로 받아 FastAPI의 진행 중 요청과 BackgroundTasks를 지키는 설정을 정리했어요.2026년 8월 14일·5분 읽기
프론트엔드라이브러리 없이 모달 focus trap 구현, 접근성 함정 3개모달 focus trap을 직접 구현하며 만난 숨은 요소 수집, 포커스 복귀 누락, 스크린리더 가상 커서 함정 3개와 해결 방법을 정리했어요.2026년 8월 14일·4분 읽기
백엔드Supabase 무료 플랜 7일 일시정지, Workers Cron으로 막기Supabase Free 프로젝트가 7일 비활동으로 잠드는 문제를 Cloudflare Workers Cron Trigger keepalive로 해결하는 방법을 정리했어요.2026년 8월 14일·4분 읽기
AI 정보세션이 죽어도 이어지는 자율 루프, state.json 영속화AI 에이전트 자율 루프가 세션 종료 후에도 진행을 잃지 않도록 state.json에 완료 상태·다음 단계·증거 경로를 기록하는 패턴을 정리했어요.2026년 8월 14일·5분 읽기
개발일지Sentry에 배포 릴리스가 안 잡힐 때, Railway 커밋 SHA 직접 주입하기Railway 배포에서 Sentry 릴리스 탭이 계속 비어 있던 원인과, RAILWAY_GIT_COMMIT_SHA를 release로 직접 주입해 해결한 과정을 정리했어요.2026년 8월 13일·4분 읽기
브랜딩·마케팅AI가 그리는 카드의 '한쪽 띠', 테스트 코드로 막은 이유AI가 카드 UI마다 그리는 한쪽 색 띠 패턴을 문장 규칙 대신 테스트 코드로 차단한 과정과, 1인 브랜드가 디자인 금지선을 자산으로 만드는 방법을 정리했어요.2026년 8월 13일·5분 읽기
제품소개아이콘 100개 같은 톤으로 뽑기: '이 스타일대로' 대신 '이 범위 안에서'AI로 아이콘을 수십 개 뽑으면 톤이 흔들리는 이유와, 좋은·나쁜 레퍼런스와 질문형 체크리스트로 허용 범위를 고정하는 방법을 정리했어요.2026년 8월 13일·5분 읽기
프론트엔드웹훅 안전하게 받기: HMAC 서명검증·재전송 방지·멱등 처리 3종 세트Next.js Route Handler로 웹훅을 받을 때 필요한 HMAC 서명검증, 타임스탬프 재전송 방지, 멱등 키 처리를 프론트엔드 개발자 관점으로 정리했어요.2026년 8월 13일·5분 읽기
백엔드크레딧이 두 번 차감되는 버그, SELECT FOR UPDATE로 잡는 법동시 요청에 크레딧이 두 번 빠지는 race condition의 원인과 SELECT FOR UPDATE 락, 단일 트랜잭션으로 잡는 과정을 정리했어요.2026년 8월 13일·4분 읽기
AI 정보오케스트레이션 프롬프트에 '모델은 알아서' 넣었다가 토큰이 터진 이유멀티에이전트 워크플로우에서 모델 선택을 위임하면 왜 전부 최고가 모델로 수렴하는지, 단계별 모델 명시로 토큰 비용을 잡은 과정을 정리했어요.2026년 8월 13일·5분 읽기
개발일지대화형에선 붙던 MCP가 크론에서만 죽은 이유대화형 세션에선 잘 붙던 MCP 서버가 크론에서만 연결 실패하던 문제를 환경변수 세션 스코프로 풀어낸 빌드로그예요.2026년 8월 12일·5분 읽기
브랜딩·마케팅플랜 시리즈냐 독립 브랜드냐, 1인 개발사 네이밍 고민제품마다 새 이름을 지을지, 하나의 시리즈로 묶을지. 1인 개발사가 네이밍 구조를 정할 때 따져본 기준을 정리했어요.2026년 8월 12일·5분 읽기
프론트엔드제품 라인을 미리 여는 프론트엔드 구조: plan-a~z 네이밍제품 이름을 plan-a~z로 미리 열어두면 화면 쪽도 준비가 필요해요. 레지스트리 한 곳과 공유 셸로 새 플랜을 몇 분 만에 붙이는 프론트엔드 구조를 정리했어요.2026년 8월 12일·5분 읽기
백엔드다크모드 브랜드 색, 순수 반전 대신 서버 토큰으로 지키기다크모드에서 순수 반전을 걸면 브랜드 색상이 틀어져요. 시맨틱 토큰 2벌 저장과 서버측 초기 테마 주입으로 브랜드를 지키는 백엔드 관점을 정리했어요.2026년 8월 12일·4분 읽기
AI 정보AI 자동화 재시도, 횟수 말고 원인으로 나누기AI 자동화 루프가 실패할 때 재시도 횟수만 세지 말고, 원인별로 라우팅하면 헛도는 재시도를 줄일 수 있어요.2026년 8월 12일·5분 읽기
개발일지pnpm minimumReleaseAge 604800의 함정 — 단위는 초가 아니라 분이었어요공급망 방어로 pnpm minimumReleaseAge를 604800으로 박았는데, 단위가 초가 아니라 분이라 실제로는 420일을 기다리는 설정이었어요. 7일은 10080이 맞았습니다.2026년 8월 11일·4분 읽기
브랜딩·마케팅제품 8개, 브랜드 컬러 8가지를 토큰 하나로 관리하기혼자 여러 제품을 만들 때 색이 제품마다 흔들리는 문제를, 색을 이름으로 관리하는 3층 토큰 뼈대 하나로 정리한 방법이에요.2026년 8월 11일·5분 읽기
제품소개1인 회사 콕핏, 위젯을 늘릴수록 안 보게 되는 이유지표 위젯을 계속 붙이다 오히려 대시보드를 안 열게 된 경험과, 핵심 표면만 남겨 다시 보게 만든 정리 과정을 담았어요.2026년 8월 11일·5분 읽기
프론트엔드'알아서 렌더'에 맡겼다가 요청이 12배 늘어난 이야기컴포넌트마다 알아서 처리하라고 맡기면 기본값이 가장 무거운 쪽을 골라요. 화면 단위로 명시해서 요청과 비용을 줄인 과정을 정리했어요.2026년 8월 11일·5분 읽기
백엔드빈 일기장 첫 화면, 백엔드에서 초대장으로 바꾸기마음기록 앱의 텅 빈 첫 화면을 프론트가 아니라 백엔드에서 세 가지 상태로 나누고 초대장으로 바꾸는 과정을 정리했어요.2026년 8월 11일·4분 읽기
AI 정보조용히 멈춘 cron 탐지하기 — 자동화에 데드맨 스위치 달기cron이 조용히 멈추면 에러도 알림도 안 남아요. 자동화 루프에 데드맨 스위치를 붙여 조용한 멈춤을 탐지하는 방법을 직접 해본 경험으로 정리했어요.2026년 8월 11일·5분 읽기
개발일지헤드리스 codex exec가 훅을 건너뛰는 false-green 막기헤드리스 codex exec가 대화형 훅을 조용히 건너뛰어 생기는 false-green을, 게이트를 실행 경로에 배선해 막은 1인 개발 기록이에요.2026년 8월 10일·4분 읽기
브랜딩·마케팅같은 회사, 다른 목소리: 제품별 브랜드 보이스 나누는 기준1인 브랜드가 금융계산기부터 정신건강 앱까지 제품마다 톤을 어떻게 나눴는지, 목소리를 가르는 세 가지 기준을 정리했어요.2026년 8월 10일·5분 읽기
제품소개마음기록 앱에 연속기록 스트릭을 넣지 않은 이유플랜티(plan-t)를 만들며 연속기록 스트릭을 빼기로 한 결정과, 그 자리에 대신 넣은 장치를 1인 개발자 관점에서 정리했어요.2026년 8월 10일·5분 읽기
프론트엔드debounce 자동저장, 화면을 떠날 때 마지막 입력이 사라진다면화면 전환이나 탭 종료 순간 debounce 타이머가 취소돼 마지막 입력이 저장되지 않는 문제를 flush와 sendBeacon으로 막는 방법을 정리했어요.2026년 8월 10일·5분 읽기
백엔드'사기 정리앱' 소리 듣는 앱, 백엔드로 정직함 증명하기계산기·정리 도구처럼 흔한 유틸리티 앱이 오해받는 이유와, 인증·API·데이터 구조로 정직함을 증명하는 백엔드 설계 이야기예요.2026년 8월 10일·5분 읽기
AI 정보LLM 라우팅에 unknown 레인이 없으면 입력이 새어나가요LLM 분류·라우팅에서 unknown 레인을 빼면 애매한 입력이 오분류되거나 조용히 사라져요. 격리와 로그로 새는 지점을 눈에 보이게 만드는 법을 정리했어요.2026년 8월 10일·5분 읽기
개발일지DB 없이 URL에 상태를 담아 계산 결과를 공유하기플랜씨(plan-c) 계산기 결과를 링크 하나로 공유하려고 서버 DB 대신 URL에 상태를 담기로 한 과정과 트레이드오프를 정리했어요.2026년 8월 9일·4분 읽기
브랜딩·마케팅앱스토어 스크린샷 72장, 미리보기를 먼저 둔 이유12장을 6개 언어로 뽑으면 72장. 삭제·저장 버튼보다 미리보기를 먼저 보여준 결정이 1인 브랜드 콘텐츠 운영에 만든 차이를 정리했어요.2026년 8월 9일·5분 읽기
제품소개삭제 버튼을 첫 화면에서 숨긴 이유 — 신뢰 온보딩맥 클리너가 삭제 버튼을 첫 화면에서 숨기는 이유를 신뢰 온보딩 관점에서 풀고, 플랜 시리즈에 적용한 첫 화면 설계 경험을 정리했어요.2026년 8월 9일·4분 읽기
프론트엔드textarea 자동 높이, 떨림 없이 늘리는 법키 입력마다 height를 auto로 리셋하면 화면이 떨려요. 마음기록 에디터를 만들며 scrollHeight를 떨림 없이 다루는 방법을 정리했어요.2026년 8월 9일·4분 읽기
백엔드1인 개발도 '우리'라고 써도 될까 — 백엔드 actor로 정직하게혼자 만드는데 공지에 '저희가'라고 쓰기 애매할 때, 인원수 대신 시스템 주체를 로그·DB·발신자 필드에 정직하게 담는 백엔드 설계 이야기예요.2026년 8월 9일·5분 읽기
AI 정보status=success인데 게시가 안 됐다 — false-green 잡는 법자동화 로그는 초록불인데 실제 결과물이 없어요. status=success만 믿으면 놓치는 false-green을, 결과가 나온 자리를 다시 확인하는 surface check로 잡는 방법을 정리했어요.2026년 8월 9일·5분 읽기
개발일지한글 입력 중 onChange가 두 번 터질 때 — IME 조합 이벤트 다루기한글로 폼을 채우면 onChange가 여러 번 터지고 Enter가 두 번 실행되는 이유와, isComposing으로 잡는 법을 빌드로그로 정리했어요.2026년 8월 8일·4분 읽기
제품소개차트가 안 그려질 때, resize 이벤트 대신 ResizeObserver창 크기는 그대로인데 차트만 찌그러질 때가 있어요. window resize 대신 ResizeObserver로 컨테이너 크기 변화를 직접 감지해 다시 그리는 방법을 정리했어요.2026년 8월 8일·4분 읽기
프론트엔드감정 기록 잔디 히트맵, CSS grid로 만들고 스크린리더까지한 해의 감정 기록을 잔디처럼 한 화면에 보여주는 히트맵을 CSS grid로 만들고, 색맹·스크린리더 사용자까지 챙기는 접근성 처리를 정리했어요.2026년 8월 8일·5분 읽기
백엔드되돌릴 수 없는 삭제, 백엔드 안전장치는 어디까지?되돌릴 수 없는 하드 삭제 앞에서 소프트 삭제·유예 기간·감사 로그를 어디까지 넣을지 백엔드 관점으로 정리했어요.2026년 8월 8일·5분 읽기
AI 정보모달 포커스 트랩, AI 코드에서 최소 구현만 남기기AI에게 모달 포커스 트랩을 시키면 라이브러리부터 권해요. 네이티브 dialog와 짧은 키보드 핸들러로 최소 구현만 남긴 과정을 정리했어요.2026년 8월 8일·4분 읽기
제품소개라이브러리 없이 드래그로 크기 조절되는 분할 패널 만들기분할 패널 라이브러리 대신 포인터 이벤트 3개로 드래그 크기 조절을 직접 붙인 과정과 놓치기 쉬운 마무리를 정리했어요.2026년 8월 7일·5분 읽기
개발일지이미지 미리보기가 메모리를 먹는 이유 — createObjectURL 정리하기이미지 업로드 미리보기를 만들다 메모리가 계속 늘던 문제를, createObjectURL을 revoke하지 않아 생긴 일과 useEffect 정리 함수로 잡은 과정으로 풀었어요.2026년 8월 6일·4분 읽기
브랜딩·마케팅독일어는 왜 프레임 밖으로 넘칠까 — 캔버스 텍스트 자동 맞춤언어마다 배너 글자가 삐져나오는 1인 브랜드의 반복 노동을, 캔버스 텍스트 자동 맞춤 한 줄로 줄여본 기록이에요.2026년 8월 6일·5분 읽기
제품소개Next.js와 FastAPI 사이에서 조용히 깨진 JSON, 이렇게 막았어요프론트에서 보낸 값이 백엔드에서 소리 없이 사라질 때, Date·undefined·BigInt 손실을 zod 왕복 테스트로 막은 방법을 정리했어요.2026년 8월 6일·5분 읽기
AI 정보RLS는 최종 경계로만: 복잡한 인가를 서버 코드로 되돌린 이유AI 코딩 도구가 인가 분기를 전부 RLS 정책에 몰아넣기 쉬운데, 단위 테스트가 막히는 문제를 겪고 복잡한 판단을 서버 코드로 되돌린 경험을 정리했어요.2026년 8월 6일·4분 읽기
개발일지튜토리얼 없이 첫 화면에서 바로 쓰게 만든 과정온보딩 화면을 지우고 첫 화면에 핵심 기능 하나만 남긴 이유와, 1인 개발자로서 그 과정에서 겪은 선택을 정리했어요.2026년 8월 5일·4분 읽기
브랜딩·마케팅빈 화면이 첫인상이에요: 데이터 0인 첫날 화면 설계데이터가 0인 첫날의 빈 화면을 1인 브랜드가 온보딩 카피이자 첫인상으로 활용하는 방법을 직접 적용한 경험으로 정리했어요.2026년 8월 5일·4분 읽기
제품소개Supabase 무료 프로젝트, 7일 pause를 Workers Cron으로 막기접속이 뜸한 무료 Supabase 프로젝트가 7일이면 멈춰요. Workers Cron으로 하루 한 번 깨워 두는 방법을 직접 적용해 정리했어요.2026년 8월 5일·4분 읽기
프론트엔드긴 법률 문서 목차 스크롤스파이, 깜빡임 없이 하이라이트하기조항이 수십 개인 긴 문서에서 목차 활성 항목이 튀는 깜빡임을 IntersectionObserver의 rootMargin 밴드로 잡는 프론트엔드 구현 방법을 정리했어요.2026년 8월 5일·5분 읽기
백엔드캐시 만료 순간 DB로 몰리는 요청, single-flight로 막기캐시가 만료되는 찰나 수많은 요청이 한꺼번에 DB로 쏟아지는 Cache Stampede를, single-flight로 한 번만 계산하게 막는 백엔드 패턴을 정리했어요.2026년 8월 5일·5분 읽기
브랜딩·마케팅모델 바꿨다가 캐시가 전멸했어요 — 1인 브랜드의 프롬프트 캐싱 규율AI로 콘텐츠를 대량 생성하는 1인 브랜드가 프롬프트 캐싱을 놓치면 토큰 비용이 새어나가요. 세션 중간 모델 교체가 왜 캐시를 전멸시키는지 정리했어요.2026년 8월 4일·6분 읽기
제품소개제품 8개가 UI 킷 하나를 공유하는 법: 공통과 분기제품 8개가 UI 킷 하나를 나눠 쓸 때, 색·간격 같은 기본기는 공통으로 묶고 도메인 화면은 갈라놓은 기준을 정리했어요.2026년 8월 4일·5분 읽기
프론트엔드컴포넌트를 늘리지 말고 쳐내기: 성숙기 프론트엔드 정리법컴포넌트를 자꾸 새로 만들면 화면이 무거워져요. 도구 정리에서 배운 '쳐내기' 원칙을 프론트엔드 컴포넌트에 적용한 실전 기록이에요.2026년 8월 4일·4분 읽기
백엔드timestamptz vs timestamp, KST로 하루 밀린 날짜 버그 잡기포스트그레의 timestamp와 timestamptz 차이 때문에 KST 새벽 데이터가 하루 밀리던 집계 버그를 UTC 저장·표시 변환으로 잡은 방법이에요.2026년 8월 4일·5분 읽기
개발일지빌더는 리뷰어가 될 수 없다 — 커밋 게이트를 훅으로 강제한 이유혼자 개발하면서 구현과 리뷰를 같은 손이 하면 안 된다는 걸 깨닫고, 커밋 게이트를 훅으로 강제한 과정을 정리했어요.2026년 8월 3일·5분 읽기
브랜딩·마케팅auth.uid()로 팀 격리가 안 됐던 날, 개발 실수를 콘텐츠로auth.uid()만으로는 팀 데이터 격리가 안 되는 이유와, 1인 개발자가 그 교훈을 브랜드 콘텐츠로 바꾸는 법을 정리했어요.2026년 8월 3일·5분 읽기
제품소개전체 디스크 접근 권한, 거부당하지 않게 요청하는 법맥 클리너의 전체 디스크 접근 권한 요청 흐름을 뜯어보고, 앱이 권한을 거부당하지 않게 부탁하는 법을 플랜 시리즈 사례로 정리했어요.2026년 8월 3일·5분 읽기
프론트엔드삭제하는 앱이 신뢰를 얻는 법: 미리보기와 되돌리기 UI파일 삭제 앱의 신뢰를 만드는 미리보기 패널과 되돌리기 스낵바를 프론트엔드 관점에서 구현하는 방법을 정리했어요.2026년 8월 3일·5분 읽기
백엔드FastAPI를 Railway에 올렸더니 Supabase 커넥션이 고갈된 이유FastAPI를 Railway에 배포한 뒤 Supabase 커넥션이 금방 바닥나는 이유와 Supavisor 트랜잭션 풀링으로 해결한 과정을 정리했어요.2026년 8월 3일·5분 읽기
AI 정보환경변수로 붙인 MCP가 cron에서만 조용히 죽는 이유대화형에선 잘 되던 MCP 연결이 무인 자동화에서만 조용히 실패하는 세션 스코프 인증 함정과 해결법을 정리했어요.2026년 8월 3일·5분 읽기
개발일지삭제 확인 UX 만들기: 되돌릴 수 없는 작업을 안전하게 하는 3가지맥 정리 도구를 직접 만들며 적용한, 되돌릴 수 없는 삭제를 안전하게 감싸는 세 가지 장치를 빌드로그로 정리했어요.2026년 8월 2일·4분 읽기
브랜딩·마케팅'자동 실행' 버튼을 일부러 뺀 결정, 브랜드 콘텐츠가 됩니다고위험 기능에 자동 실행을 넣지 않은 제품 결정을 1인 브랜드가 신뢰 콘텐츠로 풀어내는 방법을 정리했어요.2026년 8월 2일·4분 읽기
제품소개계산기 앱에 로그인 벽을 세우지 않은 이유무료 금융계산기 플랜씨(plan-c)를 만들며 로그인 없이 바로 쓰게 둔 이유와, 로그인 벽이 계산기 같은 도구에 왜 안 맞는지 직접 겪은 이야기를 정리했어요.2026년 8월 2일·5분 읽기
프론트엔드법률 앱에 '자문 아님' 문구, 거슬리지 않게 심는 법법령·판례 검색 화면에 법률 자문 아님 고지를 놓치지 않으면서도 방해되지 않게 넣는 프론트엔드 구현 방법을 정리했어요.2026년 8월 2일·4분 읽기
백엔드AI 요약 API 비용 폭탄 막기: max_tokens 하드캡과 Redis 레이트리밋클라이언트 제한만 믿으면 AI 요약 엔드포인트는 언제든 비용 폭탄이 돼요. 서버에서 max_tokens를 하드캡으로 고정하고 Redis로 호출 횟수를 막는 방법을 백엔드 관점으로 정리했어요.2026년 8월 2일·5분 읽기
AI 정보헤드리스 AI 에이전트가 훅을 건너뛸 때, 게이트를 스크립트에 넣는 법claude -p와 codex exec 같은 헤드리스 모드는 대화형 훅을 건너뛰어 false-green을 만들어요. 게이트를 실행 스크립트에 직접 넣는 방법을 정리했어요.2026년 8월 2일·5분 읽기
개발일지다국어 앱스토어 스크린샷, 텍스트가 박스를 넘칠 때 Canvas로 맞춘 기록언어마다 카피 길이가 달라 앱스토어 스크린샷 텍스트가 박스를 넘칠 때, Canvas measureText와 이진탐색으로 폰트를 자동으로 맞춘 과정을 정리했어요.2026년 8월 1일·5분 읽기
브랜딩·마케팅라이브러리 없이 드래그로 순서 바꾸기, 1인 브랜드가 직접 만든 이유리스트 순서를 드래그로 바꾸는 기능을 라이브러리 없이 포인터 이벤트 세 개로 만들었어요. 1인 브랜드가 콘텐츠와 우선순위를 정리할 때 가벼운 직접 구현이 왜 나은지 정리했어요.2026년 8월 1일·5분 읽기
제품소개UTC로 저장하고 KST로 보여주기: Postgres 타임존 함정동호회 앱 경기 시간이 어긋나는 건 대부분 타임존 정보가 빠진 자리예요. 저장은 UTC, 표시는 KST로 정리하는 실전 원칙을 담았어요.2026년 8월 1일·4분 읽기
프론트엔드금융계산기 슬라이더와 숫자 입력, 값이 튀는 이유슬라이더와 숫자 입력을 양방향으로 묶으면 값이 튀는데요, 원인 세 가지와 프론트엔드에서 안정적으로 동기화하는 방법을 정리했어요.2026년 8월 1일·6분 읽기
백엔드FastAPI 응답을 camelCase로: Pydantic alias_generator 실전백엔드는 snake_case, 프론트는 camelCase. FastAPI에서 Pydantic alias_generator로 응답 키를 자동 변환해 프론트 계약을 맞춘 과정을 정리했어요.2026년 8월 1일·5분 읽기
AI 정보맥 클리너에 맡기기 전에: '지워도 되는 파일' 기준선 만들기맥 클리너가 알아서 지우게 두는 대신, 재생성·복원·사용자 데이터·알 수 없음 4개 레인으로 나눠 애매한 것만 AI에 맡기는 삭제 기준선을 직접 만들어 봤어요.2026년 8월 1일·5분 읽기
개발일지Upstash Redis 무료 DB 1개, prefix로 서비스 여러 개 굴리기Upstash Redis 무료 DB 1개를 key prefix로 나눠 여러 서비스에서 쓰는 네임스페이스 설계와 FLUSHDB·라이브러리 키·한도 공유 함정을 정리했어요.2026년 7월 31일·5분 읽기
브랜딩·마케팅Neon으로 사이드 프로젝트 DB 고정비 0원 운영하기서버리스 Postgres Neon 무료 플랜으로 사이드 프로젝트 DB 고정비를 0원으로 묶고, 브랜치 실험까지 콘텐츠로 만드는 1인 브랜드 운영법을 정리했어요.2026년 7월 31일·4분 읽기
제품소개Pretendard 웹폰트 때문에 CLS 점수가 깎일 때 잡는 법Pretendard 웹폰트가 CLS 점수를 깎는 원인과 폴백 메트릭 보정 3단계 해결 과정을 플랜씨(plan-c) 계산기 화면 기준으로 정리했어요.2026년 7월 31일·3분 읽기
개발일지Supabase 무료 프로젝트 4개 잠들지 않게 하기 — Workers Cron 설계Supabase 무료 플랜은 7일 비활동이면 프로젝트가 잠들어요. 프로젝트 4개를 Workers Cron 하나로 깨워두는 keepalive 설계와 시행착오를 정리했어요.2026년 7월 30일·5분 읽기
브랜딩·마케팅회원 탈퇴 시 결제이력을 지우면 안 되는 이유와 익명화 설계탈퇴 처리에서 결제이력을 하드 딜리트하면 안 되는 법적 이유, soft-delete와 PII 익명화 3단계 설계, 1인 브랜드가 이를 신뢰 콘텐츠로 쓰는 방법을 정리했어요.2026년 7월 30일·4분 읽기
제품소개로컬 소형 LLM은 언제 쓸까 — RAG 먼저, 파인튜닝은 마지막로컬 소형 LLM은 대량 배치와 민감 데이터에만, 도메인 지식은 RAG 먼저. 1인 개발자가 플랜 시리즈를 만들며 정리한 선택 기준이에요.2026년 7월 30일·4분 읽기
프론트엔드Zustand persist가 SSR hydration mismatch를 터뜨리는 이유Zustand persist가 Next.js SSR에서 hydration mismatch 경고를 만드는 원인과 마운트 플래그, skipHydration 해결법을 정리했어요.2026년 7월 30일·4분 읽기
백엔드감정 데이터 필드 암호화, pgsodium 대신 앱 레이어 AES-GCM을 택한 이유감정·건강 데이터 필드레벨 암호화를 DB 확장 대신 앱 레이어 AES-GCM으로 구현한 이유와 IV·키 관리 규칙, 트레이드오프를 정리했어요.2026년 7월 30일·5분 읽기
AI 정보AI 자가학습 루프에 lineage를 넣어야 하는 이유출력이 다시 입력이 되는 AI 자가학습 루프에서 lineage(계보) 기록이 왜 필수인지, 필드 3개로 시작하는 방법을 정리했어요.2026년 7월 30일·4분 읽기
개발일지스크린샷 실시간 미리보기, Canvas 합성 성능 잡기미리보기가 버벅일 때 Canvas를 매번 통째로 다시 그리지 않고 비트맵 캐싱·rAF·devicePixelRatio 보정으로 성능을 잡은 1인 개발 빌드로그예요.2026년 7월 29일·5분 읽기
브랜딩·마케팅제품명 확정 전 30분 네임 검증 루틴: 도메인·앱스토어·상표이름을 확정하기 전에 도메인·앱스토어·상표 세 곳을 30분 안에 훑는 1인 브랜드용 검증 순서를 정리했어요.2026년 7월 29일·5분 읽기
제품소개제품 4개를 혼자 운영할 때 우선순위 정하는 법혼자 여러 제품을 만들 때 매일 뭘 먼저 할지 정하는 기준을, 플랜 시리즈를 운영하며 정리한 방법으로 풀어봤어요.2026년 7월 29일·4분 읽기
프론트엔드next-themes 없이 다크모드 깜빡임(FOUC) 없애는 법다크모드 새로고침 때 화면이 번쩍하는 FOUC를, 라이브러리 없이 head 인라인 스크립트 몇 줄로 없애는 방법을 정리했어요.2026년 7월 29일·5분 읽기
백엔드offset 페이지네이션이 느려지는 이유와 커서 전환기목록 API에서 offset 페이지네이션이 깊은 페이지일수록 느려지는 이유와, 커서(keyset) 방식으로 바꾸며 얻은 것과 포기한 것을 정리했어요.2026년 7월 29일·5분 읽기
AI 정보AI 에이전트 메모리를 파일로 관리하며 배운 것자동으로 쌓이는 AI 메모리의 상당수를 버리고 파일 한 개에 사실 하나씩만 남겼더니 검색이 정확해졌어요.2026년 7월 29일·4분 읽기
개발일지긴 세션이 코드 품질을 갉아먹어요: 컨텍스트 예산 규율긴 코딩 세션에서 코드 품질이 조용히 나빠지는 이유와, 컨텍스트 예산으로 세션을 끊어 관리한 1인 개발 경험을 정리했어요.2026년 7월 28일·4분 읽기
브랜딩·마케팅AI가 쓰고 사람이 누른다: 1인 브랜드 콘텐츠 품질 루프AI 초안을 그대로 발행하지 않고, 게이트와 사람 확인을 거쳐 브랜드 톤을 지키는 콘텐츠 운영 루프를 정리했어요.2026년 7월 28일·4분 읽기
제품소개1인 회사 콕핏에 지표를 딱 하나만 남긴다면여러 플랜을 혼자 운영하면서 대시보드 지표를 하나로 줄여봤어요. 무엇을 남기고 무엇을 버렸는지 정리했어요.2026년 7월 28일·5분 읽기
프론트엔드기록 수백 개에서 스크롤이 버벅일 때, 리스트 가상화 도입기기록이 수백 개로 늘며 버벅이던 스크롤을, 안 보이는 항목은 안 그리는 리스트 가상화로 매끄럽게 만든 프론트엔드 구현기예요.2026년 7월 28일·4분 읽기
백엔드크론 중복 실행, Postgres SKIP LOCKED와 advisory lock으로 막기인스턴스를 늘렸더니 크론이 두 번 도는 문제를, 새 라이브러리 없이 Postgres 잠금 두 가지로 막은 방법을 정리했어요.2026년 7월 28일·5분 읽기
AI 정보프롬프트 캐시 적중률만 올렸더니 Claude 토큰비용이 줄었어요자동화 워크플로우에서 Claude 토큰비용이 늘 때, 프롬프트 캐시 적중률을 올려 비용을 줄인 기록을 정리했어요.2026년 7월 28일·5분 읽기
개발일지status=success인데 글이 안 올라갔다: 발행 파이프라인 false-green 잡기자동 발행 실행 기록은 전부 성공인데 블로그엔 새 글이 없던 문제를, 표면을 직접 확인하는 점검으로 잡은 1인 개발 빌드로그예요.2026년 7월 27일·5분 읽기
브랜딩·마케팅비공개 제품이 섞인 포트폴리오, 빌드인퍼블릭 브랜딩하는 법공개하기 이른 제품이 하나 있어도 빌드인퍼블릭은 가능해요. 1인 브랜드가 비공개 제품을 감추지 않고 브랜딩 재료로 쓰는 방법을 정리했어요.2026년 7월 27일·5분 읽기
제품소개동호회 회비·출석, 어디까지 자동화할지 정한 3가지 기준회비·출석 관리를 앱으로 만들 때 무엇을 자동으로 돌리고 무엇을 사람 손에 남길지, 플랜비를 만들며 정한 판단 기준을 정리했어요.2026년 7월 27일·5분 읽기
프론트엔드React Query 낙관적 업데이트로 참석 토글 UX 매끄럽게 만들기참석 여부를 누르는 순간 화면이 바로 바뀌고, 서버가 실패하면 원래대로 되돌리는 낙관적 업데이트 패턴을 프론트엔드 구현 관점에서 정리했어요.2026년 7월 27일·5분 읽기
백엔드결제 webhook 소비자 하드닝: HMAC·replay·멱등 3겹 방어결제 webhook을 안전하게 받으려면 HMAC 서명검증, replay 윈도우, 멱등 처리 세 겹이 필요해요. 백엔드에서 직접 붙이며 정리한 순서와 함정을 담았어요.2026년 7월 27일·5분 읽기
개발일지SNS 자동화에서 자동승인을 뺀 이유SNS 자동화에서 자동승인을 걷어내고 게시 직전 검토 한 단계를 남긴 이유를, 1인 개발 빌드로그로 정리했어요.2026년 7월 26일·4분 읽기
브랜딩·마케팅1인 브랜드가 매일 글을 자동 발행하는 구조 만들기의지에 기대지 않고 매일 초안 한 편이 자동으로 준비되는 콘텐츠 구조를, 1인 브랜드 관점에서 단계 분리와 톤 관리 중심으로 정리했어요.2026년 7월 26일·4분 읽기
제품소개나만 쓰는 도구, UI를 어디까지 다듬어야 할까혼자 쓰는 개인 도구와 남에게 주는 제품은 UI 기준이 다릅니다. 라이프케어로그 플랜 시리즈를 만들며 정한 판단선을 나눠요.2026년 7월 26일·4분 읽기
프론트엔드금융 계산기 입력창, 천단위 콤마에 커서가 튀는 문제 해결숫자 입력창에 천단위 콤마를 넣으면 커서가 맨 뒤로 튀는 문제를, selectionStart로 자릿수를 세서 커서 위치를 되돌리는 방법으로 정리했어요.2026년 7월 26일·5분 읽기
백엔드승인 버튼을 두 번 눌러도 안전한 이유: CAS와 멱등키승인 버튼을 두 번 눌러도 중복 처리되지 않게 막는 백엔드 패턴 — 멱등키(nonce)로 같은 요청을, CAS로 같은 상태 변경을 한 번만 처리하는 방법을 정리했어요.2026년 7월 26일·5분 읽기
AI 정보1인 개발자 콕핏, 지표 대시보드에서 '오늘 할 일' 도구로 바꾼 이유지표만 잔뜩 띄운 대시보드를 접고, 자동화가 밤사이 처리한 일과 내 결정이 필요한 것만 남긴 '오늘 할 일' 콕핏으로 재설계한 과정과 이유를 정리했어요.2026년 7월 26일·5분 읽기
제품소개마음기록 앱 디자인 리프레시, 화이트+그린으로 바꾼 이유마음기록 앱 디자인 리프레시 과정을 정리했어요. 화이트+그린 전면 교체로 세운 색 규칙 세 줄과 토큰 정리 순서, 배운 점을 공유해요.2026년 7월 25일·5분 읽기
프론트엔드useEffect에 이름을 붙이면 코드가 달라지는 이유useEffect를 이름 있는 함수나 커스텀 훅으로 빼면 React 동작보다 컴포넌트 경계와 디버깅 방식이 먼저 달라져요.2026년 7월 25일·6분 읽기
백엔드중복 게시 0을 노리는 outbox 패턴외부 API 성공과 DB 기록 사이의 빈칸 때문에 생기는 중복 게시를 outbox 상태머신과 reconcile로 줄이는 실전 구조를 정리했어요.2026년 7월 25일·4분 읽기
AI 정보LLM 파이프라인 오류 분류 3가지와 재시도 설계LLM 파이프라인에서 timeout, 401/403, 5xx를 한데 묶지 말고 retryable·permanent·auth로 나눠야 재시도와 DLQ가 단순해져요.2026년 7월 25일·4분 읽기
개발일지n8n 자동 업그레이드 사고 회고, credential이 사라진 날n8n 컨테이너 자동 업그레이드 후 credential과 데이터가 사라진 사고를 복구한 기록. 암호화 키 고정, 버전 고정, 백업 3가지로 재발을 막았어요.2026년 7월 24일·5분 읽기
브랜딩·마케팅1인 브랜드 채널별 콘텐츠 전략, X는 how-to 인스타는 브랜드같은 글을 두 채널에 복붙하다 멈추고, X는 how-to·인스타그램은 브랜드 이야기로 나눈 기준과 1인 운영 리듬을 정리했어요.2026년 7월 24일·5분 읽기
제품소개앱스토어 스크린샷 현지화 도구를 직접 만든 이유플랜 시리즈 앱의 스토어 스크린샷을 여러 언어로 준비하다 반복 작업이 곱셈으로 늘어, 현지화 도구를 직접 만든 과정을 정리했어요.2026년 7월 24일·5분 읽기
프론트엔드로그인은 됐는데 새로고침하면 풀려요? 세션 유지 구현법새로고침만 하면 로그아웃되는 원인을 토큰 보관·세션 복원·라우트 가드 세 갈래로 나눠 프론트엔드에서 고치는 방법을 정리했어요.2026년 7월 24일·4분 읽기
AI 정보codex CLI가 무한 대기에 빠지는 이유 3가지와 해결법스크립트에서만 멈추는 codex exec, 직접 재현해 보니 stdin 대기·신뢰 디렉토리·타임아웃 부재가 원인이었어요. 한 줄 해결법을 정리했어요.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분 읽기
브랜딩·마케팅AI가 글을 써도 발행 버튼은 사람이 눌러야 하는 이유블로그 자동화에서 글을 만드는 것과 공개 발행은 다른 문제예요. 라이프케어로그는 AI가 초안을 도와도 fact gate, originality gate, 사람 검토를 거친 뒤 발행하는 쪽을 택했어요.2026년 7월 7일·6분 읽기
AI 정보AI가 내 브라우저와 메일을 대신 보게 할 수 있을까?로그인된 Chrome 창, Gmail, 강의 페이지를 AI가 대신 보고 요약하게 할 수는 있어요. 다만 읽기, 초안 작성, 실제 전송과 결제는 권한 단계를 나누고 승인 게이트를 둬야 안전합니다.2026년 7월 7일·7분 읽기
AI 정보Claude 사용량이 막혔을 때 Codex로 이어받는 1인 개발 워크플로우Claude가 메인 구현 도구여도 사용량 한도나 장애가 생기면 일이 멈출 수 있어요. 그래서 Claude primary, Codex fallback, 둘 다 실패하면 사람 검토로 멈추는 구조를 1인 개발 워크플로우에 붙였어요.2026년 7월 7일·8분 읽기
개발일지1인 개발자가 금융계산기에 꼭 넣는 기능 7가지와 수익화 구조무료 금융계산기 플랜씨(plan-c)를 혼자 만들며 정리한 필수 기능 7가지와 애드센스·제품 유입으로 이어지는 수익화 구조를 공유해요.2026년 7월 6일·5분 읽기
브랜딩·마케팅Claude로 긴 글 요약하는 방법: 1인 브랜드 프롬프트와 세팅긴 글을 Claude로 300자 요약해 SNS·뉴스레터 소재로 재활용하는 1인 브랜드의 프롬프트 예시와 실전 세팅을 정리했어요.2026년 7월 6일·5분 읽기
제품소개감정 기록 자동화와 주간 리포트 만드는 법, 플랜티 마음기록 이야기감정 기록이 3일을 못 넘긴다면 기록 자동화 3단계와 주간 리포트 정리법을 해보세요. 개발 중인 플랜티 마음기록에 담는 방식이에요.2026년 7월 6일·5분 읽기
프론트엔드n8n 블로그 글 자동 발행 워크플로우, 프론트엔드 설계법n8n으로 블로그 글을 자동 발행할 때 프론트엔드가 준비할 frontmatter 스키마, publish 게이트, MDX 컴포넌트 화이트리스트를 직접 만든 경험으로 정리했어요.2026년 7월 6일·4분 읽기
백엔드FastAPI로 AI 요약 기능 붙이기: 실전 코드와 배포 체크리스트FastAPI에 AI 요약 엔드포인트를 붙이는 최소 코드와 배포 전 점검 항목 5가지를 1인 개발자 경험으로 정리했어요.2026년 7월 6일·4분 읽기
AI 정보Claude로 블로그 초안 쓰는 프롬프트 예시 10개Claude로 블로그 초안을 빠르게 뽑는 프롬프트 10개를 목적별로 정리했어요. 개요 잡기부터 퇴고, 검증까지 그대로 복사해 쓸 수 있어요.2026년 7월 6일·5분 읽기
개발일지Supabase로 로그인 있는 MVP 만드는 방법: Next.js 예제Next.js와 Supabase Auth로 로그인 되는 MVP를 최소 코드로 만드는 흐름을, 혼자 개발하며 정리한 방식으로 담았어요.2026년 7월 2일·5분 읽기
제품소개플랜씨(plan-c) 금융계산기로 대출이자·원리금 비교하는 법원리금균등과 원금균등 상환이 어떻게 다른지 짚고, 플랜씨(plan-c) 금융계산기로 대출이자와 월 상환액을 비교하는 방법을 정리했어요.2026년 7월 2일·4분 읽기
프론트엔드Next.js 로그인, Supabase로 붙일 때 정리해둔 것Next.js App Router에 Supabase 인증을 붙일 때 환경변수, 클라이언트 분리, 세션 유지, RLS 순서로 정리한 실전 메모예요.2026년 7월 2일·5분 읽기
백엔드환율 API 추천과 연동 방법: 무료 API 비교부터 FastAPI 사용법까지무료 환율 API(한국수출입은행·한국은행 ECOS)를 비교해 어떤 걸 골라야 하는지 답하고, FastAPI로 연동하는 코드와 캐싱·예외 처리·통화 단위 함정까지 정리했어요.2026년 7월 2일·12분 읽기
AI 정보구글 트렌드 RSS로 매일 급상승 키워드 자동 수집하기구글 트렌드 급상승 검색어를 RSS로 받아 n8n이나 크론으로 매일 자동 수집하는 흐름을 단계별로 정리했어요.2026년 7월 2일·5분 읽기
개발일지가계부 자동화, Supabase·Notion 말고 쓸 수 있는 저장 구조 비교개인 가계부를 자동으로 정리할 때 데이터를 어디에 쌓을지, 구글 시트·Notion·Supabase·로컬 파일을 상황별로 비교해봤어요.2026년 7월 1일·4분 읽기
제품소개플랜씨(plan-c) 금융계산기로 대출 상환액·DSR 한눈에 보기대출 상환액과 DSR을 따로 계산하지 않고, 플랜씨(plan-c) 금융계산기에서 한 번에 비교하는 방법을 정리했어요.2026년 7월 1일·4분 읽기
프론트엔드Next.js에서 Claude API 연결하는 가장 쉬운 예제Next.js App Router에서 Anthropic SDK로 Claude API를 붙이는 최소 예제를 라우트 핸들러 코드와 함께 정리했어요.2026년 7월 1일·5분 읽기
AI 정보Claude로 n8n 자동화 워크플로우 만드는 법n8n의 AI Agent와 Anthropic 노드로 Claude를 연결해 반복 작업을 자동화하는 기본 흐름을 단계별로 정리했어요.2026년 7월 1일·5분 읽기
개발일지FastAPI와 Supabase로 로그인 MVP 만들기: 1인개발 실전 구조혼자 MVP를 만들 때 가장 막히는 인증과 DB 조합, FastAPI와 Supabase로 어떻게 나눠 붙이는지 실전 구조로 정리했어요.2026년 6월 30일·5분 읽기
제품소개플랜씨(plan-c) 이자 계산기, 적금·대출에 쓰는 법적금 만기 수령액부터 대출 이자까지, 플랜씨(plan-c) 이자 계산기를 실제 상황에 맞춰 쓰는 방법을 정리했어요.2026년 6월 30일·4분 읽기
프론트엔드Tailwind v4와 oklch로 1인 개발자 브랜드 색 만들기보라색 그라디언트로 도배된 'AI가 만든 듯한' 화면에서 벗어나고 싶었어요. Tailwind v4와 oklch로 차분한 브랜드 색을 잡고 라이트·다크를 한 번에 푼 방법을 정리했어요.2026년 6월 30일·4분 읽기
백엔드n8n dataTable로 외부 DB 없이 자동화 데이터 쌓기자동화에 작은 저장소가 필요할 때마다 DB를 새로 띄우긴 부담스러워요. n8n 내장 dataTable로 학습 데이터를 쌓고 다시 꺼내 쓰는 실전 패턴을 정리했어요.2026년 6월 30일·4분 읽기
AI 정보n8n으로 구글 트렌드 RSS 자동 수집하는 방법매일 손으로 트렌드를 확인하는 반복을 줄이고 싶다면, n8n 스케줄 트리거와 RSS 노드로 구글 트렌드를 자동 수집하는 흐름을 정리했어요.2026년 6월 30일·5분 읽기
개발일지블로그 홈을 참고 사이트처럼: 썸네일 중심 레이아웃과 생성형 커버색만 바꿨더니 '구성이 안 바뀌었다'는 피드백을 받았어요. 참고 사이트를 실제로 뜯어보고, 모든 글에 자동으로 붙는 생성형 커버부터 다시 만든 과정을 기록해요.2026년 6월 29일·7분 읽기
개발일지데이터 밀도 높은 리서치 콘솔을 만들며 배운 4가지근거를 인용으로 묶어 환각을 막고, 판단을 결정론적 규칙으로 바꾸고, 실행 전에 시뮬레이션을 기본값으로 두는 — 데이터가 빽빽한 대시보드를 만들며 정리한 엔지니어링 패턴이에요.2026년 6월 29일·6분 읽기
브랜딩·마케팅1인 개발자의 브랜드는 일관성에서 나와요마케팅 팀이 없는 1인 개발자에게 일관성은 그 자체로 마케팅이에요. AI 슬롭을 피하고, 참고는 베끼지 않고, 매체마다 같은 브랜드를 다른 옷으로 입히는 방법을 정리했어요.2026년 6월 29일·5분 읽기
제품소개plan-b(플랜비): 농구 동호회의 기록과 전술을 한곳에서출전 시간 계산, 경기 스탯, 전술보드, 회비까지 매주 반복하던 동호회 운영을 한 화면으로 모았어요. 플랜비가 실제로 어떤 걸 자동으로 해주는지 정리했어요.2026년 6월 29일·5분 읽기
제품소개plan-c(플랜씨): 로그인 없이 쓰는 무료 금융 계산기대출·월급·이자·저축 목표를 로그인 없이 숫자만 넣으면 바로 계산해줘요. 2026년 한국 세금과 4대보험까지 자동으로 반영하는 무료 금융 계산기 플랜씨를 소개해요.2026년 6월 29일·5분 읽기
제품소개plan-t(플랜티): 대화가 끝나면 일기가 되는 한국어 AI 친구ChatGPT는 매번 리셋되지만, 플랜티는 당신의 하루를 기억해요. 채팅하듯 이야기하면 그날의 대화가 자동으로 일기가 되는 한국어 AI 친구를 만들고 있어요.2026년 6월 29일·5분 읽기
프론트엔드Next.js로 랜딩페이지 만들기, 배포까지 30분 실전 가이드Next.js로 랜딩페이지를 만들고 깃허브 연동으로 배포해 도메인까지 연결하는 흐름을 단계별로 정리했어요.2026년 6월 29일·5분 읽기
백엔드FastAPI와 Supabase로 만드는 로그인 예제FastAPI 백엔드에서 Supabase 인증으로 이메일 로그인을 붙이는 최소 예제를 따라 만들어봐요.2026년 6월 29일·4분 읽기
AI 정보n8n으로 블로그 글 자동 발행하기: Claude와 Next.js 연동 예시n8n 스케줄 트리거로 Claude를 호출해 글을 쓰고, MDX로 만들어 Next.js 블로그에 올리는 흐름을 단계별로 정리했어요.2026년 6월 29일·5분 읽기
개발일지트위터 API가 막혔을 때 Bluesky로 우회한 기록 — 1인 개발자의 n8n 마케팅 자동화트위터 syndication API가 429로 막혀서 Bluesky AT Protocol 공개 API로 우회해, 인디 빌더 5명 158개 글의 engagement를 실측 수집한 기록이에요. n8n 마케팅 자동화와 Claude·Codex 분담 워크플로우도 함께 정리했어요.2026년 6월 27일·9분 읽기
브랜딩·마케팅인디 빌더 158개 글을 분석해보니 — 열린 질문형이 댓글을 만든다 (벤치마크 기록)인디 빌더 5명의 Bluesky 글 158개에 좋아요·댓글 수를 붙여 분석해보니, 가장 많은 대화를 만든 건 화려한 글이 아니라 답하기 쉬운 질문 한 줄이었어요.2026년 6월 27일·9분 읽기
제품소개plan-b: 농구 동호회 운영, 코트 밖 반복을 줄이는 도구농구 동호회 운영에서 시간이 드는 건 경기보다 멤버·회비·기록 같은 코트 밖 반복이에요. plan-b가 그중 무엇을 줄이려는지, 무엇은 아직 아닌지 솔직하게 적었어요.2026년 6월 27일·5분 읽기
프론트엔드Next.js 정적 export에서 동적 기능 쓰기 — 클라이언트 컴포넌트로 조회수·좋아요·댓글 붙이기서버 없이 정적 export로 배포한 블로그에 조회수·좋아요·댓글을 붙인 방법이에요. 클라이언트 컴포넌트가 런타임에 직접 fetch하고, 실패하면 조용히 기본값으로 떨어져 본문을 먼저 지키게 했어요.2026년 6월 27일·6분 읽기
백엔드정적 블로그에 백엔드 붙이기 — Cloudflare Pages Functions + D1로 조회수·댓글·좋아요 만들기서버 없는 정적 블로그(Next.js export → Cloudflare Pages)에 조회수·좋아요·익명 댓글·방문자 통계를 붙인 방법이에요. 같은 배포에 Pages Functions와 D1만 얹어서, 따로 서버를 띄우지 않고 만들었어요.2026년 6월 27일·7분 읽기
AI 정보AI를 한 명처럼 쓰지 마세요 — Claude(손)·Codex(눈)로 역할을 나눈 1인 개발 워크플로우AI를 한 명의 만능 비서로 쓰면 빠르지만 위태로워요. Claude는 손(빠른 구현), Codex는 눈(보안·검증 리뷰)으로 역할을 나누고, 무엇을 만들지는 사람이 먼저 정하는 1인 개발 워크플로우를 실제 사례로 정리했어요.2026년 6월 27일·7분 읽기
개발일지Next.js 15 static export + Cloudflare Pages 배포 설정기Next.js 15 App Router에서 output:'export'로 정적 빌드를 만들고 Cloudflare Pages에 배포하는 과정을 정리했어요. 함정이 몇 가지 있었어요.2026년 6월 25일·3분 읽기
브랜딩·마케팅AI 슬롭 블로그의 정반대를 만들기로 했어요검색 결과를 가득 채운 AI 자동 생성 블로그들의 패턴을 분석하고, 라이프케어로그 블로그가 어떻게 차별화할 것인지 전략을 정리했어요.2026년 6월 25일·3분 읽기
프론트엔드TailwindCSS v3 → v4 마이그레이션 실전 메모tailwind.config.js가 사라지고 CSS-first 방식으로 바뀐 TailwindCSS v4 마이그레이션 과정에서 실제로 마주친 변화들을 정리했어요.2026년 6월 25일·2분 읽기
백엔드Supabase RLS 설계 시 실제로 실수한 패턴 3가지Supabase Row Level Security를 처음 설정할 때 빠지기 쉬운 함정들이에요. CREATE TABLE이 anon 권한을 자동 부여한다는 게 가장 위험했어요.2026년 6월 25일·3분 읽기
AI 정보Claude API를 앱에 붙이면서 배운 실용 팁들plan-c 앱 개발 중 Claude API를 FastAPI 백엔드에 연동하면서 실제로 경험한 팁과 주의사항을 정리했어요. 토큰 관리와 스트리밍이 핵심이었어요.2026년 6월 25일·3분 읽기
개발일지블로그 자동 발행을 launchd로 무인화한 기록 — 게이트·빌드·푸시를 하나로자체 블로그는 git push만으로 Cloudflare Pages에 배포돼요. 그 점을 이용해 거짓정보 게이트 → 빌드 → 커밋 → 푸시를 매일 자동으로 돌리는 발행 파이프라인을 launchd로 묶은 과정을 정리했어요.2026년 6월 24일·4분 읽기
브랜딩·마케팅티스토리 대신 자체 도메인 블로그를 고른 이유 — 자산이 내 쪽에 쌓이도록블로그를 플랫폼이 아니라 자체 도메인에 두기로 한 이유예요. 티스토리 Open API 종료로 자동 발행이 막힌 점, 그리고 검색·콘텐츠 자산을 내 도메인에 쌓고 싶었던 이유를 정리했어요.2026년 6월 24일·3분 읽기
제품소개plan-l: 법률 정보를 덜 막막하게 찾도록 — 만들고 있는 검색 도구법률 정보는 어디서부터 봐야 할지 막막할 때가 많아요. plan-l은 그 출발점을 조금 쉽게 만들어보려고 만들고 있는 작은 검색 도구예요. 무엇을 지향하는지, 왜 작게 시작하는지 적었어요.2026년 6월 24일·3분 읽기
프론트엔드MDX 블로그 코드블록에 라이트·다크 두 테마를 한 번에 — rehype-pretty-code정적 블로그의 코드블록을 빌드 타임에 하이라이팅하면서 라이트·다크 두 테마를 동시에 넣는 방법이에요. rehype-pretty-code와 CSS 변수를 써서 런타임 JavaScript 없이 테마를 바꾸는 구성을 정리했어요.2026년 6월 24일·3분 읽기
백엔드유료 크레딧 차감을 안전하게 — SELECT FOR UPDATE와 단일 트랜잭션동시에 들어온 요청이 같은 잔액을 읽으면 크레딧이 이중으로 차감되거나 잔액이 음수가 될 수 있어요. 행 잠금과 단일 트랜잭션으로 막는 패턴, 그리고 결제 웹훅의 멱등 처리까지 정리했어요.2026년 6월 24일·4분 읽기
AI 정보LLM을 판정자로 쓸 때 프롬프트 인젝션을 막는 법 — 신뢰 경계 긋기LLM에게 콘텐츠를 평가시킬 때, 평가 대상 안에 숨은 지시를 따라가 버리는 프롬프트 인젝션이 생길 수 있어요. 신뢰 경계를 긋고, 출력을 엄격히 강제하고, 애매하면 멈추는 fail-closed 방어를 정리했어요.2026년 6월 24일·4분 읽기
개발일지라이프케어로그 기술 블로그를 시작하며 — Next.js 16 정적 블로그 빌드 기록1인 개발 회사의 기술 블로그를 Next.js 16 + MDX 정적 사이트로 만들고 Cloudflare Pages에 올린 과정을 정리했어요. 무인 자동발행을 염두에 두고 fail-closed 발행 게이트를 넣은 이야기예요.2026년 6월 21일·3분 읽기
브랜딩·마케팅AI가 쓰는 글에 콘텐츠 헌장을 두는 이유글을 자동으로 만들수록 브랜드 신뢰는 더 쉽게 흔들려요. 날조 수치와 과장을 막는 콘텐츠 헌장을 먼저 정하고 그걸 발행 게이트로 강제한 이유를 적었어요.2026년 6월 21일·4분 읽기
제품소개라이프케어로그가 만드는 것 — 작은 도구 여러 개큰 제품 하나가 아니라, 각자 한 가지 일을 잘하는 작은 도구를 여러 개 만들고 있어요. 1인이 운영하면서 이 방식을 택한 이유를 정리했어요.2026년 6월 21일·3분 읽기
프론트엔드Next.js 16 + Tailwind v4로 정적 블로그 만들기서버 없이 돌아가는 블로그를 Next.js 16 App Router와 Tailwind v4, MDX로 만든 설정을 정리했어요. 정적 export에서 걸리기 쉬운 지점도 함께 적었어요.2026년 6월 21일·3분 읽기
백엔드추상 아키텍처를 매니지드 서비스로 — 1인 개발자의 백엔드 빌딩블록교과서의 백엔드 아키텍처 개념을, 1인 개발자가 실제로 쓰는 매니지드 서비스에 1:1로 매핑해 정리했어요. 추상 개념을 매번 다시 고민하지 않으려고요.2026년 6월 21일·4분 읽기
AI 정보AI 무인 발행에 fail-closed 게이트 달기 — 독립 평가자 3표 다수결블로그 글을 사람 없이 자동 발행하려면, 거짓정보가 그대로 나가는 걸 막는 장치가 먼저 필요해요. 독립 평가자 여러 명에게 판정을 맡기고 합의로만 통과시키는 게이트를 만든 기록이에요.2026년 6월 21일·4분 읽기