갑자기 생각난 파이썬 질문과 답변의 특징

파이썬 마을 질문과 답변을 보다가 갑자기 특별한 점이 하나 생각났습니다.. (몇년을 보다가 _-_)

다른 언어 질문과 답변에는 대체로, 소스를 중간에 잘라서 보여주고, 이런식으로 했는데, 안되네요.. 하고 답변도 중간에 인용을 할 때 이리 자르고 저리 자르고 해서 올라가게 되는데, 파이썬 질문과 답변 관련들은 메일링리스트/포럼, 입문자/숙련자 구분을 불문하고 질문하는 사람이나, 답변하는 사람이나 항상 인터랙티브 모드에서 명령 내린 결과와, 파이썬이 돌려준 결과값을 보여주고, 원래 자기가 원했던 것은 이런 것인데.. 하고 그 화면을 보여주는 것입니다! (지금까지는 당연하게 느껴졌던 것이 갑자기!) 오우오우. C 질문 답변을 보면 “제가요 프로그램을 짰는데 갑자기 죽어요” 이런 것 나오면 참 황당하기가 한이 없는데, 파이썬 질문 답변은 아무리 개념이 없는 사람이더라도 화면 긁어서 붙이면 해결되니까… 참 질문 답변에 최적화된 언어가 아닌가 합니다. 흐흐흐. -O-

사실 뭐 파이썬만의 특징은 아니고 인터랙티브 모드가 있으면 어디서나 다 그렇겠지만 –;; doctest 같은 곳까지 응용하고 있다는 점은 파이썬 문법을 아는 사람으로써 얼마나 뿌듯한지~~ ^___^

Twisted 2.0 드디어 릴리스

한동안 프리뷰 릴리스를 해서 개발자들의 마음을 설레게 했던 Twisted 2.0이 드디어 정식 릴리스 되었습니다!

저는 한 2년간 twisted를 해보기는 해 봐야하는데 그 엄청난 규모에 눌려서 손댔다가 흠칫 하고 물러서는 것을 반복해오다, 작년에서야 비로소 프로젝트에 본격적으로 twisted를 쓰기 시작했습니다. (현재 사용되고 있는 곳은 KT, 삼성네트웍스 네임서버들의 제어 에이전트와 중앙 관리 데몬..) 물론 이제는 twisted가 없으면 어떻게 살 수 있을지 참 모르겠군요 이히히. 자카르타 하위 프로젝트들 하나도 부럽지 않다구~ -O-;

Twisted 2.0은 메이저 업데이트인 만큼 엄청난 변화가 있었는데, 저는 주로 이런 것들이 눈에 띄는군요.

  • MIT 라이선스로 변경!! 그동안 LGPL이었던 Twisted가 전체가 모두 MIT 라이선스로 바뀌어서, 이제 원하는 마음껏 꼬아서 쓸 수 있게 되었습니다!
  • 패키지가 여러개로 분리 1.3까지만 해도 엄청난 덩치의 패키지들이 다 묶여 있어서, 쓸데없는 것 까지도 모두 들고 다녀야 했는데, 이제 Twisted에서 Twisted Web, Twisted Mail, Lore 등 거의 10개 정도의 조각들이 떨어져 나와서, Twisted 기본 패키지에는 프레임워크와 프로토콜 정도만 남게 되었습니다.
  • TCP 버퍼링, 리액터 callLater 성능 대폭 향상 그동안 좋은 reactor 베이스 API들을 두고도 성능을 오방 저해하고 있었던 버퍼링, 리액터 구현쪽이 많이 개선되어서 성능이 눈에 띄게 좋아졌습니다. (진짜로 반응 속도가 다름!! — 그동안 어떻게 했으면;;;)
  • 컴포넌트 시스템이 Zope interface로 바뀜 그동안 이상해서 별로 쓰기가 꺼려졌던 twisted.interface가 Zope의 인터페이스로 대체되었습니다. Zope 인터페이스는 아무래도 Tim, Jeremy를 비롯한 많은 파이썬 코어 해커들이 손을 대서, 유연성이나 확장성면에서는~ 🙂
  • 플러그인 시스템 지원 여러가지 종류의 파이썬 애플리케이션들이 갖고 있는 공통적인 기능 중의 하나가 플러그인인데 각자가 따로 따로 구현이 되다보니 상호운용성 같은 측면에서 안 좋은 편이었는데, 이제 twisted에서 플러그인 시스템을 지원하기 시작했습니다.
  • ctrl-c를 누르면 pdb가 이제 디버그 모드에서 ctrl-c를 누르면 pdb가 뜬다는군요.

