FreeBSD도 뒤늦게 subversion으로

대략 2004~2005년경에 수많은 프로젝트들이 CVS에서 Subversion으로 옮겨갔는데 거의 종교개혁 수준으로 다들 10년 넘게 쓰던 걸 갑자기 화아아악~ 바꾸는게 상당히 무서웠었죠. :) 파이썬 프로젝트도 마찬가지로 2005년 7월에 약간 늦게 svn으로 바꿔서 지금은 파이썬 sys모듈에 svn 리비전 번호가 문자열로 들어갈 정도로 잘(?) 운용되고 있습니다.

FreeBSD는 커널, 유저랜드 유틸리티 전체와 포트, 문서까지 포함하고 있는 거대 프로젝트이다보니 뭘 해도 쉽지가 않은데요. 역시 그래서 그 유명한 bikeshedding의 원조답게 수차례 결론 없는 토론을 거의 반년에 한 번씩 거듭한 끝에, 드디어 얼마 전에 svn으로 이주가 완전히 끝났습니다. (링크는 svn에서 최초 커밋)

물론 이전의 토론 과정에서는 hg, git, darcs, bazaar를 비롯한 수많은 SCM들의 변호사들이 등장해서 굉장한 토론이 꾸준히 있었지만, 분산SCM들은 분산 개발의 편리를 위해서 역사가 긴 대형 프로젝트에는 적합하지 않은 면이 많고, CVS는 그 동안 너무 문제점들이 많이 누적돼와서 결국엔 svn이 채택되었습니다. 또한 hgsvn이나 git-svn, svk 같은 툴들이 있어서 개발자들이 개인 취향에 따라 다르게 쓸 수 있다는 것도 아이러니하게 svn에 큰 점수를 줬습니다. BSDCan에서 subversion으로 이사를 주장했던 Peter Wemm이 FreeBSD에서 내부적으로 꼭 필요한 기능 (예를 들어 키워드 자동 치환, 로그 템플릿) 들을 직접 수정해서 패치를 올리고, 일일이 변환하고 잘못된 점이 있나 확인하고, 다시 잘못된 것 수정하고, 기존 커미터들을 위한 svn 가이드도 작성한 끝에 무사히 이사가 끝났습니다.

새 저장고와 관련된 것들은 대부분 http://svn.freebsd.org에 연결돼 있어서 구경하실 수 있습니다. :)

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


네이트온 클라이언트 FreeBSD 포트

가족, 친구를 포함한 일반인들과 대화하려면 상당히 필수품 중의 하나가 되어버린 네이트온. 얼마 전에 리눅스용과 맥용이 공개돼서 KLDP에서도 한동안 이슈가 됐었는데요. 그동안 pidgin용 nateon 플러그인을 쓰다가, 자꾸 gaim/pidgin을 업데이트할 때마다 자꾸 컴파일이 안 되거나 안 돌거나 그러는 일이 발생하고 그룹 대화가 안 된다거나 몇 가지 불편한 점이 있어서 호기심에 한번 리눅스용을 깔아 봤습니다.

네이트온 리눅스용은 버전 번호가 1.0 베타임에도, 웬만한 프로그램들 0.1 버전보다도 못한 빌드체계/배포구조로 되어 있어서 리눅스가 아닌 플랫폼에서 빌드하기는 간단하지 않았지만, 다행히도 automake/autoconf를 직접 안 하고 리눅스에서 한 것을 FreeBSD로 들고 와서 넣어서 돌리니 그런대로 잘 되더군요; 결국 수 시간 작업 끝에 포트를 하나 만들었습니다. :)

하나 조심하셔야할 점은, knateon이 GPLv3로 배포되어서 쓰는 것은 자유이기는 하지만, KNateOn 네이트온 서비스 약관에 보면 이런 조항이 있어서, FreeBSD 사용하다가 계정이 막히거나 할 수도 있으니, FreeBSD에서 쓰고 있다고 어디 가서 티내시면 안 됩니다. -ㅇ-;; 조용히 리눅스 쓰고 있다고.. ;; 으흐;

제7조 (서버 접속 관련)
.. 중략 ..
④ 회사는 다음 각 호의 경우 서버 접속을 중단시킬 수 있습니다.
1. 회사의 접속허가를 받지 않은 경우
2. 리눅스(Linux) 운영체제 외 다른 운영체제를 통해 서버에 접속하는 경우
.. 하략 ..
-- knateon 소스코드이용및서버접속약관 중 (오자는 제가 임의로 수정하였습니다.)

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


Net/OpenBSD에서 BSD라이선스 컴파일러 도입

OpenBSD Journal에 따르면 NetBSD와 OpenBSD에서 드디어 베이스에 BSD라이선스로 된 컴파일러를 도입했다고 합니다. 베이스에서 GPL 소프트웨어를 빼려고 해도, 도저히 엄두가 안 나게 만드는 가장 큰 무서운 장벽 gcc를 언젠가는 넘을 수 있게 해 주는 굉장히 희망적인 소식이 아닐 수 없습니다!

이번에 들어온 컴파일러 이름을 듣고 깜짝 놀랐는데요, 저는 당연히 오래전부터 FreeBSD쪽 사람들 몇 명이 개발해왔던 TenDRA가 뭔가 진척이 있었나 했더니, Anders Magnusson이란 NetBSD개발자가 PDP에서 돌아가던 컴파일러를 이어받아서 개발한거군요. (그런데 이름에 gnu가 들어갑니다 -ㅇ-;;)

아직 FreeBSD에는 포팅되지 않아서 실행해보지는 못했지만, 대략 소스를 둘러보면 아직 지원 언어는 C밖에 없는 것 같고, 포트란도 디렉토리는 만들어 놨군요. 아키텍처는 x86, m16c, mips, pdp10, nova가 있으니 아직 gcc를 완전히 대체하는 것까지는 멀었지만 벌써 컴파일 속도가 5~10배 빠르다고 하니 기대가 됩니다. (아무래도 앞으로 점점 느려지겠지만요;)

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


FreeBSD도 이제 파이썬 디폴트 버전이 2.5입니다.

약간 늦은 감은 있지만, 오늘 드디어 파이썬 2.5.1이 디폴트로 바꾸었습니다. 그동안 2.4.4로 쓰느라 여간 답답하지가 않았는데, 7개월 정도에 걸쳐서 띄엄띄엄 작업해서, 오늘 겨우 넣었네요. 이른바 메가커밋!

지난번 버전까지는 저 혼자 모든 파이썬 관련된 작업을 했었는데, 이번 버전부터는 python@ 팀을 꾸려서 다른 팀원들과 함께 하고 있습니다. 처음에는 팀원들 중에 커미터가 아닌 사람도 몇 있었는데 워낙 기근에 허덕이는 커미터 구인난 때문에, 어느새 다 커미터가 돼 버렸네요. -o-;

파이썬 2.5가 나오고 벌써 9개월이나 지난 후에 된 것이라 지난 버전들보다 엄청 늦음에도 불구하고, 우분투 리눅스를 제외한 다른 오픈소스 시스템들에서는 여전히 2.4인 것을 보면, 2.4가 굉장히 만족스럽거나, 이제 파이썬 버전이 올라가도 그다지 개발자들 관심을 안 끌거나.. 지난 업데이트와는 좀 다른 것 같네요. NetBSD나 OpenBSD같은 경우에도 아직 2.4를 쓰고 있구요.

작업 도중 가장 힘들었던 것이, egg-info 문제인데, 갑자기 모든 distutils 패키지들이 엉뚱한 파일을 하나씩 다 설치하는 데 파일이름이 제각각이어서 수동으로 지정하는 방법 밖에는 없었습니다. 그래서 1000개에 달하는 파이썬 관련 패키지에 수천에 달하는 의존성 패키지를 다 가져다가 빌드해서 설치하는 파일 이름을 얻은 다음 그걸 적용하는 바람에 이번에 패치된 파일이 444개입니다. 총 7번의 포트 클러스터 빌드를 통해 검증한 덕에, 최종적으로 커밋된 포트에서는 초기에 발생했던 1000개 이상의 문제가 대부분 수정되었습니다.

그리고, Py_ssize_t 문제도 빠질 수가 없는데요, 파이썬 2.5부터 원래 int로 사용하던 크기 관련 변수들이 모두 Py_ssize_t로 바뀌는 바람에 amd64 같은 아키텍처에서 API가 안 맞아서 빌드하다가 죽거나 심지어 설치 다 하고 돌아가다가 죽는 문제가 발생했습니다. 가능한 한 많은 테스트로 수정을 하기는 했지만, 여전히 몇몇 패키지에서는 문제가 남아있는 것 같네요. 앞으로 보고되는대로 수정할 계획입니다.

