Author Archives: peremen

적절하게

카이스트 버거킹.

카이스트 버거킹.

서울 지하철 2호선 강남역.

서울 지하철 2호선 강남역.

대전 지하철 1호선 대전역.

대전 지하철 1호선 대전역.


뭐 이것보다 더한 것도 있지만.

6월 14일 KLDPConf

지난 번 3월 8일 KLDPConf에서 상당히 충격적인 “고등학생과 오픈소스”를 발표한 후, 이번에는 좀 진지한 주제로 지난번의 모습을 탈피해 보려고 했다. 각종 프로그램의 지역화를 맡아 보면서 내가 느꼈던 것들을 이야기하고, 지역화가 단순한 번역이라는 인식을 깨기 위해서 이번 발표는 “지역화에 관한 짧은 고민”이라는 주제를 선택했다. 서울 나들이도 가 보고, 6/14일이 방학인 덕분에 부담없이 발표자로 신청하였다.

한국 MS는 포스코센터 안에 자리잡고 있었고, 뭐랄까 엄청 간지난다는 느낌이다. 5층에 있는 행사장으로 바로 걸어 들어가 보니 이미 사람들이 꽤 많이 있었다. 노트북 스위칭 시간을 최소화하기 위해서 KLDP 위키 페이지에 있는 것과는 달리 발표 순서가 조금 조정되었다. 신청은 2등으로 했지만, 실제 내 발표는 다섯번째에 했다. 지난번 컨프 때 발표 시간은 좀 오락가락이었지만, 이번에는 타이머도 동원되었다. “땡” 소리 꽤 인상깊었다.

맨 처음 발표는 이태훈 님의 구글 SoC 참여 프로젝트 소개였고, 한국인 참가자들이 적었다는 말이 조금 아쉽게만 들렸다. 이것과 함께 발표자가 참석하는 모델 체킹 프로젝트에 관한 이야기도 들었다.

다음 발표가 시마시마 님의 발표였는데, 짧은 시간 안에 만든 것 치고는 꽤 괜찮아 보였다. “MS 본사에서 MS를 까다!”는 시도 자체가 꽤 용기있었지만, 그걸 보는 직원들 표정이 영 그랬다. 윈도 비스타 얼티밋/엔터프라이즈를 제외한 에디션에서 다른 언어를 사용하려면 MUI를 별도로 구매해야 한다는 것, 한국어 IME가 이상해서 MS 오피스의 IME를 써야 한다는 것 등은 윈도가 까이고, 상용 코덱 지원이 미비하다는 것으로는 리눅스도 까였다. 왠지 이거 하나 가지고 MS 직원들이 트집잡지만 않기를 바란다.

그 다음 발표가 장정철 님의 LDAP을 사용한 SSO 이야기였다. 내가 속해 있는 스팍스에서 LDAP을 사용하는 데 비해서, 웹 인터페이스에서는 PAM 인증을 사용하고 동아리 위키는 또 인증이 나뉘어 있는 등 LDAP을 제대로 사용하지 못하는 것 같았다. 소프트웨어 개발 팀에서 LDAP 인증을 어떻게 사용하는가를 들어 보고, 우리 동아리 시스템도 그렇게 바꿀 수 있으면 좋을 것 같았다. 여기까지가 첫 번째 절반이었다.

다음 절반의 시작은 myCluster 님의 데스크톱 가상화 이야기였다. 중학교 때 컴퓨터실에는 구형 PC만 있고 터미널 서버에서 화면을 당겨 오는 형태였는데, 속도는 둘째치고 할 수 있는 짓이 진짜 제한되어 있어서 답답했던 기억이 난다. 가상화 기술은 눈부시게 발전해서 가상 사용자들이 무엇을 할 수 있는가도 제한할 수 있고, 가상 머신이 뻗었을 때 다른 서버로 넘어가서 자동으로 살아나기도 하는 등 사용자를 실제 머신에 붙잡아 둘 필요는 없었다. 스팍스에서도 서비스들을 Xen 하에서 제공하기 시작해서 어떻게 가상화의 장점을 이용할 수 있을까를 볼 수 있었다.

다음 내 발표 이야기는 다른 사람이 평을 해 줄 것 같아서 생략하고, 마지막의 jachin 님의 드루팔로 밥 벌어먹기 이야기였다. 한국의 웹 페이지들은 게시판(포럼도 아님) 형태의 페이지가 많아서 CMS가 생소한 개념인데, CMS가 무엇인지를 간략하게 설명하고 드루팔이 어떻게 사용될 수 있는가 이야기를 들어 보았다. 마지막 발표로 갈수록 시간이 적당히 짧아져서 대기 발표자 두 분도 들어볼 수 있었다. 김도형 님의 YAPC 2008 Asia 참관기와 조민재 님의 리눅스 사용자를 위한 FreeBSD 둘 다 괜찮은 발표였다. 마지막 발표를 두고, “마이크로소프트에서 열린 리눅스 사용자 모임에서 맥 OS X를 사용하여 FreeBSD 이야기를 했다”. 상상은 할 수 있겠지만 실제 이런 일을 할 수 있었다는 것 자체가 재미있었다.

