연도 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2010 2 1 3 1
2009 3 2 1 1
2008 2 8 3 10 6 3 4 6 6 2 7
2007 3 13 10 2 4 4 6 2 3 4 3
2006 15 12 24 7 11 9 11 5 14 6 7 5
2005 5 8 17 14 13 16 10 12 11 17 9 13
2004 26 23 20 22 26 24 20 24 12 19 18 10
2003 4 27 38 32 35 36 29

2005년 03월

안철수연구소 생일빵

올해가 뭔가 운수가 무지 좋은 해인지, 올해 들어서 참 사소한 것도 좋은 일이 우루루 일어나고 있습니다.. 넉넉한 지원을 받고 중국에 다녀온 것도 그렇고~ 훈련소도 재미있었고~ (지나고나니 이런 소리가 --;) 지난 주에는 그냥 채널에서 다른 사람들이 URL을 불러 주길래 띄워 본 것이 우연히 저절로 리프레시 되더니만 안철수연구소 생일빵에 당첨되지를 않나.. 얼마 전에는 주크온에서 노래 몇곡을 별 생각 없이 열심히 들었더니만, 갑자기 모던쥬스 CD를 주는 이벤트에 당첨됐다고 네오위즈에서 메일을 보내오는 것이 아니겠습니까. -O-; 아이 그것 참~ 헤헤


안철수연구소 생일빵

그런데, 생일빵 상품권이 도착해서 봤는데.. 웬 4천원짜리 불고기버거 세트가.. 1520원짜리 등기로 왔군요 --;; 그것 참 흐;;;

이제 복학하고 나서 학점운만 따라주면 ;;; (사실은 관심은 다른 곳에.. 먼산~ =3)

댓글 2 개 | 트랙백 0 개 (보낼곳) | 태그 life


있을 지 없을 지 모르는 상수를 #if에 쓰기

오늘 커밋 로그를 보다가 멋진 트릭을 하나 발견!

C의 #if에서 정의 됐을지 안 됐을지 모르는 상수를 계산식에 써버리면 치명적인 에러가 보통 발생합니다. 예를 들면

#if NUM_OF_GIRLFRIENDS > 1
#error you're denied to run this program.
#endif

이 코드를 컴파일할 때 미리 NUM_OF_GIRLFRIENDS 가 아예 정의되어 있지 않다면, (아마도 전혀 기억이 없는 사람.. ~먼산~)

#if > 1
#error you're denied to run this program.
#endif

이렇게 돼서 > 연산자의 왼쪽이 없어서 에러가 나는데, 보통 사람의 해결방법은 #ifdef를 위에 쓰는 것이겠지만.. 오늘 파이썬 커밋 로그에서 모 플랫폼 (사실은 FreeBSD 4 -.-;)에서 _POSIX_SEMAPHORES 가 정의되지 않아서 생기는 문제점을 Martin이 고친 것을 봤는데 이렇게 고쳐놨습니다.

#if (_POSIX_SEMAPHORES+0) == -1
#define HAVE_BROKEN_POSIX_SEMAPHORES
...
#endif

_POSIX_SEMAPHORES가 정의되어 있지 않더라도 +0 == -1이 돼서.. 결국은 제대로 전처리가 되는 것!! +_+

댓글 5 개 | 트랙백 0 개 (보낼곳) | 태그 computer


치명적인 전염성 병이 있는 이유는..

고등학교 때부터 참 궁금했습니다. 세균이나 기생충, 바이러스 같은 것들 중에 숙주를 죽이는 놈들은 왜 죽이는 것인가! 죽여서 이득인 것이 있는가! 잠 안 오는 밤에는 이 생각을 이리 저리~ 이유를 생각해 보다가 잠들곤 했는데... 오늘 책을 읽다가 답을 발견했습니다. 으흐흐~ 알고보니 간단;;

숙주와 기생생물 사이의 궁극적인 관계는 살해가 아닌 상호 의존이다. 질병은 그 양자가 다행히도 공존하게 되면서 입는 부상이다. 치명적이거나 심한 질병은 대개 숙주와 기생생물이 상대적으로 새롭게 만났다는 징후이다. 즉 그 기생생물은 최근까지 다른 숙주 내에서 삶을 꾸려왔다는 뜻이다.

- 아노 카렌, 《전염병의 문화사 Man and Microbes》에서

댓글 5 개 | 트랙백 0 개 (보낼곳) | 태그 quotes


맛있는 주먹밥~

딱히 먹을 것도 없고 뭔가 만들기도 귀찮은 주말~ 뭔가 볼 것 없나 찾아보다가 거의 완결되어 간다는 스쿨럼블을 몰아서 다 보다가, 텐마와 카라스마가 주먹밥을 먹는 것을 보고.. 따라하기 한번~ :) (사실은 흰밥에 소금만 뿌린 것은 아니지만;; 밥이 모자라서 재료가 과하게 들어감.. 으흐~)