이번 업데이트에서 (포트 측면에서) 수정된 사항들은 다음과 같습니다.

  • egg-info 지원 추가: 파이썬 2.5부터 distutils로 설치되는 모든 프로그램들이 egg-info파일을 설치합니다. egg-info 파일의 경우 웬만하면 고칠 일은 없지만, 필요한 경우 PYDISTUTILS_PKGNAME과 PYDISTUTILS_PKGVERSION으로 조절해서 이름을 맞춰줘야 합니다.
  • easy-install 지원 추가: 그동안 django를 필두로 해서 수많은 웹 관련 패키지들이 setuptools를 도입해 왔는데, 이번에 포트 전역적으로 setuptools지원이 추가되었습니다. USE_PYDISTUTILS= easy_install 로 적어주면 자동으로 egg위치 같은 것이 처리됩니다. pkg-plist에서는 %%PYEASYINSTALL_EGG%%로 해주면 egg 이름이 대체됩니다.
  • 디폴트 버전 마음대로 선택 가능: 지금까지는 포트에서 지정하는 버전 한 가지만 디폴트로 쓸 수 있었지만, 이제 PYTHON_DEFAULT_VERSION을 /etc/make.conf에 지정해서 디폴트 버전을 바꿀 수 있습니다. 아무리 세상이 바뀌어도 나는 무조건 2.3을 디폴트로 쓰겠다 하시는 분들도 편하게 2.3을 디폴트로 적용할 수 있습니다. 대부분의 경우에는 자동인식 되기 때문에 따로 설정할 필요는 없습니다.

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


직장인 연간근로시간과 오픈소스 활동의 관계

애자일 이야기에 올라온 7월까지만 일한다면?이란 글을 읽다가, 인용한 그림을 보고 흠칫 놀랐습니다. 어디선가 많이 본 패턴이 보이는데, 으흠~~ 일을 적게하는 나라들에 유독 FreeBSD에서 굉장히 활동이 많은 국가들이 집중되어 있던 것입니다! 그래, 일을 적게 시켜야 뭘 하든 할 것이 아닌가 싶어서 과연 근무시간과 오픈소스 활동과의 상관 관계에 대해 조사를 해 봤습니다. 뭘 조사하느냐를 결정해야 하는데, 메일링리스트를 보는 것도 좋겠지만, 메일링 리스트는 언어의 제약이 굉장히 많이 작용할 것 같아서 FreeBSD의 PR 데이터베이스를 쓰기로 했습니다. 아무래도, 그냥 패치만 보내도 되고 비교적 짧게 적어도 되니까 꼭 올릴 사람들을 올릴 것 같아서~ :)

그래서, 모든 PR 자료를 cvsup으로 받은 다음에 로컬에서 간단하게 뒤져서 분석했습니다. 너무 오래된 자료들은 빼기 위해서 #40000이후만 넣었는데, 40000번이 올라온 것이 대략 2002년 6월 정도 됩니다. 그 이후에 올라온 69374개의 PR 중에서 Received헤더와 From헤더를 토대로 보낸 사람이 사는 국가를 추정했는데, 미국은 FreeBSD 서버들이 미국에 있어서 IP구별이 힘들어서 통계에서 제외하였고, 영국도 알 수 없는 이유로 GeoIP로 검출되지 않았습니다. 결국 남은 것은 총 100개 국가에서 모두 46304개의 PR이 나왔고, 얘네들을 대상으로 분석하기로 했습니다. (사용한 스크립트)


FreeBSD PR수와 근로시간

우선, 대충 생각해 봐도 인구와 활동양은 비례하는 관계가 어느 정도 있을 것이기 때문에, 활동량을 국가의 인구(위키백과에 올라가 있는 최근 자료를 사용)로 나눈 것과 작업량의 상관 관계를 계산했더니 -0.54가 나왔습니다. 아주 높은 것은 아니지만, 그래도 적당히 상관관계가 있다는 것을 암시하는 것 같은 느낌이 오네요~ (위 그래프에서 대충 경향이 약간 있는 것 같죠? 'ㅇ')

그 외에도 생각해 보면, 먹고 살기 힘들면 오픈소스 하기가 힘들테니, GDP하고도 어느 정도 관련있지 않을까 해서 계산해 보니까 0.52가 나오네요. 그래서, 한 번 얘네들을 묶어서 예측할 수 있도록 식을 만들어 봤습니다. 우선은 대충 기분으로 이렇게~


Pr=FreeBSD PR수, W=근로시간, G=GDP, Pop=인구

선형 최소자승법을 쓸 수 있게 약간 풀고 넘기고 하면,


Pr=FreeBSD PR수, W=근로시간, G=GDP, Pop=인구

그래서, 이놈을 스크립트를 짜서 분석해 보면, 각각의 계수가 k1=-1.51, k2=14.7, k3=3135.7, k4=-30172.4 정도 나옵니다. (사용한 스크립트) log G가 보통 10내외 인 것을 감안하면, W는 -로 100내외 정도 영향을 미치고, log(GDP)는 상당히 많은 영향을 미쳤군요. 흐흐 역시 샘플이 적어서 식이 좀 이상합니다. -ㅇ-; =3=3


인구1000만명당 FreeBSD PR수와시간의 관계, (붉은색은 예측 기대값)

그래도 대충 그래프 보면 뭔가 보이긴 하죠? ;; 빨간색은 위에서 근사식으로 만든 것을 다시 적용한 값인데, 마음대로 이름을 OBFI라고 붙여봅니다. -O-; 대충 1000만명당 PR 개수 순으로 정렬했을 때, 일하는 시간은 증가하는 경향을 보이고 OBFI는 감소하는 경향이 나타납니다. (상관계수는 0.618)

대충 빨간색보다 파란색이 위에 있는 나라는 환경에 비해 오픈소스 (여기서는 FreeBSD) 활동이 많고, 반대의 경우에는 환경에 비해 활동이 적다고 볼 수 있겠습니다. 일본이나 독일이 오픈소스에서 그렇게 활동을 많이 하는 것 처럼 보여도, 그래프에서는 별로 튀어 나오지 않는 것이 사실은 인구빨인 게 들통났군요~ 그리고, FreeBSD가 유난히 강세인 덴마크와 네덜란드가 역시 예측된 값과 엄청난 차이를 보여주고, 한국과 멕시코는 역시 약세입니다. 그런데, PR을 대상으로 해서 그런지, 아니면 주로 유럽이 대상이라 그런지 생각보다 언어는 그다지 문제가 안 되는 것 같네요. 영어를 주로 쓰는 호주나 뉴질랜드라고 다른 국가들에 비해 특별이 더 튀거나 그런 경향은 없는 것 같습니다. 러시아나 중국이 끼였으면 좀 더 분석이 좋았을텐데 OECD자료이다 보니, 없는게 아쉽네요.


일을 많이 시켜서 오픈소스 못하는 우리나라~

인구 순으로 하면 우리나라도 OECD에서 상당히 높은데, 앞으로 S모기업이나 L모기업 같은 곳을 비롯하여 사회 전반적으로 사원들이 젊은 시절에도 좀 여유롭고 즐겁고 발전하는 삶을 살게 근로시간을 줄여주면 오픈소스 뿐만 아니라, 인문학도 살고, 좋아지지 않을까 생각해 봅니다. 회사일 말고도 재미있는 것이 얼마나 많은데~

소수의 자료만 갖고 작업한 것이라 통계적으로 그다지 정확한 편은 아니지만 너그럽게 글자만 읽은 셈치고 잊어 주세요 =3=3 흐흐

일러두기 -- 아일랜드와 아이슬란드도 인구가 너무 적어서 통계에서 제외했습니다.

댓글 10 개 | 트랙백 1 개 (보낼곳) | 태그 freebsd computer


FreeBSD에 Beryl깔기

요즘 리눅스 사용자들은 창 들고 흔들흔들 정도는 해 줘야 화면이 좀 뽀대가 나는 것 같아서, 부러움에 한번 큰맘 먹고 Beryl을 깔았습니다.

일단 Beryl을 쓰자면 Xorg를 포트에 없는 새 버전으로 올려야 한다기에, FreeBSD 위키에 있는 설명을 보고, 실험 중인 git 곳간에서 포트를 받아다가 설치했습니다. 포트 전체를 다 갖다놔서 생각보다는 편하더군요~ 게다가 beryl도 포트로 만들어놔서 간단~ :)

결국 6시간의 빌드 끝에, xorg, gnome, beryl 모두 빌드하고, nvidia 드라이버를 적당히 세팅해서 올려서 이런 화면이 짠!

그러나.. 무엇이 문제인지, 클릭하면 거의 1분에 1프레임씩 지나가고 키보드로 우다다 쳐도 업데이트가 전혀 안 되다가 마우스 클릭 해 주면 그제야 10초 있다가 보여주고 그래서.. 눈물을 머금고 나왔습니다. CPU를 많이 쓰는 상태도 아니고, glx설정은 대체로 제대로 되어있는 것 같은데 이상하더군요..

혹시 투지가 있으신 분은 시도해 보시고, 성공하시면 방법을 알려주세요. +_+

==> 이후에 패치를 하나 추가해 주니까 멋지게 돌아다니네요 +_+ 와와~~~

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


