Author Archives: peremen

우분투 엣찌 에프트

미적 퀴즈도 끝나고 할 짓이 없어서 우분투 대퍼를 엣찌로 업그레이드하는 짓을 했다. 원래 이름은 Edgy eft로, 읽자면 엣지 에프트가 되겠지만… ㄱㅁㅊ 군의 영향은 무시할 수 없는 것 같다. 역시 내가 대파를 처음 접했을 때와 경희누나 컴에 대파를 깔아 주었을 때처럼, 그냥 언스테이블인 상태에서 옆그레이드에 과감하게 도전했다. 방법은 쉽다.
sudo vi /etc/apt/sources.list
:1,%s/dapper/edgy/g
:wq
sudo apt-get update
sudo apt-get upgrade -f
sudo apt-get dist-upgrade

지금 날짜 기준으로 하여 파이썬 관련 패키지가 꼬여 있다는 점을 제외하면 쭉쭉 잘 올라 갔다. 싸실 이건 집에서 해 두고 와야 할 일이긴 했지만 그냥 학교에서 질러 버렸다. 업그레이드 이후 강제 재부팅을 시키고 새로 켜니까 갑자기 그럽이 달라졌다. 이전의 우분투에서는 CPU별로 커널을 구분했던 것이, 이제는 386, generic, server 세 종류로 통합되었다. 그래서 아키텍처별로 커널을 나눌 필요성이 사라졌다. generic으로 부팅해 들어가 보니, linux-restricted-modules 패키지가 없어서 엔비디아 그래픽 카드 드라이버를 잡지 못하여 수동으로 깔아 주고 재부팅했다.
언제나 귀여운, 그리고 찬사를 아끼지 않는 나의 KDE 데스크탑으로 들어가려는데, kdm이 전보다 더 간지나게 변신했다. 반투명 효과를 제대로 사용했다고 할까. 그리고 스플래시 화면을 지나고 나서 만나는 엣찌 에프트는 별로 다른 게 없었다. alee님이 ttf-alee 패키지를 업데이트하면서, 은진 시리즈 폰트 이름이 바뀐 것 때문에 fontconfig을 좀 수정해 주어야 한다는 것을 제외하면, 대퍼와 마찬가지 기분으로 쓸 수 있었다.

메이저 패키지도 업그레이드되었는데, 가장 중요한 것은 KDE 3.5.4 및 KDE 4 알파 패키지이다. 아직 KDE 4는 불안정하기 때문에 안정판 KDE에 의존해야 할 수 밖에 없으며, 기존에는 그놈 프로그램에만 있었던 Help – Translate This Application 메뉴가 생겼다. 이번에 엣찌에서는 내가 번역 작업에 동참 안한 상태에서 번역물 프리즈가 걸려 버렸으니, 왠지 양심에 찔리는 것 같기도 하다. 이러고서도 내가 ubuntu-ko 멤버냐…
그 이외에도, 파폭 2 베타 2, 안주타 2.0.2, 오픈옾휘스 2.0.3, vim 7.0.35 등 각종의 최신 패키지가 올라와서 언제든지 엣찌 에프트를 쓰면서 재미를 느끼게 해 준다. 엣찌 에프트가 6.10인 것처럼, 곧 있으면 엣찌도 안정판으로 들어갈 것이며, 그 때 재미있는 일이 일어날 것이다.

백괴사전

며칠 전에 학교에서 IRC를 즐기다가, #breakipedia에 사람들이 포진해 있는 것을 보았다. 갑자기 초대 메시지가 날아오더니, 그 쪽으로 워프해 버렸다. 거기서 이전의 뷁키백과에 관한 진지한 토론을 나눌 수 있었다. 그렇지만, 발전 방향보다는 곪을 가능성이 있는 상처를 째 버렸다는 것이 올바른 표현이 아닐까 싶다.
우선 거론된 문제가 위키의 목적이다. 사실 뷁키백과는 KSA의 뒷골목과 언사이클로피디어(이하 언시클) 패러디라는 두 개의 목적이 짬뽕이 되어 버려서 이것도 저것도 아닌 사이트가 되었다. 게다가, IRC에서 나온 말 중 한마디였던