바로 이 장면!

날지는 못하지만 치요보다 잘 움직인다는 점에서 텐마의 머리도 참 귀여워요! ⌒_⌒

댓글 2 개 | 트랙백 0 개 (보낼곳) | 태그 life


py-freebsd 0.9 릴리스

지난 2주 정도 출퇴근길 지하철에서 작업한(4호선 만세!) 결과물인 py-freebsd 0.9를 릴리스했습니다. 역시나 아직도 프비 포트가 프리즈 중이기 때문에 포트는 올리지 못했고 그냥 타볼만 올렸네요. =.=;

py-freebsd는 원래 2002년 5월에 그냥 잠시 장난으로 만들어 본 것인데, 파이썬에서 기본적으로 제공되지 않은 FreeBSD 시스템/커널 함수들을 접근하기 위한 모듈입니다. 그동안은 별로 쓰는 사람도 없고.. 저도 그냥 잊고 있었는데, 요새 FreeBSD에서 베이스에 스크립트 언어를 넣자는 토론도 진지하게 올라오고 해서, 점점 파이썬이 인기를 얻고 있는 듯해서 슬그머니.. 다시 업그레이드를 했습니다. 흐흣. 원래는 0.2였지만, 이번에는 1.0을 대비해서 0.9로 바로 올렸습니다.

이번 버전에서는 예전에 벼르고 있었던 기능 2가지를 중점적으로 작업했습니다. 바로 kqueuesysctl입니다. kqueue의 경우에는 기존에 devel/py-kqueue에 Doug White가 만들어 놓은 것이 있었지만, 상당히 오래 전에 만들어져서 오랫동안 관리되지 않은 바람에, 현대 파이썬 스타일과는 많이 다르고, kqueue의 막강 기능 중 하나인 udata를 사용하기가 어려운 점이 있었던 것을 개선해서 포함시켰습니다.

그리고, sysctl은 귀찮게 시스템 명령어를 셸 호출해서 쓰던걸 이제 간단하게 데이터 타입 깔끔하게 직접 호출할 수 있도록 만들었습니다. :)

In [1]: sysctl('net.inet.udp')
Out[1]:
['net.inet.udp.checksum',
 'net.inet.udp.stats',
 'net.inet.udp.maxdgram',
 'net.inet.udp.recvspace',
 'net.inet.udp.pcblist',
 'net.inet.udp.log_in_vain',
 'net.inet.udp.blackhole',
 'net.inet.udp.strict_mcast_mship',
 'net.inet.udp.getcred']

In [2]: sysctl('net.inet.udp.maxdgram')
Out[2]: 9216

In [3]: sysctl('net.inet.udp.maxdgram', 9000)
Out[3]: 9216

In [4]: sysctl('net.inet.udp.maxdgram', 9216)
Out[4]: 9000

In [5]: sysctldescr('net.inet.udp.maxdgram')
Out[5]: 'Maximum outgoing UDP datagram size'

으흐흐~ 사실 업그레이드 작업을 처음 시작했을 때에는 pyrex로 하려고 거의 대부분 함수를 pyrex로 다시 썼는데, 아무래도 작업의 특성 상 C 코드나 pyrex 코드나 결국은 1:1 대응이 될 정도로 비슷한데, 사실 pyrex 자체의 제약사항도 있고해서 오히려 C로 그냥 줄줄이 풀어 쓰는게 더 편한 곳이 제법 있어서, 고심 끝에 그냥 일일이 C로 쓰는 것으로 작업을 해버렸습니다. ;; pyrex가 생각보다는 용도가 제한이 많이 되는 것 같네요.. 간단한 래핑이라고 해도 ctypes가 있고.. 복잡한 메모리 할당이나 구조체 작업이 일어나는 것들은 C만큼이나 복잡하고.. 으흐~ 뭐 어쩔 수 없네용;

프리즈가 풀리면 바로 업그레이드! FreeBSD 사용하시는 분들은 FreeBSD FTP에서 미리 받아서 한번 테스트해 주세요. :) 4.7이상, 2.3이상을 지원합니다.

댓글 7 개 | 트랙백 0 개 (보낼곳) | 태그 freebsd


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도 못 넣고.. ㅠ.ㅠ

댓글 3 개 | 트랙백 0 개 (보낼곳) | 태그 python


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-

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

댓글 0 개 | 트랙백 0 개 (보낼곳) | 태그 python


이제는 "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" 스크립트 언어라고 불러주세요! (한국어로는 뭐라고 하지;;; 수상경력의 스크립트 언어? ;;)

