파이썬 게릴라 세미나 다시 시작

그동안 침체되어 있었던 파이썬마을을 다시 띄워보는 게릴라 세미나를 다시 시작했습니다.~ 으흐흐. 주제는 “이터레이터와 제너레이터” 였는데, 사실 핑계이고 그냥 한번 모여보자는 그런 것이었죠. 흐흐 생각보다 많은 분들이 와 주셔서 정말 재미있었습니다.

0404-pysem.jpg

에헤헤. 세미나를 참석 못한 분들을 위해서 자료 공개.

다음번 세미나는 더욱 살떨리는 주제로 재미있는 모임 했으면 좋겠습니다. :)

Psyco구조, 레밍으로 가르쳐주마!

[WWW]ACCU 2004 컨퍼런스에서 Armin Rigo씨가 발표한 프리젠테이션이 엄청난 반향을 일으키고 있습니다. 그래 파이썬 프로그래머라면, 프리젠테이션이 이정도는 해야하는건가!

0404-psyco.png

화면이 뭔가 좀 이상하죠? 바로 [WWW]PyGame으로 애니메이션 프리젠테이션을 만든 것! 시작하면 Rigo Production로고가 나오면서;; 레밍이 무턱대고 걸어가면서 걸어가다가 풍 빠지는데, Penty(Pentium assembly얘기 일까요?)는 그냥 무식하고 경로대로 걸어가다가 크래쉬난다고 그럽니다. 그 뒤에 보글보글이랑 높은 레벨에 나오는 귀신이랑 캐릭터가 퐁퐁 뛰어다니면서 소스가 1줄 1줄 진행될 때마다 CPy와 Psyco등이 각각 내부적으로 어떤 일이 있는지 자세히 알려줍니다.

으흐. 그동안 평범하고 정적인 프리젠테이션으로 알아보기도 힘든 발표를 늘 하고 있었는데, 이렇게 애니메이션으로 설명하니까, 머리에도 쏙쏙 들어오고 진짜 최고입니다. 파이썬이 아니라면 어느 커뮤니티에서 이런 시연을 볼 수 있을까요. ^.^ 저도 이제 pygame을 열심히 배워서;; 다음 프리젠테이션에는 꼭;; Armin도 사실 그동안 많이 psyco에 대해 설명을 해 봤지만, 이번에 최초로 청중들이 이해했다는군요;; 크흐;;

여기서 볼 수 있습니다: http://psyco.sourceforge.net/

libjit

오늘 python-dev에 어떤 사람이 libjit얘기를 올려서 구경해 봤습니다.

[WWW]libjit[WWW]GNU lightning하고 비슷한 JIT 라이브러리인데, DotGNU프로젝트로 유명한 Southern Storm에서 만들었습니다. 대충 내용을 살펴보니 lightning이 몇년동안 열심히 만들어 봐야 아주 기초적인 매크로를 이용한 1:1 번역밖에 못하고 있는 반면에, libjit는 코드 최적화, 레지스터 자동 배치, 코드 캐쉬 지원, 동적 재배치 지원, 지원하지 않는 머신에서 인터프리터로 폴백 지원 등등 기본적인 JIT 기능은 다 갖추었습니다. +_+ 그런데, lightning은 완전히 매크로에 인라인 어셈블로 거의 다 처리되고 있는 반면에, libjit은 C++로 내부적으로 구현이 되어있어서, 어느정도 확장성도 있어 보이는군요. lightning도 뭐 물론 나름대로 간단해서 포팅이 아주 쉽다는 장점이 있지만, libjit의 등장으로 좀 “빛”을 잃지 않았나 싶군요. 크크.

그런데, libjit은 GPL로 선언되어있기 때문에, 파이썬에서는 못 씁니다. 으흐;; 뭐 psyco처럼 외부 jit을 libjit기반으로 만드는 것 정도는 괜찮을 듯도 싶습니다. 다음에 시간날 때 좀 더 자세히 갖고 놀아 봐야징 =3

포트는 일단 만들어 뒀는데, 지금 프리즈 기간이라 넣지 못했으니 설치해보고 싶으신 분은 [WWW]포트 shar을 받으셔서 설치해 보세요~

2004 총선 야사

집에 배달된 당보를 보다가 재미있는게 있어서.. :)

“””

부유세 ‘딴지’ 퇴치법

한나라당, 열린우리당 후보와 치열한 3파전을 펼쳤던 거제의 나양주 후보. 한 방송토론에서였다. 나양주 후보 공격에 나선 열린우리당 장상훈 후보. “부유세를 걷으면 부자들이 다 외국에 나갈 겁니다.” 그러나, 나 후보는 느닷없이 한나라당 김기춘 후보를 바라보며 이렇게 받아쳤는데. “김기춘 후보님, 세금 몇푼 더 걷는다고 외국에 나가실랍니까?” 재산이 수십억대에 이르는 한나라당 김기춘 후보는 그저 황당한 표정.