“권진규 씨에 대한 인신공격”

이 한 마디가 가슴에 꽂혔다. 결국 뷁키백과에 있었던 글들을 뒤로하고, 백괴사전이라는 새로운 곳을 만들었다. 라이선스를 GFDL로 바꾸지는 건의가 있었고 결국 시행되었기 때문에, 언시클의 CC-BY-NC-SA 글들을 못 가져오게 되었다. 또한 지엽적이기보다는 모두가 웃으면서 즐길 수 있는 공간으로 탈바꿈하면서 기존의 KSA 관련 내용들을 삭제하게 되었다.
하지만 그 이전에 뒤처리를 해야만 한다. 일단 뷁키백과는 서버에서 지워졌고 데이터베이스는 안전한 곳에 따로 저장되어 있다. 그리고 백괴사전의 새 내용을 채우기 위해서 고민해야 할 시간이 왔다. 마지막으로, 뷁키백과를 제대로 통제하지 못해서 채워진 내용들에 대해서는 사과하겠다.

Qt에서 프로그램 설정 저장하기

언제 나올지 모르는 QOM 2.0을 작업하고 있는 이 시점에서 최근 이뤄진 기능은 환경 설정과 저장이다. 대부분의 프로그램이 따르듯이 시작 시 로드/종료 시 저장 모델을 따르기 위해서 시작 시 레지스트리나 C:\Documents and Settings\%USERNAME%\Application Data\QOM 같은 폴더에 파일을 쓴 다음 불러오는 모델을 취하려고 했다. 그래서 QOM의 입력/테스트 플러그인 모두가 개별 설정을 가질 수 있도록 하였고, API에 LoadConf와 InitTest2 함수가 추가되었다. 이들은 각각 설정과 관련되어 있는 함수이다.
그런데 내가 plain text 파일로만 할 것인가? 그래서 레지스트리에 저장도 고민해 보았지만 이것은 크로스 플랫폼적인 방법이 아니다. QOM의 장점 중 하나인 리눅스 및 맥 OS X 소스 호환성을 내가 앞장서서 깰 이유는 없기 때문이다. 그래서 찾다찾다 고민하다 나온 것이 QSettings 클래스이다. 이 녀석은 다양한 곳에 단순하게 쓸 수 있는 것이 을 연상시킨다.
쓰는 방법이 실제로 간단하다. 우선 ui가 시작되는 곳에
QSettings settings("회사명", "프로그램명");
을 집어넣는다. 그리고 설정을 읽어오려면
global.showwords = ksets.value("module/showwords", false).toBool();
global.random = ksets.value("module/random", false).toBool();
global.inverse = ksets.value("module/inverse", false).toBool();
global.whole = ksets.value("module/whole", true).toBool();
global.list_inverse = ksets.value("module/list_inverse", false).toBool();
global.words_count = ksets.value("module/words_count", -1).toInt();

같이 value 함수를 이용해서 원하는 경로에 있는 값을 읽어올 수 있다. 그리고 설정을 쓰는 것은 프로그램이 종료될 때 똑같은 선언을 해 준 다음
ksets.setValue("module/showwords", global.showwords);
ksets.setValue("module/random", global.random);
ksets.setValue("module/inverse", global.inverse);
ksets.setValue("module/whole", global.whole);
ksets.setValue("module/list_inverse", global.list_inverse);
ksets.setValue("module/words_count", global.words_count);
ksets.setValue("module/encoding_name", global.encoding_name);

와 같이 setValue를 사용해 주면 된다. 기본적으로 모든 플랫폼에서 가장 적합한 방법을 고르기 때문에 문제가 생길 가능성은 없다. 윈도의 경우 레지스트리 키가 이렇게 생긴다.
리눅스의 경우 conf 파일이 비슷하게 생긴다고 알고 있으며, 결론은 귀찮게 레지 값이나 텍스트 파일 찌르는 것보다 이런 게 더 낫다는 것이다.

포공 갔다옴

