WoC 눈 야영지: “생활 속의 프로그래밍” 예고

이번 주 토요일(23일) 도곡동 IBM본사에서 WoC snow camp가 있습니다. 저는 “생활 속의 프로그래밍”을 주제로 발표할 예정인데, 아직 구체적인 시간은 결정되지 않은 것 같네요.

이번에는 일상생활 속에서 작은 프로그램들을 활용해서 재미나게 프로그래밍도 즐기고~ 삶도 재미있게 사는 방법을 여러 예를 통해서 보여드릴 예정입니다. 예제는 물론 뭐 긴급하게 새로 다 만들 수 없으니 제 블로그에 지난 몇 년간 올라왔던 글들이 재활용될 예정입니다;; 1시간 안에 제 블로그 전체(?)를 읽으시는 효과를 보실 수 있을지도! -ㅇ-; (뻥을 쳐 본다;)

발표자료는 발표 후에 공개하겠습니다. (참고로 저는 발표자료에는 중요한 내용은 안 적는 경향이 있으니 발표자료만 봐서는 알아보실 수 없을 수도 있습니다. =3)

파이썬 마을 번개 장소를 구합니다

글도 별로 없는 블로그에 광고를 해서 무척 죄송합니다. -ㅇ-;
그래도 곧 번개 소식이 약간 가미되어 있으니 정보가 되지 않을까 하고 예쁘게 봐 주세요. 🙂

이번 주에 여름 기념으로 오랜만에 파이썬 마을 번개를 한번 할까합니다.
그냥 번개만 하면 썰렁하니까 Python 3000에 대한 얘기를 조금 하다가
밥먹고 뒷이야기를 하는 자리를 만들려고하는데, 우선 조용하게 모여서
얘기할 곳이 필요해서, 토즈 같은 모임 전용 공간을 쓸 수도 있겠지만
참가비를 안 받고도 할 수 있으려면 혹시 파이썬 마을 회원 분들 중에서
회사나 학교에서 공간을 빌릴 수 있는 분이 있으시다면 그 편이 편할 것 같아서
우선 공개적으로 한번 구해 봅니다.

공간은 20명 내외가 원형또는 사각형으로 모여서 얘기할 수 있는 곳이면
좋구요. 프로젝터를 사용할 수 있어야 합니다. 물론 많은 분들이 쉽게
모일 수 있어야 하기 때문에 되도록 서울에서 교통이 편리한 곳이면 좋겠습니다.
시간은 금요일 저녁이나 토요일 오후로 생각하고 있습니다.

참가신청은 장소에 따라서 시간이 정해진 후에 따로 파이썬 마을에서 받을 예정이니 우선은 장소 대여가 가능한 분 있으시면 알려주세요 ^^;

OpenSSL에 SEED가 들어갔습니다~

그동안 많은 분의 노력으로 드디어 OpenSSLSEED지원이 들어갔습니다!
와와~
이제 모질라, 애플웹킷 등 OpenSSL에 지원이 없어서 못 한다고
기다리고 있던 수많은 프로그램들이 SEED를 지원할 수 있겠군요~

이번 패치는 전에 제가 올렸던 OpenSSL 패치가 들어간 것은 아니고, KISA에서 따로 작업한 패치를 KISA의 지원으로 OpenSSL 개발자가 수정한 것이 적용되었습니다. 사실 소스를 보시게 되면 KISA의 작업 과정 중에서 보통의 오픈소스 프로젝트의 관례에서는 어긋나는 이른바 “이름 지우고 소스 베껴오기”가 많이 적용된 흔적은 자명히 존재하긴 하지만, 그래도 제가 원래 올린 패치가 public domain으로 올렸던 것이기에 이름 지우기가 저작권 위반은 아니라는 것을 미리 알려 둡니다. 🙂

그렇지만 한편으로는 정부기관에서 오픈소스에서의 호환성 지원을 위해 오픈소스 프로젝트에 직접 노력하여 커밋을 재촉하고 실제 적용까지 유도한 사례가 나왔다는 측면에서 굉장히 고무되는 사건임에는 틀림이 없습니다~ 🙂

자주 볼 수 있는 정겨운 깨진 한글들

