한 반년 가까이 잠수타다가(...) 돌아왔습니다.


일때문에 바쁜것도 맞긴 하지만 이걸 계속해서 의미가 있나 싶기도 하고 한동안 업데이트도 못했기에 댓글로 욕먹진 않았을까 싶기도 해서 들어오는걸 피했었네요.


여전히 안막히고 잘 사용되고 있는 것 같아 다행입니다.


MaruCrawler 1.XX 버전은 사실 실력도 부족한 상태에서 조잡하게 설계해서 만들었기 때문에 상당히 불안정하고 불편한 프로그램이었습니다.


곧 공개할 MaruCrawler 2.X 버전에서 바뀔 점을 몇가지 적고 마치겠습니다.


- Multi-thread 방식에서 Multi-process로 전환

 이 말을 이해할 사람이 몇이나 될지 모르겠지만 (컴퓨터 전공이시라면 아실 겁니다) 우선 설명드리자면, 이 MaruCrawler를 만드는데 사용한 Python이라는 언어는 Threading의 효율이 무척이나 떨어집니다. 따라서 효율적인 분산 처리를 위해서는 Multi-process를 사용하는 것이 좋습니다. 이번에 대규모로 개편하면서 공유 메모리를 사용하여 Task Queue를 만들고 이를 이용해 Multi-process를 구현했습니다.

 이로 인해 속도 및 안정성이 비약적으로 상승했습니다.


- Python 2.7에서 Python 3.6으로 언어 변경

 프로그래밍에 사용한 Python 2.7 을 Python 3.6으로 변경하였습니다. 아실 분은 아시겠지만 Python 2.7와 Python 3.6은 문법은 거의 같다시피 하지만 유니코드 지원 등 여러 모로 다른 점이 많습니다.

 이로 인해 유니코드 처리 등이 편해져 버그 발생율이 감소하였습니다.


- Logging 기능 추가

 기존에는 콘솔창에 메시지만 떠서 어떻게 저에게 제보해야 할지 모르겠다는 분들이 계셨습니다. 이번에는 Python의 logging 모듈을 이용하여 에러나 메시지 발생 시 가능한 전부 로깅하도록 하였으므로 버그가 났을 경우 대략적인 상황과 함께 logs 폴더 내부의 로그 파일을 제 메일로 보내주시면 간단하게 문제 해결에 큰 도움이 됩니다.


- 프로그램 소스 공개

지금은 아직 공개할 수 없지만 곧 프로그램을 공개하면서 프로그램 소스도 함께 공개할 예정입니다. Github을 사용하여 공개할 예정이며 라이센스는 CC BY-NC 3.0 입니다.

 라이센스에 관한 자세한 내용은 여기를 참고하시기 바랍니다.



사실 위 항목 중 마지막 소스 공개만 제외하고는 이미 전부 구현된 상태입니다. 맘같아선 더 개발하고 자고 싶지만 출근시간도 있고 하니 이만 적고 자러 가야겠네요 (._.

가능한 빨리 돌아올 수 있도록 노력하겠습니다.



* 댓글 하나하나 다 읽어보고 있습니다. 격려하고 감사 표하는 댓글 정말 힘이 됩니다. 감사합니다.

블로그 이미지

HalfElf

평범하게 직장 다니는 IT업계 종사자. 디자인은 못하더라도 개발은 하고 싶어!

,