새로운 한국의 FreeBSD 커미터!

오늘 드디어 한국 사람으로는 최초로 소스 커미터로 [WWW]편용현씨(yongari@)가 등록되었습니다. 그동안 pf 포팅을 하시면서 Max Laier를 통해서 소스를 넣고 계셨는데, 이제 쉽게 pf 커밋을 직접 하실 수 있게 되었군요. :)

developers@에 보내신 소개말씀에 따르면 네트워크 스택, 패킷 필터링, 디바이스 드라이버와 sparc64포팅에 주로 관심이 많이 있으시다고 그러시는군요. 멘터는 5.x 릴리스 엔지니어인 Scott Long씨가 맡아 주고, 아마 sparc64부분에서 Jake Burkholder씨가 코-멘터링하는 것 같습니다.

이제 다음엔 도큐먼트 커미터가 나올 차례인가요? :)

Rune Locale의 UTF-8 로캘에서의 문제점

며칠 전에 NBSP가 space인가 아닌가에 대해서 얘기를 좀 했었는데, 이 문제가 아무래도 불거지게 된 것은 BSD Rune Locale의 isctype 함수들의 특성 때문이었습니다. BSD Rune은 4.4BSD 시절에 생겨난 것으로, POSIX Locale가 만들어지기 이전부터 디자인된 멀티바이트 캐릭터셋 API이기 때문에, 그 이후 POSIX Locale 스펙과 맞지 않는 점이 있습니다. 바로, POSIX에서는 isspace, isalpha같은 ctype함수들을 싱글 바이트로 표현할 수 있는 코드포인트들로 제한을 하고 있지만, Rune에서는 iswctype이 도입된지도 얼마 되지 않았고 그냥 isctype 함수들이 wide character 코드포인트까지 모두 담당해버려서 결국 UTF-8 로캘같이 전체가 하나의 캐릭터셋이라서 싱글 바이트의 경우와 wide character가 겹쳐버리는 경우 잘못된 답이 나와버리는 것입니다.

구현

isspace(0xa0)

iswspace(0xa0)

isalpha(0xc0)

iswspace(0xc0)

BSD Rune

true

true

true

true

glibc

false

false

false

true

Solaris

false

true

false

true

올바른 답(POSIX/Unicode)

false

true

false

true

그래서 Tim에게 메일을 보냈더니 Rune과의 하위호환성을 5.x까지는 유지하겠다고 manpage에 써 놓아서 우선 바꾸지는 못 하지만, 6.x에서 고칠 수 있겠다는군요.. 그리고 manpage에 언급을 넣어 줘서 COMPATIBILITY에 이제 isctype에서 와이드 캐릭터 전영역을 커버하지 않도록 곧 수정될 수도 있다는 경고가 붙게 되었습니다. 그러면서 우선 버그를 피해갈 수 있는 방법을 하나 알려줬는데.. 이렇게 합니다 ;;

흐흐;; 우선 파이썬 포트와 파이썬 2.4 트렁크에 해당 패치를 넣으려고 합니다.

파이는 던져졌다.

드디어 어제 있었던 [WWW]OSCON 2004의 마지막 키노트를 앞두고 2000명의 관중 앞에서 약속대로 Parrot팀의 대표인 Dan Sugalski가 Guido에게 크림 파이를 맞았습니다. :) 그리고 10달러와 맥주 12팩을 받았다고 합니다. 받은 맥주들은 밴쿠버 파이썬 워크샵에서 나눠먹는다는군요. ^^^;

이번에 패럿팀에서는 Leopold Toetsch가 좀 늦게 작업을 시작해서 혼자서 열심히 단기간에 [WWW]많은 걸 이뤄내기는 했지만, Guido가 패럿을 X먹이기 위해 만들었다고 알려진 패럿 벤치의 b0.py를 구현하는데 결국은 시간 부족으로 실패해서, 다른 벤치마크 부분은 그런대로 속도가 나왔음에도 불구하고 진 것으로 처리가 됐습니다.

Leo의 예상으로는 구현을 다 끝내면 CPython보다 Parrot위의 파이썬이 3배는 더 빠르지 않겠느냐고 밝혔는데 글쎄요 흐흐 두고 볼 일이겠죠;; -O-; 하여간 그래도 패럿의 참패로 끝나지는 않아서 다행스럽습니다.