파이썬 포트 문제와 Innovative Whack Pack

지난 대안언어축제에서 아마도 가장 긴 여운을 남겼던 것은 아무래도 마지막 자기 포부를 말하고 주변에서 환호성으로 축하해 주는 것이었습니다. 그게 원래 할 계획이 있었던 것이 아니라, 그 전날 다음 날 회고를 안 지겹고 인상에 남고 흥미롭고 지쳤을 때도 다 같이 좋은 분위기에서 참여할 수 있는 걸 찾기 위해 열심히 찾아낸 끝에 나온 아이디어였습니다. 그게 갑자기 뚝 떨어진 게 아니라, 뭘 할지 무척 고심을 하다가, 여유있게 어슬렁거리던 창준형이 갑자기 "비장의 무기를 준비했지!" 하고 자신있게 스으윽 꺼낸 것이 바로 Creative Whack Pack 이었습니다. 카드를 몇장 들고 보고 있으려니 갑자기 승범이가 "이게 좋을 것 같아요!" 그러더니 막 아이디어를 쏟아내는데... 흐흐 무척 탐나서, 돌아와서 바로 아마존에 주문해서 구입~ 마침 결제하려고 보니 아마존에서 할인 기간이라고 수퍼 세이버 시핑을 하는데 뭘 더 사면 싸다고 추천을 해주길래 Innovative Whack Pack도 샀지요. 순간 아마존의 상술에 속아서 -ㅅ-;

음 하여간, 요새는 FreeBSD의 파이썬 포트 때문에 무척 고생을 하고 있었습니다. 거의 1주일 넘게 거의 모든 여유시간을 포트 고치는데 쓰고 있는데도 아직도 고칠 게 200개 넘게 남았군요. =_=;;; 이번에 어찌하다가 6.2을 위한 포트 프리즈 직전에 파이썬을 2.5로 업데이트하게 되었는데, 그게 알고보니 대략 4가지 정도 되는 다양한 문제를 만들게 돼서, 파이썬을 쓰는 다른 포트들이 거의 500개 남짓 깨져버린 것이었습니다. 당연히 수많은 사람들이 메일링 리스트에서 난리가 나고, 포트매니저들도 말하고 그러지 그랬냐고 핀잔도 주고.. 아하하; 파이썬 2.2, 2.3, 2.4도 늘 프리즈 직전에 임포트 했었는데.. 관성이 문제를 일으키는군요 --;

점점 문제가 마치 괴혼에서 쓰레기 굴리듯이 불어나서, 2.4로 돌리느냐 문제를 계속 고치느냐 고민을 하고 있던 중에, Innovative Whack Pack을 한번 써 볼까 하고 손에 들었습니다. 사실 카드를 사긴 했지만, 학교 수업들을 다 순수과학 2학년 전공 과목을 듣다보니 쓸 일이 전혀 없더군요. 그래서 일단 마구 섞고, 3장을 뽑았습니다. 나온 것이 위의 3장~ insight 면에는 그림과 Heraclitus의 짧은 경구들이 있습니다. 그리고, strategy 면엔 밑의 문장이..

짧게 요약해 보면,

  • Donkeys prefer garbage to gold: 지금 열심히 하는 게 나중에도 중요한 일일까? 어떤 상황이 되면 그 가치가 변할까? 지금 생각하고 있는게 나중에는 쓸 모가 없어지지 않을까?
  • When there is no sun, we can see the evening stars: 문제에서 떨어져 봐라. 지금 해결하려는 문제에서 떨어져서 잠시 쉬면서 생각해 보았는가?
  • Sea water is both pure and polluted: for fish it's drinkable and life-giving; for humans undrinkable and destructive: 문맥을 바꿔보아라. 어떤 다른 문맥에서 니 생각을 다르게 생각해 봤니? 의미가 어떻게 변하니?

그래.. 가만 생각해 보니, 지금 포트를 열심히 욕먹어가면서 고쳐봐야 뭐 나중에는 별로 티도 안 날 것이고, 지금 남들이 고이 보지 않아서 조바심내가면서 하고 있는 포트 작업들도, 프리즈 기간이 아니라 그냥 평상 시 같았으면 잘한다고 고맙다고 그럴 작업이었던 것입니다. 으흐흐. 그래 파이썬 2.5를 넣어야 된다는 것을 먼저 불변의 목적으로 딱 박아두고 모든 것을 생각하고 있었는데, 그냥 빼버려도 별 상관 없을 것 같다고 생각하니 홀가분하고 좋습니다. ^_^* 이제는 프리즈 기간 직전에 이런 짓 안 해야겠습니다;;;

평소에 포팅을 하다 보면, 문제를 해결하는 방법이 무척 많은데, 뭘 선택해야할 지 고민할 때가 많습니다. 그래서, 포팅할 때 고려해야 할 때 선택이나 아이디어에 도움이 될 만한 것들을 모아서 portlint 같은 데서 엉뚱하게 한 개 씩 출력해줘도 좋지 않을까 생각을 해 봤습니다; 그런데 아무래도 카드로 만들어야 뽀대가.. 흐흐;

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


FreeBSD는 아시아에서 인기가 없는가?

최근에 BSD사용자들의 지역, 하드웨어, 버전 분포를 정확히 파악하기 위한 bsdstats프로젝트가 시작되었습니다. 그런데, 오늘 freebsd-advocacy 메일링리스트에 한국은 미국보다 (인터넷 호스트수가) 앞서려고 할 정도면서 왜 FreeBSD 기계가 1대도 없을까?하는 의문이 올라왔습니다.

저도 귀찮아서 안 하고 있었는데 저걸 보니 돌려야겠군요. --; BSD사용자들은 bsdstats 사이트에 가셔서 스크립트를 받으셔서 관리하는 기계에 등록시켜 주세요~

FreeBSD에서는 root권한으로

$ cd /etc/periodic/monthly
$ fetch http://www.bsdstats.org/downloads/300.statistics
$ chmod 555 300.statistics
$ sha256 300.statistics
SHA256 (300.statistics) = 9c44684c9049501ef578c6dd05bad5a1c0eb9b41b5898e0d3f29ffbb215f96f1 
$ echo 'monthly_statistics_enable="YES"' >> /etc/periodic.conf
$ /etc/periodic/monthly/300.statistics
To protect against abuse, the initial challenge/response phase
contains a 15 minute pause.  Please be patient while this time
limit elapses

이렇게 하시면 됩니다.

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


SKT 전화기용 일회용 패스워드(OPIE) 생성

항상 ssh로 서버에 접속해서 메일도 확인하고 채팅도 하고, 간단한 계산도 하고, 실험도 해보고 하는 일상적인 생활에서 학교나 게임방, 병원 같은 데서 아무나 쓰라고 내놓은 컴퓨터에서 ssh 패스워드를 입력하기란 찝찝하기가 짝이 없습니다. 뭔가 깔려있는 프로그램도 수백만개에다가.. 이거 바이러스 잡는 프로그램도 한 5개씩 깔려있는데 그놈들이 뭔가 더 바이러스 같아 보이고.. 그나마 치료도 안 될 것 같고.. 키보드 입력하는 걸 누가 사진 찍고 있을 것 같은 기분도 들고.. -ㅇ-;

그래서 지난 겨울에는 opiekey로 미리 일회용 패스워드를 여러개 뽑아서 종이에 인쇄해 다녔는데, 이게 또 맨날 까먹고 패스워드 다 됐을 때 보충해 놓지 않으면 접속하지 못하고, 종이에 적어다니다보니 잃어버릴 위험도 있고 해서 어제 전화기용 OPIE 제너레이터를 만들어 봤습니다.

OPIEKey 스크린샷

요즘 세상이 좋아져서 자바 문법도 모르는데 IDE가 시키는 대로만 하니까 뚝딱 되더군요. (난생 처음 짜본 자바 프로그램 -O-;;)

SKT 전화 쓰시는 분들은 한번 해보세용. 다운로드는 무료인데, 데이터 요금은 듭니다. (데이터 무제한 요금제이면 안 들고..)

처음 자바를 하는데 도움을 많이 주신 랫쓰님께 큰 감사 드립니다~ ^.^

싸이월드도 OPIE 지원하라~~ (먼산)

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


네이버사전체 윈도우 없이 풀기

요즘 굴림체를 합법적으로 쓰는 방법으로 네이버 사전체가 인기를 얻고 있습니다. 상당히 좋은 품질의 비트맵 글꼴을 포함하고 있고, 라이선스도 OS 제한 없이 아무데서나 쓸 수 있게 하고 있어서 썩 괜찮은 선택인 것 같습니다. 흐흐

