우유 속에 진짜 망고 과즙 ^듬뿍

요즘 효리누님의 영향으로 망고 열풍이 엄청난 가운데~ (어제는 신촌에 지나가다가 어떤 40대 아줌마가 50대로 보이는 아저씨한테 델몬트 망고 캔을 주면서 “야 난 이게 젤 맛있더라☆ 너도 먹어봐~♡”라고 아주 아양떨면서 얘기하는 것을 봤습니다. -ㅁ-;;;;;;;) 드디어, 가난한 망고팬들을 위해 “우유 속에 진짜 망고 과즙 ^듬뿍” 이 나왔네용~

0308-mangomilk.jpg

아히히 근데 소감은?

별로;; 뭔가 너무 진짜 망고라서 그런지 약간 신 비린내랄까.. 델몬트 망고의 가식적인 달콤한 그 맛이 없더군요;; 역시 델몬트 망고가 최고 (*⌒.^)^

아론 키보드 새로 삼

저번주에 [WWW]장호언니와 마지막 밤을 새다가 커피를 쏟는 바람에 아론 키보드를 망가뜨린 이후에.. 우울하게 삼성키보드를 쓰고 있다가, 드디어 아론키보드를 새로 샀습니다. 으흐.. 삼성키보드는 아무래도 너무해서 –;;; (아래 키보드를 자세히 보세요 히히히)

0308-keyboard1.jpg

원래 스크롤락 색깔이 촌스러운 노란색이었는데, 초록색으로 바뀌었더군요 :) 에헤헤 아이좋아~~

0308-keyboard0.jpg

Guido와의 인터뷰

얼마전 OnLamp[WWW]Guido van Rossum과의 인터뷰가 올라왔습니다. 얼마전에 귀도가 Zope를 떠나서 다른 회사로 간다고 발표한 것도 있고, 2.3과 2.3.1얘기도 있고 해서 인터뷰 내용이 아주 재미있는 게 많네요 :) 그동안 파이썬 문법이 계속 복잡해지면서(관점에 따라..) CP4E를 포기한 것인가! 하고 주장하는 사람도 있었는데, 아직 Guido는 CP4E가 어느 정도는 지금도 말이 된다는 입장이군요 으흐흐;;

FreeBSD Dynamic Root

엊그제 블로그에서 언급되었듯이, 예전부터 논의되어 왔던 Dynamic Root가 이제 커밋되었습니다. 흐흐 근데 디폴트는 아니기 때문에 WITH_DYNAMICROOT=yes 를 /etc/make.conf를 넣고 make world를 해주면 Dynamic World로 갑니다. 흐흐 그런데 주의할 점이.. 그냥 마구 했다가는 인스톨하는 도중에 cp나 install같은 바이너리가 동적으로 바뀌어버려서 인스톨이 뻑나면서 시스템 쫑나는 -_- 문제가 생기니까, 최근에 /rescue 생기기 전에 make world하신 분들은 반드시 /usr/src/rescue가서 make install을 먼저 해 주고나서 make installworld를 해야합니당. 에.. 혹시나 벌써 rescue 인스톨하기 전에 installworld해서 이미 쫑난 상태다 싶으신 분들은, 다음 명령으로 우선 응급 처치해 놓으면 그 rescue를 make install할 수 있을 정도로는 됩니다.

예. 이렇게 해서 Dynamic Root를 만들고 나면 이제 다음과 같이 /bin에 있는 것들이 동적으로 나옵니다.