댓글 4 개 | 트랙백 0 개 (보낼곳) | 태그 python


SEED가 IETF RFC로 등장

감자옹SPF에 대해 담소를 나누던 중, 최근에 RFC로 등록됐다는 SMTP 메시지 추적 확장판이 몇번인지 한번 찾아보려고, 오랜만에 RFC 인덱스를 끝에서부터 뒤져 봤습니다. 옛날에 호기심 많던 젊은 시절(-.-)에는비교적 자주 RFC 인덱스를 업데이트해서 봤었는데 훈련 다녀 오고서는 마냥 잠만 와서~ 크흐흐;;;

마지막부터 차근차근 보다가 아앗! 발견한 것이 RFC4009: The SEED Encryption Algorithm! SEED가 정말로 내가 4년 전에 회사에 갓 들어와서 아무것도 모를 때 하던 그 SEED가 맞는가 하고 잠시 고민을 했는데 옆에 한국식 저자명들이 아 그게 맞구나 하고 확신을.. :) KISA에서 썼군요

전에 봤던 두툼한 책 2권짜리 수식으로 가득찬 SEED 책보다는 훨씬 얇아서 약간 주춤하기는 했는데, 기본 암호화, 복호화 방법과 매직넘버는 모두 담겨있어서 구현을 위한 최소한의 것은 잘 씌여 있군요. 수학식에 압도당해서 보기도 힘들었던 그 책 대신 이걸 봤으면 좀 더 쉽게 구현할 수 있었을지도..ㅠ.ㅠ

부록으로 RFC4010으로 CMS에서 사용하는 방법도 등록 되었네요.

그냥 보는 김에 쭉 위로 훑어보다가 작년 하반기 이후에 등록된 재미있는 것들이 제법 있었습니다. 흐흐

  • RFC3986에 URI가 새로운 버전으로 업데이트 되고, 오랫동안 draft 상태로 있었던 IRI가 RFC3987로 드디어 proposed standard로 등록되었습니다. (IRI는 URI에서 유니코드를 쓰기 위한 확장)
  • RFC3912로 WHOIS 프로토콜이 업데이트 되었습니다. 워낙 간단하니 별로 프로토콜에서 달라진 점은 안 보이고, 국제화에 대해서 대책이 없다는 것을 솔직하게 적은 게 추가 됐네요. (....)
  • 지금까지 IETF RFC로 등록된 적이 없었던 CGI가 역사를 기록이라도 하려는 듯 2004년 10월에서야 RFC3875로 등록됐군요. 요새 제가 쓰던 CGI들이 다들 레퍼러 스팸 공격을 받고서는 죽고 있어서 CGI는 이제 안 쓰려고 마음먹었습니다. ㅠ.ㅠ
  • 지나가다가 또 다른 한국식 이름을 발견했는데, RFC3974 IPv6 전환의 애플리케이션측 양상에 ETRI 소속의 한국인 저자가 첫번째부터 세번째까지 저자 이름이 올라가 있군요. :) 그리고 NetBSD의 itojun씨도 공동저자로! (와!)

요새 등록되는 RFC에 유독 SIP관련 내용이 많은 걸로 봐서는, 아무래도 인터넷 전화나 W-CDMA를 준비하는 업체들이 많이 보이는 것 같기도 하고 그렇네요. 그리고 그새 1월에 RFC4000을 돌파했는데.. 아직 RFC4000이 등록이 안 된것이.. 아무래도 만우절 농담을 RFC4000으로 등록하려는 것일까요? ;;; 4004도 비워놨고.. 뭐가 등록될 지 기대가 되는군요. :)

댓글 4 개 | 트랙백 0 개 (보낼곳) | 태그 computer


GNOME 2.10

지난 주 목요일이던가에 릴리스된 GNOME 2.10으로 업그레이드 했습니다. :) 포트에는 지난 주 토요일에 들어왔는데, 업그레이드하는데 그동안 갖고 있던 로컬 패치 여러개가 이리저리 뻑을 내서 4번 gnome_upgrade.sh를 돌린 끝에 20시간 걸려서 겨우 업그레이드 했군요..; 으흐 다음 부터는 커밋 안한 로컬 패치는 안 넣어둬야;;

gnome2.10
GNOME 2.10 (누르면 큰 그림)

