앞서 프린터 없이 정부사이트(민원24등) PDF출력하기라는 글에서 모두의 프린터를 만들게된 이유와 전신인 IP PRINTER에 대한 글을 약 7개월 전에 작성 했었는데요 .. 잊고 살았다가 시작한 이야기는 마무리 지어야 하지 않을까?? 라는 생각으로 뒷 이야기를 마저 적어봅니다.
IP PRINTER는 일반적으로 많이 사용하는 NAT를 통한 포트포워딩과 UPnP나 NATPMP등 특정 프로토콜을 통해 동적으로 포트포워딩이 가능한 라우터가 존재하는 네트워크 환경에서 PC에서 라우터로 전송한 프린트 데이터를 라우터가 다시 전송한 PC로 되돌려 주도록 구성이 가능하게 만들게 된 프로그램입니다. 한마디로 공유기를 대상으로 마치 IP프린터 인냥 인쇄데이터를 쏘고 그걸 다시 낼름 받아 먹어 보겠다 라는 생각으로 시작한 것이지요.
하지만 이 동적으로 포트포워딩을 설정 한다는 것 자체가 불특정 다수가 사용하는 공개된 라우터의 입장으론 허용되지 않는 경우가 너무 많아 다른 방향을 찾아 보게 됬습니다.
엄밀히 IP PRINTER의 개발 방향 자체도 PC한대로 구성하는게 아닌 CPU/OS등을 갖춘 공유기를 같이 물려 사용하는 방식인지라. 조금 생각의 전환이 필요한 시기 였습니다.
그러다 최근에 대부분의 사람들이 가진 것중 PC를 대체하기 가장 좋은 무언가가 떠오르더군요.
바로 스마트폰 입니다. 출력을 하는 PC와 같은 네트워크 안에만 물려 있다면 물리적으로 PC와 스마트폰은 서로 다른 장치이고 IP또한 다름으로 대부분 정부사이트에서 가상 프린터나 프린터의 포트구성에 따라 출력불가가 되는 상황을 모두 피할 수 있을 것으로 판단 되었습니다.
방향은 잡았으니 개발을 시작 합니다. 굳이 누군가에게 보고할 일도 어떤 언어 어떤 플랫폼을 할줄 안다 하여 그것을 스펙이나 경력에 올려야할 필요성도 없는지라. 편한길로 갑니다 +_+
애초에 IP PRINTER를 개발하던 시절에 파이썬으로 할지 node.js 로 할지 고민을 하다 Go로 개발하기로 하여 모두의 프린터도 Go로 진행 하였고, 스마트폰 앱은 Apache Cordova를 사용하고 Chrome 관련 플러그인을 통해 자바스크립트로 TCP/IP 서버, 클라이언트 구조를 작성하여 스마트폰 앱 자체는 2~3시간 정도에 개발이 끝난것 같네요.
단지, 애플이고 안드로이드고 앱스토어에 등록하고 하는 등의 과정을 많이 번거롭고 귀찮게 생각하는 편이라 - 이 부분은 최근에는 많이 편해졌다곤 하나 초기 앱스토어들에 앱등록하고 할때 하도 학을 띄어서 그런가 봅니다 - 앱스토어 등록이 아닌 apk 파일로 배포하기로 했었습니다.
아이폰의 경우 프로그램의 특성도 있고 설치파일을 통해 설치는 탈옥한게 아닌이상 애초에 불가능 하고, 아이폰, 맥, 전부 보유하고 있지 않아 테스트 조차 할 수 없는 상황으로 아이폰에 대한 지원은 포기 하였습니다.
그리하여 모두의 프린터의 초기 버전이 탄생하게 되었는데요.
최초 버전인 v0.1은 PC용 프로그램의 역할은 그저 PC에 설치된 지원가능한 프린터 드라이버(보통 PostScript프린터)의 포트설정등을 변경하고 출력대상의 IP를 스마트폰의 IP로 지정해주는 역할만을 해주었고. 스마트폰 앱은 PC에서 수신한 프린트 데이터를 저장하는 역할을 하였습니다. 저장된 데이터는 스마트폰의 공유기능을 통해 메일이나 카톡등으로 전송하고 PC에서 Ghostscript 또는 Gsview 등의 뷰어를 통해 PDF나 이미지로 변경을 할 수 있었습니다.
초기 버전의 모두의 프린터는 스마트폰으로 인쇄데이터를 받아 수동으로 PC로 전송하고 PC에서도 PDF등으로의 변환 또한 다른 프로그램을 이용하여야 하는등 많은 불편함이 있었던 것도 사실이지만 그 당시에도 몇일 씩 밤을 새며 어떻게서든 증명서류를 전자문서화 해야하는 분들에겐 나름 가뭄의 단비가 되어 주었습니다.
이 모두의 프린터 v0.1 버전을 공개한 후 카톡 오픈대화방을 열고 이 대화방에 들어와 도움을 청하신 분들의 문제를 해결해 주다보니 조금씩 발전하여 2018년 8월 기준 v0.76 버전까지 오게 되었습니다. 그러다 보니 카톡 대화방에 들어오셔서 도움받으시고 나가실 법도 한데 길게는 1년가까이 반년이상을 대화방에 남아서 제가 부재중일때 또 다른 어려움을 격는 분들을 밤낮없이 도와주시는 여러 사용자분들이 생겨 나게 되었지요.
다음 글에서는 이후 업데이트 해온 과정에 대한 글을 적어보도록 하겠습니다.
유익한 내용이네요 잘보고 갑니다 @fafajun님 자주 소통해요~
#kr-dev 태그가 어울릴 것 같습니다 ^^