오늘 IRC에서 얘기하다가 생각나서
예전부터 있었던 정겨운 깨진 한글들 패턴 몇개를 모아서 소개해 봅니다. 🙂

占쏙옙占쏙옙!

주로 맥이나 emacs, gnome-terminal등등 유니코드 처리를 하긴 하는데, 설정을 뭔가 잘못했거나 제대로 못 처리한 경우에 자주 발생하는 놈입니다. 구글에서 검색하면 무려 1450000건이나 나옵니다. -ㅇ-; 가히 깨진 한글 중 최고봉..

이 녀석의 의미는 U+FFFD U+FFFD를 utf-8로 인코딩한 것을 euc-kr로 푼 것입니다. 디코드하는 녀석은 euc-kr을 바라고 있고, 인코딩하는 녀석은 뭔가 안에서 단단히 꼬인 경우죠. U+FFFD는 REPLACEMENT CHARACTER이라고, 뭔가 잘못되면 이걸로 글자 수를 유지하기 위해서 바꾸는 경우가 있습니다. 이 경우 대부분 보내는 놈이 잘못했다고 눈치를 챌 수 있습니다.

홰聆究셀

옛날에 PC통신 하시던 분들은 자주 보셨을 것 같은데, 이것도 지금 구글에서 검색하면 29900건이 나오는 상당히 인기깨진한글 입니다. 홰영구셀은 점쏙옙과는 달리 좌우로 물음표나 좀 불길한 표시가 곁들여진다는 특징이 있죠. 🙂

이 놈의 정체는 바로 euc-kr에서 “안녕하세요”에서 첫 바이트를 떼낸 것입니다. 안녕하세요는 문자열이나 각 줄의 맨 앞에 자주 와서 앞 글자가 잘리는 경우가 유독 많죠~

컴컴컴컴컴컴넴

요새는 컴컴컴컴컴이 나오면 좀 어색하겠지만, 옛날에는 동네 꼬마아이들도 컴컴컴컴을 보면 이게 바로 그거구나! 하고 정겨워할 정도였었죠~ 컴컴컴컴컴에는 옆에 넴이나 백백백, 낡낡이 곁들여 줘야 좀 더 맛이 납니다. 이 놈의 정체는 미국 영어 코드페이지인 cp437에서 좌우로 긋는 선문자입니다. 아직도 와레즈 그룹들은 cp437을 자주 쓰는 관계로 .nfo 파일들에서 컴컴컴컴을 만날 수 있어서 나름대로(?) 반갑습니다;;

이 녀석은 구글에서 검색이 되긴 하는데, 길이에 따라 따로 따로 인덱스되어 있어서 전체적인 수는 정확히 모르겠지만 대략 5000은 될 것 같네요.

덈뀗섏꽭 쩗꿇뀘

요놈은 고정적인 내용을 가지는 것은 아니고 대충 “띠리띠리”가 새끼손가락 콧구멍에 넣고 외계와 통신할 때 내는 소리로 깨지는 형태입니다. 이것도 어설픈 유니코드 프로그램에서 상당히 자주 볼 수 있죠. 이 놈의 정체는 utf-8 인코딩된 것을 cp949로 푼 것입니다. 주로 겹자음과 희한한 받침들이 오는데, 그 이유는 utf-8에서 쓰는 영역이 주로 두 번째 바이트에 0x81~0x9f를 많이 써서, 그 영역이 cp949에서 euc-kr에 추가로 배치한 자주 안 쓰이는 한글 영역과 겹치기 때문입니다.

)C>H3gGO

이것도 고정적인 내용은 아니고 그냥 형태입니다. 주로 대문자, 소문자, 기호 몇가지가 나오고 중간 중간 음표도 곁들여 주며 나오는 이 모양은 8비트를 모두 지원하지 않는 환경에서 EUC-KR에서의 상위 비트가 모두 날아간 놈입니다. 최근에는 볼 일이 거의 없지만, 예전에는 한국IBM같이 도미노 솔루션을 쓰던 곳에서 보낸 메일이 이런식으로 안 보이게 보여서 난감한 경우가 있었죠. 그리고, ISO-2022-KR로 인코드하고 나서 제어문자 필터링에 걸려서 제어문자가 유실되는 경우도 이렇게 됩니다.

¾È³çÇϼ¼¿ä~