전체적인 느낌은.. 2.8과 뭐가 달라졌는지 모르겠다.. 였;;; 2.6에서 2.8 올라가면서 UI가 많이 산뜻해진 느낌이 들었는데, 2.10은 딱히 크게 달라진 것처럼 보이는 것은 없네요~ 속도는 CPU가 빨라서 그런지 (우하하) 별 차이 없어보이고;; -ㅇ- 그런데, 깔고 나서, 세팅하던 도중에 gstreamer-register에서 계속 segfault가 나면서 gstreamer를 사용하는 모든 프로그램이 동작하지 않는 문제가 있었는데, 이 문제를 ganadist님의 도움을 받아 추적해본 결과 libmodplug.so 였던가 .mod 를 담당하는 모듈에서 뭔가 문제가 생겨서, 그 파일을 제거하고 다시 gstreamer-register를 실행해 주니까 잘 되었습니다~

그래도 영 보람이 없는 것은 아니어서 이런 건 정말 마음에 들었습니다. :)

  • 로그아웃 박스에 드디어 "컴퓨터 끄기"가! - 로그아웃 할 때 기존에 "현재 설정 저장", "로그 아웃" 밖에 없어서 컴퓨터를 끄려면 밖에 나가서 gdm이나 셸에서 또 init 0 등의 명령으로 꺼야했었는데, 랩탑에서는 상당히 번거로웠던게, 드디어 이제 한방에 끌 수 있군요. :)
  • "프로그램-데스크탑" 애플릿이 "프로그램-위치-데스크탑"으로 - 그놈 기본 설정으로는 맨 왼쪽 아래에 위치하는 애플릿이 이제 중간에 "위치"가 끼여 들어가서, 위치를 등록해 놓고 자주 쓰는 디렉터리들에서 노틸러스를 바로 띄울 수 있게 되었네요.
  • $HOME/.xmodmap도 이제 합법적으로 사용 가능 - 그동안 $HOME/.xmodmap이 있으면 부팅하면서 절대로 쓰지 말라고 협박조로 궁시렁궁시렁 댔었는데, 이제는 $HOME/.xmodmap도 로딩할 때 사용할거냐고 물어본 다음에, 다음 로그인부터는 로딩이 정상적으로 됩니다. 그래서 이제 한/영키 매핑을 위해서 따로 xmodmap 번거롭게 조절해 줄 필요가 없어졌네요. :)

사실은 FreeBSD도 4.9 이후로 나온 4.10과 4.11은 거의 바뀐 점이 없다는 것을 생각해 보면, 그놈 2.10도 안정적인 릴리스 모드로 들어가 버린 걸까요? 뭐 하여간 이제 "컴퓨터 끄기"가 생긴 만큼, 불편한 것은 없어서 좋습니다. ㅋ~

댓글 4 개 | 트랙백 0 개 (보낼곳) | 태그 computer


한글 PuTTY 0.57 릴리스

exman님의 결혼을 축하드리는 기념으로 한글 PuTTY 0.57을 방금 릴리스 했습니다. -O-;

작년 10월쯤에 발표된 PuTTY 보안 버그패치도 적용하지 않고 있었는데, 2월에 또 하나 더 나와서 좀 더 버티기는 무리라고 생각하고.. 흐흐; 이번에 겉으로는 이런 것들이 바뀌었습니다.

  • IPv6 지원이 들어갔습니다.
  • 포워딩 같은 용도로 사용하기 위해 셸이나 명령어 실행 안하기 모드가 추가되었습니다.
  • 여러개의 SSH관련 보안 버그가 수정되었습니다.
  • 접속이 끊긴 창에서 새 창을 안 띄우고 그자리에서 다시 접속할 수 있게 되었습니다.
  • SOCKS 5 프락시를 위한 CHAP인증 기능이 추가되었습니다.
  • X포워딩과 리모트 포트 포워딩에 관련된 여러가지 버그들이 수정되었습니다.

늘 그랬듯이 이번에 외부적으로 크게 변한 것은 없는 반면에, 내부적으로 소스 코드에서는 상당히 많이 바뀌었는데, 특히 그동안 주 코드에 붙어 있었던 win32 지원 코드가 모두 windows/ 하위 디렉토리로 내려가는 바람에 이제 소스 레이아웃에서도 멀티 플랫폼의 냄새가 납니다. :) 그리고, 터미널 제어 코드들이 성능을 위해서 여기저기 많이 고쳐놔서, 성능이 나쁜 컴퓨터에서도 스크롤 속도가 그다지 느리지 않을 듯 합니다. 덕분에 기존에는 대충 근처만 invalidate하면 새로 그려져서 커서 패치가 쉬웠는데, 이번엔 정확하게 커서 위치를 맞춰서 그려야 제대로 그려지는 바람에, 한 이틀밤을 디버거 들고 씨름했네요.. 흐흐;; (바보~) ㅠ.ㅠ

특히 작년 초부터 시작된 PuTTY의 전역변수 제거 작업은 이제 어느 정도 단계까지 진행되어서, 터미널과 접속 관련된 대부분의 변수가 전역변수에서 벗어났고, 설정과 관련된 일부 변수들만 전역으로 남아있어서, SDI 인터페이스로 감싼다던지 하는 것도 쉽게 될 것처럼 보입니다.