포트로 등록하기 위해서, 조금 쳐다봤는데 NSIS 인스톨러로 되어있어서 exe를 실행해야 하게 되어있네요~ 그래서 FreeBSD에서 풀 방법을 찾아보다가, p7zip에서 NSIS 설치파일을 풀 수 있다는 것을 발견했습니다. 그런데, p7zip이 C++ 프로그램에 템플릿을 와장창 써버리는 바람에.. 컴파일이 어찌나 느린지.. 그래서 포트에서 잽싸게 설치하는 데 문제가 좀 많아서 결국은 디버거로 한참 뚫어져라 쳐다봐서, 파이썬으로 p7zip에서 하는 짓과 비슷하게 한번 만들어 봤습니다.

>>> import urllib, zlib, md5
>>> URL = 'http://cndic.naver.com/font.nhn?menu=download'
>>> tcmp = urllib.urlopen(URL).read()[60703:14721246]
>>> uncmp = zlib.decompress(tcmp, -zlib.MAX_WBITS)
>>> md5.md5(uncmp).hexdigest()
'd4b2f7fafb16bca61f02108359e029bb'
>>> open('naverdic.ttf', 'w').write(uncmp)

p7zip은 없고 python이 있으시면 요 방법으로 간단하게 풀어보세요~ -O-

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


FreeBSD 개발자 Ruslan을 도와주세요

FreeBSD 사용자 중에 경제적인 여유가 되시는 분들은 Ruslan을 도와주세요 페이지를 한 번 봐 주세요~

Ruslan Ermilov(ru@)는 우크라이나에 사는 FreeBSD 소스/포트 커미터입니다. 주로 베이스 툴과 라이브러리, 네트워크 관련 부분에서 FreeBSD에서 빼놓을 수 없는 중요한 개발자로 오랫동안 활동해 왔습니다. 그런데, Ruslan의 배우자가 오랫동안 암 투병 생활을 하다가, 결국 모스크바에 가서 수술을 받기로 했지만, 비용이 많이 들어서 심각한 걱정이 많다고 합니다.

FreeBSD 개발자들은 대부분 현업 개발자나 엔지니어들이다 보니, 현실 세계에서 어려운 사람도 드물지 않게 있습니다. 그동안 문제를 주변의 도움으로 극복한 사람도 있었고, 결국은 탈출하지 못하고 안 좋은 결과가 있었던 사람도 있었지만, 여러 헌신적인 노력을 보여주었던 그들의 노력에 힘을 주는 의미에서 경제적인 여유가 있으신 FreeBSD 사용자 분들은 약간의 도움을 부탁드립니다~

좋은 결과 있기를~ ^^

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


FreeBSD에서 rrdtool에서 한글 쓰기

rrdtool은 버전 1.2로 올라가면서 트루타입 글꼴을 직접 그리는 것으로 완전히 전환을 하는 덕에, 라틴이 아닌 글자를 그릴 수 있는 기능이 들어갔습니다. 그렇지만, 이 기능이 mbstowcs(3)을 이용해서 멀티바이트 문자열을 와이드캐릭터 문자열로 바꿨기 때문에, 와이드캐릭터가 유니코드가 아닌 플랫폼에서는 엉뚱한 글자가 출력되는 버그가 있었습니다.

POSIX 표준에서는 wchar_t에 글자를 유니코드로 저장하는 것을 강제로 하지 않고 있기 때문에, FreeBSD나 MacOS X 같은 플랫폼들은 wchar_t에 각 인코딩에서 가장 표현력이 높은 단순한 내부 형태로 저장하고 있습니다. 예를 들어 EUC-KR에서 '한'은 C7 D1인데, 이것을 리눅스와 솔라리스에서는 '한'의 유니코드 표현인 D55C로 저장하지만, FreeBSD에서는 C7D1로 저장합니다. 따라서, mbstowcs를 유니코드가 출력이 된다고 가정하고 쓰는 것은 잘못된 사용이라, FreeBSD에서 한글을 못 쓰게 된 것입니다.

그래서, 마침 그냥 주말에 시험전증후군의 영향으로 산만해진 틈을 타서, 학교 중도 잔여좌석 그래프를 그리는 rrd 그래프를 하나 그려 보면서, 제목과 범례에 한글로 나오게 패치를 해 봤습니다. --;

흐흐.. 패치는 그냥 일단은 mbstowcs를 매크로로 덮어버리는 방법으로;; 업스트림하기 위해서는 automake에 iconv 검출하는 부분을 넣어 줘야하는데.. 이거 참 automake를 오랜만에 보려니 머리가 아찔한게 --;;;; ㅠ.ㅠ.ㅠ

--- 그러나 --- 패치를 다 하고 보니, FreeBSD에서도 UTF-8 로캘을 쓰면 wchar_t에 유니코드로 저장을 하기 때문에, 알고 보면 setlocale만 제대로 하게 패치하면 되는 것이었는데.. 괜히 오바해서 엉뚱한 것까지 해버렸네요 -O-;; 그래도 혹시나 euc-kr 쓰시는 분들을 위해;; _-_

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


구글 Summer of Code 2006

작년에도 굉장한 인기를 끌었던 Google Summer of Code가 올해도 더욱 더 커진 규모로 시행될 계획이라고 합니다. 이미 FreeBSD 프로젝트나 파이썬 소프트웨어 재단같은 멘터 기관들은 내부적으로 멘터들을 모으고 프로젝트 아이디어들을 모으느라 부산하게 움직이고 있습니다.

올해도 작년과 같이 각 단위당 학생 4500달러, 멘터 500달러로 상금을 주고 둘에게 각각 구글 티셔츠를 1벌씩 준다고 합니다;; 작년에도 프로젝트들이 대다수가 성공해서 상금을 받아간 것을 보면, 올해도 결과들이 무척 기대가 됩니다. 올해는 한국에서도 많이 참가해서 커밋로그에서 많이 보게 되었으면 좋겠네요~ 5월 1일 부터 참가 접수가 시작되고, 5월 8일에 참가 접수 완료해서 5월 22일에 멘터-학생 매치가 완료된 뒤에 발표가 나서 시작한다고 합니다.

약간 좀 거시기한 것은, 6월 말까지 중간까지 진행해서 중간 보고를 하기 때문에 한국의 학사일정하고는 안 맞아서 정작 설렁설렁 다니는 학생이 아니면 일정 맞추기가 쉽지가 않긴 한데.. 흐흐.. 아쉽네요~ (저도 7월까지 빡시게 여름학기를;;;)

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


최근 얼마 간의 데이터 쌓기

예전에 회사에서 일할 때, 초당 30만건 정도 들어오는 자료의 빈도를 세서 누적 데이터를 기준으로 5분, 1시간, 1일, 1주, 1달, 1년 최다 순서로 100개 정도씩을 보여주는 루틴을 만들 일이 있었습니다. 그 때는 뭐 회사 프로젝트도 검수 기간도 다 끝나고 영 제값 못 받고 한다고 생각하는 프로젝트였기 때문에, 그냥 대충 가장 단순하게 막 구현을 했더니 오방 느려서 하드웨어빨로 버티고 있었습니다. 나중에는 각 샘플링 별로 상위 10배수를 뽑아서 나머지를 버리는 등의 튜닝을 약간 해서, 처리속도가 데이터 들어오는 것을 못 따라가는 문제를 약간 해결해야하긴 했습니다. :)

물론 이렇게 하면, 정확한 이산 데이터를 합해서 하기 때문에 아주 정확한 자료를 얻을 수 있다는 장점은 있지만, 통계 기간에 들어가는 샘플의 수가 워낙 많기 때문에 속도의 문제나 기간의 제한 등 여러가지 문제가 산적해 있었습니다. 특히 가장 문제는, 샘플 저장 수를 줄이기 위해서 장기간의 통계용 샘플들은 정밀도를 줄여서 5분 데이터를 모두 모아서 1시간 데이터로 만드는 등의 작업을 거치기 때문에, 업데이트가 바로바로 되지 않는 문제가 있었습니다. 그래서, 그때는 그냥 뭐 병특도 끝나가고 해서 대충 넘어 갔는데 -ㅇ-, 얼마전에 여자친구 숙제를 도와주다가, 커널에서 load average 계산하는 방법을 보고서 이것을 게시판의 "최근 뜨거운 글 100개 목록"이나, 네트워크 장비들의 "최근 다발 접속 IP 100개" 같은 통계에 쓰면 좋겠다는 생각이 들었습니다. +_+ 벌써 다른 데서는 다 쓰고 있었는지도 모르겠지만; 이렇게 되면 보통 하듯이 하루 단위로 리셋되지 않고 부드럽게 꾸준히 업데이트되기 때문에 비교적 부하를 줄이면서도 쓸만한 데이터를 얻을 수 있지 않을까 싶네요~

그래서, 그 방법이 무엇이냐! 간단히 요약해서 다음 수식으로~

