Mono CP949 코덱 무려 2년 묵은 버그 수정

2003년 10월에 Mono에 CP949
코덱을 넣고서는 C# 문법도 다 까먹고 그냥 무관심하게 있었는데,
얼마 전에 어떤 한국분이 영어로 잘 안 돌아간다고 메일을 보내셔서
2년만에 오래간만에 C# 코드를 좀 보게 되었습니다.

아직 디버거에 익숙하지 않아서 그냥 System.Console.WriteLine 으로
열심히 돌아다녀보니까, 으하하하. copy & paste 버그를 하나
발견했습니다. Mono CJK 코덱들은 공유 dll에 들어가 있는 정적 바이트
배열 데이터를 가지고 디코드를 하는데, 한국어 코드페이지인 CP949는 데이터를 쓰는 영역이
KSX1001 영역, UHC 레벨 1 영역, UHC 레벨 2 영역 이렇게 3가지로
나뉘어 있습니다. 그런데, UHC 레벨 2 영역이 첫 번째 바이트가
0xA1로 시작하는 것으로 돼 있는데, 코드 안에서는 레벨 1 것을
붙여넣기 해서 수정하다보니 0x81에서 시작하는 계산식이
그대로 남아있어서;; -ㅇ-;;;

아마 그때 테스트해 봤을 때는 인코딩 하는 것은 열심히 다
테스트를 했는데, 디코드는 확장완성형 부분은 글자가 터미널에서
안 써져서 귀찮아서 테스트를 안 했더니만 이렇게 돼 버렸네요;;
흐흐.. 그래서 방금 패치를 제출했습니다.
간단한 문제이니까 Mono 다음 버전에는 아무래도 고쳐지겠죠?

참, 그리고 11월 1일에 지미안의 에노모토 아쯔시씨가 CP949에서
EUC-KR도 제대로 지원하게 수정했더군요~ 다음 버전엔 EUC-KR도
쓸 수 있게 되었습니다. 🙂

공개SW 개발자 경진대회

다음 주 토요일에 공개SW 개발자 경진대회라는 이름으로 지난 대안언어축제 때 인기를 누렸던 코너 코드레이스가 다시 열립니다. 이번에는 코드레이스만 독립해서 하기 때문에, 시간도 넉넉하고 준비도 어느 정도 완결된 상태에서 진행될 것 같아서 손에 땀을 쥐는 대회가 아닐까 합니다. 상금도 많고요~ -O-;

선수 참가 조건은 이렇게 되어 있습니다.

  • 최소 2인 이상 최대 6인 이하 팀
  • 개발시 대회장에서 제공되는 리눅스 환경의 컴퓨터를 사용해야 함
  • 상용 소프트웨어를 개발 도구로 사용할 수 없음

물론 선수 외에 방청객으로도 참가가 가능하고, 방청객이 현장에서 선수로 전환하는 것도 자유로이 가능하니까 얼마든지 즐기러 와 주세요~

저는 이번에 해설로 참가하게 되었는데, 지난번에 얼떨결에 하느라 온게임넷에 비해서 좀 지루한 경향이 있었는데 이번에는 온게임넷에서 흥분만 뺀… (그럼 남는게 있나..) 그런 것을 한번 해 볼까.. 하는 -O- (그 전날과 다음다음날에 시험이 있어서 과연 제 정신에 할 수 있을지는 잘 모르겠군요;;)

참가 신청이 며칠 남지 않았으니 얼른 팀을 꾸려서 신청해 주세용~ (위의 링크 참조)

프로젝트와 발표의 러시

요새 무척 뜸하지용~ 우어 프로젝트와 발표의 러시..
중간고사 끝나고부터 시작된 본격적으로 시작되어.. 이번
주에 극에 달하여.. 매일매일 조모임의 압박이군용.. ㅠ.ㅠ
조모임은 지나고보면 크게 하는 일도 없지만 정작 만날 때는
시간 잡기도 힘들고 시간도 많이 들고 왔다갔다 압박감도 있고..
영 거시기해요.. 한꺼번에 여섯과목이 따로 이런게 나오니
서로 일정이 엉켜서 더 복잡한 듯.. 차라리 2과목 정도씩 해서
계절학기식으로 빡시게 운영하는게 뭔가 더 나을 것 같기도
하다는 생각이.. 으흐흐..

