MiniMacro TIL 3
만들어 둔 도구를 PyInstaller(파이썬 코드와 파이썬 실행기를 통째로 한 파일에 싸는 도구)로 묶어, 파이썬 없이 도는 exe 하나로 만들었다. 묶는 일 자체는 명령 한 줄인데, 붙잡은 건 그 파일을 누구에게 어떻게 건널 것인가와 안 보이는 고장을 어떻게 볼 것인가였다.
경고를 없애는 데는 값이 붙는다
묶어서 실행하니 처음 한 번은 윈도우 스마트스크린의 「알 수 없는 게시자」 경고가 뜬다. 코드 서명(만든 사람이 누구인지 보증하는 전자 서명)이 없어서다. 서명을 붙이려면 코드 서명 인증서를 사야 하고, 연 수십만 원짜리다.
개인이 혼자 쓰는 도구에는 과하다고 보고 사지 않기로 했다. 대신 안내로 넘긴다 — 받는 사람이 「추가 정보 → 실행」을 한 번 더 누르면 된다.
- 경고를 없애는 것과 안내로 넘기는 것 사이에는 돈이 있고, 그 값을 낼지는 규모가 정한다. 혼자 쓰면 한 번 누르고 마는 일이지만, 받는 사람이 늘수록 “한 번 더 결심하게 만드는 비용”도 같이 늘어난다.
- 그래서 이건 기술 선택이 아니라 배포 규모에 딸린 선택이다. 규모를 안 정한 채로는 답이 안 나온다.
편의를 위해 끈 것이 유일한 창구였다
실행 파일로 묶을 때 콘솔 창이 같이 뜨지 않게 하는 옵션이 있다. 깔끔해서 그렇게 묶었다.
그런데 실행하니 프로세스는 살아 있는데 화면에 아무것도 안 나왔다. 오류도 없었다. 없는 게 아니라 나올 곳이 없었던 것이다 — 오류를 뿌릴 콘솔을 내가 없앴으니까.
결국 콘솔이 붙은 판과, 단계마다 파일에 기록을 남기는 판(로그 파일)을 따로 묶어 돌려서야 어디까지 갔는지 알 수 있었다.
- 조용한 실패는 원인보다 “볼 방법이 없다”가 먼저 문제가 된다. 고칠 자리를 찾기 전에 볼 자리부터 만들어야 한다.
- 보기 싫어서 끈 것이 하필 문제가 생겼을 때의 유일한 창구인 경우가 있다. 무언가를 끌 때는 “이게 고장 났을 때 무엇으로 보나”를 같이 정해 두는 게 낫다.
의심받는 물건일수록 확인할 거리를 함께 줘야 한다
이 도구는 화면 전체의 키보드와 마우스를 읽고 쓴다. 하는 일 자체가 나쁜 프로그램과 겹쳐서 백신이 의심하기 좋은 모양이다.
그래서 남에게 건네려면 어떤 형태여야 하는지를 따졌다. 세 갈래가 있었다 — 소스까지 열기, 소스는 감추고 실행 파일만 내놓기, 아예 안 건네기.
가운데가 제일 나빴다. 받는 쪽 입장에서는 정체를 알 수 없는 파일 하나가 전부이고, 경고까지 뜨는데 확인할 거리가 없다. “네트워크 호출이 한 줄도 없다”고 적어 둬도 볼 방법이 없으면 그건 그냥 주장이다.
- 의심받을 만한 물건은 의심을 푸는 재료를 같이 줘야 한다. 재료를 뺀 채 믿어 달라고 하면 설득이 아니라 부탁이 된다.
- 그래서 선택지는 사실상 둘로 좁혀진다. 널리 줄 거면 열고, 안 열 거면 널리 주지 않는다. 감춘 채 널리 주는 건 양쪽의 나쁜 점만 가져간다.
- 결국 안 건네기로 정했다. 열지 못할 이유가 있어서가 아니라, 열어 가면서까지 남에게 줄 이유가 없어서다.