커널 소스코드에서는 sys/kern/kern_synch.c 부분에 있습니다. x가 로드이고, s가 새로 들어오는 샘플, window가 원하는 통계 기간의 샘플 수 입니다. 이렇게 하게 되면, 새로 들어오는 샘플은 1-1/exp(1/window) 의 비율로 들어가고 그 다음부터는 1/exp(1/window)가 계속 곱해져서 살짜쿵씩 사그라듭니다. 적당히 원하는 보존 기간을 지나가면 무시할 수 있을 만큼의 비율로 없어지기 때문에, 데이터 값 1개만 유지하고서도 이산형 데이터 모두를 저장하는 부담을 줄일 수 있다는 점에서 그런대로 쓸만한 방법인 것 같네요. +_+

그래서, 과연 이 놈이 진짜로는 어떻게 없어지나 그래프를 한 번 그려 봤습니다. (x 축이 축적 횟수, y축이 최종 데이터의 반영 비율, 샘플 누적 목표는 10으로 했을 때)

그래서 대략 계산해 보면, 10개까지의 데이터들의 반영 비율이 63% 정도 되고, 2배수인 20개까지의 비율의 합이 86%정도 됩니다. 정확한 데이터는 아니지만, 데이터 계산을 연속적으로 할 수 있고 연산/저장량이 많이 줄어든다는 점이 장점이겠습니다.

그런데, 커널에서는 부동소수점 연산을 피하기 때문에, 이런 계산을 좀 더 재미있는 방법으로 하고 있는데, 이것도 한 번 눈여겨 볼 만합니다. :) 커널 소스의 cexp라는 fixpt_t형 배열에는 exp(-1/샘플수)의 값이 미리 계산이 되어 있어서 그냥 곱하기만 하면 되게 되어있기 때문에 e 계산이나 나누기를 하지 않아도 됩니다. 그리고, 사실은 이놈이 부동소수점형이 아니라, CPU에서는 정수형으로 취급되는 고정소수점형이라는 것~ 32비트 중에서 왼쪽 21비트를 정수영역, 나머지 11비트를 소수점영역으로 쓰는데, 1<<11 * 소수 이렇게 하면 간단하게 소수점 이하라도 쉽게 변환이 되고, 덧셈 뺄셈도 생각해 보면 그냥 정수 덧셈,나눗셈 인스트럭션으로 될 것을 알 수 있습니다. 그리고, 곱셈도 가능한데 둘을 곱한 다음에 소수 영역 길이인 11비트만 오른쪽으로 시프트 해주면 고정소수점 곱하기 한 것처럼 됩니다. (물론, 손으로 써보면 쉽게 증명이 됩니다. :) 후배한테 자랑했더니 요새는 학교에서 이런 것도 가르쳐 준다는군요 -.-;)

뭐 하여간.. 전에 회사에서 바쁘던 와중에 검색을 할 때는 좋은 아이디어가 딱히 안 떠오르고, 검색을 해 봐도 딱히 좋은 알고리즘이 안 떠올랐는데, 계속 곱하기만 해도 줄어든다는 것을 떠올리지 못한 것은.. 아무래도 수학 공부를 안 해서일까요 -.-a 그래서 이번 학기에 공수 불끈! +_+

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


파이썬 2.4.3 포트 업데이트 완료

어제 릴리스된 파이썬 2.4.3으로 lang/python 포트를 업데이트 했습니다. 이번에는 얼마 전에 lang/python-devel 포트에서 시험적으로 적용했던 pkg-plist 줄여쓰기를 메인 포트에서도 한 번 적용해 봤습니다. 원래 py, pyc, pyo를 모두 pkg-plist에 적어 두고 있었는데, 용량이 너무 커져서 파이썬 포트들만 모두 합쳐도 이제 1MiB가 넘어가는 판국이 되어서 pyc와 pyo를 빼고 awk로 중간에 처리를 하도록 해버렸더니 60KiB정도가 줄었습니다. :) 그리고, NO_NIS는 있으면서도 PORTMAP은 안 끈 시스템에서 설치하다가 파일이 없다고 에러나는 것도 rpcgen 대신 ypcat을 체크하도록 해서 고쳤습니다.

파이썬 2.4.3은 아주 마이너한 버그 패치들만 들어가 있기 때문에, 기능적으로는 특별히 볼 만한 것은 없지만, Coverity와 refleak check, buildbot 등 파이썬 개발팀에서 최근에 사용하기 시작한 완성도 높이기 덕택에, 자잘한 버그들이 정말 많이 수정되었습니다. (예를 들어 PyObject_Unicode(NULL) 하면 세그폴트 나버리는 문제라던지..) 완성도 관련이나 릴리스 자동화, 막판의 버그 픽스와 하위 호환성의 충돌과 관련해서 좀 더 깊숙히 할 얘기가 있는데 2.4.3 릴리스와 관련된 뒷얘기들은 다음 기회에 다시 자세히~

그나저나, 지금 확인해 보니 아직 넷비, 우분투, 젠투, 데비안, 페도라에는 2.4.3이 안 들어간 걸 봐서는 이번엔 프비가 대략 1등? ^_^;; =3=33 (시험 전날 공부는 안 하고 이런거나 --;;)

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


FreeBSD 6.1 무엇이 바뀌었나~

오랜만에 FreeBSD 관련해서 뭔가를 쓰는군요. ^.^ 지금 열심히 릴리스 엔지니어링 막바지 작업이 진행되고 있는 FreeBSD 6.1에 관심이 많으실 듯 합니다. 유명무실했던 5.x대 릴리스를 딪고 일어서서 이제 본격적으로 안정버전 대열로 들어갈 6.1은 FreeBSD의 역사에서 매우 중요한 역할을 할 듯 합니다.

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


FreeBSD에서 MS Office 쓰기

모 뉴스 사이트를 읽다가 발견 :-) 크로스오버 오피스가 그동안 리눅스에서만 잘 되고 있었는데, FreeBSD에서도 리눅스에 설치된 것을 복사해와서 쓰는 방법이 올라왔군요. (아쉽게도 요새는 오피스를 쓸 일이 별로 없어서;)

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


정적 링크한 darcs 패키지

그동안 버전 관리를 안 하고, 저자의 하드디스크를 rsync하는 방식으로 희한하게 배포를 해 왔던 Io가 엊그제부터 분산 버전 관리 시스템인 darcs를 쓰기 시작했습니다. (그동안 소스코드 버전관리를 안 한 이유는 여기에 적힌 까다로운 조건을 만족하는 것을 찾느라 그랬답니다.) darcs는 haskell로 작성되어 있고, 엄청나게 속도가 느린 것을 제외하면 기능상으로는 흠잡을 것 없이 아주 뛰어난 버전 관리 시스템인 것 같은데, 개인적으로 너무 불편한 것이 아직 ghc가 FreeBSD/amd64로 포팅이 안 되는 바람에, 제 컴퓨터에서는 쓸 수 없다는.. 그런 문제가 있었습니다. 흑흑 Y_Y 다들 커밋한거 받아보고서는 좋다~ 느리다~ 걱정된다~ 하고 있는데 amd64쓰는 죄로 소스도 못 받아보고 완전 왕따가 돼서..

그래서 amd64의 32비트 에뮬레이션 기능을 이용해 보려고 이렇게 저렇게 한참 노력해 봤지만, 동적 링킹에서는 도저히 어떻게 하는지 감이 잘 안 와서.. 결국은 포기하고 i386 머신에서 정적 링크를 해서 만든 패키지를 그냥 amd64에 까는 방법으로 했습니다. 그래서 결과로 나온 darcs-1.0.5.tbz 으흐흐.. 혹시 저처럼 또 왕따당하는 분이 있으실까봐 올려 봅니다. 그런데, ghc가 -static을 넣으면 정적 링크를 해 주는 것처럼 매뉴얼에는 써 있는데, 한참을 해 봐도 정적 링크를 안 해주더군요. 그래서 결국에는 ghc를 verbose mode로 돌려서 나오는 링크 커맨드를 그대로 쳐서 -static만 추가해서 하는 방법으로.. =.=

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


IoLanguage 포트 추가

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

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

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


FreeBSD 소식

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

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

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


Hello FreeBSD 세미나

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

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

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

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

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

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

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


FreeBSD시 세미나 자료

10월 29일에 개최될 예정인 Hello FreeBSD 세미나에서 발표할 자료를 만들었습니다. 웹에 떠돌아다니는 여러 프리젠테이션들과 머리 속에 흩어져 있는 정보를 참고로 하여 극히 일부만~ 으흐흐


발표 자료 다운로드 (pdf 포맷)

제가 주최하는 행사가 아니라, 구체적으로 어떤 형식으로 진행될 지는 잘 모르겠지만, FreeBSD관련 행사가 정말 오랜만에 있는 것이니만큼 FreeBSD에 관심 있는 분들이 많이 오셨으면 좋겠습니다. 그동안 많은 행사가 개발자 중심의 세미나였던 반면에 이 세미나는 내용을 봐서는 SE들을 위한 행사인 것 같네요~

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


FreeBSD 홈페이지가 바뀌었어요

Google Summer of Code 프로젝트 중의 하나였던 FreeBSD 웹 사이트 프로젝트가 거의 완료되어서, 실제 사이트로 올라왔군요.

