이탈 분석
이탈 분석을 못 한 이유는 로그가 없어서가 아니었습니다
화면 전환을 전부 기록하고 있었는데도 사용자가 어디서 나가는지 몰랐습니다. 이탈 분석이 막힌 진짜 이유와, 만들다가 스스로 만들 뻔한 거짓말 하나를 적었습니다.
글 검색
kiniinsight
정부 제도, 생활 금융, 생산성 앱, 그리고 직접 만들면서 알게 된 것. 기억으로 안 쓰고 원문을 찾아 확인한 뒤 정리합니다.
최신 글 읽기이탈 분석
화면 전환을 전부 기록하고 있었는데도 사용자가 어디서 나가는지 몰랐습니다. 이탈 분석이 막힌 진짜 이유와, 만들다가 스스로 만들 뻔한 거짓말 하나를 적었습니다.
연속 기록도 비교도 없이, 해낸 것만 쌓이는 자기관리 앱.
Google Play구독 결제
안드로이드 앱에 구독 결제를 붙이는 전 과정을 순서대로 적었습니다. 상품 만들기부터 결제 확인까지, 막히기 쉬운 자리마다 왜 막히는지도 같이 적었습니다.
git
줄바꿈이 LF에서 CRLF로 바뀌면 git은 파일 전체가 수정됐다고 봅니다. 왜 어떤 날만 그런지, git blame이 덮인 기록을 어떻게 되찾는지 재본 값과 함께 적었습니다.
인앱결제
인앱결제 배선을 하루에 끝내려다 릴리즈가 세 번 막혔습니다. 막은 것은 전부 두 시스템 사이에서 이름이나 범위가 어긋난 자리였고, 어느 것도 원인을 가리키는 에러를 내지 않았습니다.
LLM
LLM 호출을 캐시하려다 조건이 temperature 가 아니라는 것을 알았습니다. 절반만 캐시했을 때 합계가 조용히 틀리는 것도요.
갓생 뜻
갓생 뜻으로 검색하면 스무 곳이 거의 같은 답을 내놓습니다. 그런데 검색창에 같이 딸려 나온 질문 41개를 세어보니 6개는 뜻을 묻는 게 아니었고, 그 6개에는 아무도 답하지 않고 있었습니다.
디자인 토큰
앱 소스에 하드코딩된 색 953개를 셌더니 그중 349개는 디자인 토큰에 똑같은 값이 이미 있었습니다. 자동으로 바꾸다 두 번 틀렸고, 둘 다 컴파일도 린트도 통과하는 종류였습니다.
uniq
맥에서 uniq 로 한글 중복을 세면 틀린 답이 나옵니다. 서로 다른 442줄 중 397줄이 중복으로 잡혔습니다. 원인은 로케일이고 LC_ALL=C 한 줄로 끝나지만, 그때까지 uniq 는 에러 하나 내지 않습니다.
미라클모닝
미라클모닝 자동완성 40개를 직접 재봤습니다. 여덟 개가 부작용과 실패를 묻고, 사람들이 실제로 던지는 질문은 하나로 모입니다. 잠을 줄여도 괜찮냐는 것입니다.
안드로이드
안드로이드 위젯을 네 번 연달아 깨진 채로 내보냈습니다. 미리보기는 멀쩡했고 빌드도 통과했는데, 홈 화면에 올리면 죽었습니다.
작심삼일
작심삼일 자동완성 36개를 직접 재봤습니다. 고치는 법을 찾는 검색이 3개인데, 또 실패했다는 걸 전제로 하는 검색은 5개였습니다. 상위 글은 전부 앞쪽만 답하고 있습니다.
검색 의도
월 검색량만 보고 글감 5개를 골랐는데, 상위 글을 실제로 열어보니 4개가 전혀 다른 이야기였습니다. 검색 의도를 안 읽으면 아무도 안 읽을 글을 씁니다.
음성 입력
할 일을 손으로 적는 게 귀찮아서 음성 입력을 붙였습니다. LLM 없이 정규식으로 끝냈고, 한국어를 쪼개는 규칙 하나 때문에 멀쩡한 말이 반토막 나는 함정을 만났습니다.
스터디플래너
스터디플래너라는 같은 말에 사람, 문구 상품, 앱이 섞여 나옵니다. 무엇을 찾는지 먼저 정하지 않으면 엉뚱한 것을 사거나 상담을 받게 됩니다.
firestore 인덱스
Firestore 인덱스를 배포하고 앱을 다시 켰는데 에러 문구가 한 글자도 안 바뀌어 있었습니다. 배포가 실패한 게 아니라 아직 만들어지는 중이었고, 그동안의 에러는 아예 없을 때와 완전히 같았습니다.
진입점
귀찮아서 자동으로 올라오던 바텀시트를 껐습니다. 그 자동 노출이 그 화면의 유일한 진입점이었습니다. 이틀 사이 같은 방식으로 두 개를 잃었고, 둘 다 코드는 멀쩡히 남아 있었습니다.
타입스크립트
타입스크립트 검사 결과를 grep 으로 걸러서 통과 여부를 판정하고 있었습니다. 그 grep 은 처음부터 아무것도 못 잡는 조합이었고, 실제로는 에러가 6개 있었습니다.
리액트 네이티브
3D 행성이 아이폰에서만 멈췄습니다. GL 컨텍스트도 살아있고 three.js는 매 프레임 그렸고 endFrameEXP도 초당 60번 불렸는데, 화면에는 한 픽셀도 안 올라왔습니다. 원인은 리액트 네이티브의 view flattening이었습니다.
CLAUDE.md
AI 코딩 도구의 지시 파일은 없어도 에러를 내지 않습니다. CLAUDE.md 를 점검했더니 규칙 두 개가 이 맥에만 있었고, 참조하는 파일 두 개는 아예 존재하지 않았습니다.
GLB 용량
하늘에 띄울 해와 달을 3D로 받았더니 두 개가 8MB였습니다. 모양이 복잡해서가 아니라, GLB 용량의 대부분이 앱이 쳐다보지도 않는 겉면 그림이었습니다.
turborepo
Turborepo가 FULL TURBO 62ms로 성공을 알렸는데 빌드 산출물은 0개였습니다. 원인은 outputs 설정 한 줄이었고, 그 앞에는 71일간 아무도 모른 채 멈춰 있던 빌드가 있었습니다.
리액트 네이티브 모달
안내 카드의 확인 버튼이 안 눌리고 앱이 멈춘 것처럼 보인다는 제보를 받았습니다. 리액트 네이티브 모달은 별도의 창이라, 같은 화면의 다른 요소보다 무조건 위에 뜹니다.
연속 기록
습관 앱의 연속 기록은 잘 지킬수록 무서워집니다. 30일을 쌓은 사람에게 하루 결석의 값이 30이 되기 때문입니다. 대신 무엇을 넣었는지 숫자와 함께 정리했습니다.
예약 알림
로그아웃한 계정의 할일 이름이 새 계정 잠금 화면에 그대로 떴습니다. 예약 알림은 앱이 기기에 맡겨둔 것이라, 로그인 상태와 아무 상관이 없습니다.
근로장려금 지급일
근로장려금 지급일 8월 27일은 법정 기한이 아니라 앞당긴 예정일이다. 법정 기한은 9월 말. 안 들어왔을 때 홈택스·전화로 심사진행상황 조회하는 방법, 재산 기준 2억 4천만원과 절반 감액 구간, 기한후신청까지 정리했다.
예금이자계산기
예금이자계산기에 원금·금리·기간·지급방식을 입력해 이자소득세 15.4%를 뺀 세후 실수령액을 확인하는 방법과 계산 결과가 실제 입금액과 달라지는 이유를 정리했다.