토크 세션에서 나는 이리저리 돌아다니면서 드루팔을 설치하는 장면도 보고, 상용 Xen에는 어떤 관리 기능이 있는가도 보고 왔다. 지난 KLDPConf 때에 비해서 경품 종류가 다양해졌는가는 모르겠지만, MS에서 준비한 공구통 하나는 꽤 괜찮았다고 본다. 순선님 왈 “공구통 준다고 하니 환호하는 컨퍼런스는 참 보기 힘들군요.” 네 그런 것 같습니다. 숫자가 한정되어 있는 노트북 가방이나 딜러 세트 같은 희귀 아이템을 추첨할 때는 긴장감도 감돌았다.

기차 때문에 끝나자마자 서울역으로 달려갔지만, 이번 KLDPConf에서는 특히 우리 동아리에서 좋을 것 같은 이야기를 듣고 와서 투자한 비용 대비 소득이 꽤 컸다. 다음번 컨프 때도 무언가 재미나는 이야깃거리를 만들어 볼 생각이다.

발로만든™ 파이썬 프레임워크

뭐, 이름은 거창하게 프레임워크라고 붙였지만 사실상 아무것도 아니다. 최근 KDE 번역을 다시 시작하면서 통계를 내 줄 무언가가 필요해서 파이썬 CGI 기반의 웹 페이지를 짰다. 디렉터리를 찍어 주면 po 파일을 돌면서 통계를 내는 것이다. 그런데 그것을 짠 것이 느낌학상 왠지 화근이 된 것 같다. php 기반의 페이지와 파이썬 기반의 페이지가 섞여있는 것이 못마땅했던가 결국 모두 파이썬 기반으로 갈아엎고 말았다.

비록 내가 Django를 배워 보려고 했지만 튜토리얼을 한 번 보고 좌절해 버려서 내 목적에 맞는 소형 웹 프레임워크를 만들기로 했다. 이름하여 발로만든™ 파이썬 프레임워크. 제작하는 데 들어간 시간은 얼마나 걸렸는가 모르겠지만 결과물은 시간에 비해서는 만족스러웠다. 맨 먼저 한 작업은 현재 홈페이지의 레이아웃 중에서 공통되는 부분을 빼내는 작업이었다. 아래 그림을 보자.

뼈대 레이아웃

뼈대 레이아웃

$로 둘러싸인 부분은 파이썬의 string.Template이 사용할 부분으로 여기에 실제 내용으로 대체된다. INCLUDE_로 시작하는 부분을 한번에 처리하고, string.Template을 여러 번 쓰는 것을 방지하기 위해서 공통되는 부분을 묶어서 하나의 파이썬 파일에 묶었다. 그 다음 제목과 내용만 써 주면 문서가 만들어지는 함수를 만들었다.

자. 파이썬 CGI를 만들면서 했던 가장 큰 실수 중 하나가 HTTP 헤더를 엉터리로 보내는 것이었다. Content-type 헤더를 보내지 않으면 브라우저가 어떻게 처리할 지 알 수 없기 때문에 text/html을 꼭 날려 주어야 한다. 실제로 이것 때문에 왜 웹 페이자가 안 나오는가에 대해서 엄청난 고민을 하였다. 알고 보니 헤더 문제였던 것을 알고 엄청 난리를 피웠던 적이 있다.

하여간 이 common.py는 공개하기 너무 민망할 정도로 간단해서… 그래서 이름이 발로만든 프레임워크가 되었다. 제작하는 데 썼던 힌트들은 다음과 같다.

스팍스 동방컴

누군가가 “프랑켄슈타인 컴퓨터”라고 부를 정도로 사양이나 구성 부품의 출처가 상당히 조합하다. -_-

  • CPU: AMD Athlon 1700+ (인텔 쿨러)
  • 메인보드: 솔텍 SL-75KAV (VIA KT133A/686B)
  • 램: 삼성 PC133 256MB * 3
  • HDD: 시게이트 60GB
  • ODD: LG 40x CD-ROM
  • VGA: GeForce2 MX400
  • 파워: 삼성전기 160W

사운드/랜카드는 물론 달려 있다. 부품들의 출처를 언급하자면 진짜로(!) 버리는 부품들을 모아서 온 것이다. IRC에서 CPU+메인보드 세트를 업어오고, 램 등은 아라에서 중고로 사고, 모니터와 케이스, 하드 등은 하제에서 버리는 놈을 업어오고, 키보드와 마우스는 집에서 쓰던 것을 가지고 오는 등 정말 내가 봐도 출처가 다양한 놈이다.

뭐 이런 조잡한 컴퓨터에서도 우분투 8.04는 잘 돌아가고, 음악 듣고 IRC와 웹 브라우징은 충분히 가능해서 당분간 업그레이드 욕구는 느끼기 힘들 것 같다. 그래도 1GHz는 넘긴 프로세서니깐.

동방 컴퓨터

동방 컴퓨터

동방 컴 케이스. 오른쪽에 있는 것은 과거에 썼던 것.