뭔가 개발자들만 바글바글한 해키시하던 이미지에서 회사같은 이미지로 바뀌게 되어서 나름대로 경영진들한테는 신뢰감을 줄 것 같기도 하네요. 으흐흐~ 초기화면에서 두번 클릭만에 ISO 파일을 다운로드 받을 수 있다는 점도 실행차를 줄였다는 점에서 매우 큰 발전이라고 생각됩니다. -O- (수업시간에 배운 말을 써먹어 본다 =3=3)

FreeBSD 로고는 거의 막바지에 다다랐는데, 로고 후보로 나온게 ""모두 다 맘에 안 든다 원래대로 가자!"라고 주장하는 사람들이 대거 등장해서 과연 어떻게 될 지 모르겠군요.. 으흐;;

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


포트 메인테이너의 게으름은 끝이 없다

다른 OS들은 대체로 "게으른 사람들을 위한 OS"라고 표명하면서 그냥 놔두고 가끔 엔터만 쳐주면 된다는 것을 자랑으로 합니다. 그런데, FreeBSD는 아무래도 "게으른 사람들에 의한 OS"라서, FreeBSD 개발자들의 편의를 위한 것이 대체로 사용자 편의성보다 우선하는 분위기 입니다. 므흐흐. :) 흔하지 않은 특징이라는 것이 아주 맘에 듭니다. =3=3

그러다가 이제는 포트 메인테이너들이 새 버전 나왔는지 가끔 홈페이지 들어가 보는 것조차 귀찮아져서, 직접 안 가고도 새 버전이 나오면 포트 메인테이너에게 알려주는 서비스가 시작되었습니다. edwin@이 만든 이 스크립트는, 기록된 웹 사이트와 배포 ftp 목록, http URL 추측 등의 온갖 주먹구구식 방법을 동원해서 새로운 버전이 나왔는지 체크를 합니다. 결과는 메일로 통보되지만, 웹으로도 확인할 수 있습니다.

예를 들면, 제 포트 중에 새 버전이 나온 것은 여기를 보면 확인할 수 있는데, 지금 23개가 아웃데이트돼서 아웃데이트 순위로 5위를 먹었습니다. --; 그런데, 파이썬 포트들 중에 슬레이브 포트로 돼서 버전이 안 올라간 것들이 있어서 상당히 억울합니다. 우워우워!

다른 패키지 시스템 개발자들도 이것 응용해서 도입하면 유용하겠군요..

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


FreeBSD 새로운 한국 미러~

오픈룩 서버는 올해 초에 옵테론으로 바뀌었고, 얼마 전에 추석 기념으로 동생 컴퓨터를 업그레이드 하면서 집 데스크탑도 셈프론64로 바꿨습니다. 그래서, 이제 명실공히 amd64 유저가 되었는데! (이히히) amd64를 쓰자니 가장 불편한게, 한국에 FreeBSD/amd64 미러가 하나도 없어서 항상 메인 사이트에서 땡겨와야 돼서 무지 느리다는 문제가 있었습니다.

그래서, 세계로 나아가는 티이님의 스토리지 원조를 받아 amd64 미러 사이트를 구축했습니다. 주소는 openlook.org 입니다. 바이너리류 파일은 amd64 플랫폼 것만 들어있고, 바이너리가 아닌 것은 모두 미러되어 있습니다. 사실 엊그제 미러링을 시작했는데, 아직도 싱크중이라, ISO이미지는 아직도 덜 되었네요.. 으흐흐.. 아무래도 다 하면 80GB는 넘을 것 같은....

한국에 사는 amd64 유저분들은 많이 쓰시기 바랍니다. 으흐흐;

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


썬 코발트가 FreeBSD로 포팅

썬에서 파는 소형 웹서버용 시스템이자 웹서버 관리 UI인 코발트가 FreeBSD로 포팅 되었다고 합니다. 이름은 RAQdevil. 이번 작업은 지난번 FreeBSD v. Linux 테크TV 방송에 나왔던 매트 올랜더씨의 회사인 OffMyServer에서 지원한 것이라고 합니다.

코발트 하드웨어가 크게 성능이 좋다거나 뭐 다른게 좋다기 보다는 그저 크기가 작고 관리 UI가 시스템을 모르는 사람들도 쉽게 관리할 수 있다는 점에서 많은 인기를 끌어 왔는데, 리눅스 뿐만 아니라 FreeBSD에서도 코발트 UI를 돌릴 수 있다는 점에서 활용 용도가 많이 늘어날 수 있을 것 같네요. 웹 호스팅 업체들이나 간단한 솔루션 판매 업체들도 관리 UI를 직접 다 만들 필요 없이 코발트 UI에다가 필요한 부분만 약간 수정해서 넣어줄 수도 있고.. 오픈소스라서 아주 유용할 듯 합니다. :)

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


FreeBSD를 위한 ssh 파일 시스템

구글 Summer of Code 프로젝트에 선정된 FreeBSD 학생(?)이 원래 계획대로 FreeBSD로 sshfs를 작업을 한 것이 상당히 진척이 있었다고 합니다.

원래 계획은 sshfs를 직접 구현을 하는 것이었으나, 그게 상당히 노가다 작업인 것을 눈치채고, 리눅스에서 sshfs용으로 많이 쓰이는 FUSE 유저랜드 파일시스템 프레임워크를 FreeBSD로 포팅하는 것으로 대체를 한다고 하는군요. 그렇게 되면 FUSE에서 지원되는 sshfs나 gmailfs같은 여러 유저랜드 파일 시스템을 쓸 수 있게 돼서 여러모로 확장 가능성이 높아져서 괜찮을 것 같기는 합니다. :)

그렇지만, FUSE의 커널 부분이 GPL로 선언되어 있는 이상, FreeBSD 커널에 디폴트로 들어올 수가 없게 되었다고 볼 수 있습니다. 게다가 현재 소스 트리에서 gnu/ 쪽을 점점 줄이려는 추세라, 그냥 포트에서 관리될 것 같아서 결국은 커널에서 빌드도 잘 안되는 경우도 많아질 것 같고, 앞으로 험난한 길을 걷게 될 것 같네요.

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


imhangul 포트 부활

오랫동안 깨져있어서 9월 22일에 지워지기로 예정되어 있었던 korean/imhangul 포트를 고치고 0.9.12로 업데이트 했습니다.

사실 저도 nabi는 안 쓰고 imhangul만 쓰기는 하는데 여러모로 귀찮아서 DEPRECATED랑 BROKEN만 지우고 인스톨하고 그랬었는데-.- 6.0 코드프리즈가 오늘부터 시작이라 뭔가 위기감이 와서 메인테이너인 최준호님의 승인도 안 받고 그냥 막 밀어넣어버렸네요. 으흐흐

그래서. 6.0에서는 아무래도 pkg_add -r ko-imhangul하면 한글 입력이 되겠지용~ 그리고 최환진님의 각고의 노력 끝에 이제 gaim에서도 마지막 글자가 안 짤리고 입력이 잘 된답니다. 으흐흐흐 어찌나 좋은지~

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


FreeBSD도 X-Box에 포팅!

네덜란드의 희한한 영혼을 가진 두명의 해커가 FreeBSD를 X-Box에 포팅했다고 발표했습니다. 소개문에 따르면, 3년 전쯤에 NetBSD 쪽에서 만우절 농담으로 X-Box로 포팅했다는 것이 나왔었는데, 안타깝게(too shame) 보였는 모양입니다. 흐흣.

X-Box에 리눅스를 깔때 쓰는게 크롬웰이라는 부트로더 바이오스가 있나본데, 그놈이 원래 리눅스만 지원하다가 이번 포팅을 하면서 크롬웰에 ELF 커널 로딩을 지원하도록 패치를 해서 이제 FreeBSD외에도 ELF 포맷을 쓰는 여러 OS들을 쉽게 포팅할 수 있게 된 것 같네요.

X-Box가 그렇게 조용하다고 하는데, 왠지 집에 공유기 대신 X-Box나 하나.. 크히히~

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


FreeBSD 새로운 로고 공모전

FreeBSD에서 오랫동안 사용해 왔던 비스티 로고가 악마라는 이유로 지속적으로 기독교계의 사용자들에게 많은 거부감을 주고 있었다는 문제때문에, 올해 초에 새로운 로고를 만드는 공모전을 하였습니다. 얼마 전에 로고 공모가 마감되어서 700개가 좀 넘는 로고가 최종 접수되었습니다.

깔끔한 디자인도 있고, 대충 만든 것도 있고.. 심지어 파워포인트로 만들어서 올린 상상을 초월하는 사람들도 있었지만.. 하여간 현재 심사위원들이 음청나게 많은 로고들을 하나하나 가려내면서 로고를 고르고 있습니다. 저도 로고에 무척 관심이 많아서 심사위원으로 참가를 했는데, 한 2~3개 정도가 매우 마음에 드는 깜찍한 것을 발견했습니다. 흐흐. 티셔츠에 이것 로고로 새기면 넷비 로고보다 훨씬 깜찍할 것 같아서, 벌써 투표 결과가 어떻게 될지 무척이나 기대가 됩니다. 자세한 사항은 아직은 공개되지 않았기때문에 말씀드릴 수는 없지만, 역시 아이디어가 굉장한 사람들이 몇 있네요. 이렇게 활용할 줄이야.. :)