그 외에도 Twisted 2.0의 변경사항들은 호기심이 가는 것들이 상당히 많은데, 1.0에서 deprecated됐던 함수들을 모두 제거했다고 하니, deprecate 메쏘드들을 사용한 애플리케이션들은 각오를 조금 해야겠네요.. (아이고 큰일났네 –;)

FreeBSD 포트에서는 마침 어제 5.4 릴리스를 위해서 프리즈된 관계로 업그레이드는 2주일 후에나 가능할 듯 합니다. 으흐~ 아쉬워요 파이썬 2.4.1도 못 넣고.. ㅠ.ㅠ

PyCon 2005 PSF 회의 투표

내일 워싱턴DC에서 열리는 PyCon DC 2005 Member meeting 부재자 투표를 하고 왔습니다. 매년 3월 말에 열리는 PyCon이 있을 때 마다 PSF (파이썬 소프트웨어 재단)의 회의가 있는데, 여기서 재정적인 문제나, 새로운 스폰서 회원, 추천 회원 등을 결정하고 다음 한 해동안의 PSF 보드 멤버를 투표합니다. 올해부터 부재자 투표가 새로 도입되는 바람에, 별도로 위임할 사람을 지정하는 번거로움 없이 직접 할 수 있어서 다행이었습니다. 🙂

올해의 투표건은,

  • 새로운 추천 회원으로 작년 많은 활동을 했던 2명을 추가하는 것
  • 새로운 스폰서 멤버로 ActiveGrid라는 회사를 추가하는 것
  • 작년에 투표를 안 하고 활동이 없었던 기존 회원 2명을 명예회원으로 내리는 것
  • 보드 멤버의 수를 기존 7명에서 8명으로 늘이는 것
  • 새로운 보드 멤버의 선출

가 올라왔습니다. 그런데, 뭐 대체로 반대할 만한 것도 딱히 없고.. 보드 멤버도 작년처럼 치열한 게 아니라, 8명 자리에 8명이 올라와서, 그냥 이름 반복해서 쓰기군요.. 흐흐.. 결국은 모두 yes에 8명 그대로.. 거수기 신세 Y.Y

용이사님은 올해에도 PyCon 가신다던데.. 아아 저도 이제 내년부터는 자유로운 신분으로 마음대로 PyCon도 갔다 오고 할 수 있겠네요. 올해 PyCon에서는 키노트가 마이크로소프트의 Jim Hugunin이고, 마지막날에 있는 구글의 Greg Stein의 연설도 정말 기대가 되는데 말이죠 으흐~ 아쉽당~ -O-

그래도 못 가는 사람들을 위한 논문이 공개되어 있으니까! 🙂

이제는 “award-winning” 스크립트 언어로 불러다오!

귀도가 파이썬 개발 메일링 리스트에 흥분된 어조로 메일을 보냈습니다. “Python이 졸트 어워드 2005에서 상을 받았습니다!

졸트 어워드라면 뭔가 먼나라 얘기인 줄 알고만 있었는데, 올해엔 파이썬이 워낙 좋아서~ 🙂 언어 및 개발도구 분야에서 졸트상은 아니고 그 아래로 보이는 “productivity winners”에 올랐습니다. 2001년에 YorkTown 고등학교에서 만든 Introduction to Python이라는 동영상에서 여주인공 니나가 항상 Jolt라는 음료수를 들고 다녔는데.. 니나가 파이썬을 그때 열심히 공부를 안 해서 파이썬에 상이 좀 늦게 왔나봅니다. ‘o’;;;
같은 분야의 1위는 이클립스인데.. 응 그래 끄덕끄덕;; 이클립스 정도면 1등할 만 하군요.. 으흐~

그 외의 다른 분야의 수상들을 보니까 눈에 띄는 게, 일반 출판물 분야의 “Joel on Software“나.. 충격적인 레이아웃으로 한빛미디어를 당혹케했던 Head First 씨리즈의 “Head First Patterns“같은 것도 있고.. (아직 읽어보지는 못했는데 꼭 사봐야겠어요 +_+) 비즈니스 통합/데이터 툴 분야에서 Toad for Oracle가 올라왔군용.. 그리고 재미있는게, Change/Configuration Management부분에서 subversion이 졸트상을 받았는데, productivity winner로 perforce가 올라왔습니다. 흐흐 제가 보기엔 perforce가 솔직히 좀 낫긴 하던데.. 심사위원들 눈에는 안 그랬던 모양입니다. -.-a;;