Dynamic Root가 도입되었을 때의 장/단점은..

  • 장점

    • 디스크 용량을 조금 먹는다: 원래 /bin /sbin은 크런치 바이너리가 아니므로 따로따로 static 바이너리라서 엄청나게 먹었습니다. 그런데, 이제 동적 라이브러리로 링크됐기 때문에, libc부분이 공유돼서 줄어들었고, /rescue의 바이너리들도 전부 크런치된 바이너리 라서, 디스크 용량을 전체적으로 훨씬 적게 먹습니다. NO_RESCUE=yes 하면 더 줄일 수 있지만 요것만은 하지 맙시다 =3 =33

    • 플러그인 형태의 공유 라이브러리를 쉽게 쓸 수 있다: nss(dns 캐쉬), pam(Pluggable Authentication Module) 같은 플러그인 형태의 모듈들을 쉽게 쓸 수 있게 됩니다. 그동안 pam같은 경우에는 /bin/login 같은 곳에서 쓸라면 아주 힘들었는데, 이제 pam을 붙일 수 있는 형태로 만들 수 있으니 만세입니당.

    • 휴지통이나 libfsxlat같은 라이브러리를 쓸 수 있다: LD_PRELOAD 흑마법을 기반으로 한 시스템콜 가로채기 라이브러리인 trashcan이나 libfsxlat같은 것들을 이제 /bin /sbin에 있는 녀석들 한테도 쓸 수 있겠죠.

  • 단점

    • 업글 잘못하면 클난다: 리눅스 사용해 보신 분들은 몇 번 겪으셨겠지만, Dynamic Root는 업글 잘못하면 난리가 나서.. 아주 고생을… 그래서 FreeBSD에서는 /rescue에 원래 /bin과 /sbin에 있던 바이너리 전체를 크런치해서 넣어두었습니다.

    • 실행 속도가 느려진다: 공유 라이브러리들을 쓰면 프로그램이 뜰 때마다 리로케이션하느라 힘들어져서, 뜨는 속도가 제법 느려지고, PIC(Position-Independent Code) 생성때문에 최적화에서 불리해져서, 또한 별로 좋은 효과가 들어가지는 않습니다.

흐물~ 뭐.. 5.2에서 너무 많이 바뀌고 있는 것 같아서 좀 불안하긴 하지만, NetBSD도 그랬듯, 뭐 좀 지나면 괜찮아 지겠죠 -ㅁ-;

오늘의 포트질~*

오늘은 엊그제 얘기했던 [FreshPorts]korean/gdick 을 포트에 집어넣었습니다. 흐물.. 이제 프비에서도 쉽게 사전을!

그 외에 잡다구리 주인 없는 포트들 파이썬 버젼 올라가면서 깨진 것들을 고쳤습니다. (자꾸 고치라고 메일 보내서 -.-)

  • [FreshPorts]graphics/py-opengl : tk8.4 지원이 안 들어가 있어서 tk8.3용으로 되어있는 헤더를 이름 바꿔서 써버림. -.-;

  • [FreshPorts]devel/fnorb: Makefile.pre.in에서 @DEFS@ 를 빼야 제대로 컴파일되는 문제.

  • [FreshPorts]biology/pymol: fnorb랑 같은 문제

  • [FreshPorts]devel/pybibliographer: fnorb랑 같은 문제

  • [FreshPorts]math/scigraphica: exec 안에 네스티드 스코프성 변수를 써버리는 바람에 2.3에서는 신택스 에러나서, eval로 바꿔버림.

뿡뿡 =3

오늘의 FreeBSD~!

<에헴>오늘의 간추린 FreeBSD 소식을 말씀드리겠습니다.</에헴> -;;

  • 며칠 전 포트에 dns와 polish 카테고리가 생기고, xfce4 가상 카테고리가 생겼습니다.

  • 드디어 /bin, /sbin을 동적 컴파일을 하는 DYNAMICROOT가 Gordon Tetlow의 작업으로 커밋되었습니다. WITH_DYNAMICROOT=yes를 make.conf에 넣고 make world하면 되는데, 요건 할 얘기는 많지만 내일의 블로그 거리를 남겨두기 위해 자세한 것은 내일;;; _-_

  • 오는 8월 24일 4.9 릴리즈를 위한 -STABLE 트리 Freeze에 들어갑니다. (9월말에 릴리즈 예정)

  • Colin Percival의 새로운 프로젝트로 binup 프로젝트가 교체되었습니다. 그동안 BSDi가 넘어간 이후에 중단되어 있었는데, 이제 앞으로는 혹시나 새로운 Colin의 프로젝트가 성공한다면, 보안성 있고, 빠르고, 적은 대역폭을 사용하는 바이너리 업데이터를 가질 수 있게 될 것입니다. :)