초기 투표는 8월 초에 마감되고, 중간에 저작권 관련 작업들을 거쳐서 최종적으로는 9월 초에 발표될 예정이라고 합니다.

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


처음으로 멘터가 되었습니다

FreeBSD에서는 새로운 커미터를 뽑을 때, 기존의 커미터가 멘터가 되어서 계정 생성, 커밋 리뷰, 문화에 대한 적응 등에 도움을 주게 되어 있습니다. 보통 새로운 커미터를 추천한 사람이 멘터가 되는데, 그렇지 않은 경우도 있긴 합니다.

제가 FreeBSD 커미터가 될 때는 2002년 6월엔가 최준호님께서 멘터가 되셔서 들어가게 되었습니다. 거의 이제 3년이 넘었는데 아직 새로운 커미터를 멘터링할 기회가 한 번도 없었네요. 흐흐. 그러다가, 얼마 전부터 갑자기 파이썬 포트에 대한 PR을 1주에 수십개를 저한테 보내는 사람이 하나 생겼는데, 아이고 이거 귀찮아서 어떻게 하나 고민을 하다가, 보내 주는 패치가 상당한 수준이고 bsd.port.mk 구조까지도 hack해서 쓰는 이상한 패치를 보내줄 정도로 내부 지식이 있고 열정이 있는 것 같았습니다. 그래서, PR 통계를 보니, 이 사람이 Ports Fury를 빼고는 최근 PR 순위가 2위이길래 처음으로 커미터로 추천했고, 어제 portmgr팀에서 승인이 났습니다. 옛날에는 새로 커미터 들어오는데 막 몇달씩 걸리고 그랬는데, 요새는 승인이 이틀, 계정 30분 해서 이거 3일만에 완전히 CVSROOT/access에 커밋까지 다 돼버렸네요. 흐흐.

하여간, 처음으로 제 멘티가 된 러시아에 사는 Vsevolod Stakhov씨 축하합니다! (라고는 하지만 한국어를 알 리가 없.. -.-;) 이름이 외우기 상당히 힘들었는데 이제 어느 정도 메일 안 보고도 이름을 알 수 있을 것 같네요; 아하하;

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


파이썬, FreeBSD 7 지원 추가

오늘 파이썬에 FreeBSD 7 지원을 추가했습니다. :)

포트에 있는 Python 2.4, Python 2.5, Python 2.3, Python 2.2, Python 2.1에는 아직 백포트되지는 않았지만, 몇몇 분들이 패치를 보내주셔서 테스트 작업 중이니 오늘 밤중으로 포트에서도 FreeBSD 7에서 파이썬을 쓸 수 있을 듯 합니다. :)

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


ko_KR.eucKR에서의 Vim 커서 문제 (2)

며칠 전에 FreeBSD 소스 커미터가 되신 김정욱님(jkim)과 메일을 주고 받다가 전에 최준호님과 찾아봤던 ko_KR.eucKR에서의 Vim 커서 이동 문제를 얘기했습니다. 그 당시에는 mblen(3)이 FreeBSD에서만 에러난 상황에서 stateful하게 구현되어 있는데, POSIX에서는 그런 상황이 명시적으로 정의되어 있지 않아서, FreeBSD가 잘못한건지 vim이 잘못한건지 잘 모르겠다는 판단을 하였습니다. 그런데, 김종욱님께서 표준에 정의되지 않은 행동방식에 의존적인 사용을 하는 vim의 잘못이라고 말씀을 해 주시는군요. 아앗. 그럴수가. 그렇게 생각할 수도 있구나. 하며 순간 백년묵은 체증이 사라지는 듯한.. ;;

vim은 패치가 엄청나게 자주 나오고 포트에서도 다 그걸 넣는 편이라, 따로 vim 포트에서 로컬 패치를 넣을 필요는 없을 것 같고 그냥 메인스트림에 바로 넣기로 마음먹고 버그 보고 메일을 보냈습니다. 일본 사람들도 한참 두리번하다가 해결 못한 것인데 곧 고쳐지면 좋겠군요~ :)

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


FreeBSD 6.0 스테이블 브랜치

요새 말년이라 이것 저것 일이 많아서 글 쓸 여유가 잘 없군요. 으흐흐.

그동안 광복절 기념으로 릴리스할 예정으로 작업이 활발하게 진행되고 있었던 FreeBSD 6.0이 드디어 내일 스테이블 브랜치가 됩니다. 즉, 현재 프리즈되어있는 HEAD에서 RELENG_6가 갈라져 나와서, 이제 RELENG_6 브랜치로 세팅하면 6.0-PRERELEASE로 나오게 되겠죠~

이번 6.0에서는 5.x에서 안정버전이지만 아직 많이 채택되지 않은 상태였으니, 이제 6.0이 안정버전으로 들어가면 그냥 4에서 6으로 건너뛰는 곳도 꽤 되지 않을까 합니다. 흐흐. FreeBSD 6의 여러가지 새로운 것들에 대해서는 최근에 OSNews에 올라왔던 jhb, rwatson, scottl의 인터뷰에서 아주 잘 설명되어 있습니다.

Summer of Code에서 FreeBSD에 추천한 프로젝트가 모두 20개인데, BSD 인스톨러 통합, FreeSBIE 통합, UFS 저널링, CVSUp C 프로젝트, GEOM 저널링, MacOS launchd 통합, 커널 메타언어 등 솔깃한 것들이 많이 올라왔는데, 한 반정도만 성공해도 FreeBSD 7이 굉장히 재미있어질 것 같네요~ :)

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


FreeBSD 최근 소식

요새 여러모로 일이 많아서 좀 바빠서 메일을 통 못 읽다가, 밀린 CVS 메일을 보다보니 재미있는 게 여러개 있군요.. :)

구글 Summer of Code 프로젝트
구글 Summer of Code에 FreeBSD가 멘터로 활동할 여러가지 주제들이 목록으로 정리되어 올라왔습니다. Xen지원이나 BSD Installer 통합, CVSUp을 C로 재작성하는 일, UFS 저널링 지원 추가 같은 것들이 매우 흥미로워 보입니다. :) 저는 개인적으로는 BSD iconv를 유저랜드에 통합하고 kiconv에 DBCS/SBCS 외에 가변 바이트 지원을 추가하는 작업에 관심이 많은데 학생이 아니라 참가도 못하고~ 병특 끝나기 전이라 시간도 없을 것 같고~ 이히히;

WPA 클라이언트 베이스로
BSD 할아버지들 중에서 가장 활발한 활동을 하고 있는 샘 아저씨가 드디어 WPA 지원을 베이스에 넣었습니다. :) 이름은 wpa_supplicant입니당. EAP-TTLS까지도 언급이 되어 있는 걸 봐서 아직 써보지는 않았지만 매우 기대가 되는군요. :)

ISC dhclient에서 OpenBSD dhclient로 교체
FreeBSD에서 오랫동안 쓰던 ISC dhcpd에 포함되어 있는 dhclient를 이제 OpenBSD의 dhclient로 교체하였습니다. contrib이 아니라 그냥 베이스에 머지해버릴 정도로 강한 애착이.. 흐;

Kip Macy가 커미터로~
FreeBSD로 Xen을 포팅하는 작업을 오랫동안 열심히 추진하던 Kip Macy가 그동안 그 분야를 잘 아는 커미터가 없는 통에 커밋권한을 못 얻고 있다가 최근에 드디어 소스 커미터로 들어오게 되었습니다. 드디어 FreeBSD도 Xen의 문명 혜택을 받게 되겠군요. ^.^

므해해해

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


FreeBSD 6.0 코드 프리즈 임박

FreeBSD 6.0 릴리스를 위한 오랫동안의 열띤 토론 끝에, 이제 다음 주에 코드 프리즈가 시작됩니다. 구체적인 일정은 다음과 같이 잡혀 있는데, 물론 실제로 진행되다가 복병을 만나면 좀 늦어지겠죠. :)

  • 2005년 6월 10일: 피쳐 프리즈, 코드 슬러시 (약한 프리즈)
  • 2005년 7월 10일: RELENG_6 브랜치 (여기부터는 releng팀 승인이 있어야 커밋 가능)
  • 2005년 8월 1일: RELENG_6_0 브랜치 (6.0 릴리스 브랜치)
  • 2005년 8월 15일: FreeBSD 6.0 릴리스

광복절 기념 릴리스인가 보군요. :)

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


젠투에서도 py-freebsd를 사용합니다