그리고 그 밑에 Test – Defect Tracking Tools 부분에 Fog Creek의 FogBugz가 졸트상을 받았으니.. Joel은 한꺼번에 상을 두개나 받아서 정말 상상만 해도 구름 위로 올라갈 것 같군요.. 🙂

이제 Python은 그냥 스크립트 언어라 부르지 말고, “award-winning” 스크립트 언어라고 불러주세요! (한국어로는 뭐라고 하지;;; 수상경력의 스크립트 언어? ;;)

py-freebsd, pyrex로 이사~

파이썬을 위한 FreeBSD 플랫폼 라이브러리/커널 인터페이스 바인딩인 py-freebsd을 그동안 버려두고 있었다가, 최근에 쓰겠다는 사람이 나타나서 좀 버전업을 해 볼까 해 보고 있습니다. 흐흐 (그동안은 쓰는 사람이 없어서 –;) 몇 년전까지만 해도 별로 신경을 안 썼던 퇴행 검사(regression test) 코드들을 요새는 뭔가 새로 추가하거나 변경만 하면 넣는 분위기가 되어서, 몇몇 개발자들이 인터페이스 테스트 코드를 작성하기는 해야하는데, C로 일일이 스크립팅하려니 귀찮기가 짝이 없어서 파이썬으로 작성할까 생각해보고 있다고 합니다. 🙂

py-freebsd는 원래 완전 쌩노가다 코드로 직접 다 작성되어 있었는데, 제공하는 함수가 30개를 넘고, 상수 200개 정도에 이제 업그레이드하면서 cd(4)나 cam(4)같은 것들을 C 확장 타입으로 만들려고 하니까 이런 중복 작업으로 점철된 노가다 작업에 회의감이 느껴져서 친도가 안 나갔었습니다. 그 뒤로 벌써 거의 3년이 지났는데, 예전에 사람들이 좋다고 칭찬하던 pyrex가 생각나서, “그래 한번 도전해 보는거야!”

우선, py-freebsd에서 가장 간단한 함수인 getosreldate(3)를 해 봤는데. 오우. 단 몇 줄에 되는군요! (다른 데서 봤지만 직접 해보니 새로운 감동이;;;;)

흐흐 물론 SWIG에 비하면 복잡한 방법이기는 하지만, 별도의 파이썬측 모듈을 만들지 않고도 섬세한 리턴값 제어나 입력값 가공이 가능하다는 점은 아주 감동적이라, 아직까지 pyrex로 안 바꾼 것이 참 후회가 되는군요 흐흐.. 그래서 py-freebsd에서 제공하고 있는 대부분의 함수들을 순조롭게 pyrex용으로 바꾸어서 거의 원래 노력형(;;) C 소스에 비해 20%정도의 양으로 줄어버렸습니다~ 🙂

pyrex가 실제 활용하고 있는 사람들에게서 피드백을 많이 받아서 진짜로 필요한 것에 대한 대처가 많은지 의외로 뭔가 하려고 딱 마음을 먹었을 때 막히는 게 없었는데, 꼽아보자면 이런 것들이 있었습니다.

  • C스타일 include가 제공된다: 사실 별 것은 아니지만.. 아무래도 FreeBSD C 라이브러리는 네임스페이스가 그냥 평면 구조이기 때문에, 모듈 안에 여러 단계를 나누기가 애매해서, 하나의 C 모듈 안에 모두 들어가는 것이 좋았는데, C 스타일 include를 제공해 줘서, 소스 길이를 적당히 유지하면서도 대형 모듈을 만들 수 있었습니다.
  • 트릭이 매뉴얼에 언급이 돼 있다;; 예를 들면 플랫폼에 따라서 크기가 일정하지 않은 자료형으로 되어있는 정수형 매크로를 다루기 위해서, cdef extern int를 from header 블럭 안에 써버리면, 사실 타입은 신경 안 쓰기 때문에, 별 문제 없이 넘어간다는 팁 같은 것이 아예 매뉴얼에 써 있어서, pyrex에서 제공해 주는 것만으로는 해결하기가 쉽지 않은 상황들을 어렵지 않게 편법을 이용해서 빠져나갈 수 있었습니다;; py-freebsd에서도 함수로 cdef extern해놓고서는 중간에 C 헤더 파일을 하나 include 해버려서 거기서 매크로로 선언하는 트릭을 하나.. 🙂
  • 사소한 난감함에 대한 배려: FreeBSD의 statfs시스템콜은 struct statfs를 사용하기도 하고, 구현해야하는 파이썬측 함수 이름도 statfs이다보니, 삼중으로 네임 스페이스가 충돌하는데, 이런 경우에 대한 대처가 되어 있었고, 음청나게 많은 enum같은 다른 부분에서도 뭔가 난감하다 싶으면 어렵지 않게 문서에서 해결책을 찾을 수가 있었습니다.
  • 널널하고 친숙한 문법: C 문법과 파이썬 문법을 절묘하게 섞어놔서, 매뉴얼을 안 보고도 대충 이렇게 쓰면 되겠지 하고 쓰면 다 되는게 참 신기할 정도로 잘 만들어 뒀군요. 🙂