“””

“””

민중

한 방송토론에서 열린우리당 김재홍 후보가 무심코 ‘민중’이란 단어를 사용해 주변 사람들을 깜짝 놀라게 했는데, 이에 자민련 유운영 후보(대변인) 옳다구나 하며 색깔 공격. “이것 봐라. 열린 우리당이 친북반미세력임에 만천하에 들어났다.” 그러자 옆에서 듣고 있던 민주노동당 김종철 대변인 왈. “민중이란 단어는 5공 때도 썼어요.” “어디서, 어떻게요?” “경찰서 앞에 ‘민중의 지팡이’라고 써 있잖아요.” “그 민중과 이 민중은 달라요.” “한자도 똑같은데요?” 자민련 유 후보 더 이상 말을 잇지 못하고 침묵.

“””

PEP309 Partial 구현

업동씨 결혼식갔다가 와서 시간이 좀 남아서 [PEP]PEP309에 제출된 다른 언어의 “curry” 함수를 훔쳐온 아이디어, partial을 한번 구현해 봤습니다. :) 요즘 회사에서 HTML그리기 등등 잡무만 했더니 집에서 생산력이 아주 높아져서.. 언젠가 Ken Thompson씨던가가 말씀하셨듯, 역시 회사에서 잡무가 늘어날 때가 오히려 창의적 성취는 늘어나는 묘한 관계가 있는건지도요 -.-a

partial은 nohmad님의 말씀에 따르면 C#에도 partial이란게 있는데, 여기의 partial과는 좀 다른 버추어 메쏘드 만으로 이뤄지는 클래스 비스무리한 것을 뜻하는 키워드라는군요.. PEP309의 partial은 함수 호출의 일부만을 미리 정의해서 callable object로 만들어주는, anonfunc나 operator.itemgetter랑 약간 비슷한 류의 도구입니다. 예를 들면

요런 식으로, partial의 첫번째 인자는 함수이고, 두번째부터는 인자랑, 키워드 인자들이 들어갑니다. 그러면, 그 인자들이 함수에 나중에 적용되게 되는데, sorted의 원래 reverse 키워드의 기본 값이 False인데, 요렇게 True로 바꾼 것을 쉽게 만들 수 있겠죠~

partial은 타입 인자가 fn, args, kw 세개가 있는데, 셋을 만들고 나서 바꿀 수도 있습니다. 예를 들면,

믓흥믓흥. 뒷 인자를 못 바꾸는 약간 불편한 것은 있지만, 그래도 anonfunc에 비하면 논리적, 설게적으로 아주 깔끔하고 좋은 느낌입니다. +_+

패치는 [WWW]요기에 제출했습니다.

파이썬 인터프리터에서 인코딩 지원

파이썬 2.3에서는 본격적으로 소스코드 인코딩을 지원하기 시작해서 이제 소스코드 안에서도 u’한글’ 이런식으로 C 처럼 한글을 유니코드로 바로 쓸 수 있게 되었습니다. 그런데, 인터랙티브 인터프리터 환경에서는 무조건 ISO-8859-1로 인식해 버리는 바람에, euc-kr 터미날에서는 이런 사태가 벌어집니다.

분명히 stdin의 인코딩은 euckr인데! 그걸 갈갈이 쪼개서 iso-8859-1로 넣어버리는 것인데, 사실 50명이 넘는 파이썬 개발자 중에서 iso-8859-1로 쓸 수 없는 모국어를 가진 사람은 2~3명밖에 안 되는 터라, 아무도 사실을 모르고 2.3에서 넘어간 것 같기도 하고.. (사실 iso-8859-1을 변수이름에 쓸 수 있는 꽁수도 있습니다. 흑흑 -.-…)

하여간, 그래서 이 문제를 해결하기 위해서 좀 삽질을 해 본 결과, 인터랙티브 인터프리터는 1줄씩 Parser/tokenizer.c의 tok_nextc함수에서 tok->prompt가 != NULL일 경우에 들어가는 루프에서 처리되는데, 파일에서 소스를 읽는 경우는 StreamReader로 처리하고 있는 반면에, 프롬프트에서 읽을 때는 전혀 디코딩 처리를 안 하고 있어서 결국은 iso-8859-1로 하고 있는건데, 일단 decode->encode하도록 약간 수정을 해서 [WWW]트래커를 제출했습니다. 소스 파일에서 읽을 때는 Stream으로 읽은데 반해, 프롬프트에서 읽을 때는 조각 조각 디코드, 인코드를 하도록 했기 때문에, hzgb같은 행간 시퀀스가 있는 경우에는 완전한 지원이 불가능하지만, 사실상 그런 인코딩을 터미날에서 쓰는 사람은 없다고 봐도 괜찮다는 판단으로 그냥 저렇게 만들었습니다. -ㅇ-; (hzgb를 대체 어떻게 지원하지!;;)

