← 01 THINK어떻게 생각하는가
아무도 안 고쳤는데 설정이 바뀌어 있었습니다
방문자 수를 어디로 보낼지 정하는 값이 제 코드가 아니라 관리 화면에 있습니다. 제 손을 안 거치는 값은 바뀌어도 아무 신호가 없습니다.
이 쪽은 원문을 쉬운 말로 다시 쓴 판입니다. 저자가 쓴 문장은 원문 쪽에 있습니다.
이 사이트에는 방문자 수를 세는 작은 코드가 모든 페이지에 들어 있습니다. 그 안에는 "집계 결과를 어디로 보낼지" 를 정하는 값이 하나 있습니다.
어느 날 그 값이 바뀌어 있었습니다. 저는 고친 적이 없습니다.
왜 그런 일이 가능했나
그 값을 정하는 곳이 제 코드가 아니라 서비스 관리 화면이었습니다.
제 코드는 바뀔 때마다 누가·언제·무엇을 바꿨는지가 기록으로 남습니다. 관리 화면의 설정에는 그런 기록이 없습니다. 그래서 바뀌어도 아무 신호가 없고, 알아챈 뒤에도 왜 바뀌었는지 물어볼 데가 없습니다.
그런데 그건 일부러 그렇게 둔 것입니다
이 사이트는 "허락한 곳 말고는 아무 데도 접속하지 않는다" 는 보안 규칙을 걸어 두고 있습니다. 허락한 곳은 딱 하나입니다.
집계 코드를 제가 직접 넣으면, 집계 결과가 나가는 주소를 하나 더 허락해야 합니다. 그래서 지금 방식을 씁니다. 보안 규칙을 한 칸이라도 좁게 두려고 고른 것입니다.
공짜로 좁은 게 아닙니다. 규칙을 좁게 유지한 값이, 설정 하나가 제 기록 밖에 있다는 것입니다.
관리 화면에만 있는 것들
같은 자리에 몇 개 더 있습니다. 주소를 정리해서 보내는 규칙, 통계 계정 연결, 그 연결이 어느 계정을 가리키는지.
제 코드에는 이 셋이 "이렇게 하면 된다" 는 방법으로만 적혀 있습니다. 지금 그렇게 되어 있는지는 적혀 있지 않습니다. 자동 검사로 잡을 수도 없습니다 — 검사기는 제 코드를 읽지, 관리 화면을 읽지 못합니다.
그래서 여기서 할 수 있는 건 답을 적는 게 아니라 확인하는 방법을 적어 두는 것입니다.
같은 일이 그 주에 두 번 더 있었습니다
손으로 받아야 하는 자료. 지도를 더 잘게 쪼개려면 자료가 하나 필요한데, 제공하는 곳이 로그인을 요구합니다. 계정 만들기는 프로그램이 할 일이 아닙니다.
그래서 목록에서 지우는 대신 "못 받는 자료" 목록에 옮겼습니다. 이제 프로그램을 돌릴 때마다 "이 파일은 없다 / 손으로 받아서 여기에 두면 된다 / 자동으로 못 받는 이유는 이것이다" 를 알려 줍니다.
지우면 6개월 뒤에 같은 조사를 다시 합니다. 이미 두 번 했습니다. 첫 번째는 대화로만 하고 어디에도 안 적어서 잃어버렸습니다.
실패해서 되돌린 정리. 색 목록이 코드 두 곳에 똑같이 적혀 있어서 한 번만 쓰도록 정리했습니다. 보통은 이러면 파일이 작아집니다.
105 바이트 커졌습니다. 압축이 이미 반복되는 부분을 알아서 접고 있었는데, 정리하면서 생긴 새 이름 아홉 개가 압축이 잘 되던 반복을 압축 안 되는 새 문자로 바꿔 버렸습니다. 되돌리고, 그 숫자를 파일에 적어 뒀습니다.
안 적어 두면 다음에 또 같은 정리를 합니다. 중복이 정리보다 싸다는 건 아무도 미리 짐작할 수 없습니다.
남는 이야기
관리 화면의 스위치 하나가 실제 페이지를 바꿀 수 있다면, 그건 설정이 아니라 코드로 다뤄야 합니다.
가져올 수 없는 것은, 최소한 "어떻게 확인하는지" 한 줄이라도 남겨 둡니다. 없는 것과 되돌린 것도 스스로 말하게 만듭니다.