아마도 가장 흔하게 많이 볼 수 있는 형태가 아닌가 싶네요~ 요건 EUC-KR을 ISO-8859로 보고 디코딩했을 때 발생하는 형태입니다. 즉, 한글 1글자가 EUC-KR에서 높은 2 바이트가 되기 때문에, ISO-8859에서의 추가 문자에 해당하는 것들이 2개씩 나오게 됩니다. 요건 그래도 ISO-8859-1이 256개 모두 할당되어 있어서 정보의 손실은 없어서 복구는 가능하기 때문에, 다른 것들에 비해서 그래도 준수한 편이라고 할 수 있겠죠. 🙂

켓아~

요놈은 대부분의 글자가 보이지만 일부가 고정적으로 다른 글자로 대체되는 형태입니다. 대표적으로 “횽아” -> “켓아”와 “아햏햏” -> “아쥑쥑” 이 있죠. 둘다 구글에서 검색해 보면 용례가 그렇게 많지는 않지만, 의외로 유닉스 프로그램들에서는 상당히 자주 겪는 패턴입니다.
이 경우는 인코딩이 euc-kr이라고 가정하고, 두 번째 바이트 글자의 하위 7비트만 보고 디코딩해서 생기는 문제입니다. cp949의 경우에는 두 번째 바이트에 MSB가 없는 경우가 있기 때문에, 구분해 줘야 글자를 제대로 판단할 수 있겠죠.

우선 생각나는 것은 써 봤는데, 그 외에 자주 봤던 깨진 한글 있으시면 알려주시면 추가하겠습니다. ^_^

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

애자일 이야기에 올라온 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 흐흐

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

재미있는 오픈소스 프로젝트 분석 사이트

Brett의 소개글에서
ohloh에 대한 얘기는 처음 들었는데, 오픈소스 프로젝트에 관한
무지 재미있는 사이트를 발견했군요. +_+

예전에 FishEye 같은
프로젝트 소스 변화를 추적해 주는 곳이나,
Coverity같은
소스 품질을 검사해주는 곳은 봤었는데,
여기는 골고루 짬뽕인데다가 디자인도 예쁘고 아주 호감이 갑니다. 으흣. (물론 Coverity처럼 무결성을 검사하는 것은 아닙니다.)

파이썬에 대한 페이지에 가 보면, 주석의 양이나, 코드 크기에서 추산한 유지보수 비용과 소프트웨어의 자산가치, 라이선스의 특성과 잠재적 문제점 같은 것도 알려주고, 코드의 변화에 대해서도 시각적으로 아주 예쁘게 보여주네요~

뉴스를 수집해서 보여주는 것은 BerliOS에서도 했던 것과 비슷한 것 같은데, 그래도 요새는 RSS가 많이 쓰여서 손은 좀 덜 가긴 하겠네요.
CIA처럼 개발자별로 따로
통계를 내 주는 기능도 있는데, 이것도 CIA보다 예쁘게 나오는 것이.. 흐흐 아주 마음에 듭니다. 요새 몇달동안 전혀 커밋 안 한 게 들통나서 얼른 밀린 버그 목록을 좀 봐야겠습니다. –;
-ㅇ- (저는 cjkcodecs의 무식한 데이터 양 덕분에 변경한 라인 수로는 6위 -.-v =3=3)

libtomcrypt에도 SEED 등장

예전에 한 번 넣으려고 했다가 중간고사가 임박해서 그만뒀었는데, 오랜만에
libtomcrypt를 받아서 보니
드디어 RFC4269 SEED 지원이 들어갔습니다! 기말고사도 끝난 기념으로
재미 좀 보려고 했더니 이런 할 일이 없어서 아쉽게 되었네요;
libtomcrypt메인테이너인 Tom이 직접 구현해서 넣은 것 같네요

libtomcrypt는 작고 가벼운 구현 특성으로 인해 특히 엠베디드 환경에서
많이 사용되고 있는데, 이제 VPN기계들이나 공유기 같은 곳에서도 쉽게
SEED를 채용할 수 있게 되어서 잘 되었네요~ ^_^
이로써 이제 오픈소스 툴킷 중 SEED를 지원하는 것은
GNU libgcrypt
(GPL), Botan (BSD),
libtomcrypt (public domain)
세 가지가 되었습니다. 이제 이번 방학 때 FreeBSD와 Linux 커널에도
시간 날 때 한 번 밀어 넣도록 노력해 보겠습니다. ^_^