아직 리뷰는 안 되었으니, 혹시 2.4 쓰고 계신 분들은 [WWW]패치를 받으셔서 한번 테스트해봐 주세요 :) (처음 테스트를 도와주신 nohmad님께 감사~)

JBH 죽어랏~

방금 한 20분 동안 openlook.org를 비롯한 bbs.python.or.kr 등 패밀리 사이트가 우루루 다 느려서 접속이 안 됐었습니다. 그 이유는 모 KIDC에서 호스팅하고 있는 스팸업체로 보이는 곳에서 “JBH Agent 2.0″라는 에이전트로 거의 초당 100개 이상 우루루 CGI를 호출하는 바람에, 리소스를 다 먹고 스왑을 거듭하고 있는 것이었습니다. 아니 이런 십장생이!!

그래서, 버벅대는 screen에 잽싸게 sudo killall httpd를 하고 한 5분을 기다리니 드디어 어느정도 잡히고 원상복구가 됐습니다. 우어어어.. 그런데 다시 띄우면 또 그놈이 들어와서 난리를 칠테니.. 찝찝해서, 아파치에서 막는 방법이 없을까 [Google]JBH Agent로 구글을 찾아 봤습니다. 허허.. 근데, 첫번째가 JBH Agent를 막는 스팸 필터 룰이군요..;; 아무래도 이름이 한국 사람 같은데.. 그래 세계적으로 유명해 지는 방법에는 여러가지가 있구나 하는 생각이 –;;

그래서 결론은.. 다음 룰을 추가해 줬습니다.

혹시 스팸 크롤러들 때매 고생 많이 하신 분들은 다들 부디 ㅠ.ㅠ

GNOME 2.6.1

그동안 딸리는 하드웨어 핑계로 1년 전부터 XFce를 쭉 써 왔었는데, 우연히 rhythmbox깔다가 덩달아 깔리는 nautilus를 실행해 보고서는 깊은 인상을 받아서 그래 까는 김에 그놈을 다 깔아보자 하는 생각으로.. (사실은 gnome-session-daemon과 xfce-mcs-daemon이 충돌해서 같이 안 뜨는 문제때매 –; ) 그놈 2.6.1 기본 세트를 다 깔고 말았습니다.

설치하는데는 한 4시간 정도 걸린 것 같은데, 컴파일 해놓고 여기저기 밥먹고 회의하고 오니 다 끝나 있더군요. ^^; 역시 대형 포트는 쓰는 사람에게 삶의 여유를 주는~~ (..)

헉. 그런데, 옛날에 그렇게 느리던 그놈이 더이상 옛날의 그놈이 아닌 것입니다. 애니메이션 효과때문인지, 오히려 XFce보다 2배는 더 빨라 보이는.. 특히 gnome-terminal의 경우에는 XFce에서 띄우면 마우스로 드래그할 때 꽤 버벅대면서 선택이 되는데, 그놈에서는 전혀 문제가 없군요.. 역시 나만 세상을 모르고 살았구나 하는 슬픔이.. 흑흑. => [WWW]그놈 2.6.1에서 잠시 찍은 스크린샷~

아. 그런데, 뭔가 하나 발견하고 유용하게 쓰고 있는 기능이 있습니다. 와와 바로 강제 휴식시간 기능.. 흐흐. HHK를 쓸때야 팔이 아파서 60분마다 쉬게 되지만, 아론 키보드를 쓸 때는 팔이 안 아파서 안쉬게 되는 바람에 눈이 막 침침해지는데, 강제로 60분마다 3분씩 화면을 가려버리고 키보드와 마우스를 안 먹게 만들어서 쉬게 만들어주는.. 크크.. 덕분에 어제도 60분마다 나가서 밖에 먼 곳 보면서 놀다가 들어오니까, 뭔가 눈이 금방 안 피곤해져서 역시 효과를 톡톡히 봤습니다. 60분이 되면 이렇게 뜹니다. 흐흐;

0404-gnomeforcedrest.png

정부는 국민 건강을 위해서 국민건강증진법에 전국민 그놈 사용 장려정책을 시행하라~ 시행하라~

티오레 녹차맛

0404-teaaulait.jpg

오랜만의 음료 리뷰입니다. ^^^; 요즘은 망고 음료가 한철 지났는지 새로운게 안 나와서 프흣;;