한편, py-freebsd의 고유 특징인 것 같기도 하지만, 다른 곳에서도 쓰일 법한 것들인데 고려가 되지 않아서 불편한 것도 제법 있었습니다.

  • 그때 그때 다른 struct 멤버: OS 버전이 올라가면서 빠진 멤버나 버전이 올라가면서 생긴 멤버 같은 것들을 처리해 주기 위해서 C에서의 전처리자로 뽑아주는 것이 뭔가 필요한데, 이런 것을 하기 위한 방법이 딱히 없어서, setup.py에서 struct 정의를 한번 훑어서 그 결과를 pyrex에서 include하는 방식으로 일단은 해결했습니다. –;
  • 엄청나게 많은 상수를 간단하게 정의하기: 커널 API 함수들이다 보니, 특성상 정수형 상수가 엄청나게 많은데, 이런 것도 또 OS 버전에 따라 있기도 하고 없기도 하고, 게다가 그냥 정의하기에는 상수 1개를 정의하기 위해서 3줄씩 써줘야 하기 때문에, 상수 목록을 만들기도 힘들고 관리하기도 힘든 단점이 있어서, 이것도 결국은 간단하게 함수 호출하는 형식으로 pyrex 소스에 적어두면 setup.py에서 컴파일 전에 소스를 스캔해서, 실제 헤더 파일에 있는지 확인해서 있는 것만 cdef extern을 별도의 파일에 넣어서 include하는 방법으로 해결했습니다.. 아주 찝찝하네요 흐~;;
  • 워닝이 너무 많아~: 어차피 generate한 소스이니까 워닝이 좀 나더라도 크게 문제가 되는 것은 없지만.. 그래도 워닝이 너무 많이 나서 참 컴파일하고 있기가 불안하다는 문제는 존재합니다. –;;;;;

몇가지 사소한 난점은 있긴 했지만, 그래도 전반적으로 바꾸고 보니 유지보수도 쉬울 것 같고, 앞으로 새로운 기능을 추가하는 것도 재미있을 것 같아서 굉장히 보람이 있습니다. 🙂 pyrex 좋아!

파이썬 첫번째 보안 권고 발표

아침에 일찍 출근해서 즐거운 마음으로 메일을 보고 있는데
갑자기 웬 PR이 우수수 올라와서 봤더니, 파이썬 보안 권고가 발표되었으니
얼른 포트를 고치라는 것이었습니다.;

난데없는 파이썬 보안 권고라니.. 지금까지는 파이썬은 메모리가 마구
덮어 씌워지는 보안 버그도 은근 슬쩍 잘 넘어갔는데 무슨 소리~ 하고 확인을
했는데, 정말로 이제 귀도가 보안 회사에 다니더니만 보안 버그에 대한 보안
권고문을 발표하기 시작해서 이번 SimpleXMLRPCServer 보안 버그에PSF-2005-001이라는 폼나는 번호까지
할당해서 발표를 한 것이었습니다.;;

이번 보안 버그는 SimpleXMLRPCServer의 룩업 함수에서 .이 포함된 함수 이름으로
검색하는 것을 허용하다보니 함수 아래의 파이썬 내부적 속성들을 접근해서
결국 os.system에도 접근할 수 있게 되는 버그인데, 당연히 SimpleXMLRPC를
안 쓰는 프로그램은 적용되지 않습니다.

지금까지는 그런대로 보안 버그와는 관련 없는 포트만 관리해서
VuXML업데이트하는 귀찮은 일에서
어느 정도 멀리 있었는데, PR로 VuXML업데이트 하라고 해서 이제 핸드북
보고 VuXML 쓰는 방법에 대해서 공부도 하고 –; 흑흑.~ 아침에 몰래
좀 봐서 일단엔트리를 작성하기는 했습니다마는.. 포트도 같이 업데이트를
해야해서 오후는 돼야 커밋할 수 있을 것 같군용~