요새 하고 있는 프로젝트 중에 “데이터베이스”라는 과목
프로젝트가 모호한 스펙으로 애들의 원성을 사고 있는데..
그래도 SI 프로젝트를 발주하는 회사들의 RFP보다는 훨씬
친절하고 자세한 것 같아요.. 흐흐.. 그래도 하나 힘든점이
있다면, RFP에 대해서 제안서 작성할 때는 그냥 무조건
맘에 들게만 하면 그 이후는 영업의 일인데, 학교에서는
별 희한한 취향으로 이것 저것 감점을 하고 그러니까 영
거시기 하네요..

이번 프로젝트는 12년 전에 나온 한 데이터마이닝 논문을 갖고, 거기에서 나온 알고리즘으로 텔레마케팅 판매성공/실패 조건 분석을 해 주는 거시기인데.. 문제는 RDBMS를 안 쓰는 것도 아니고 그렇다고 쓰는 것도 아니고.. 영 어정쩡하게 스펙을 만들어서 쓸데없이 프로젝트를 복잡하게 만들어버렸다는 것입니다. 회사에서라면 당연히 이런거는 더 좋은 디자인으로 만들어서 다시 제안하고 제안서에 어려운 말만 좀 써주면 잘 해결이 되는데, 학교 프로젝트는 똑같은 걸로 수십개 팀이 하고 있다보니 괜히 튀면 감점요인이.. -.-;

하여간..

  • 학교 프로젝트는 잘 만들어도 어디다가 쓸 데가 없어서 재미가 없다
  • 설사 재미가 있더라도 다른 과목 숙제하느라 context switching overhead가 많아서 결국은 곧 재미가 없어진다
  • 억지스러운 학교 프로젝트 스펙들을 보고 있으면, 교수들도 얼마나 수업하기가 힘든지 이해가 간다
  • 그래서.. 얼른 졸업해야 정신건강에 좋을 것 같다. -.-

IoLanguage 포트 추가

중간고사도 끝나고, 이제 막 조발표와 프로젝트의 시즌이 다가왔습니다. 원래 바쁠 때 딴짓이 더 많이 생각나는 법이라, 올해가 가기 전에 실용주의 프로그래머 권고안의 “1년에 새로운 언어 1개씩 배우기”를 실천해볼까 하는 생각이 갑자기 들었습니다. -,.-; 그래서 io를 한번 보자하는 생각이 들어서 다운로드를 찾아봤는데, 배포하고 있는 바이너리 중 FreeBSD용이 4.x용에다가 i386용이라 7.0에 amd64인 제 컴퓨터에서는 아무리 호환성 라이브러리를 설치해 봐도 돌아가지를 않아서, 그렇게 난해하다는 io 직접 빌드하기를 한번 시도해 봤습니다.

한참동안 “이야.. 자연으로 돌아갔구나”하는 심정으로 Makefile을 수정해보면서 빌드하고 나니 그냥 다른 사람들 삽질도 줄여줄 생각으로 포트로 만들어 버렸습니다. lang/io로 등록했으니, 혹시 io 빌드의 압박으로 접해보지 못한 분은 한번 설치해 보셔도 좋을 듯~ -O- 기본 타입 튜토리얼만 한번 쳐 봤는데 색다른 맛이 있어서 기분 전환에 많은 도움이 되는군요. 🙂

뭔가 또 인터넷 대란?

