cvs2svn

얼마전에 pypy 체크아웃하면서 설치해본 뒤로, svn에서 디렉토리 지우는 거랑 파일 이름 바꿔보고는 감동해서 조금씩 써보고 있습니다. 회사 프로젝트도 하나 svn에 넣어서 해보고 있는데, 역시 파일이름 마음대로 바꿀 수 있는게 엄청나군요 크크. 아이 좋아~☆

그런데, 원래 CVS로 진행하던 프로젝트를 SVN으로 옮겨보려고 하니 히스토리를 잃어버리는게 좀 찝찝해서 찾아보니 역시 [WWW]cvs2svn이라는 게 있네요. 게다가 파이썬 스크립트! 그리고, [WWW]데비안[WWW]핑크에도 이미 패키지가!! 아 이런 중요한 소프트웨어가 프비에만 없다니! 흐느끼며 바로 포트를 만들었습니다. [FreshPorts]converters/cvs2svn 헤헤 :) 데비안은 직접 manpage까지 써서 넣긴 했는데.. 영어의 한계를 느껴서.. 포트에는 차마 man까지 써서는 못 넣고; 흐 _-_

음 그래서 프로젝트 하나를 cvs2svn으로 바꿔봤습니다. 방법은 간단하게

cvs2svn -s /svnroot/coolwater /cvsroot/coolwater/coolwater

뭐 대충 요런 식입니다. -s뒤에는 subversion 루트를 써 주고, 뒤에 CVS 루트를 써주면 됩니다. 인코딩도 지정할 수 있고 좋네요. :) 이제 앞으로 subversion만 써야지~~~ (라고는 했지만 이미 포트부터가 CVS로 넣은… ;; )

일찍 일어나기

그동안은 내가 잠이 많아서 일찍 못 일어난다고 생각했다. ;_;

오늘은 6시에 기상! (6시에 일어나면 “앞서가는 농어촌” 볼 수 있을 줄 알았는데 아무리 돌려봐도 안 한다;;)

역시 늦게 자서 일찍 못 일어났던 것인가;;

오늘부터는 일찍자고 쪼끔만 일찍 일어나야징 -ㅇ-;

오늘의 추천곡: [WWW]홀리님이 배달해주신 피구왕통키

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

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

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

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