반면, Iron Python은 현재 b0.py도 완벽하게 통과하고 있는데, 이제 Jim Hugunin이 MS CLR 팀에 합류했다는 점에서 더욱 기대가 됩니다. (역시 편파적인 멘트를 해 본다;; )

Iron Python의 첫 느낌

아아 한동안은 Iron Python 릴리스 특집을 계속 쓸 것 같은.. 흐흐 :)

Iron Python을 이제 받아서 대충 한번 둘러 봤습니다. 프로젝트 자체는 Visual Studio .NET 기반의 프로젝트 파일로 되어있고, mono에서 컴파일이 가능한 프로젝트 파일은 따로 없는 듯 합니다. 그렇지만 다행히도 컴파일된 바이너리가 들어있어서 빌드 걱정 없이 그냥 실행해 볼 수 있었습니다.

트레이스 백 모양이 파이썬 트레이스백이 아니라 자바 형식이라 좀 어색하군요 흐흐; 그리고 sys.platform이 웬 ‘java-clr’ –;; 아직 os모듈은 없고, 현재 Iron Python에 들어있는 모듈은 __builtins__, imp, math, nt, re, struct, sys, time이 있습니다. 뭔가 벤치마크를 위해 time을 빼놓지는 않았다는 느낌이.. :

CPython보다 빠르다는 속도를 한번 시험해 봤습니다. 테스트 코드는 뭐 아주 간단한 파이썬 취약성 루틴의 대표적인.. while안에서 덧셈하기.. 흐흐;;

결과는

Iron Python 0.6

CPython 2.3

CPython 2.4

0.972

0.625

0.595

아아. 아쉽게도(?) CPython이 간단한 루틴에서는 더 빠르군요. ;; (기분이 묘하다..)

그리고, .NET 클래스 라이브러리 쓰는 것도 어느정도 잘 되는 듯 합니다.

괜히 제가 만든 mono cp949 코덱 시험도 한번 –;

System.Text.Decoder.GetChars의 마지막 2 인자를 어레이랑 어레이 인덱스로 줘야하는데, 어레이를 파이썬에서 어떻게 주는지 알 수가 없어서 일단은 –;;;;;

Iron Python 드디어 릴리스!

지난 PyCon에서 약속했던 대로 Jim Hugunin이 드디어 [WWW]Iron Python을 일반 공개 했습니다. 버전이 0.6이군요. 아아 가슴이 쿵쾅쿵쾅.

시험해보고 더 많은 소식 올리겠습니다. :) Iron Python 만세!!

그런데 홈페이지를 보니 Jim이 8월부터 Microsoft의 CLR 팀에서 일하게 됐다는군요.. -O-;; 앞으로도 계속 공개 됐으면 좋겠는데.. 어떻게 될지..

DragonFly BSD

유난히 BSD계에는 많은 쫓겨난 싸움꾼의 두번째 창조적 성과물인 DragonFly BSD를 깔아 봤습니다. 사실 2월에 python에 DragonFly BSD지원을 넣어 달라는 버그리포트가 올라와서 깔아보려고 시도는 했지만, 열심히 손으로 설치해서 (젠투보다는 쉬웠지만;;) 결국 최근 소스트리로 올리고 나니 랜카드가 안 잡히는 문제 때문에 못 쓰고 있다가, 이번에 인스톨러를 포함한 1.0 릴리스가 되었다기에 드디어 한번 깔아 봤습니다. :)

무슨 인력이 그렇게 많이 남아돌아서 좋은 프비 인스톨러 놔두고 또 만드나 하고 생각을 했었는데, 아 역시 괜히 새로 만든 것은 아니었더군요. :) 프비 인스톨러는 인스톨러와 관리 툴이 통합된 형태라 처음 설치하는 사람에게는 혼란만 줄 뿐.. Standard로 들어가세요.. 해도 불친절하기는 마찬가지인 여러가지 요소가 섞여 있었던 것이 사실입니다. (물론 처음 나왔을 때는 엄청난 센세이션을.. :) )