그럼, PuTTY와 함께 즐거운 작업~ (;;)

댓글 7 개 | 트랙백 0 개 (보낼곳) | 태그 happyhacking computer


bloglines 사용자 여러분 URL 업데이트 하세요

Subscribe with Bloglines

bloglines 사용자 여러분 RSS URL 바뀌었으니 업데이트 해주세용. ^^ (지금 보고 계신 것은 옛날 cgi에서 리다이렉트 된 것;;)

댓글 1 개 | 트랙백 0 개 (보낼곳) | 태그 openlook


py-freebsd, pyrex로 이사~

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

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

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

cdef extern int c_getosreldate "getosreldate" ()
def getosreldate():
    cdef int reldate
    reldate = c_getosreldate()
    if reldate == -1:
        raise OSErrorFromErrno()
    return reldate

흐흐 물론 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 좋아!

댓글 2 개 | 트랙백 0 개 (보낼곳) | 태그 python freebsd


《이머전스》

이머전스 표지 서점에서 표지를 봤을 때 어디선가 들어본 것 같으면서도 생소한 제목은 알고보니 노스모크에서 많이 들었던 그 "창발성"의 영어 표현이었군요. :) 표지 뒷면에 나와있는 서평 발췌문들에서 느껴지는 포스에서 뭔가 무척 호기심이 갔습니다. 크흐;

먹이가 풍부할 때는 따로따로 떨어져서 살다가, 먹이가 부족하면 누가 대장이랄 것 없이 모여서 한 덩이가 되는 진균의 얘기로부터 시작하는 이야기는, 별 지휘력이 없는 여왕개미와는 별개로 개미개체간의 페로몬을 이용한 피드백으로 마치 전체가 한 개체인 것처럼, 늙어가기도 하고 행위를 결정하기도 하는 개미 사회, 영원한 모더레이터가 존재하지 않으면서 분권적인 모더레이터 시스템을 이용해서 유지되는 슬래시닷 등을 통해 뭔가 세계적인 흐름에 대한 설명으로 엮어집니다. 피드백, 사회적 개체들의 자기조직화 같은 것들은 그동안 띄엄띄엄 여러 사건들에서 막연하게 느끼기는 했지만, 《이머전스》에서 이렇게 묶어놓으니, 정말로 완전히 환원적으로 봐서는 알기가 힘든 거시적인 창발성의 힘을 어렴풋이나마 이해할 수 있었습니다.

특히, 책에서 예로 들고 있는, 심시티, 심즈 시리즈나 라이프게임 같은 것들은 각각의 개체들은 비교적 단순한 규칙에 따라 동작하지만, 개체간의 피드백을 통해서 조직화가 되기 시작하고, 결국은 뭔가 그럴듯한 것이 나온다는 것을 보면, 1개의 세포가 분열해서 인체가 이루어지는 것이라든지, 증권 시장에서 자주 보이는 별 이유없이 우루루 마구 오르다가, 다시 우루루 내려가기도 하고 그러는 것들도 뭔가 맥이 통한다는 감이 옵니다.

《이머전스》는 그 전에도 이런 분석이 많이 있었는지는 자세히는 모르겠지만, 생물학, 도시의 흥망, 신경망, 소프트웨어 등에 대한 따로따로 지식을 하나로 묶어서 하나의 흐름으로 만들어 준다는 점에서, 작가의 굉장한 통찰력은 놀랄만 합니다. 앞으로 저도 생활 습관이나 UI 디자인, 코드 동작 등의 여러 부분에서 피드백으로 창발성을 만들어 내 보겠다는 생각이 들었는데.. 이게 며칠 생각해 봐도 잘 생각이 안 납니다. 기회가 되면 꼭 써봐야겠네요. 크흐;

흐흐.. 번역도 잘 돼 있는 편이니, 꼭 보시라고 추천 꾹~. 으음 그런데, 역시 흩어져 있는 지식을 모아서 흐름으로 만들기로는 빠질 수 없는 매트 리들리의 《붉은여왕》이나 《본성과 양육》이 빨간색 책 표지인데, 이 책도 빨간색인 것을 보면.... (... 괜한데서 패턴을 찾으려는 노력을;;)

댓글 5 개 | 트랙백 0 개 (보낼곳) | 태그 book


뽀샤시 NetBSD 컵

NetBSD Cup

dakiller6님께서 BSDForum에서 제작하신 컵을 하나 선물 받았습니다. 예쁘네요. ^^ 아주 튼튼해서 한번은 떨어뜨려도 안 깨질 것 같은 데 엄청난 포장에 쌓여서 와서 놀랐습니다. 감사합니다. :)

