/ tag
#삽질
#삽질 · 7건
-
배포하면 게임이 끊긴다 — 진행 중인 실시간 매치를 다음 서버로 넘기기
무중단 배포를 해도 WebSocket 게임은 안 끊긴다는 보장이 없다. 구 인스턴스가 "매치 끝날 때까지" 기다리다 10분 유예를 다 태우고 SIGKILL로 죽었다. 이관 단위를 매치 → 라운드 경계로 바꾸고, 응답 유실·중복 방 ID·연속 배포까지 막기까지 — 티츄온라인(Node.js + WebSocket, blue/green) 실제 커밋으로 정리.
-
봇이 이상한 수를 둔다 — 크래시도, 실패하는 테스트도 없는 버그 잡기
"봇이 판돈도 없는 트릭에 마이티를 버려요." 크래시가 아니라 판단 품질이라 스택트레이스도 실패하는 테스트도 없다. 이상한 수를 봇 자신의 판정 함수로 세는 스캐너, dev vs main 한 테이블 A/B, A/A 널 검증까지 — 티츄온라인 마이티 봇을 자가대국으로 디버깅한 기록. 사람 눈에 낭비로 보이던 수가 실제로는 옳아서 되돌린 이야기도.
-
Flutter 구독에 무료체험을 붙였더니 "체험 눌렀는데 즉시 결제"가 터졌다 — Android offer 선택 함정
Android는 구독 productId 하나에 offer(base plan·무료체험)마다 별도의 ProductDetails를 돌려주고, 어느 인스턴스를 PurchaseParam에 넘기느냐가 어떤 offer로 결제될지 결정한다. in_app_purchase에서 id만 맞는 첫 항목을 집으면 체험 버튼이 base plan을 결제하거나 표시 가격이 ₩0으로 뜬다. 링고루프에서 잡은 offer 선택·표시 가격 버그와 수정 코드.
-
앱 15개가 전부 업데이트 대상이 됐다? — Google Play가 하루아침에 올린 두 기준(결제 8+, target 36)
앱 하나 버그가 아니라 Google Play 기준선이 2026-08-31 자로 올라가면서 갖고 있는 앱 15개가 한꺼번에 업데이트 대상이 됐다. 인앱결제 라이브러리 8.0.0+, target API 36(Android 16) — 결제 7.1.1→9.1.0에서 실제로 깨진 API, compileSdk/AGP 버전 체인, 16KB 정렬, Scaffold 바깥 전체화면의 edge-to-edge 인셋까지 규칙찾기·티츄온라인·링고루프 실제 커밋으로 정리.
-
iOS WKWebView에서 특정 도메인만 Custom User-Agent 예외 처리하기 — 카카오 로그인 이슈
WKWebView에 Custom User-Agent를 붙였더니 accounts.kakao.com이 모바일 환경을 인식 못 해 카카오 로그인이 깨졌다. decidePolicyFor에서 UA를 바꾸면 왜 늦는지, 요청을 취소하고 재발행해 어떻게 해결했는지 정리.
-
Android WebView에서 카카오 로그인 "앱으로 열기" 버튼이 안 보일 때 — User-Agent와 스킴 점검
Chrome에선 보이는 카카오톡 "앱으로 열기" 버튼이 Android WebView에선 안 보인다. 패키지 가시성(queries)·콜백 스킴·WebView User-Agent(wv 흔적)를 점검하고, 안 되면 네이티브 카카오 SDK로 우회하는 순서 정리.
-
Docker 빌드가 매번 npm install 부터 다시 도는 문제
COPY 순서만 바꿔서 의존성 레이어를 캐싱하면 빌드가 몇 배 빨라진다. 레이어 캐시의 원리와 흔한 실수.