약 20분 전부터 뭔가 인터넷 대란 현상이 일어나고 있습니다.
한국에서 구글의 서비스들이 대부분 접속이 안 되기 시작하더니,
몇분 전부터는 미국과 영국에서도 구글에 접속이 안 되고 있군요.
그리고 국내 포탈들도 다들 백본이 가득차서 긴급하게 대책을
강구하고 있는 듯 합니다. 뭔가 타이머가 맞혀져 있던 웜의 대량
공격일까요. 아니면, 중국의 김치 사장들이 고용한? -_-;;
IRC에서 물어보니 다른 나라에서도 대체로 다들 같은 문제가 있는
듯 하니 중국에서 하는 건 아닌 것 같군요~ 무슨 문제인지 무지
궁금하당.. 으흐흐~ 곧 뭔가 뉴스가 뜨겠지요.. @.@

하여간.. 옆에 adsense가 안 떠서 화면이 멈춰 있는 문제 때문에
임시로 adsense를 꺼 뒀습니다. 삽질하고 있을 구글 시스템관리자들
화이팅! -O-

FreeBSD 소식

오랫동안 진행됐던 새로운 FreeBSD 로고 투표 결과가 공식적으로 발표 되었군요. 8월초부터 초기 선정 패널로 참가하면서 800개 정도 되는 후보군에서 고르다보니까 저 로고가 상당히 그래도 예쁘게 보이는데, 처음부터 저 로고를 보는 분들은 좀 맘에 안 드는 경우도 있는 모양입니다. 그래서, 개발자들 사이에서도 로고 싫다 그냥 데몬만 쓰자 하는 사람도 있고.. 흐흐.. 그래도 일단 선정이 된 이상은 웹페이지, CD 디자인 등에서 많이 쓰이게 될 것 같군요. 저도 이제 명함을 붉은색 계열로 바꿔야겠군요 -O-;;

그리고, 방금 FreeBSD 6.0 릴리스 CVS 태그가 완전히 찍혔습니다.
이제 별 이변이 없는 한은 FreeBSD 6.0-RELEASE가 2~3일 안에 나오게 되었습니다. 🙂 5.0이 개발 브랜치에서의 릴리스가 좀 빛을 못 받았던 것을 생각해 보면, 6.0은 그 부분을 만회한 4.0 처럼 성숙하고 사랑받는 릴리스가 되기를 기원합니다.

Hello FreeBSD 세미나

10월 29일 토요일에 Hello FreeBSD 세미나에 참가했습니다. Hello FreeBSD는 색다르게도 IRC 채널이 기반이 된 세미나인데, 차대협님과 여러 도우미분들의 노력으로 오프라인 커뮤니티들에 비해 전혀 손색이 없는 괜찮은 행사로 치루어졌습니다.

제가 발표한 내용은 FreeBSD를 개괄적으로 소개하는 부분인데,
역사, 특성/장점, 구성, 업데이트, 기여방법, 브랜칭, 일정 등을
소개하였습니다. 원래는 개발 과정 등도 소개하려고 했었지만
미리 시간 구성을 좀 해보니까 도저히 시간이 안 맞아서, 빼고
나니까 대충 시간을 맞춰서 끝낼 수 있었습니다. (시간을
맞추는데 도움을 준 타이머에게 감사드립니다. ㅎ;;)

이번 행사에서 야후 코리아의 뽀빠이님께서 야후에서 FreeBSD를
어떻게 쓰는가에 대한 얘기를 발표하셨는데, 검열되어 나온
내용이라 충격적인 것은 없었지만 그래도 “무엇이 다른가”에 대한
부분은 신비속에 싸여있는 야후의 자체 변경사항이 어떤 것인지
이해하는데 많은 도움이 되었습니다.

저는 그 뒤에 좀 있다가 시험공부의 압박으로 일찍 빠져나왔는데,
마침 불꽃놀이 때문에 차가 너무 막히고 해서, 지하철을 탔더니
여의도 지하철에 사람이 그렇게 많이 탄 것도 처음 봤습니다.
사람이 꽉 들어차서 완전 출근길 2호선을 방불케하는..

드디어 오늘 중간고사 마지막 시험이 끝나는데… 끝나서 즐겁다기 보다는 앞으로 남은 조별 발표/프로젝트 들이 걱정이 태산이군요.
흐어어어어.. ㅠ.ㅠ