전~~에 FreeBSD Mall에서 샀던 FreeBSD 스테인리스 머그컵은 이제 설거지하다가 다 벗겨져서 원래 FreeBSD 컵인지도 모르게 돼 버렸는데, FreeBSD 새 로고가 나오면 새로운 컵을 하나~~ (-O-)

댓글 4 개 | 트랙백 0 개 (보낼곳) | 태그 freebsd life


CodeFest Asia 2005

3월 2일부터 3일까지 베이징의 하이댠구 종관춘(海淀? 中?村)에 있는 ?家?用?件?品?量?督??中心 (국가...센터 -- 아는 글자가;;)에서 열린 CodeFest Asia 2005에 참가했습니다. 원래 묵고 있었던 신세기반점에서 대략 30분 거리라고 하기는 했는데.. 길이 막히고 하니까 거의 직선으로만 쭈우욱 가는데도 실제로 걸린 시간은 40~50분정도 되는군요. 베이징이 얼마나 넓은지 이렇게 멀리 갔는데도 지도에서는 그냥 서쪽 구석에서 왔다갔다 한 것 밖에 안 되네요;;

국가..센터가 있는 종관춘(중관춘인가?) 근처까지 가는 길은 그냥 우리나라 보통 시가지나 별로 다를 것이 없는데, 본격적으로 접어들면서 슬슬 대전시 유성구 분위기로 바뀌더니 소프트웨어센터 근처는 완전 건물이 띄엄띄엄 있는게 거의 ETRI 근처를 방불케하는군요.. ㅎㅎ;; 사람도 안 다니고 택시도 안 다니고 -ㅇ-; 근데 역시 녹지가 유성에 비해서 좀 적어서 경치는 좀 별로이고 공기도 별로 안 좋기는 했습니다. 건물은 우주선 닮은게 많아서 멋있군요;;


코드페스트하는 방 © Anthony Wong

코드페스트는 우리나라에서와는 달리 아주 좁은 컴퓨터실 1개와 회의실 1개를 사용했는데, 주 행사는 모두 컴퓨터실에서 하고, 회의실은 휴게실로 사용했습니다. 컴퓨터실에는 미리 PC에 리눅스를 모두 깔아 두었는데, root비밀번호가 123456이라고 일러주더군요. 흐흐 역시 전세계 공통 비밀번호는 123456! -o-; 행사를 진행하던 앤써니가 영어, 중국어, 일본어로는 123456을 읽어줬는데 한국어로는 안 읽어준 것을 보면 한국어 숫자세기는 별로 안 유명한가봅니다. 한국어로 숫자세는 방법을 어디 홈페이지에 올리던지 해야지.. 흐~;;


초반이라 다들 열심히 코딩 중 © Anthony Wong

참가한 사람들은 아무래도 중국에서 하다보니 CJK만 참가를 했는데, 일본에서 거의 10명 넘게 왔고, 대만에서도 5~6명 정도 참가를 한 것 같습니다. 원래는 주최측에서는 몇가지 주제로 나눠서 작업을 진행할 생각이었나본데, 자기소개하는 시간에 다들 자기 하고 싶은 걸 얘기하는 바람에 결국은 거의 다 따로따로 자기 일을 하는 식이 돼버렸습니다. UIM 개발자나 Emacs에서 입력기를 개발하는 개발자, 데비안 중국어 문서 번역 프로젝트, CJK 유니한 폰트 개발자 등 많은 수가 국제화에 관련된 작업을 했지만, 리눅스 커널 포팅이나 udev쪽 작업 같은 일반적인 주제도 있었습니다.


g니베씨가 포팅하는 머신과 그 옆의 과자들~ :) © Anthony Wong

흐흐 역시 코드페스트 하면 빠질 수 없는게 간식과 식사! 간식은 제크랑 비슷한 Ritz인데, 대형할인매장용같은 5개들이 포장으로 2명에 1개씩 주더군요~ 그리고 음료수도 500ml PET로 몇개 줬는데, 아미노업도 있고.. 뭐 역시 이런건 비슷비슷~ 그리고 라면(사진에 보이는 초록색 용기)을 줬는데, 그 날은 배가 불러서 못 먹고 다음날에 한번 먹어봤는데.. 헉.. 스프 중의 하나가 뭔가 비계성 물질 12g이라 아무래도 불안해서 빼고 먹었는데도 느끼한게.. (...)