그리고.. 곁다리로 Python 소식 하나… Python 2.3.1이 9월 두째주 쯤에 릴리즈될 예정입니다. 이번 버전의 릴리즈 짜르(Czar)은 마침 9월 첫째주에 휴가인 py2exe와 ctypes로 유명한 Thomas Heller가 맡는 다는군요. 기대가 됩니다.! :D

xfce4로 이주하다.

갑자기 마음이 동해서, 오랫동안 함께했던 [WWW]KDE를 버리고 [WWW]xfce4로 이사해버렸습니다. 으흐흐.. 물론 이쁘기야 KDE가 좀 더 이쁘긴 하지만 -.-; KDE가 아무래도 리소스도 많이 먹고 요즘 쓰는 프로그램이 거의 다 GTK2기반인데다, KDE 트레이에 gtk 프로그램들을 도킹한 상태에서 kde 프로그램들이 도킹해버리면 X가 얼어버리는 이상한 사태가 벌어지는 바람에.. 요즘 뜨고 있는 xfce를 한번 깔아봤습니다.

흐흐 생각보다 아주 깔끔하고 속도도 빨라서, 앞으로 xfce를 쓰기로 마음 먹었습니다. ~.~;; xfce는 GTK+-2.0 기반으로 되어있어서 풍부한 GTK2 테마들을 쓸 수 있고, 환상의 한글 입력기 [WWW]imhangul을 쓸 수 있다는 점도 아주 마음에 들구요.. 단순한 디자인 때문에 리소스를 아주 적게 먹는다는 것도 아주 마음에 드는군요. 흐흐.. 그리고, 주요 개발자 중의 몇 명은 BSD라이센스파라서 몇몇 컴포넌트는 BSD라이센스로 되어있고, 코어쪽도 대체로 GPL이 아닌 LGPL로 되어있다는 점도 마음에 쏘옥 듭니다. 으후훗;;

Everybody loves screenshot, we’re no exception!

0308-xfce4-thumbnail.png

[WWW]전체보기

스크린샷 출연 프로그램: gnome-terminal, xchat2, liteamp, gaim, nabi(독 안에), mozilla(다른 데스크탑에;;)

msdosfs fun

요즘 윈도우 파티션에 들어있는 mp3들을 우찌 잘 들어볼 방법이 없을까. 이런 저런 고민을 하다가, msdosfs.ko를 libiconv.ko를 쓰게 하는 게 아무래도 구조상 무리라서 (현재 libiconv.ko는 CES가 제대로 지원될 수 없는 구조..) msdosfs.ko에 직접 UTF-8패치를 해보려고 시도를 해 봤습니다.

그래서, 이런 저런 닭짓끝에, 기본적인 인코딩/디코딩은 성공했는데.. 두둥.. 웬걸~ 글자가 앞쪽만 잘려서 나오는 겁니다. 으흐.. 이게 무슨 일이냐 해서 보니.. UTF-8 시퀀스가 유니코드 글자 개수만큼 바이트로 잘려서 나오는… 그러니까.. ‘한글’이라는 파일 이름은 ‘\xed\x95\x9c\xea\xb8\x80’ 인데, 이게 앞에 2바이트만 잘려서 ‘\xed\x95’가 되는 것.. 왜 그런지 여러모로 뒤져보니.. 이런! msdosfs.ko가 글자 길이를 그냥 원래 유니코드 시퀀스 길이로 계산해버리는.. 그러니, 사실상 256:256 컨버트가 가능한 ISO-8859 쓰는 녀석들만 msdosfs를 정상적으로 쓸 수 있다는.. 그런 구조로 되어있던 것이었습니다.