우선 DragonFly BSD 1.0을 넣고 부팅을 하면 로그인 프롬프트가 뜹니다. (떵~) DragonFly BSD 인스톨 씨디는 사실은 라이브씨디 겸용이라 그냥 부팅해서 쓰기도 된다는 것이었습니다. -O-; 요즘은 역시 라이브씨디 겸용 인스톨러가 유행이라 그런 것인지 -ㅇ-;

0407-dfbsd1.png

일단 로그인 프롬프트에서 installer 계정으로 로그인 하면 인스톨러가 뜹니다. (G모 배포판처럼 싱글모드에서 셸 프롬프트 띄워주는 것 보다는 좀 친절하군요;;) DragonFly BSD의 인스톨러는 좀 친절해진 NetBSD 2.0 인스톨러를 아주 쏙 빼닮았습니다. 물론 약간 스타일이 좀 NetBSD 스타일이긴 하지만, DragonFly BSD 인스톨러는 dialog 스타일을 그대로 쓰는 바람에 Debian이나 FreeBSD와 비슷해서 스타일 면에서는 좀 더 친숙하군요. :) 그리고, 프비 인스톨러는 거의 대부분이 선택지가 엄청나게 많고, 시스템을 갖추었지만 실제로 처음 쓰는 사람한테는 별로 도움 안 되는 말만 가득하고, 가이드가 없는 반면에, DragonFly BSD는 모르는 사람은 선택할 화면도 안 보여주는 인터페이스를 갖추어서 제 생각에는 프비도 나중에 DragonFly BSD 인스톨러로 바꾸면 좋겠다 하는 생각을 해 봅니다. (특히나 요즘은 jkh 세력이 거의 없으니..) 므흐흐

0407-dfbsd2.png

인스톨러에서 가장 마음에 들었던 것은 아무래도 사용자 설정과 디스크 파티션인데, 프비 인터페이스는 아주 누가 “FreeBSD가 좋다고 해서 깔아보려고 해요. 인스톨 하고 있는데 뭐하라고 하는지 모르겠어요” 하면 설명하기도 난감한.. “절대로 슬라이스 편집기에서는 W를 누르지 마세요” 뭐 이런 소리나 해야하는 게 답답했는데 DFBSD 인스톨러 만세입니다. :)

그 외에 인스톨 하고 나서의 OS는 사실 FreeBSD 4랑 아직은 거의 똑같아서.. 뭐가 다른지 알 수가 없네요 –; 포트 이름도 거의 똑같아서 그냥 pkg_add로.. 쭈우욱 깔고.. -O-; 하여간 앞으로 패키징 시스템도 데비안 비슷한 바이너리 친화적 시스템으로 바꾼다는데 기대가 됩니다.

KLDP CodeFest (2)

좀 늦었지만 2부입니다. ^^^;;

토요일 밤

http://openlook.org/albums/codefest/SANY4550_resize.thumb.jpg

토요일 밤(바로 그 Saturday Night!)에는 테마 코딩도 끝나고 해서 이제 조금씩 흥분을 가라 앉히고 다시 다들 작업에 몰두하기 시작했습니다. 파이썬 팀에서는 사실 낮에는 좀 놀고 -O- 이제 본격적으로 트래커를 보면서 잡을 버그들을 선정하기 시작했는데, 역시 freenode의 버그 데이에서 버그를 너무 많이 잡아놓는 바람에 쉬운 버그가 별로 안 남아 있어서 엉뚱한 버그를 제법 많이 맡았습니다. nohmad님의 경우에는 HTTP digest 인증이 제대로 안 되는 버그, exman님은 관리자 권한으로 설치할 때 umask의 적용을 받아서 권한 설정이 제대로 안 되는 버그, jiwon님은 coding:에 .을 끝에 찍으면 에러나는 버그 등등.. 뭐 이런 것이었습니다~ 좀 버그를 잡다 보니 어느새 밤이되고, 역시 유혹에 약한 rath님은 구경오자마자 코딩 열기에 이끌려 jmsn-swt 버전을 “자동 완성”하는 속도로 “삼바 코딩”의 리듬으로 하기 시작했습니다.

일요일 새벽

http://kldp.org/~kss/gallery/albums/kldpcodefest0407/IMG_0603.thumb.jpg