하여간, 그동안 FreeBSD 관련 행사가 유난히 한국에서 별로 없었는데, 오랜만에 이렇게 많은 FreeBSD 사용자와 만나게 되어서 즐거웠습니다. 🙂 그리고, 발표 잘 하라고 응원해준 스니와 정훈이에게 감사. ^^

파이썬 subversion으로 이전 완료

오늘 드디어 파이썬 소스 저장고가 CVS에서 Subversion으로
바뀌었습니다. 원래 소스포지
CVS를 쓰고 있었지만, 소스포지 안정성에도 문제가 있고
소스포지가 subversion 지원한다고 한지 벌써 수년이 지났는데도
진척이 없어서 결국은 기존에 파이썬 호스팅을
지원해주던 네덜란드의 ISP인 XS4ALL이 svn.python.org을
새로 지원해 주어서 운영이 되게 되었습니다.

PEP-347
얘기된 대로, 여러가지 조건들 중에서 공중 익명 접근으로는
보통 많이 쓰듯이 DAV를 통해서 지원해 주고, 개발자들은
svn+ssh로 접근하게 되긴 했는데, 보통 방식하고는 좀 달라서
공동의 계정을 하나 두고 간단한 wrapper가 인증된 키를 구분해서
누가 커밋했는지를 표시하게 됩니다. 좀 독특하긴 하지만 돌아가긴
하는군요..

그래서 변환된 스토리지를 보면 변환 직후의 리비전이
r41336이군요. 그리고, 원래 소스포지 CVS에서는 개발자의
전체 이름을 메일 데몬에서 알려주고, 소스포지 로그인ID를
개발자 ID로 해서 썼었는데, 이제 subversion으로 바뀌면서
풀네임을 소문자로 표기한 것을 로그인네임 겸 풀네임으로
쓰게 되었습니다. 그래서, 마틴 같은 경우에는 martin.v.loewis
로 표기하게 되었고, 저는 hyeshik.chang 이 되었습니다.
대문자로 안 쓰니 영 거시기 하네요. 흐흐 -O-;

그동안 디렉토리가 너무 많아서 cvs up이나 diff 하려면 꽤
힘들었는데 이제 svn 덕 좀 보게되어 기쁩니다. ^_^

Twisted 책이 진짜 종이 책으로..

Abe Fettig가 몇달 전쯤에 미리 얘기한대로, Twisted에 대한 진짜 종이 책이 나왔군요. Twisted는 워낙 방대한 디자인이라 철학을 이해하는 데에만 한참 걸리는 것을 감안하자면, 책에서 풍부한 도안을 통해서 알려주는 것이 필요할텐데 늦게나마 아무데서나 볼 수 있게 책이 나와줘서 잘 됐습니다. (게다가 표지가 이렇게 멋지다니!!)

자세한 내용이나 목차 같은 것이 아직 올라온 온라인 서점이
없어서 무슨 내용이 다뤄졌는지는 잘 모르겠지만, 회사에서
Twisted를 쓸테야! 하고 혼자 주장할 때 “책도 나왔으면 이제 대세 아닌가?”라고
말할 수 있는 뭔가 지원군이 생겼다고 볼 수도 있겠습니다. 아하하;;;;;

Twisted가 아무래도 국내에서 어필할 수 있을만한 성격이 아니다보니, 번역서가 나오지는 못하겠지만 수입이 얼른 돼서 싸게 구입할 수 있었으면 좋겠네요~

Python Cross-Reference

AST 소스를 보려고 vi에서 한참 보다가 따라가기가 귀찮아서
근래 자주 보던 fxr과 비슷하게
크로스 레퍼런스를 한번 만들어서 보았습니다.

PXR (Python Cross-Reference)

으음.. lxr이 생각보다는 좀 설치가 간단했는데, 가장 난감한게
mod_perl 1.0에 의존성이 있어서, 아파치 1.3을 깔 수 밖에 없다는
것이군요. 그래서 아파치 1.3을 구석진 곳에다가 깔고서 localhost
에서만 받도록 해서 프락시로 연결했습니다. 으흐..

이제 파이썬 소스 볼때 쉽게.. ^_^;;