그리고 식사는 센터 건물 안에 있는 구내식당에서 먹었습니다. 점심은 고열량 식사 (진짜로 노골적으로 고열량 식사라고 라벨이 붙어있습니다;;)를 주는데, 중국집의 요리 메뉴에 나올 법한 음식들이 뷔페로 가득있어서 우선은 처음은 좋았는데.. 두째날에는 역시 그 씹으면 와사비에 된장 타서 100배 농축한 듯한 그 엄청난 냄새의 그 향신료와 기름가득 국물들과.. 그래 이정도면 중국 음식은 원 없이 먹고 가는구나 하는 생각이 --;; 그래도 죽은 담백한게 맛있네요. :) 하나 잊고 있었던 것을 일깨워준 것이, 식사에 나오는 디저트 귤이 아니!! 씨가 있는 것이었습니다! 오오.. 귤에 씨가.. (가만 생각해 보니 어릴 때는 씨가 있었던 것 같기도 하고..)


일본에서 온 개발자들에게 한글 입력 방식에 대해 설명하고 있는 최환진님 © Anthony Wong

이제 밥도 먹고 어느 정도 작업을 하고 나서, 최환진님은 일본에서 온 여러 입력기 개발자들과 한글 입력 방식이나 입력기의 여러가지 이슈에 대해서 토론을 하셨는데, 옆에서 들어보니 아 역시 멋있네요~ :) 코드페스트에서는 혼자 작업하는 것보다는 역시 이슈를 공유하는 사람들이 참가해서, 자유로운 의사소통을 최대한 활용하는 쪽으로 응용하는 것이 좋은 매력인 듯 합니다. 그런데, 저는 딱히 관심사가 비슷한 사람이 없어서 좀 아쉬웠습니다. 대만의 그 많은 포트 커미터들은 하나도 안 오고 뭐 한거야 ㅡ.ㅡ;;

코드페스트가 끝나고 나서 생각이 들었던 것은 우리나라의 코드페스트도 앞으로는 약간 넓은 주제를 기준으로 프로젝트를 신청받아서 참가를 받는 것이 좋지 않을까하는 것이었습니다. 그러니까, 중점 이슈가 "GNOME/GTK 기반 프로그램"이라고 하면, GTK기반인 사전이라던지, GNOME 애플릿을 개발하는 사람, GNOME 메시지 번역 등의 프로젝트가 참여해서 서로 공유하는 관심사가 많은 만큼 오프라인에서 활발히 토론을 하고 서로에게 충분히 도움을 줄 수 있고, 그 외에도 "PHP 기반 웹 애플리케이션", "온라인/오프라인 게임", "입력기와 폰트", "자바 웹 애플리케이션" 등 어느 정도 국내에서 프로젝트를 모집할 수 있으면서도 관심사를 한정할 수 있는 것이 제법 있을 법 하네요.. 그동안 너무 프로젝트가 다 다른 분야로 모이다보니, 서로 전혀 관심 없는 사람들끼리 그냥 하룻밤 옆에서 있었다는 그 정도의 의미밖에 없었던 것에서 오프라인 활용을 극대화할 수 있는 뭔가 주제의 집중이 필요한 듯 합니다.


호텔 화장실과 느끼한 라면 므흐흐

이번 코드페스트 참가는, 처음으로 외국에 나온 것이기도 하지만 처음 호텔에 묵기도 하고 처음 비행기도 타고 여러모로 첫 경험의 집합인데, 참 좋다고 느낀 것 중의 하나는 호텔 서비스 --;; 아 어디 잠시 나갔다 오기만 하면 방을 치워줘서.. 어찌나 좋던지.. 직접 날 잡아서 안 치우면 계속 쌓여만 가는 자취생에게는.. 뭔가 꿈만 같은 생활이군요 --; 잠깐 키오스크에 뭐 사러 갔다 오면 바로 수건 새걸로 바꿔져 있고, 설거지 다 해놓고.. 아 이것이 바로 내가 그리던 생활이야! -O-;;


비행기 이륙 직전에 자리에서 본 베이징국제공항

오는 길에는 이번에 알게 된 ETRI에서 공개소프트웨어를 연구하는 분과 동행했습니다. 오는 길에 먹었던 기내식이 참 마음에 들었는데, 기내식에 대한 부푼 기대와 함께;; 역시 오는 길의 기내식도 어찌나 맛있던지.. 며칠동안 중국음식을 먹어서 눈물이 주루룩;; -O-;; 인천공항에 도착해서 나왔는데, 뭔가 별로 베이징공항과도 다른 느낌이 없는 것이.. 일본 사람들이 베이징이나 서울이나 별로 다른 점을 못 느낀다고 하는 것이 참 몸으로 와 닿는군요.. 비슷비슷~ 뭐 물론, 건물이 띄엄띄엄있던게 붙어있다는 것은 좀 다르긴 하네요;;