동방 컴 케이스. 오른쪽에 있는 것은 과거에 썼던 것.

리눅스용 “키보드 보안”?

짜증나는 것 중 하나가 키보드 보안이다. 유저랜드 프로그램 주제에 커널을 지 멋대로 들어가서 휘젓고 다니면서, 때때로 한글 세벌식이나 영문 드보락을 처리하지 못하는 밥솥같은 놈이다. (키보드 보안 짜시는 분에게는 죄송합니다만, 저는 지극히 개인적으로 이걸 싫어합니다) 오늘 KLDP를 보다 보니까 “리눅스용 키보드 보안”이라는 글이 있길래, 뭔가 해서 한 번 분석해 보았다.

무엇인지 궁금하면 여기에서 다운로드해 보기 바란다. zip(!) 파일의 압축을 풀어 보면 사용설명서와 rpm 파일이 나온다. bin 파일로 된 인스톨러가 있긴 있지만, 내 컴퓨터는 amd64 환경이기 때문에 보나마나 i386인 바이너리 인스톨러가 제 정신을 못 찾을 것 같아서(/usr/lib32, /lib32 문제) rpm 파일의 압축을 풀어 보았다. fakeroot alien -t를 사용하면 된다.

rpm 파일을 풀어서 나오는 것은, 한소프트 리눅스 커널 2.6.14-56(그 vmsplice 문제에는 다행히도 해당하지 않는다)과 2.6.14-56-smp 커널의 i386에 맞게 컴파일된 커널 모듈과, 그 커널 모듈과 통신하는 것 같은 모질라 플러그인, PyGTK 기반으로 되어 있는 GUI 프로그램이다. 그 외에도 리눅스용 백신이 있었다.

사용자 안내서의 내용으로 미루어 보아 리눅스용 백신은 V3 엔진의 리눅스 포팅으로 보인다. 그러나 가장 걱정하고 싶은 것은 키보드 보안 모듈이었다. 많은 리눅스 사용자가 싫어할 것 같은 강제 설치는 일단 넘어가자. 모질라 플러그인이 설치되어 있는가를 검사해서 강제로 깔게 하는 것 같았다. 그리고 리눅스용 키로거 두 종류를 사용해서 실험하는 것을 보여주고 있다. 뭐, 거기까지는 괜찮다.

문서에서 다루고 있는 키로거는 lkl과 xkey이다. 이 두 키로거들을 테스트해 보자. 테스트 환경은 amd64 커널, KDE 4.0.4에서 한글 입력기 나비가 설치되어 있는 상황이다. 일단 lkl을 받아서 컴파일하는 데까지는 성공했으나, 일반 사용자 권한으로 실행시키려고 하니까 이런 에러가 났다.

psj@saebyuk:~/download/lkl$ ./lkl
Have to be root to perform a iopl()!

그렇다. 압축 파일 안에 있는 사용자 설명서에는 lkl이 제대로 돌아가는 것 같아 보이지만, 자세히 보면 사용자가 루트이다. 일반 사용자 권한으로는 절대로, 절대로 저렇게 뚫리지 않으니까 안심해도 된다.

xkey는 따로 프로젝트로 제작되는 것이 아니고 소스 코드는 어딘가에서 떠돌고 있다. xkey는 X11의 키보드 이벤트를 가로채는 것이라서 불행히도 뚫린다. 그러나 절대로 리눅스 배포판의 패키지로 따라오지는 않는다. X11 키보드 이벤트마저도 암호화해 준다는 것은 대단한 일이라고 생각한다.

내 생각으로는, 리눅스에서 키보드 보안을 위해서 뻘짓을 할 필요는 없다. 리눅스의 루트 권한은 상당히 얻기 힘들다. 커널의 vmsplice 패치도 발견된 지 채 일주일도 지나지 않아서 커널 메인 트리에 패치가 된 것을 보면, 이는 분명히 독점 소프트웨어와는 다르다는 것을 알 수 있다. 루트 권한을 따지 않으면 대부분의 키로거가 듣지도 않을 뿐더러, 사용자 권한으로 작동하는 키로거 역시 윈도처럼 막 작동하는 것도 아니다. 도리어 바이너리 커널 모듈 형식으로 배포하면, 저 안티키로거의 버그를 사용해서 그것마저도 무력화할 수도 있다. 소스가 공개된다면 굳이 저것 없이도 리눅스 커널 자체에서 키 입력을 암호화할 수 있는 처리를 할 것이라고 생각한다.

그러니까 제발 이딴 거 좀 강제로 깔게 하지 말자. 64비트 윈도는 희귀하지만 64비트 리눅스는 생각보다 많은 사람들이 쓰고 있다. 그리고 리눅스는 윈도와는 구조 자체가 달라서, 굳이 이렇게까지 할 필요는 없다. 다시 한 번 말하지만, 프로그램 자체는 좋다. 다만 강제로 깔게 하면 문제가 생길 것이다.

마지막으로 센스. 인스톨러는 좋은데 평가판이라니 ㅋㅋㅋ

사용자 삽입 이미지