- 발행일
인증이 확정되기 전에 쏜 요청 — 북마크가 가끔 초기화되던 이유
여행지 목록에서 상세로 들어가면 북마크가 가끔 빈 상태로 보였습니다. isAuthenticated가 null에서 확정되기 전에 요청이 나갔고, 같은 데이터가 캐시 키 두 개로 갈려 있었어요. 고치긴 했는데 지금 다시 보니 원인 진단과 처방이 어긋나 있고 캐시를 통째로 끄는 코드가 남았습니다.
여행지 목록에서 상세로 들어가면 북마크가 가끔 빈 상태로 보였습니다. isAuthenticated가 null에서 확정되기 전에 요청이 나갔고, 같은 데이터가 캐시 키 두 개로 갈려 있었어요. 고치긴 했는데 지금 다시 보니 원인 진단과 처방이 어긋나 있고 캐시를 통째로 끄는 코드가 남았습니다.
워크플로 관리 화면의 인라인 폼셋 12쌍이 전부 can_delete=False였습니다. 5월에 jquery-formset 라이브러리를 넣으면서 삭제를 켰고, 두 달 뒤 항목을 지우고 다시 추가하면 저장이 어긋나서 폼 인덱스를 직접 다시 매기는 함수를 짰어요. 같은 날 저녁에 숨긴 행을 세지 않던 버그를 잡고 시나리오 20개를 커밋 메시지에 남겼습니다. 그 함수는 1년이 지난 지금도 그대로 돌고 있어요.
속성을 편집하고 저장하면 트리 화면이 늘 첫 노드로 돌아갔습니다. 성공 주소에 ?selected_node=를 붙여 편집하던 클래스로 돌아오게 했어요. 이틀 뒤 저녁에 setTimeout과 no-cache 헤더를 넣었다가 두 시간 뒤 전부 지우고 페이지 새로고침으로 바꿨습니다. 그때 만든 파라미터 이름이 1년 뒤에도 그대로 쓰입니다.
입사 두 달째에 메타데이터 클래스 트리를 처음 만들었습니다. 템플릿 하나에 스크립트 550줄을 넣었고, 공개 화면에는 같은 것을 한 벌 더 넣었어요. 아흐레 뒤 스크립트를 파일로 빼면서 노드를 고를 때마다 페이지를 통째로 이동하게 만들었다가, 다음날 그걸 걷어내고 트리를 목록 화면으로 옮겼습니다. 첫 판이 어디서 무너졌는지를 커밋 셋으로 되짚습니다.
분류체계 그래프 화면이 뿌리 노드를 이름으로 찾고 있었습니다. 트리 JSON의 id는 enumerate 인덱스였고, 주소에는 이름이 실렸어요. 둘 다 pk로 바꿨는데, 함수 계약을 바꾸면서 호출하는 쪽 두 곳을 놓쳐 15분 동안 화면이 깨졌습니다. 그날은 "이름보다 pk"까지만 알았고, pk도 밀린다는 건 1년 뒤에 알았습니다.