Thanks a million!

히히히 ~.~ [Blog]happyhacking/0308MonoCP949 패치 보낸 것이 어제 통과되어서 곧 모노 CVS에 들어갈 것이라고 합니다. Miguel이 직접 메일을 보내줬군요. (히히 너무 좋아서 자랑~;;;)

IRC에도 보면 들어오는 사람마다 이름 불러 주며 인사하고, 그러면 사람들이 막 반갑게 패치도 주고 그러는 것으로 보아 역시 이 사람은 정말 엄청난 프로젝트 리더인 듯 ~.~ 모노 프로젝트가 괜히 진행이 빠른 게 아닌 듯 하군요.. 크크.. (자동 메일 스크립트로 1줄로 “뻑났으니 고치세요” 뭐 이런식으로 보내는 k모씨의 메일과 비교하면 –;) FreeBSD쪽에서는 코어팀 중에서 인간적으로 감명을 받을 만한 사람은 Peter Wemm 밖에 없었는데.. 훌륭한 오픈소스 프로젝트 리더가 되기 위한 조건들을 좀 생각해 보아야겠습니다. :)

Thanks a million!

모노 CP949 코덱 완성

오픈소스 닷넷 프레임웍인 [WWW]Mono를 위한 CP949 코덱을 완성했습니다. 크크크~~ (사실 뭐 별 건 아니지만;;;)

그동안 I18N.CJK.dll이라고 이름 붙은 것이 K를 지원 안해서 아주 좀 보기가 그랬지만 그래도 이제는 진짜 CJK~ 근데, 막상 버그질라에 보내려고 접속해 보니 버그질라가 죽었는지 접속이 안 되네요 –;

코덱이 없으면 이렇게 나오던 것이~ (윈도우에서는 UTF-8로 나오고, 리눅스와 FreeBSD에서는 요상 야릇해서 도저히 해독할 수 없는 것으로 나옵니다 ;;)

0308-mono-wocodec.jpg

코덱이 있으면 이렇게 나옵니다.

0308-mono-withcodec.jpg

최근 CVS 버젼에 대해서 작업했는데, 바이너리 파일이 하나 끼여있기 때문에 패치는 못 만들고 그냥 풀어서 덮어씌우는 타볼을 만들었습니다. http://openlook.org/distfiles/mono-cp949.tar.gz 에서 받을 수 있습니다.

보통 디코더로 byte[]를 char[]로 변환할 때 이런 방법으로 쓸 수 있습니다. (어렵게 알아낸 것 –;;;;;;; 코덱을 만들긴 했는데 시험을 못해보니 어찌나 답답하던지요 -ㅁ-;)

CJKCodecs 1.0 릴리즈!

와! 드디어 첫 번째 일반 공개 버전인 CJKCodecs 1.0을 릴리즈했습니다. 음훗훗~

지난 1.0b1에 비해서 변한 부분은:

  • UTF-16 코덱이 삭제되었습니다. (속도도 표준 코덱에 비해서 딸리고, 별로 따로 있을 만한 이유가 없어서..)

  • UTF-7 코덱이 UCS4 파이썬에서 Surrogate Pair를 제대로 못 디코드하는 문제를 고쳤습니다.

그 전의 0.9에 비해서 변한 부분은:

  • 새로 인코딩들이 추가됐습니다: SHIFT-JISX0213, EUC-JISX0213, ISO-2022-JP-2, ISO-2022-JP-3, UTF-7

  • Microsoft 코드 페이지들의 Windows 호환성 부분을 수정하였습니다.

  • StreamWriter가 미완성 문자떼(byte sequence)를 버퍼할 수 있게 되었습니다.

  • 몇 가지 자잘한 버그가 수정되었습니다.

CJKCodecs 1.0b1 공개!

그동안 심혈을 기울여 (–;;;) 제작하고 있던 CJKCodecs 1.0의 첫번째 베타 버젼을 공개했습니다.

http://mail.python.org/pipermail/i18n-sig/2003-July/001607.html

바뀐 점은 일본어 코덱 쪽의 버그를 대폭 고쳤고, 새로 JIS X 0213 계열의 인코딩들을 추가했습니다. 그리고, CJKCodecs에서 가장 구현이 어려웠던 코덱인 UTF-7코덱을 비롯한 UTF-16 코덱도 추가되었습니다.

눈에 띄는 버그가 있는지 한 1~2주일 눈치를 좀 보다가, 1.0으로 정식 릴리즈를 하려고 생각하고 있습니다. :)

쌔끈 굴림을 위하여!

올해 초 LCD 모니터를 산 이후에 MS 윈도우 XP의 Clear Type (sub-pixel rendering)에 감동을 무진장 받았었습니다. “우와 이것이 바로 MS 기술의 승리! -_-;;”