자정이 넘으면서 이제 본격적인 간식시간! 이번 행사의 “최대 회비 소비처”인 교촌치킨 아이고 이렇게 맛있을 수가.. 우리집 통닭보다 훨씬 낫네 –;;; 파이썬팀은 닭을 펼쳐놓은 테이블이 좁아서 따로 나와서 앉았는데, 가운데 테이블에서는 DRI를 둘러싼 양파님과 방준영님의 혈전이 있었다고 합니다. (흐흐~) 그 뒤에 있었던 bzflag대회는 제 아이북은 bzflag를 돌릴 만큼 사양이 되지 않아서 참가를 못했지만.. 뭐 참가했더라도 별로 –; 워낙 1인칭 게임에는 약하다보니.. 에효. 저희 테이블에서는 토끼군과 falsetru님이 나가셨는데, 토끼군이 3등, falsetru님이 4등의 우수한 성적을~ (이지만 상품에서는 아쉽게도;;) 옆에서 보니까 무지 재미있는 게임이더군요.

자러 가서

http://openlook.org/albums/codefest/SANY4568_resize.thumb.jpg

다들 여전히 사기 충천하여 이제 네트웍 안 되는 자러 방에 가야한다고 하니 엄청 서운한 분위기~ 아아 역시~ 굉장한 사람들이야~ 방에 가도 여전히 다들 작업을. -o-; 저희 팀은 모두 9명이었는데 방이 8명쯤 잘만한 방 1개와 옆에 3명쯤 잘만한 방이 1개 붙어 있어서 아주 넉넉하게 잘 수 있었습니다. 좌식 의자도 앉아보고.. exman님의 PDA에 포팅한 플래시 플레이어로 졸라맨도 오랜만에 보다가.. ^^;; 그런데 화장실에 미리 알려졌던 것과는 달리 수건이 있었습니다. 오우. 수건도 없는 호텔이라고 많이 놀렸는데 이것 참;; 그리고 역시나 또 “이공계가 짱”이라는 엽기 만화책 열풍이..

아침

http://openlook.org/albums/codefest/SANY4577_resize.thumb.jpg

사실 태스크 포스팀이 예상하기로는 아침에 많이 밥을 먹어야 20명.. 아마 10명쯤 될지도 모른다 하는 예상을 했는데 역시 MT분위기가 나서인지 다들 엄청 부지런하게 일어나셔서 식당에 내려가 보니 거의 30명쯤은 돼 보이더군요. 아 역시 MT~ :) 밥 먹고 이제 방 정리를 좀 하다가 어제 열심히 그린 뱀, 조로 칠판과 함께 파이썬팀 단체 사진을 하나 찍었습니다. 수줍은 브이~ -.-vv

다시 행사장으로

http://openlook.org/albums/codefest/DSCN1836.thumb.jpg

행사장으로 다시 내려가 보니, 허헛 여전히 또 많은 분들이 열기에 불타오르며 작업을 하고 계셨는데, 사실 일요일 오전은 약간씩 일정이 밀려서 작업하기에는 좀 모자른 시간이 아니었을까 합니다. 파이썬팀도 어제 덜 잡은 버그를 마저 잡고, CJKCodecs 1.1을 메인 파이썬에 밀어넣는 작업을 마무리 했습니다. 옆에 있던 pkgsrc팀에서는 여전히 ExmanIDE 얘기가 자주 나오고.. :)

키 사이닝 파티

http://kldp.org/~kss/gallery/albums/kldpcodefest0407/IMG_0665.thumb.jpg

제대로 될 수 있을까 걱정이 가장 많았던 바로 그 키 사이닝 파티. 사실상 우리나라에서는 최초라고 생각됐는데, 그래도 무난히 잘 끝났습니다. 주민등록증 사진이 무척 잘 지워진다는 것도 알았고.. 가나님처럼 완전히 다른 사람 사진을 붙여다니는 분도 계시고.. 재미있었습니다. :) 키 사인 하는 것보다 역시 인사하고 이름 기억하는게 더 재미있고 주가 되었던 것 같네요. 다음에 키 사이닝 파티가 또 있으면 좀 더 인사말을 준비하고 가야겠습니다. :)

행사 끝~

