Twisted는 그동안 말로나 들어 왔지, 무지 복잡하고 어렵다고 해서 접근도 안 하고 있었는데, 요즘 Twisted의 매력이 흠뻑 빠져서 헤엄치고 삽니다. 이히히. ㄴ(:D)ㄱ へっへっへっへっ 어푸어푸~~
Twisted MSN!
Twisted안에 twisted.protocols.msn에서 MSN 프로토콜을 지원하고 있기에, 그래 SugarCube에 MSN 지원이나 넣어볼까 하는 생각에 한번 해 봤는데, 생각보다 매뉴얼이 구현 자체 위주로만 되어있고, 사용하는 것에 대해서는 문서화가 되어있지 않는 바람에 어떻게 하는지 알기가 힘들었습니다. 게다가, 유닛테스트에도 코드가 상당히 들어있는데, 이게 네트워크 프로토콜 코드를 테스트하는 것이다 보니, 전혀 실제 사용하고는 다르게, 부분 부분을 단편적으로 가짜 입력을 넣어서 처리하는거라, 실제로 어떻게 쓰는지 상상하기가 힘들었다는.. 으흐흑. 한 3시간 삽질 끝에, MSN에서 대화하는 방법을 알아냈습니다; 원래 있는 msn_example.py에는 그냥 notification까지만 접속이 되는데 switchboard까지 해서 대답하도록 해 보았습니다. 소스
Twisted 소감은?
Twisted는 아무래도 크게 할 작정을 하고 만든거라 Medusa와는 완전히 다른 방식이었습니다. 비동기 뿐만 아니라, 쓰레드 스케줄링도 어느 정도 조절이 가능하고, deferred 모델이나, factory, interface-adapter 모델 같이 소스 코드 유지 보수성을 위한 여러가지 도구들을 많이 갖고 있어서 작은 프레임웍 위에서 직접 다 만드는 방식에 비해, 디자인 상 포용력을 넓혀서 “이 산이 아닌게벼!” 하고 느껴질 때에도 다른 산으로 쉽게 옮아갈 수 있는 능력이! 그런데, 좀 아무래도 진입 장벽이 높은 편인데, 입문용 매뉴얼 “The Evolution of Finger”가 아주 잘 쓰여 있어서 입문의 문제점도 어느 정도 극복한 것 같습니다.