언제 나올지 모르는 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 파일이 비슷하게 생긴다고 알고 있으며, 결론은 귀찮게 레지 값이나 텍스트 파일 찌르는 것보다 이런 게 더 낫다는 것이다.
Category Archives: 삽질
러시아의 위력
뭐 MSN 대화명으로 걸어 두어서 알 사람은 다 안다고 생각하지만 자세한 건 여기 써 두겠다.
1. Last.fm에서 내게 PM이 왔다는 메일이 왔다.
2. 링크를 따라가 보자.
3. PM의 링크를 따라가 보자. 겉보기는 앨범 리뷰 같아 보이지만…
4. 다운로드 링크 ㄳ
아니 러시아의 불법복제가 얼마나 심각했으면 앨범이 나온 바로 다음 날에 이런 게 올라오며, 가수들은 어떻게 먹고살 수 있는가? 음협은 이런 거 본받아라!
태터용 Monobook 스킨
그게 바로 지금 쓰고 있는 스킨이다. 전의 스킨에 비해서 상당히 허접해진 것 같은데, 이건 어쩔 수 없다. 내 HTML 실력이 영 안 좋아서 말이다. 이것을 하기 위해서 미디어위키의 페이지를 하나 얻어 온 다음 그것을 무작정 태터의 기본 스킨에 합쳐 버렸다. 그리고 위키와 블로그가 서로 다른 개념을 가지고 접근하기 때문에 이것을 해결해야만 했다.
위키는 한 페이지에 하나의 글이 있다는 것을 전제로 하고, 아무나 수정할 수 있기 때문에 수정이 쉬워야 하며 하나의 글을 기준으로 작성해도 된다. 그러나 블로그는 한 페이지에 여러 개의 글이 올 수 있으며 주인장 말고는 편집할 수 있는 사람이 없다. 이를 극복하기 위하여 미디어위키의 스타일을 대부분 뜯어고쳤다.
한편 미디어위키의 모노북 CSS 파일에도 블로그로 쓰기는 부적합한 부분이 몇 군데 있는데 그 중 하나가 왼쪽 사이드바이다. 사이드바의 넓이를 더 넓혀야 했으며 display 속성이 block으로 되어 있는 부분을 inline으로 되돌려야 했다. 그래서 br 태그가 없는데도 불구하고 링크들이 각 줄에 하나씩만 표현되는 이상한 현상이 계속 나타났다.
당분간 이 스킨은 블로그 메인으로 쓰일 예정이다. 그와 함께 더더욱 업그레이드 될 것이다.
아앍 2
원래 이 포스트는 윤리시간 리포트가 될 뻔 했으나 그 정도로 내 노트북의 상태가 좋지 않기 때문에 아앍 2로 대신하겠다. (그렇다고 비타스의 신곡이 올라오는 일은 없다.) 민간 구제법을 썼던 내 팬이 다시 맛이 가기 시작했다. 그래서 오늘 외출을 해서 삼성에 가서 팬을 고치려고 했으나 이런 일이 일어났다.
15:10 독서대를 거쳐서 김민국 선생님 연구실 골인
15:15 외출 승인 받아 옴. 컴퓨터를 비슷한 시간에 켬.
15:16 NFS 모원 켬
15:40 이상 없음을 확인하고 모원을 계속하려 했으나
15:41 다시 팬이 덜덜덜…
16:00 급히 모원을 끄고 외출을 취소함 (이 때 가면 늦을 것 같아서)
16:10 좌절 모드 + 공부 모드로 돌입
17:00 노트북 재분해 시작
18:00 분해 후 조립 완료, 효과 없음
-_-;; 정말 비타스 오페라 #2가 그립다…
결론. 결국 내 아까운 출장비를 RNE 자금에서 빼내 쓰고 그 다음 DVDRW를 지른다.
M40 파업 때려잡기
어제 니드 포 스피드와 함께 번인하던 중 갑자기 노트북이 덜덜덜거리기 시작했다. 그래서 민간요법으로 팬 주변을 두들겨 줬는데, 문제는 두들겨도 별 효과가 없다는 것이다. 게다가 전에 이런 문제가 발생했을 때는 거의 하루만에 일이 끝났지만 오늘은 아침 자습 때에도 덜덜덜… 정말 정말 열받아서 결국 삽질을 감행했다.
노트기어의 M40 리뷰를 보고 뜯어볼려고 했는데, 문제는 내가 전에 뜯어 본 경험이 없다는 것이다. 일단 아래면의 조그마한 나사를 다 끌었는데, 그 다음으로 뭐를 해야 할 지 모르겠다는 것이다. 그런데 이번에는 힌지 쪽 나사가 쉽게 까졌다! 힌지 쪽 나사를 깐 다음에 힌지 커버를 들어낸다. 이 때 노트북 뒤쫏의 홈에 일자 드라이버를 밀어넣으면 쉽게 들어내진다. 힌지 커버를 들어낸 다음 보이는 세 개의 나사도 들어낸다.
그러면 액정 부분이 분리되면서 숨겨진 두 개의 나사가 드러난다. 그 두개의 나사를 끌면 비로소 노트북의 팜레스트 부분이 들어올려지는데, 그 이전에 키보드와 HDD, 왼쪽/오른쪽 스피커 선, 전원 선, 터치패드 선 등을 제거해야 완벽하게 들어올려질 수 있다. 그러면 메인보드의 속살이 보인다!
이제 메인보드에 박혀 있는 나사들을 들어내면 된다. 그렇지만 M40 메인보드의 오른쪽에는 USB 및 전원을 담당하는 서브보드가 있기 때문에 부서지지 않도록 주의한다. 그리고 배터리와의 결합부가 의외로 쉽게 부서지므로 그 부분도 주의한다. 조심스럽게 들어내면 M40의 메인보드가 드러난다.
그러면 나사 두개를 끄르면 애물단지 팬이 나타난다. 그 팬을 청소해 준 다음 분해의 역순으로 조립하면 된다. 중간 점검을 위해서 힌지 부분만 조립한 다음에 전원을 켜 주는 것도 좋다.
마침내 조립을 다 하고… 드디어 팬 소리가 죽었다! 하지만 겨우 1년 반 쓴 것 가지고 팬이 이렇게 뻗는다는 것은 말이 안 되는 것 같았으며, 덕분에 노트북 개조할 때 더 쉽게 할 수 있을 것 같다.