- 발행일
등록된 적 없는 ASN.1을 파싱하고 있었다 — 표 셋의 출처를 등록값 하나로
상세 화면 세 곳의 필드명·M/O·최대 반복이 통째로 `-`로 서 있었습니다. 파서는 멀쩡했고 테스트도 34건 통과했는데, 값을 읽어 오려던 슬롯이 어느 클래스에도 등록돼 있지 않았어요. 출처를 필드 자신의 등록값으로 바꾸고, 줄 세우기도 한 곳이 정하게 모았습니다.
2021년부터 웹을 만들어 온 풀스택 개발자 임효진입니다. 프런트엔드 주력으로 시작해 지금은 필요한 데이터를 목업으로 먼저 세워 화면을 검증하고, Django API와 쿼리까지 이어 붙입니다.
상세 화면 세 곳의 필드명·M/O·최대 반복이 통째로 `-`로 서 있었습니다. 파서는 멀쩡했고 테스트도 34건 통과했는데, 값을 읽어 오려던 슬롯이 어느 클래스에도 등록돼 있지 않았어요. 출처를 필드 자신의 등록값으로 바꾸고, 줄 세우기도 한 곳이 정하게 모았습니다.
메시지가 무엇으로 이뤄졌는지 보려면 상세를 계속 타고 들어가야 했습니다. 전체를 좌→우 계층 트리 한 장으로 그리는 전용 뷰어를 만들었어요. 재귀 구조인데 쿼리는 깊이당 한 번이고, 순환은 자르되 잘랐다고 화면에 적습니다. 같은 날 오전에 넣은 디스플레이 유형 하나를 오후에 걷어낸 이야기도 같이 적었습니다.
JS를 고치고 새로고침해도 화면이 안 바뀌는데 서버를 다시 띄우면 바뀌는 증상이 있었습니다. 범인은 캐시를 깨라고 만들어 둔 add_hash 필터 자신이었어요. 입력이 전부 상수라 Jinja가 컴파일 시점에 한 번 접어버렸고, 그래서 서버 기동 시각이 URL에 굳어 있었습니다. @pass_context로 접힘을 막고 값을 파일 수정시각으로 바꿨습니다.
신청서에서 엘리먼트·프레임·메시지를 직접 쓸 수 있게 했는데, 신청 시점에 만들어 버리면 반려된 신청의 찌꺼기가 목록에 남습니다. 작성분을 JSON 초안 한 칸에 두고 승인 시점에 자식부터 순서대로 재생하게 했어요. 그러다 초안 JSON이 PostgreSQL btree 색인 상한 2704바이트에 걸려 INSERT가 통째로 실패했습니다.
토큰에 없는 색 이름은 빌드 오류가 아니라 그냥 안 칠해집니다. 그렇게 죽어 있던 클래스 142곳을 토큰으로 바꾸고, 다시 들어오면 빌드를 세우는 가드를 붙였어요. 이어서 팔레트 안에 있는 색들의 명도 대비를 재봤더니 회색 스케일이 통째로 한 칸 밝아 입력 경계와 회색 글자가 기준 미달이었습니다. 못 고치기로 한 35곳도 이유와 함께 적었습니다.