http://kldp.org/~kss/gallery/albums/codefest_photos/P1000747.thumb.jpg

이제 어느덧 시작한지 30시간 정도가 지나서, 끝날 무렵이 되었습니다. 너무 시간이 빨리 지나가서 무척 아쉬웠지만 그래도 우리나라 오픈소스계에서는 처음 있었던 형식의 행사였고, 성과도 있었고 다음에는 더 좋은 행사로 만들 수 있을 만한 아이디어, 고칠점도 많이 발견할 수 있었습니다. 버그데이의 경우에는 30시간이 뭔가 일을 찾아서 하기에는 굉장히 짧은 시간이어서 아무래도 다음부터는 버그의 분석까지는 미리 해 오고, 버그를 실제 잡는 일만 행사장에서 하거나 하는 식으로 되어야 할 것 같고, 밥먹는 시간과 이벤트가 너무 잦아서 열기를 너무 자주 식히는 문제도 꼭 다음엔 어떻게든 해결을 해야겠습니다. :) (컵라면을 먹는다던지 –;;)

끝나고 뒷얘기

행사가 다 끝나고 20일 (화)에는 잠실에서 태스크 포스팀 따로 모여서 저녁식사를 했습니다. 처음엔 피자헛 플러스 에 갔는데 가격이 어찌나 플러스던지.. 압박에 못 이겨서 결국은 일반 피자헛으로.. -o- 역시 이벤트가 너무 잦았다는 것과 시간이 좀 모자랐다는 것에 대해서 다 같이 공감했습니다. :) 그리고, 중요한 것은 cwryu님이 9월 15일(?)까지 여자친구를 만들기로 하셨다는.. (본인이 수긍한 것은 아니지만 =3=33)

(사진은 http://openlook.org/photo/codefest/ )

NBSP는 스페이스인가 아닌가!

FreeBSD의 파이썬에서 UTF-8로 로캘을 설정하고 나서, str.split()을 하면 0xa0이 중간에 끼여 들어가 있으면 막 글자 중간에서 짤려서 결국은 invalid seq를 생성해내는 문제가 있습니다.

리눅스에서 테스트를 해 보면 제대로 나오는게 자세히 보니까 이런 리눅스에서는 isspace(0xa0)이 0이군요.. BSD에서는 ISO8859-1과 UTF-8 로캘 모두 1이 나오고..

그런데, 또 재미있는 것은 파이썬에서는 \u00a0이 space입니다 –;

BSD와 마찬가지로 UnicodeData.txt에서 그대로 생성했기 때문에 그런 것인데.. 과연 NBSP가 스페이스는 스페이스니까 스페이스로 인정을 할 것인지.. 브레이크 없는 스페이스니까 스페이스가 아니라고 해야할 것인지 생각을 하면 할 수록 헷갈리는데 우에에.. 분명히 파이썬과 BSD의 locale 중의 하나를 고쳐야할 터인데 뭘 고쳐야할 지 모르겠군요. –; SUS는 봐도 도움도 안되게 간략하게 나와있고..

(소식: 오늘 ftp.unicode.org 를 둘러보다보니 Unicode 4.1이 슬슬 올라오고 있네요.)

길드 만들다~

한동안 시간이 없어서 못 하다가 오랜만에 또 마비를 들어갔더니, 오랜만에 또 재미있는 것이.. 마침 가나님이 길드를 만드는 것이 어떨까 하셔서 그냥 충동적으로 한번 만들어 봤습니다. -o-; 뭔가 멋있는 이름을 찾아서 관형격으로 열댓개를 입력해 보았지만 벌써 누군가 쓰고 있는 길드 이름.. 역시 길이면 길마다 옆에 촘촘히 박혀있는 길드석이 괜히 그렇게 많은 게 아니었군요.. –; 결국은 자우림의 “청순가련 쎅씨 걸~~” 이 생각나서 그냥 입력해 본 것이.. 《청순가련 길드》로 -O-;;

0407-mabishot.jpg

혹시 관심 있으신 분들은 가입하세요 –; 길드석 위치는 티르코네일에서 던바튼 가는 중간에 있는 벌목캠프 서쪽의 숲으로 들어가는 초입에 있습니다. 지도는

0407-mabimap.jpg

-O-;;;