이번 코드페스트 덕분에 병특기간인데도 즐겁게 밖에도 다녀오고, 운이 좋았던 것 같습니다. 이제 병특이 끝나면 무슨 일만 있으면 열심히 나가야겠습니다..! PyCon도 가고 OSCON도 가고~ (신났다;) --- 그러나 아직은 병특 ㅡㅢ

댓글 13 개 | 트랙백 3 개 (보낼곳) | 태그 life computer


처음으로 물을 건너다~

CodeFest Asia 2005에 참가하기 위해서, 처음으로 국제선을 탔습니다. :) 인천공항도 처음이지만 비행기 타는 것도 처음이고, 해외 나가는 것도 처음이고 다 처음이라.. 제법 긴장되긴 했지만, 새로운 곳에 간다는 기대에 잠이 잘 안오더군요 이히히.

약 2시간 정도의 비행을 마치고, 베이징에 도착해 보니, 나오는 길에 중국인 안내 아가씨들이 "니하오"를 하는데, TV에서 보던 것과는 다른 생니하오는 정말로 신선했습니다! 아 그래 중국어도 귀여울 수 있는거야! 생니하오 다음에는 꼭 녹음해서 다시 들어봐야지 ~

대충 검역과 출국심사를 마치고 나오는데, 나오는 문에 기다리는 사람이 막 환영한다고 피켓도 들고 있고 하니까 어찌나 반갑던지.. 다 저를 위해 나와 있는 사람만 같은 기분에 으쓱~ ;; (그러나 피켓에는 모두 다른 사람 이름 =3) 흐흐 공항에서의 첫 느낌은, 머리가 다 까매서 누가 중국인이고 누가 한국인인지 구분을 못하겠다는 것이었는데, 역시 전문가들한테도 그랬던 것인지 택시타러 나왔는데 택시 안내하는 직원이 저한테 중국어로 어디로 가라고 하는데.. 무슨 말 하는지 원~


수도국제공항 나오는 길

우여곡절 끝에 (기사가 영어를 전혀 못알아 듣는 것!!) km당 1.6원짜리 시트로엥 택시를 타고 호텔로 향했습니다. 정말 이상한게 기사가 아크릴 박스 안에 숨어있습니다. 누가 때리나? ;;


아크릴 박스 안에 숨어서 운전하는 아저씨

어제 TV에서 싱가포르에서 일하는 여자가 택시만 타면 중국어를 배우는 것을 보고, 그래 나도 택시에서 중국어를 배워봐야지! 했는데.. 아저씨가 "헬로?" 해도 손을 저으니까.. 이것 참.. 흐흐..;; 베이징의 도회 느낌은 정말로 완전히 회색이었습니다. 큰빌딩이고 작은 빌딩이고 다 회색에.. 공기도 회색이고 -.- 북한 사진이 일부러 그렇게 찍은 줄 알았더니 진짜 회색 도시가 있다는 것을 느꼈습니다;


호텔에서 본 회색 베이징

호텔에 들어와서 바로 인터넷을 연결하고 (;;) 인천공항에서 가져온 공짜 국제전화카드로 전화도 한번 하는 등 우선 통신을 복구한 다음에;; 먼저 와서 Debian Mini-Conf에 참가하고 계시던 류창우님을 만났습니다. 일부러 예약이 그렇게 된건지 우연인지 700개 넘는 방에서 바로 옆방이 걸렸네요. :) 호텔 방에 적응을 좀 한 다음에, (사실은 호텔 투숙도 처음 --;) 이번에는 그래 지하철을 타고 천안문에 한번 가 보는 거야! 하는 원대한 꿈을 갖고 지하철역 위치도 모르면서 일단 나가 봤습니다.


베이징에서는 해도 뿌옇게 진다

그런데 프론트에서는 분명히 지하철역까지 30분 거리라고 했는데, 아무리 걸어도 안 나오는 것이.. 결국은 지하철역까지 15분정도 걸리는 곳에 있는 북경이덕국제품무슨상점(읽을 수 없는 한자가 너무 많아서;;)이라는 꽤 큰 수입의류백화점만 구경하고 왔습니다. (돌아오면 어두워질 길이 막막해서 --;) 으흐흐. 한국 브랜드 옷이 무지 많더군요;; -ㅇ-;; 내일하고 모레는 시간도 없는데 천안문은 언제가나~ 엉엉.


36위엔(한화 4800원 정도)짜리 생수 앞에서 괜히 뻘쭘하게 한번 셀프 =3

내일은 CodeFest 본 행사가 시작되니까 무지 재미있을 것 같군요. :)

댓글 14 개 | 트랙백 0 개 (보낼곳) | 태그 life


누구?

장혜식 (Hyeshik Chang)
내일을 사랑하는 소년(!)