그래서, 제대로 계산하게 좀 패치를 했는데(좀 미심쩍은 부분이 있긴 했지만..), 또 웬걸~ 좀 파일 이름만 길어지면 또 뒤가 잘리는.. 그 문제는 이번에는 또 윈도우의 파일 시스템 구조 특성상 13글자 단위로 뒤에서부터 엔트리가 시작돼서.. 긴 파일 이름이 여러 슬롯으로 나뉜다는 것입니다. 그러니.. 결국 파일 이름이 좀 길어지면 13글자 단위로 쪼개서 뒷 블럭부터 변환이 일어나서.. 가변폭 인코딩인 UTF-8로서는 도저히 길이 계산을 할 방법이 없어진다는… 도식적으로 그려보자면 “1234567890123에헤라디여바람분다창문닫아라” 라는 파일이 있다면

  • ATTR_WIN95 엔트리: ‘라’를 들고 있고 WIN_CNT가 2

  • ATTR_WIN95 엔트리: ‘에헤라디여바람분다창문닫아’를 이름으로 들고 있고 WIN_CNT가 1

  • ATTR_WIN95 엔트리: ‘1234567890123’을 이름으로 들고 있고 WIN_CNT가 0

  • 일반 파일 엔트리: ‘123456~1 123’을 이름으로 들고 있음. (짧은 이름이 123456~1.123이 됨)

이렇게 돼서.. 순서대로 파싱하려면 맨 끝에있는 ‘라’가 먼저 나와버리기 때문에, 현재 msdosfs.ko처럼 ATTR_WIN95 엔트리를 처리하면서 변환까지 같이 하는 구조에서는 가변폭 인코딩을 처리할 방법이 전혀 없습니다. 그래서 궁리를 좀 해보니, WIN95 길이의 최대길이인 256글자를 스택에 들고 있으면서 거기에 버퍼링을 해 뒀다가 그걸 한꺼번에 전체를 인코딩하는 방법 밖에는 없겠다 싶었습니다. 그래서 좀 찾아보니.. 으허허 역시 Apple Darwin에서는 벌써 그런 방법으로 고쳐놓았더군요. 그래서 결국은 FreeBSD의 win2unixfn 함수가 없어지고 getunicodefn이 msdosfs_conv에 들어가서, msdosfs_vnops에서는 win2unixfn으로 일일이 엔트리마다 변환해서 dp->d_name에 직접 쓰는 것이 아니라, getunicodefn으로 각 엔트리별 유니코드 스트링을 스택에 버퍼한 다음에 그걸 사용하는 것으로 되어있었습니다. 그런데, Darwin은 원래 파일시스템이 유니코드 기반이라 변환이 필요없지만, FreeBSD는 8bit byte sequence형태이므로 변환할 필요가 있기 때문에 Darwin것 그대로 수용은 불가능했지만, 그래도 뭔가 좀 빌려 쓰면 될 것 같네요.

음.. 그래서.. 결론은? 에.. 며칠 삽질 더 해야겠다는.. 크크;;

이렇게 하고 나면 뭐 거의 libiconv.ko에도 바로 붙을 수 있는 수준 –;;;;;

GDick for Win32

ddt님이 만드신 GTK+2용 사전 클라이언트 [WWW]GDick의 윈도우용 인스톨러를 만들었습니다. 흐흐흐. 사실 [WWW]SpamBayes가 그렇듯, 윈도우용 인스톨러가 나와야 쓰는 사람이 많아지는 것은 자명한 사실이라 –;;

0308-gdickwin32.png

[WWW]py2exe[WWW]NSIS를 사용해서 패키징했는데, 둘 다 아주 멋지게 쏙 되네요. :) 사전 자주 찾을 일이 있으신 분들은 한 번 시험을.. :)

다운로드 ==> http://openlook.org/distfiles/GDick-0.5.3.exe