어떤 사람들은 굉장히 좋아하지만, 어떤 사람들은 비위가 안 맞을 정도로 극명하게 선호가 대비되는 음료가 바로 데자와. 저는 물론 좋아하는 편이지만, 어쩔때는 좀 맛이 쉰 것 같기도 하고.. 흐흐 안 좋아하는 분들 이해는 갔지요.

그런데, 편의점에서 녹차와 우유를 섞은 것을 발견! 헛. 이것은 .. 녹차와 우유를 섞으면 무슷 맛이 날 지 도저히 상상이 안 가서.. 내가 직접 맛보마! 하고 샀습니다. 가격은 1000원. 헛 가격이 만만찮군요..

그래서 마셔본 맛! 기대를 잔뜩하고! 으음.~ 연유맛이 아주 강하게 나는.. 녹차는 약간 폼으로 들어간 것이 아닐까 생각이 되는 맛이네요.. 흐흐;; 녹차맛이라고 생각하면 녹차맛이라고 생각하겠지만, 아니라고 생각하면 무슨 초콜렛 류가 아닐까 하는.. 성분이 원유 40%, 탈지분유 0.8%, 액상과당, 백설탕, 말토덱스트린, 녹차분말프리퍼레이션0.2% 이렇게 들어있습니다. 근데 우유맛이 홍차+우유처럼 약간 죽는 것이 아니고, 우유맛이 주가 되어 그냥 녹차는 달짝지근한 역할만 하는 그런게.. 그냥 녹차맛 초코우유에 한표!

가격에 비해서는 별로 신통찮았지만, 그런대로 맛있었습니다. :)

공짜 윈도우 컴파일러

공짜 윈도우 C/C++ 컴파일러는 대표적으로 MS Platform SDK에 들어있는 표준 컴파일러, DDK에 들어있는 드라이버 컴파일러, cygwin, MinGW, Borland C++, OpenWatcom C++ 같은 것이 있겠지만, Borland C++과 OpenWatcom은 아무래도 MS C와의 차별화때문에 완전한 호환성을 좀 피하고 있는 듯하고, cygwin은 독자적인 플랫폼 수준이기때문에, MS것과 MinGW가 선택할 수 있는 양대 도구라고 볼 수 있겠습니당.

얼마 전에 [WWW]Tim이 메일링리스트에 올렸던 좋은 소식으로 4월 14일에 [WWW]Visual C++ Toolkit 2003이 릴리즈되었다고 합니다. 그동안 MS의 무료 컴파일러들은 DDK에 있는 것을 제외하고는 전부 최적화를 지원 안 하는 표준 에디션이었는데, 이번에는 최적화를 지원하는 온전한 VC.NET 2003 호환 컴파일러란 것이 특성이네용. +_+

그런데, 써본 결과로는 안에 들어있는 툴이 cl.exe와 link.exe와 몇가지 언어 런타임 헤더, 극소수의 라이브러리 뿐이라서, 제대로 컴파일하려면 Platform SDK가 필요할 뿐만 아니라, 심지어 그걸로 모자르기도 합니다. dynamic loading이나 쓰레딩을 쓰려면 MSVCRT가 필요한데 그게 없는 것 Y.Y. 물론 implib같은 걸로 만들면 된다는 awkn`n님의 말씀이 있긴 하지만, 그래도 웬만하면 기본으로 있으면 하는데 실망입니다. 흐흐. 파이썬을 한번 컴파일을 해 봤는데, rc.exe가 없어서 Platform SDK것을 쓰고, coff로 변환하는 것이나 몇가지 툴을 보완하고 msvcrt를 넣어주니까 되기는 하는군요. 흐흐 근데 아직 완전히 free 툴로만 컴파일하려면 설치하고도 한참 삽질을 해야하는게, Platform SDK의 win32부분만 떼내고 VCT를 합쳐서 컴파일 환경으로 배포해 줬으면 좋겠네용~

그리고, MSYS는 오랜만에 한번 다시 파이썬을 컴파일해 볼까하는 심정에 깔아봤는데, 오우 cygwin에 못지않은 완벽함을 보여주는군요. rxvt를 기본 터미날로 채택한 것을 비록하여 정말 멋있는 것 같습니다. 그런데, 아직 파이썬이 MinGW를 완전히 지원하지 않아서, posixmodule.c를 한 30줄 정도는 고쳐야하고 pyconfig.h도 수동으로 20줄정도는 고쳐줘서 컴파일은 끝냈는데, 아직 실행하면 pty와 관련되서인지 인터랙티브 환경이 안 뜨는군요. -ㅇ-; 좀 더 삽질해서 MinGW만으로도 컴파일될 수 있게 해봐야겠습니다~