사실 아직portaudit
써 본적이 한 번도 없었는데 (부끄. *^^*;;;;;)
이번에 시험하면서 써 보니까 괜찮네요…;; (보안 버그 37개를 찾아 주는;;)

SimpleXMLRPCServer 쓰는 사람이야 뭐 별로 없으니까 큰 영향은 안 미칠
것 같지만, 이제라도 파이썬 보안 권고가 체계가 잡히고 해서, 든든하군요. 🙂

노키아 S60 드디어 출시!

파이썬이 들어가는 것으로 그동안 관심을 모으고 있었던, Nokia의 S60 손전화가 드디어 출시되었다고 합니다. 지난 번 Euro Python에서 Guido가 노키아 담당자에게 출시가 되면 알려달라고 했더니, 메일로 소식을 알려 줬다고 그러는군요.:)

Bop Ippolitto가 찍은 스크린 샷

0412-s60python.jpg

흐흐 노키아 홈페이지에서 파이썬 기반으로 되어있는 SDK를 받을 수 있고, 물론 전화기에 들어가는 프로그램을 파이썬으로 작성할 수 있다고 합니다. 게다가 위의 스크린 샷처럼, 시리얼 케이블로 접속을 하면 파이썬 프롬프트가 뜨는 …. -ㅇ-;;;

우리나라에도 어서 나왔으면 좋겠군요.:)

귀여운 파이썬 마스코트

pymascot

오늘 c.l.py에 Dimitri Tcaciuc이라는 사람이 그려서 올렸습니다. 아직 파이썬 공식 마스코트로 예쁜 것이 없어서 그려 봤다더군요. 흐흐. 대체로 반응은”파이썬은 뱀이 아니라 Monty Python’s Flying Circus에서 따 온 것인데 왜 자꾸 뱀을 그리냐”,”너무 귀여워서 파이썬이 장난감 언어(toy language)처럼 보이게 될까봐 걱정된다”,”반점들이 병걸린 뱀같다.”이런 반응이.. 흐흐

그렇지만 귀여운 것은 사실! -ㅇ-; 색깔만 입히면 괜찮겠군요.

그 답글 중에 가장 인상깊었던 것은

“아마 모든 캐릭터 셋에 이미 파이썬 로고가 들어 있을 것이다. 바로@..:)

파이썬 2.4 파이널 릴리스

동아시아 사람들이라면 누구나 기다렸을 파이썬 2.4가 드디어 정식 릴리스가 되었습니다.:)

다운로드는[WWW]여기에서 하실 수 있고, FreeBSD 포트는 레포카피를 해야 하기 때문에, 재수가 좋으면 모레 정도면[FreshPorts]lang/python을 업데이트하고 2.3을 lang/python23 으로 몰아낼 수 있을 듯 합니다. (요새 레포카피 요청을 안 해봐서 레포카피가 금방 되는지는 잘 모르겠;)

흐흐 지금까지 뭐 지겹게 많이 들으셨겠지만 파이썬 2.4의 주요 변경점을 간단히 요약해 보자면,

  • 빨라짐(list, tuple 등의 기본적인 것들이 최적화가 되어서 2.3에 비해 15~20%정도 기본적으로 빨라졌음.)

  • 펑션 데코레이터 등장 (@xxx)

  • None이 상수로 변경

  • sets빌트인 타입의 등장! (엄청 좋습니다! 꺄아~)

  • int, long의 통합 (이제 int에서 비트 연산을 해서 넘치면 자동으로 long으로 변환)

  • 서지원님이 구현하신 제너레이터 익스프레션 등장 sum(x for x in range(5))

  • 역 이터레이터 등장 (reversed)

  • decimal 모듈 들어옴. (이제 0.3+0.3이 0.6이 아니라고 걱정할 필요가 없습니다!)

  • CJKCodecs가 표준 파이썬 안으로 들어감.

  • heapq 모듈이 C로 재구현되면서 약 10배정도 빨라짐.

  • profile 모듈이 이제 확장 모듈의 함수들도 프로파일링 가능.

  • 셸 스크립트식의 스트링 대체를 위한 string.Template 등장.

이 외에도 여러가지 변경사항이 더 있는데, 자세한 것은 amk의[WWW]What’s New in Python 2.4를 참조하세용.

:)