오픈소스에 뛰어들기 정리

어제 “오픈소스에 뛰어들기“를 했습니다. 아침부터 저녁까지 계속 뛰어다니면서 후다닥 했더니 피곤해서 거의 10시간을 잤군요;; 행사 준비에 많은 도움을 주신 여러 강사, 자봉 분들과 추운 날씨에도 오셔서 능동적으로 참여해 주신 참가자 분들께 깊은 감사 드립니다. ^^

이번 행사를 하면서 느꼈던 점과 설문에 적어주신 내용을 토대로 몇 가지 더 좋은 행사를 위한 개선 사항을 기록해 둡니다.

  • 약도와 익숙한 사람만 알아볼 수 있는 오는 길 때문에, 대부분 장소에 찾아오기가 너무 힘들었다 -> 다음엔 사진을 포함한 상세한 오는 길 표시를 해야겠습니다. +_+
  • 시간이 너무 모자란다. – 각 세션이 대부분 실습 수업이라 초기에 세팅하는 데 드는 시간 때문에, 대부분 시간이 모자라서 문제가 많았던 것 같습니다. 실습의 경우에 세팅에 드는 시간을 예측하거나, 조교를 대량으로 투입하던지 좀 더 쉽게 설치할 수 있는 환경을 마련해야겠네요.
  • 실습 환경 준비를 위한 노트북 세팅이 아슬아슬.. – 노트북에 무선랜도 안 잡히는 부여리눅스가 깔려있어서 다들 그걸 우분투로 엎느라고 힘들었는데, 우분투 씨디를 충분히 준비해서 세팅 시간을 절약해야겠습니다. -o-
  • 선입금 덕분에 날씨에 크게 참가자 수가 영향을 받지 않았다 – 아무래도 추운 날씨에도 참여할 의지가 있는 분들을 선별하기 위한 첫번째 필터로 작용할 수 있지 않았을까 싶습니다. 바로 전날 있었던 다른 행사에서 2/3가 불참했다는 얘기를 들으니, 이번에 선입금이 효과가 있었던 것 같네요.
  • 학생에 대한 좀 더 적극적인 홍보가 필요하다 – 의외로 소식을 들은 곳을 묻는 질문에, 학교 홈페이지라고 대답한 사람이 많았고, KLDP도 모른다는 사람도 제법 있었습니다. 홍보 채널을 다양화하는 것이 새로운 사람들을 커뮤니티로 끌어들이는 결과를 얻을 수 있을 듯.

행사의 달인 조성재님이 없었으면 이번 행사 준비가 상당히 힘들었을텐데, 정말 감사드립니다. 다음 행사도 잘 부탁해요 -ㅇ-; 다음에도 컨텐트가 준비되면 한 번 또~ 🙂

그리고, 이번 행사에서 나온 참가비는 예정대로 플랜 한국위원회에 기부해서 세계의 기아들을 돕는데 쓸 예정이고, 아마도 52만원인가 됐던 걸로 기억합니다. (나머지는 행사 비용으로 사용) 기부자 이름은 참가자 모두의 이름을 쓸 수 없으니 일단 sha1 해시 16진법으로 표기한 이름으로 써달라고 해 볼 예정인데, 안 되면 그냥 행사 이름으로 ^^;

CN님께서 끝날 무렵에, 좋은 제안을 하나 하셨는데, 학생들을 위해서 모든 오픈소스 관련 행사에 대한 안내를 해 주는 RSS/모듬 사이트를 하나 운영하면 좋지 않겠느냐고 제안을 하셨습니다.
아무래도 지금은 홍보를 하려면 오픈소스 사이트 들에도 일일이 다 돌아다니면서 해야 하는 형편이니, 그런 사이트가 마련되면 많은 분들이 쉽게 보실 수 있을 것 같아서 좋겠네요.

이제 이번 겨울에는 가능하다면 RuPy 도 한 번 하고, Framework2.2도 한 번 하고 골고루 해보려고 하는데, 잘 됐으면 좋겠습니다. ^_^