예전에 파이썬 블로그 모음집? 뭐 비슷한 길쭉한 이름으로 제공되던 서비스가 드디어, 유행에 맞춰서 플래닛 파이썬으로 도메인을 샀군요. 엄청나게 많은 피드들이 들어가 있는데, “플래닛 파이썬 한국”도 얼른 만들어서 sanxiyn님이 혼자만 좋은 것 알고 있지 못하도록 해야겠습니다. ^^^;;;
(나도 영어 공부해서 영어로 블로그 써 볼까;;;;;; )
혜식이의 열고 보는 세상
파이썬 2.4의 첫 알파 릴리스가 곧 임박했기에, 그 후에는 크게 변화가 있는 작업을 하기가 힘들어서, 우선 급한 JIS X 0213:2004 지원과 CNS 11643 (euc-tw, iso-2022-cn) 지원을 넣고, 좀 하는 김에, 용량도 줄이고 모듈 개수도 팍팍 줄이기 위해서, 기존에 파이썬 코덱 1개당, C 코덱 1개씩으로 나뉘어 있던 구조에서, 팍 줄여서 각 국가별 1 코덱 모듈로 모두 합쳐버리는 방식으로 하려고 하고 있습니다.
원래는 한국어의 경우에 euc-kr과 cp949를 분리하고, 일본어의 경우에는 JIS X 0208, JIS X 0212로 해결되는 묶음 하나, JIS X 0213을 쓰는 묶음 하나 이렇게 또 분리를 할 계획이었는데, 엊그제의 python-dev에서의 토론에서 Marc-Andre가 아무래도 그냥 합치는게 근래의 OS에서는 훨씬 낫겠다 해서, 그냥 합치기로 했습니다. 그래서 결국은 CJKCodecs 관련 모듈로 2.4에 최종적으로 들어가는 C 모듈은 현재 24개에서 _codecs_{cn,jp,kr,tw}와 _multibytecodec 이렇게 5개로 줄어들게 되었습니다.
우선, 모듈 간에 합치는 것은 ISO-2022-JP 계열 인코딩을 제외하고는 작업이 완료되었고, ISO-2022-JP 계열 인코딩 간에, 같은 모듈로 들어가는 경우 난감한 게 좀 있어서, 그것과 JIS X 0213:2004, CNS 11643 지원을 주말에 넣어서 다음 주 초에 CJKCodecs 1.1 베타1을 릴리스하려고 하고 있습니다. 파이썬에 머지하는 것은 아무래도 테스트를 좀 하자면 월말은 되어야 될 것 같군요~
이번 금요일인 6월 11일 오후 8시에 신촌에서 작은 세미나가 있습니다. => 공지 자료
관심 있으신 분들은 많이 참석해 주세요~ (11명 선착순이라 마감이 얼마 남지 않았어요~~ — 설득의 심리학에서 배운 것을 써 본다;;; )
예전에 shells/perlsh 라는 걸 보고서는 참 펄 세상은 희한한 사람들이 많구나 하고 생각했는데, 이제 pysh도 나왔군요! 본셸 스크립트를 익히기 전에 셸에서 파이썬식으로 하면 참 좋겠다 하고 생각했었는데, 이제 bash 스타일로 만들었다는 pysh에서 그 꿈이 실현된 것 입니다!
우선 이건 readline 모듈을 사용하기 때문에 행 편집면에서는 bash와 차이점이 거의 없긴 한데, 아직 컴플리션은 완벽하지는 않네요. 그리고 환경변수를 쓰는 방법이 셸과도 다르고 파이썬식도 아니고 어정쩡 해서 그게 좀 어색하기도 하고.. 하여간 파이썬 명령을 셸에서 막 섞어서 쓸 수 있다는 것은 참 매력인 듯합니다.
1 2 3 4 5 6 |
% python pysh.py Welcome to PySH! [perky@miffy /usr/home/perky]$ for i in range(3): ls i ls: 0: No such file or directory ls: 1: No such file or directory ls: 2: No such file or directory |
흐흐흐;;;
POSIX에서는 wcswidth 와 wcwidth 로 지원하고 있는, 동아시아 문자 글자폭 지원을 파이썬에도 넣었습니다. 글자폭이 지원되면 터미널이나 트레이스백 같은 고정폭 환경에서 한글이 들어갔을 때 뒤로 쭉쭉 밀리는 현상을 패치할 수 있게 되고, calendar.wdayheader 같이 지금 ISO-8859권 사용자들한테만 제대로 돌아가고 있는 함수들도 앞으로 제대로 돌아가게 바꿀 수 있게 됩니다~
추가된 메소드는 unicode.width와 unicode.iswide 두 개 입니다. unicode.width는 유니코드 문자열의 폭을 정수값으로 리턴해 주고, unicode.iswide는 str.isalpha류의 메소드들 처럼 그냥 넣으면 넓은 건지 알려줍니다.
1 2 3 4 5 6 7 8 |
>>> u'\N{HANGUL SYLLABLE HA}'.width() 2 >>> u'\N{HANGUL SYLLABLE HA}\N{LATIN CAPITAL LETTER A}'.width() 3 >>> u'\N{HANGUL SYLLABLE JWAL}'.iswide() True >>> u'\N{TELUGU SIGN CANDRABINDU}'.iswide() False |
으흐흐~~ 커밋한 뒤에 Skip이 문자열에도 같은 함수를 넣어야 하지 않겠느냐 해서, 몇가지 안을 제시하기는 했는데, Martin이 다행히 추측해서 제공하는 것은 파이썬의 도에 어긋난다고 말해 줘서 추가 안 해도 되게 되었습니다~
파이썬 해커 서상현(feanor)님께서 상상을 초월하는 작업을 통해서 Tables of Python Package를 발표하셨습니다.
c.l.py에 답글로 막 이런 삽질을 하다니 정말 대단하다. 앞으로 유지보수가 걱정된다 글이 올라올 정도인데 흐흐. 아주 흥미롭습니다. 얼른 다른 패키징 시스템에 없는 것들을 얼른 FreeBSD에 옮겨야겠네요. devel/py-freebsd 나 devel/py-kqueue 가 빠진 것은 좀 실망입니다~ 흐흐.~ (욕심쟁이 =3 =33)
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”가 아주 잘 쓰여 있어서 입문의 문제점도 어느 정도 극복한 것 같습니다.
Python 2.3.4가 원래 지난 주에 릴리스될 예정이었지만, Thomas Heller씨가 집안 사정으로 이번 주말에 릴리스될 예정인데, 미리 따라잡기 위해서 CJKPython 2.3.4작업을 했습니다. 윈도우 쓰시는 분들은 테스트 해 보시고 이상한 것 있으면 알려주세요~
이번에 작업한 곳은
원래 인터프리터에서 u’한글’쓰면 iso8859-1로 인식해버려서 이상하게 들어가는 문제를 패치해서 넣었습니다. (이 부분은 업스트림해서 지금 Martin이 리뷰하는 중입니다.)
IDLE에서도 같은 현상이 있던 문제를 고쳤습니다. 이 부분은 idlelib.PyShell에서 runsource할 때 compile에 직접 인코딩해서 던져주기 때문에, 전혀 인코딩 정보를 알 수 없어서 iso8859-1로 인식하는데 ‘# coding: encoding’ 을 앞에 붙여주도록 해버렸습니다. 흐흐
MSVCRT와 MSVCIRT등 라이브러리를 전혀 업데이트 안 하게 했습니다. 윈도우 98 사용자분들이 매우 불편해 하시길래~ 뭐 요즘이야 윈도우 업데이트 안 하면 큰일나는 세상이니 웬만큼은 업데이트가 됐겠죠~
서지원님이 구현하신 PEP289 Generator Expression이 드디어 CVS에 들어갔습니다. 이제 파이썬 CVS에서 체크 아웃하면 패치 안 하고도 바로 제너레이터 익스프레션을 쓸 수 있습니다! 와하하하.
이번에 들어간 것은 첫번째 루프 변수만 precompute하고 나머지는 레이지 바인딩을 하는 귀도가 제안한 스펙으로, 가장 헷갈리지만 가장 실용적이기는 한 방식입니다. 여전히 많은 사람들이 완전한 레이지 바인딩이나 완전한 얼리 바인딩을 하자고 외치고 있긴 하지만, 귀도는 그냥 2.4 알파 1까지는 이대로 가자고 합니다. -ㅇ-; 알파 1을 본 사람들이 뭔가 얘기하면 그 때가서 생각해 보자는군용~ 크흐흐
어쨌거나, 파이썬 2.4의 가장 주된 기능을 구현한 분과 알게 되어 영광 =3 =33
파이썬 2.3.4 RC 1이 릴리스되었습니다. 2.3.4가 정식으로 나오기 전 마지막 릴리스 후보이며, 2.3.3에서의 주요 변경사항은 대부분 버그 수정에 관한 것입니다. 제가 고친 건 전체 22개 중에 3개군요. ^^;; 정식 릴리스는 5월 20일쯤에 나올 예정이라고 합니다. 포트는 지금 퇴행 검사를 모두 통과하는 것을 확인했기 때문에, 릴리스된 당일 바로 갱신할 예정입니다.
서지원님께서 이제 훈련을 마치고 돌아오셨기 때문에, 제너레이터 익스프레션이 활발하게 진행되고 있는데요. 원래 5월 첫째주에 CVS에 들어갈 계획이었지만, 아직도 얼리-바인딩, 레이트-바인딩, 거의-레이트-바인딩 세가지 갖고 국론(?)의 분열이 엄청나게 심했기 때문에, 순조롭지만은 않은 상황입니다. 현재 저와 Raymond의 리뷰가 끝났고, 바이트코드 컴파일러 전문가인 Jeremy에게 리뷰 요청이 들어갔는데, 그 후에 아마 들어갈 수 있을 것으로 보입니다. Guido가 강력하게 만표를 행사하고 있는 의견은 거의-레이트-바인딩 인데, print >> None 의 동작에서 의 선택처럼 제일 헷갈리고 초보자들을 놀라게 만드는 선택이기는 하지만, 우선은 많은 경우 편리하게 사용할 수 있고, 자세한 동작을 신경 써야 할 정도의 코드면 심플 제너레이터로 풀어서 쓰라고 주장하고 있습니다.
devel/decompyle 이 2.3용으로 부활. 한참 2.2용으로 남아있었던 decompyle을 어느 의욕적인 해커가 2.3용으로 고쳤습니다. 원래 decompyle홈페이지에는 반영은 안 되어있는데, 고친 사람의 홈페이지에서 받을 수 있습니다.
[재미있는 파이썬 무림 소식] -1/1000은 왜 -1인가: 최근 c.l.py에 “어느 오래된 C 프로그래머”가 -1/1000이 다른 C 컴파일러들에서는 0인데 왜 파이썬에서는 -1이냐는 것에 대해서 의문을 올렸습니다. 그에 대해, C의 역사하면 뭐 거의 말 그대로 호랑이 담배피던 시절부터 생생한 현장에 있었던 Tim이 i / j의 나머지값은 반드시 0보다 크거나 같고, j보다 작다는 조건을 만족하기 위해서는 몫이 -1이고, 나머지가 999으로 나오는 것이 맞다고 “파이썬 첫 릴리스를 하기 전”에 귀도와 합의 했다는 답장을 올렸습니다. 그에 대해 다시 다른 사람들이 C99에서는 -1로 나오는 것이 표준으로 채택되어있다고 반발하자, Tim은 역시나 특유의 산신령적인 어투로, C89에서는 어느 것을 쓸 지 정해져 있지 않았고, C99가 그런 “이상한(wrong)” 방법을 채택한 것은 포트란과의 호환성을 위한 것일 뿐, 아무 이유도 없다고 했습니다.