저번주에 개인정보포함된 문서를 분류하는 프로그램을 만들어야 한다는 하달을 받고, 회사 이전때문에 시달린 몸을 이끌고 이번주 월요일부터 작업을 시작했다.
같이 일하는 히바리스와 함께 말이다.
프로그램 설계하고 또한 일을 2명분으로 분리하고 그렇게 작업을 했다.
마지막… 개발 언어를 선정해야될 필요성을 느꼈다. 기간이 이번주 목요일까지니까 시간이 많은게 아니였다.(3일정도)
그렇다고 내가 C로 GUI 프로그래밍을 해본것도 아니고(약간의 GUI가 필요했다)
이래저래 히바리스와 고민하다가 결론은 Python으로 가자는 결론이 났다.
물론 히바리스도 나의 적극적인 설득으로 Python은 오래전에 습득해 놓은 상태였다. ^^;
그렇게 해서 기존 웹로봇의 문서필터 모듈과 개인정보 필터를 거의 손보는거 없이 사용할수 있었다.
약간의 서치 방법과 정보 저장 방법을 생각할 필요도 없이, 디렉토리 서치 방법은 처음에는 너비 우선으로 갔다가, 나중에 깊이 우선으로 바꾸었다.(이건 프로그레스 바 구현의 편리함때문이였다.)
그리고 B-Tree 검색및 저장 모듈은 Python에 있는 bsddb기반으로 모듈 활용을 하기로 했다. (bsddb는 기존의 UrlServer에서 아주 잘 사용하는 모듈이였음)
우선적으로 이번 프로그램은 프로토타입이라는 전제를 달아서 일단 구색 맞추기에 중심을 두었고, 기간 맞추는데에 열을 올렸다. 그래서 Python으로 언어를 정한것이였다.
전에 취미로 WxPython을 익혀둔걸 아주 잘 써먹었다.
바로 기본적인 GUI는 만들고 말았다.
하지만 역시나 생각지 못한게 복병으로 있었다. 바로 프로그래스바가 파일이 검색됨과 동시에 업데이트가 되어야 하는데 이벤트를 어떻게 주어야 할지 전혀 감이 오지 않았다. 공부할 시간도없고 인터넷에 자료도 없고…..
그래서 진짜 무식한 방법으로 구현을 했다. 프로그래스바 업데이트 전용 스레드를 만든것이다.(아마 실제 이벤트 구현도 이렇게 하지 않을까 한다)
그리고 파일검색도 스레드로 만들고, GUI 자신은 main 스레드가 되겠군.
역시나 무식한 방법으로 하니 잘 된다.
또한 시간이 갈 때마다 옆자리에서 탄성이 나온다.
“형! 파이썬 너무 편해요.”
오늘 연차를 내고 일을 보고 있는데 또 회사에서 전화왔다.
“형! 이거 실행모듈 만들기 너무 편해요”
그런데 실행모듈 전체가 약 5~6메가 정도 된다고 한다. (하는일에 비해 크긴 하다.)
이렇게 해서 기한내에 만들수 있었다.
역시나 언어를 시기 적절하게 쓸수 있는 유연함은 프로그래머를 정말 편하고 폭넓게 생각하게 만드는거 같다.
일이 잘되면 이 설계 조금 보강해서 C, C++로 만들면 되는거고 결과가 안좋다면 막 만든 코드 버리면 그만이다.
이런게 진정한 프로토타입이 아닐까 한다.
3일안에 프로토타입 만들기 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.