http://openlook.org/images/wiki/0307/timesnewroman-cleartype.jpg
겨우 12픽셀 높이에서 나오는, 이 고아하기 까지한 초깔쌈 Times New Roman을 보라!

그래서 한동안 영문 사이트만 즐겨 다니다가, “도저히 한글만 구리구리하게 나오는 것을 참을 수 없다!”하고 결심을 하고, 굴림체에서 sbit를 제거해서 MS의 위대한(!);;; Clear Type의 혜택을 받아 보고자, Just van Rossum의 [FreshPorts]print/py-fonttools 를 깔고, 굴림체 안에 들어있는 폰트를 모두 뽑아 보니 각각 90메가 씩 해서 총 400메가가.. -.-;;

그래서, 덤프된 xml을 vim으로 근근히 EBDT, EBLC 테이블을 제거해서 우선 4개의(굴림,굴림체,돋움,돋움체) ttf를 얻었습니다. 이제 요걸 윈도우로 가져가면 되는데~ 아무래도 귀찮아서, makettc를 한 번 프비 베이스에 있는 doscmd로 돌려봤는데, 오오오!! 별 문제 없이 돌아가는 것이었습니다! (사실은 디렉토리 이름에 대문자가 들어가 있으면 실행이 안 되는 버그가 있었지만;;) 하여간, makettc로 딱 합쳐서, 긴장되는 순간 두구두구두~ 긴장되는 순간 윈도우에 딱 띄우자.. 털썩 털썩.. 꽥 꽥 꽥 야옹… 역시 고질적인 CJK 트루타입의 작은 크기 렌더링 문제가 발생하는..

http://openlook.org/images/wiki/0307/gulim-sbit.jpg
좀 밋밋해서 별로 정은 안 가지만, 그래도 봐줄 만 한 sbit먹은 굴림체

http://openlook.org/images/wiki/0307/gulim-cleartype.jpg
MS는 얼른 Clear Type 엔진을 AA 짝퉁이 아닌 진짜 sub-pixel rendering으로 만들라!

이렇게 되는 것이었습니다. 이런 대실망~

으흐흑~ 아무리 봐도, Windows XP는 Clear Type에서 초기 렌더링부터 제대로 2×2를 충분히 활용한 게 아니라, 그냥 2×2크기로 AA를 한 게 아닌가 하는 인상을 지울 수가 없군요~ 무엥. (아니면 sbit에 알파 채널을 넣던가!)

(오늘 놀이시간에 만든 일명 “LCD굴림”은 http://openlook.org/distfiles/lcdgulim.ttc.bz2 에 있습니다.)

CJKCodecs, 젠투 입성!

FreeBSD, Fink에 이어 Gentoo에 CJKCodecs가 패키지로 등록되었습니다. 므흐흐흐~~ 역시 iconvcodec 발표했을 때는 반응이 싸늘하던 것을 생각해보면 이름이 중요하다는 것을 깨닫게 됩니다. -O-;;

CJKCodecs 다음 버젼인 1.0은 일본어 인코딩에서의 버그를 잡고, JIS X 0213 인코딩들을 추가해서 다음 주 중에 발표할 예정입니다.

이제 데비안과 레드햇을 향하야~! =3

파이썬 파일 오브젝트 버그 결과

FILE *로 착각해서 다운되는 버그인 줄 알고 한참 디버거로 뒤졌으나 찾지 못해서, 그냥 버그 보고를 했더니만 Neil Norwitz가 ceval.c에서 파일 오브젝트의 레퍼런스 카운트를 들어가기 전에 1증가 시키고 나올 때 1 빼는 걸로 해결을 했습니다. 어쨌건 적용해보니 아주 잘 됩니다~! ^.^

크흐~~ 역시 ceval에 대한 공부를 좀 더 해야겠습니다. (이 버그에 대한 픽스는 2.3b2부터 적용된다고 합니다.)

파이썬 파일 오브젝트의 다운되는 버그

홈페이지에 모인모인을 넣으려고 하다가 자꾸 파이썬이 세그폴트를 내고 죽기에 좀 삽질해서 여기저기 print를 넣어 자세히 살펴봤더니 파이썬 2.2이상에서 sys.stdout을 다른 클래스로 교체해서 그 클래스의 __getattr__ 안에서 sys.stdout을 교체해 버리면, sys.stdout이 정규 FILE *인 줄 알고 거기가 fprintf를 해버려서 다운되는 현상이 있었습니다.

버그 재현을 위해 간추린 소스:

에.. 디버깅해 볼까, 아니면 그냥 버그 보고만 하고 말까 생각 중~~ 히히 .