엊그제 Gentoo/FreeBSD 프로젝트 개발자 중의 한 명이 제게 메일을 보내 왔습니다. 그 내용은 Gentoo의 패키지 관리 툴이 아무래도 파이썬으로 되어 있다보니 파이썬으로 대체로 다 만들어야 하는데, 리눅스에는 없고 FreeBSD에만 있는 파일의 chflags 속성 관리를 위해서 원래는 자기들이 직접 패치한 것을 쓰고 있었는데, py-freebsd가 좋아서 바꿔보려고 한다는 말이었습니다. :)

뭐 다른 것은 다 괜찮은데, os.stat()에서 st_flags를 읽어오고 싶은데, 파이썬에서 제공을 하지 않는 속성이다보니 참 애매한 상황이라 이를 py-freebsd에서 제공해 달라는 것인데, 가만 생각해보니 py-freebsd에서 지원해 줄 수도 있겠지만 지원하게 되면 소스가 상당히 지저분해질 것 같아서 그냥 파이썬을 고쳐서 커밋해 주고, 그것 백포트 해서 쓰라고 답장을 보내버렸습니다. ;;

이제 Gentoo 소스에 import freebsd 없나 잘 봐 보세용. 이히히 =3=33

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


FreeBSD에도 패키지를 자동으로!

얼마 전에 회사에서 새로운 서버를 세팅하면서, 데비안에 없는 패키지 몇 개를 깔끔하게 설치하기 위해 방법을 알아보던 중, 회사 동료인 상현씨의 조언으로 checkinstall를 이용해서 설치하게 되었습니다. checkinstall은 인스톨하는 도중에 preload된 동적 라이브러리가 파일 변경사항을 로그로 남겨서, 그 로그를 기반으로 마치 패키지를 이용해서 깐 것처럼 해 주는 도구이더군요. 물론 바이너리 패키지도 만들어 주고 해서, 패키징되지 않은 프로그램을 임시로 재빠르게 깔아야하는 경우에 매우 편리했습니다.

사실 예전에 autoplist.py라고 ktrace기반의 pkg-plist 자동 생성기를 만들었습니다. 그런데, 당시 FreeBSD의 베이스가 정적 링크되어 있었기에 LD_PRELOAD 트릭을 사용할 수가 없어서 ktrace를 기반으로하다보니 너무 부하가 심해서 mozilla같은 대형 포트를 깔 때에는 거의 5분 이상이 걸리는데다 로그를 남기는 하드디스크 용량도 너무 많이 들고 해서 아주 간단한 포트 외에는 쓰기가 힘들었습니다.

FreeBSD는 그래도 간단한 임시 포트를 만들기가 데비안에 비해서는 쉬운 편이긴 하지만, 아무래도 pkg-plist 만드는 압박이 있기에 FreeBSD에도 그런 것이 있으면 삶을 활기차게 사는 데에 큰 도움이 되겠구나. 하는 생각이 들었습니다. :) 이제 FreeBSD도 베이스가 완전 동적으로 되었기에, FreeBSD 사용자도 이제 젖과 꿀이 흐르는 자동 plist 생성의 세계로! 그런데, 우선 인스톨 로그를 위한 sysutils/installwatch포트가 워낙 오래된 것이어서 그런지, 5.x에서는 log 심볼의 중복이라던지 여러가지 문제점으로 계속 버스에러로 죽었는데 그 문제를 약간 추적해서 수정해서 메인테이너에게 보냈습니다. (아직 커밋되지는 않았습니다.)

그래서 그걸 이용해서 결국 주말에 pkg_trackinst와 pkg_genplist를 LD_PRELOAD기반으로 만들었습니다. 우선, pkg_trackinst는 패키징이 안 되어있는 소프트웨어를 make install할 때에 당시에 설치되는 파일들을 분석해서 자동으로 패키지로 설치한 것처럼 만들어주고 바이너리 패키지도 만들어서 다른데서도 똑같이 설치할 수 있도록 만들어주는 도구입니다. 그리고, pkg_genplist는 다른 패키징은 다 끝나고 pkg-plist파일만 생성하면 끝나는 상태에서 pkg-plist를 자동으로 생성해 주는 도구입니다.

pkg_trackinst는 오늘까지 만든 부분에서 거의 잘 돌아가고 있지만, 아직 pkg_genplist는 mtree를 사용하지 않고 있어서, 중복된 파일도 막 올려대고 특히 manpage쪽이 문제가 많이 있습니다. 그렇지만, 주말도 거의 끝난데다가.. 다른 시스템들에서도 잘 돌아가는지 보고 싶어서 일단 버전 0.1을 릴리스했습니다. (파이썬 2.4, FreeBSD 5.2이상이 필요하고, 앞에 언급된 installwatch 포트 패치가 적용되어 있어야 합니다.)

패키지 만드는 법이 귀찮지만 pkg_delete는 하고 싶은 분이나 plist 만드는 것이 귀찮아진 분들 한번씩 테스트해봐 주세용. :)

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


FreeBSD GUI 인스톨러

FreeBSD 개발자 메일링 리스트에 새 FreeBSD기반 운영체제라고 Kylin에 대해서 메일이 올라 왔습니다. 그런데, 웹 페이지를 아무리 꼼꼼히 읽어봐도.. 딱히 FreeBSD기반도 아닌 것이.. 매뉴얼을 봐도 다 리눅스 명령어이고.. 아무래도 리눅스처럼 보이는데.. 으흐; -O-

그 메일 쓰레드에 다른 개발자가 답글로 새로운 다른 프로젝트를 찾았다고 글을 올렸는데, 바로 PC-BSD 였습니다. PC-BSD는 그래픽 인스톨러를 넣고 X 환경을 간단하도록 튜닝한 FreeBSD 배포본인 듯 합니다. 일단, 웹 사이트를 정탐해 보니까, 아무래도 웹 사이트 스타일이 FreeSBIE랑 비슷한게.. 비슷한 사람들이 만든 것일까 했는데, 그냥 다른 사람들인 듯 합니다.

아직 그래픽 인스톨러는 아직 아나콘다보다는 좀 안 예쁘기는 합니다마는, 그래도 데비안 그래픽 인스톨러보다는 예쁘(;; -ㅇ-)군요.. 흐흐흐; PC-BSD는 FreeSBIE와는 다르게, KDE를 기본으로 쓰고 있는데, GNOME 인스톨은 따로 특별히 지원하고 있지는 않은 듯 합니다. FreeSBIE는 xfce와 wmaker를 지원하고, PC-BSD는 KDE를 지원하니.. 이제 그놈 기반 인스톨러만 하나 나오면 좋겠는데.. ^_^

그런데, 기왕 BSD 인스톨러면 BSD 라이선스를 썼으면 좋았을텐데, 신비롭게도.. 인스톨러를 GPL로 해놨네요.. (그럼 그냥 젠투 인스톨러로 만들 것이지~ -O-;; =3=33)

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


OpenSSH jail 패치

서버를 세팅하던 도중에 jail안에 사용자를 몽땅 다 넣어버리려고, chroot 패치를 할까 하다가, 요새 jail에서 jail_attach도 지원하고 하길래, 간단하게 jail 패치로 바꿔 봤습니다.

요렇게 하면 chroot보다 리소스 제한을 좀 더 섬세하게 할 수 있고, top나 ps같은 것도 jail 안의 것만 볼 수 있도록 제한됩니다. 이히히 :)

--- crypto/openssh/session.c.orig	Tue Apr 20 18:46:40 2004
+++ crypto/openssh/session.c	Sun Apr  3 15:59:05 2005
@@ -1262,6 +1262,12 @@
 	}
 }
 
+#include <jail.h>
+
+#define JAIL 1
+#define JAILPREFIX "/thunderbluff/"
+#define JAILIDFILE "/var/run/jail_thunderbluff.id"
+
 /* Set login name, uid, gid, and groups. */
 void
 do_setusercontext(struct passwd *pw)
@@ -1275,6 +1281,25 @@
 		if (setpcred(pw->pw_name, (char **)NULL) == -1)
 			fatal("Failed to set process credentials");
 #endif /* HAVE_SETPCRED */
+
+#ifdef JAIL
+		if (strncmp(pw->pw_dir, JAILPREFIX "/",
+				sizeof(JAILPREFIX)) == 0) {
+			FILE *fp;
+			int jailid = -1;
+			fp = fopen(JAILIDFILE, "r");
+			if (fp == NULL)
+				fatal("Couldn't open " JAILIDFILE);
+			fscanf(fp, "%d", &jailid);
+			fclose(fp);
+			if (jailid == -1)
+				fatal("Invalid argument on " JAILIDFILE);
+			if (jail_attach(jailid) != 0)
+				fatal("Failed to get into the jail");
+			pw->pw_dir += sizeof(JAILPREFIX) - 1;
+		}
+#endif /* JAIL */
+
 #ifdef HAVE_LOGIN_CAP
 # ifdef __bsdi__
 		setpgid(0, 0);

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


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


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시스템콜은 stru