아놔 뭐랄까 왜 갔다 왔는지는 모르겠지만 여하간 (공강이 제일 많은) 귀중한 화요일에 포공을 갔다 오는 KSA의 센스란… 이해가 가기도 안 가기도 한다. 오전 8시에 사뿐하게 학교를 출발해서 경부고속도로+도로 조합으로 포항공대에 도착하니까 10시 40분 정도 되었다.
가던 도중 언양휴게소에서 서울 버스로 추정되는 웬 괴상한 차량이 올라오는 것을 보고 사진 한 장 남겼다. 포공 도착해서 카메라를 켜 보니 이놈의 배터리가 충전이 안 되어 있어서 포공 정문이나 대학본부 같은 건물은 찍지 못했다. 망할. 입시 설명회와 학교 홍보 비디오를 보고 대강 무언가 회관으로 이동해서 밥을 먹었다.

포공 계시는 분들은 건물 이름 알려 주세요

그 문제의 회관의 아래층에는 매점이 있었다. 그 매점에서 어쩔 수 없이 배터리를 구입했다. 매점에는 로케트 전지밖에 없어서 일단 AA 4개를 대강 사다 끼웠다. 당장은 배터리 부족 메시지가 뜨지 않아서 잘 작동하는 것 같았다. 매점을 갔다 온 다음 바로 옆에 있는 서점에 가서 RNE비라는 명목 하에 책들을 질렀다.
그 다음 포항공대 78계단에서 단체 사진을 찍는데… 우리학교 선배로 추정되는 사람에게 카메라를 맡기고 사진을 찍었다. 첫 번째 장까지는 문제가 없었는데… 두 번째 장에서…

“배터리가 없다는데요”

뒤에서는 아이들의 열광이 이어졌다 -_-;; 역시 로케트와 포공 매점은 믿을 게 못 돼 하면서 다시 전원 스위치를 눌러 준 다음에 사진을 찍었다. 결론은 사진은 나왔다는 것이다.
그 다음 학과 탐방인데, 나는 과감하게(?) 컴퓨터공학과를 골랐다. 뭔가 비밀 통로를 따라가는 것 같더니 컴퓨터공학과 전산실습실에 앉아서 음료수 하나 따 마시고 상당히 젊은 교수님(성함은 기억 안난다)의 학과 설명을 들었다. 자신은 카이스트 컴퓨터공학과 졸업해서 포항공대 교수로 왔다고 했다. 설명하는 것이 참 재미있어서 누구 하나 잘 이유가 없었다.

얼짱 윤구옵하

질문과 응답에서 인상깊었던 말이

“C나 C++ 코딩은 저기 학원 나온 녀석들한테 시키고 프로그래밍의 진수를 느껴 보려면 하스켈 같은 걸 공부해 봐”

내가 들어 본 함수형 언어는 하스켈, ML, 프롤로그가 있는데 이것이 대학교에서 실제로 학술적인 목적으로 사용된다는 것도 처음 알았다. 그 다음은 가상현실 체험이란 것을 해 보았는데 안경이 무겁다는 것 빼고는 기억나는 것도 없다.
마지막 코스가 포항 방사광 가속기이다. 뭐 입 아프게 떠들 것도 없어서 몰래 찍어 온 것 같은 내부 사진 하나만 첨부한다.
거 이제 글 더 이상 갈기기 귀찮아서 견학기는 이만 줄인다. 자습 끝나고 꼬라박으러 가야겠다.

러시아의 위력

뭐 MSN 대화명으로 걸어 두어서 알 사람은 다 안다고 생각하지만 자세한 건 여기 써 두겠다.
1. Last.fm에서 내게 PM이 왔다는 메일이 왔다.
2. 링크를 따라가 보자.
3. PM의 링크를 따라가 보자. 겉보기는 앨범 리뷰 같아 보이지만…
4. 다운로드 링크 ㄳ
아니 러시아의 불법복제가 얼마나 심각했으면 앨범이 나온 바로 다음 날에 이런 게 올라오며, 가수들은 어떻게 먹고살 수 있는가? 음협은 이런 거 본받아라!