혼자 만들고 운영한 기록을 코드 중심으로 남긴다.

자동화 파이프라인, 작은 웹앱, 페이퍼 트레이딩 실험, AI 보조 개발을 과장 없이 기록한다. 스크린샷, 명령어, 실패 노트가 본문이다.

먼저 볼 글

추천
비즈니스 현실

내 병목은 한 번도 제품이 아니었다

하루 만에 SaaS를 짓고, 하루 만에 접었다. 네 번의 리서치가 전부 같은 벽을 가리켰다 — 그리고 도그푸딩이 내가 만든 기능을 죽였다.

9 분 읽기
script -> edge-tts -> caption sync -> ffmpeg

최신 글

전체 글
왼쪽은 신선도 게이트가 검사하는 조건(가격 0 또는 나이 초과)만 걸러내고 나머지는 신뢰하는 상태, 오른쪽은 다섯 세션 연속 73.23이라는 정상 모양의 옛 값이 들어와 주문이 전부 미체결로 취소된 상태
퀀트 / 트레이딩8 분 읽기

고쳤던 버그가 8일을 더 살았습니다 — 게이트가 0만 잡고 있었거든요

페이퍼 봇이 매일 주문을 냈는데 8일간 한 주도 사지 못했습니다. 지정가가 다섯 세션 연속 73.23으로 굳어 있었고, 5일 전에 넣은 신선도 게이트는 한 번도 발화하지 않았습니다. 시세가 0으로 오지 않고 '옛 값'으로 왔기 때문입니다.

#quant-trading#reality-check#first-principles#automation-pipeline
왼쪽은 서울 엣지에서 미국 동부 함수까지 갔다 오며 2.2초가 걸리는 상태, 오른쪽은 서울 엣지가 미리 만들어둔 페이지를 0.13초에 내주는 상태
배포와 인프라11 분 읽기

제 블로그는 방문자마다 태평양을 건너고 있었습니다 — 원인은 `<html lang>` 한 줄

무료 한도 75% 경고가 왔습니다. 엣지 헤더를 훑어 범인을 지목했는데, 대시보드를 보니 제가 지목한 앱은 목록에 없었습니다. 진짜 원인은 루트 레이아웃의 headers() 한 번이었고, 그것 때문에 239개 페이지가 요청마다 미국에서 렌더되고 있었습니다.

#shipping-infra#gotchas#reality-check#first-principles
왼쪽은 지연으로 표시된 세 행이 전부 실제 스케줄과 맞지 않는 기대 주기 설정 때문에 생긴 오탐이라는 것, 오른쪽은 무산출로 표시돼 영구히 보이지 않던 세 행 중 하나가 토큰 갱신을 조용히 건너뛰고 있었다는 것
자동화 파이프라인9 분 읽기

감시판의 빨간불 3개가 전부 오탐이었고, 진짜 사각은 회색 칸이었습니다

봇 감시판이 지연 3건을 띄웠습니다. 셋 다 거짓이었습니다 — 기대 주기가 실제 스케줄과 달랐을 뿐입니다. 그런데 같은 화면의 '무산출' 3칸은 아무도 안 보고 있었고, 그중 하나는 60일짜리 토큰 갱신을 통째로 건너뛰고 있었습니다.

#automation-pipeline#monitoring#reality-check#first-principles
왼쪽 패널은 파이프라인이 매일 계산하는 성과 점수로 띠 주제가 1390으로 1위, 오른쪽 패널은 실제 발행 결과로 상위 2편이 띠 주제인데도 궁합 트랙은 MBTI만 내보내고 있음
자동화 파이프라인10 분 읽기

파이프라인은 이긴 주제를 알고 있었습니다 — 그리고 절반을 지는 주제에 썼습니다

쇼츠 자동 생성 봇은 매일 성과 점수를 계산합니다. 1위가 2위의 4배였습니다. 그런데 트랙 하나가 그 점수를 읽지 않고 하드코딩된 순서대로 돌고 있었습니다. 한국어·영어는 몇 달치 분량을 지는 주제에 쓸 예정이었습니다.

#automation-pipeline#distribution#first-principles#reality-check
왼쪽 패널은 내가 고객에게 보낸 답변 - 하루 한 건, 설계상 그렇다, 다시 저장하면 교체된다, 이 앱은 맞지 않는다. 오른쪽 패널은 코드가 실제로 한 일 - 폼이 모든 증상을 0으로 초기화하고 하루 유니크 행에 upsert 해서 아침의 hot_flash 3·sleep 4가 저녁에 hot_flash 0·sleep 3으로 바뀌었으며 스트릭은 초록불로 남았다
비즈니스 현실14 분 읽기

제가 고객에게 "설계상 그렇습니다"라고 답했고, 그건 데이터 손실이었습니다

환불 요청에 "하루 한 건이 설계입니다"라고 답했습니다. 코드를 열어보니 설계가 아니라 버그였습니다. 체크인 화면이 항상 빈 상태로 열려서, 저녁에 저장하면 아침에 기록한 값 위에 0을 덮어쓰고 있었습니다. 스트릭은 계속 초록불이었습니다.

#support#data-loss#postgres#reality-check
왼쪽 패널은 티켓이 지목한 결제 경로가 charge·receipt·entitlement·webhook 전부 OK였음을, 오른쪽 패널은 가입 트리거가 (id, stage) 행을 먼저 만들어 앱이 row != nil을 온보딩 완료로 읽었고 가입자 651명 중 646명의 selected_symptoms가 빈 배열이었음을 보여준다
배포와 인프라18 분 읽기

"돈은 빠져나갔는데 앱이 비어 있어요" — 결제는 처음부터 문제가 아니었습니다

구독자가 앱이 비어 있다고 신고했습니다. 결제·영수증·권한은 전부 정상이었습니다. 원인은 가입 트리거가 만든 '완성처럼 보이는 빈 행'과 앱의 `!= nil` 한 줄이었습니다. 실측 결과 가입자 651명 중 646명이 온보딩을 건너뛴 상태였습니다.

#supabase#postgres#onboarding#reality-check