벌써 두번이나 했는데 매번 기억이 안 나서 몇번씩 시행착오를 한 관계로 잊어버리지 않기 위해서 기록한다.

Source code에 한글로 comment를 쓰기 좋아하는 사람들(사실 나도 간혹 그런다)이 꽤 많이 있는데, file의 character encoding만 잘 맞춘다면야 comment를 뭘로 쓰든 사실 별 상관이 없다. 오히려 자신의 제일 잘 구사할 수 있는 언어인 한국어로 설명을 달아놓는 것이 더 좋을 수도 있을 것이다. 그런데, 이건 encoding을 잘 맞출 때나 할 수 있는 얘기고, EUC-KR이나 CP949로 저장되어야 할 파일을 어찌어찌 하다가 UTF-8 같은 것으로 저장해버리는 일이 종종 생긴다. 흔히 editor가 EUC-KR로 encoding된 파일을 열 때 제대로 decoding을 하지 않은 채로 열고, 저장할 때는 그냥 UTF-8로 저장해 버리는 경우에 많이 발생하는 듯 하다. 어쨌거나 내가 최근 며칠 사이에 아주 자주 마주치는 상황은 아마도 그런 전차로 발생한 듯 한다.

어떻게 이런 일이 일어났는지는 뭐 알 수 없는 거고, 현재 상태만 설명하자면 이렇다.

  • 파일의 실제 character set은 EUC-KR이다.
  • 그런데 이 파일이 적절한 decoding과 다시 적절한 encoding 없이 바로 UTF-8로 저장되었다.

이것을 다음과 같은 과정을 거쳐서 복원 시도할 것이다.

  1. UTF-8을 decoding해서 latin1으로 표현된 파일을 얻는다.
  2. 이 파일을 EUC-KR로 decoding한 후에 다시 UTF-8로 encoding한 파일을 얻는다.

2번의 결과물을 보면 망가졌던 한글 character 중 대략 70% 정도는 복구할 수가 있다. 그리고 나머지는 사람의 두뇌를 이용해서 복구가 안된 글자들을 상상해서 끼워 맞추는 작업이 필요하다.

최초의 파일(file1.c)은 이렇다. (vim에서 열어 본 것. ~/.vimrc에서 fileencodings는 ucs-bom,utf-8,euc-kr,cp949,iso-2022-kr,latin1 로 설정되어 있음)

이것을 bvi로 열어서 해당하는 부분을 보면 아래와 같다.

첫번째 변환은 다음과 같이 한다.

iconv -f utf-8 -t latin1//IGNORE file1.c > file2.c

최초 파일(file1.c)을 utf-8로 인식하여 연 다음에 latin1으로 변환하라는 뜻인데, latin1은 사실 아무런 변환을 하지 않은 것과 같다. 따라서 우연히 utf-8로 잘못 저장된 내용을 복구한 것이 된다.

이 결과는 다음과 같다(file2.c)

vim에서는 같은 것처럼 보이지만, 처음은 encoding이 utf-8이었고, 지금은 latin1으로 인식한다.

bvi로 열면 다음과 같다. 분명 파일 내용은 바뀌어 있다.

여기에서 생각할 것은 이 파일은 encoding은 실제로는 euc-kr이라는 것이다. 적절한 code 변환 없이 저장되는 바람에 일부 byte들이 유실되었고 vim로 자동인식해서 열어봐도 그냥 latin1으로 표시될 뿐이다. 이 파일을 강제로 euc-kr로 인식시키고자 다시 iconv를 이용한다. 두번째 변환은 다음과 같다.

iconv -f euc-kr -t utf-8//IGNORE file2.c > file3.c

이 결과물(file3.c)은 제대로 utf-8로 저장된 파일이 된다.

vim에서 열면 아래와 같다.

bvi로 열면 아래와 같다.

마지막 결과를 잘 보면 한글 한 글자당 3 byte가 사용되는 제대로 된 utf-8 encoding인 것처럼 보인다. 물론 몇가지 글자들은 정보 유실 때문에 여전히 깨지기도 하고, 복원하는 과정에서 잉여 byte들이 끼어들어 뭔가 더 길어진 것처럼 보이기도 한다. 잘 인지되지 않는 글자들은 무시한다. 시간이 남는다면 유실되거나 추가된 byte들을 이러저리 만져보면서 완전한 원본을 만들어낼 수도 있겠으나, 나는 지금 이 글을 쓰면서도 이미 시간을 많이 소비했다. ㅋㅋ 나머지는 나의 한국어 실력을 믿기로 한다.






  
트랙백 0  |  댓글 0  |
Draco님의 tweet에서 보고는 구글링해서 들어가 본 Unu라는 사람의 블로그에서 씁쓸한 글 하나를 읽었다. 요약하자면, 루마니아에 사는 자칭 화이트 해커(ㅋㅋ)라는 Unu라는 사람이 nProtect 홈페이지를 해킹해서 사용자 정보를 볼 수 있었다고 광고한 일이다. 국내 뉴스에서는 화이트해커라고 하던데, 뭐, 말하자면 공격해서 취약점은 밝혀서 망신을 주지만, 빼낸 정보를 악용하지는 않는다는 뭐 그런 얘기다. 그렇다고 하니 믿을 수밖에. :) Unu라는 사람은 SQL injection을 이용해서 홈페이지를 뚫긴 했는데, 나의 눈을 이끈 부분은 그런 자세한 해킹 기법이 아니고, nprotect에서 사용자의 패스워드를 clear text로 보관하고 있었다는 사실이다. 웃기는 짬뽕이다. 서버 해킹 당한 거는 이러저러한 연유로 그렇게 될 수도 있다 치지만, 사용자 패스워드를 clear text로 보관한다는 건, 사이트의 설계 당시부터 애초에 잘못된 보안 개념을 가지고 있었으며, 아직까지도 고칠 여유가 없었거나, 고칠 능력이 없었거나, 아니면 그게 잘못된 것인지를 아예 모르고 있었다는 얘기다.

이게 왜 잘못된 거냐 하면... 코딩이 짜증나니 머리도 식힐 겸 친절한 썰을 하나 풀도록 하자.

아이디와 패스워드는 대표적인 개인 인증 방식에 사용된다. 아이디는 자신의 이름과 같은 것이어서 각각의 개인을 구분하는 정보이고, 패스워드는 그 개인만이 알고 있는 비밀 정보이다. 패스워드를 알고 있는지 여부를 살펴서 그 아이디의 주인이 맞는지를 확인한다. 이게 대충 수박 겉핥기 식으로 정의하는 인증이다.

사실 이것보다는 우리가 허고헌날 쓰는 자물쇠와 열쇠의 비유를 쓰는 것이 좋겠다. 우리가 자물쇠를 열쇠로 열 때, 그 자물쇠에 꼭 맞는 열쇠가 있어야만 한다. 다른 말로 하자면, 자물쇠는 자신과 꼭 맞는 열쇠만을 인식한다. 자물쇠를 아무나 열지 못하게 하려면, 우리는 열쇠를 잘 간수해야 한다. (사실 우리는 열쇠를 꽁꽁 숨겨 다니지도 않고, 누가 열쇠를 쳐다 본다고 해서 그 열쇠를 도둑맞았다고 호들갑을 떨지는 않는다. 그래도 사진기와 같은 아주 정확한 기억력을 가진 누군가가 열쇠를 쳐다보고, 머리 속에 사진을 찍어 두었다가 그것과 똑같은 열쇠를 만든다면 열쇠를 도둑 맞은 것과 똑같은 상황이 되긴 한다. 물론, 보통 사람들은 그런 기억력을 가지고 있지 않기 때문에 우리는 열쇠를 누가 쳐다보는 것에 둔감하고, 그럴 만도 하다.) 열쇠의 모양은 자물쇠와 열쇠 사이의 비밀정보이다. 문지기가 자물쇠 옆에 늘상 붙어 있다고 해도, 자물쇠만 봐서는 열쇠의 모양을 알 수가 없다. 첩보 영화에 나오듯이 밀랍 덩어리를 자물쇠 안에 넣어서 모양을 짜내지 않는다면 ;)

그림으로 그리자면 이런 식이다.
발로 그린 그림이지만, 왼쪽이 자물쇠 오른쪽이 열쇠라고 너그럽게 봐 주도록 한다. (열쇠가 더 커 보이는 건 착시현상이다. 어찌됐든, 열쇠를 자물쇠에 넣는 것이 더 큰일 같아 보이긴 하다. ^^ ) 문지기는 사용자가 열쇠를 자물쇠에 넣는 짧은 동안에는 열쇠를 슬쩍 관찰할 수 있다. 문지기의 눈이 고감도 카메라라면 이 순간 열쇠는 도둑맞은 것이나 다름 없지만, 우리는 문지기의 관찰력이 그리 높지 않다고 대충 가정한다. 이러한 방식과 유사한 것이 대부분의 ID/PW 방식의 인증들이다. 사이트는 사용자가 전송한 패스워드를 짧은 기간동안 clear text로 볼 수 있다. 사이트 관리자가 딴 생각을 품고 이 패스워드를 다른 곳에 기록해 놓는다면 (문지기의 카메라 같은 시각) 이 사용자의 패스워드는 그 관리자에게 노출된다. 그런데, 암묵적으로 우리는 관리자가 인증 과정에서 관찰한 패스워드를 따로 몰래 저장해 놓지는 않는다고 가정한다.

앞의 nprotect 같이 패스워드를 평문으로 저장하는 것은 아래 그림과 같이 표현할 수 있다.
이게 뭔가. 열쇠를 관찰하는 사람 말고도 자물쇠를 관찰하는 사람도 열쇠의 모양을 알 수 있다. 이 경우에는 문지기의 눈을 가려 놓거나, 자물쇠를 또 다른 것으로 감싸고 거기에 또 다른 자물쇠를 달거나 하지 않으면 열쇠를 만들 능력이 되는 모든 사람이 자물쇠를 열 수 있다. 이런 바보 같은 자물쇠를 만드는 사람은 없을 것이다.

통상적인 Unix 패스워드 시스템에서는 자물쇠를 일방향 함수로 만든다. 일방향 함수라는 것은 순방향으로는 계산이 쉽지만, 역방향으로는 계산이 어려운 함수이다. 일방향 함수가 아닌 함수의 예는 쉽게 이런 것을 들 수 있을 것이다. f(x) = x + a. -.-;; f(x) = y 일 때, y를 알면 x는 당장 알 수 있다. x = y - a의 관계가 있기 때문이다. (물론 함수 자체는 완전히 주어진다. 즉, a가 공개된다.) 그런데 일방향 함수는 f(x)가 완전히 주어져 있을 때에도 역방향 계산이 어려운 함수이다. 사용자의 패스워드는 x(열쇠)에 대응되고, 서버가 보관하고 있는 것은 패스워드의 일방향 함수값 y(자물쇠)에 대응된다. 열쇠(x)가 들어오면, 서버는 일방향 함수를 통과시켜서 일방향 함수값(y)을 구하고 저장하고 있는 일방향 함수값과 같은지 비교한다. 같으면 통과, 틀리면 실패이다. 보통 자물쇠와 같이 서버는 저장하고 있는 일방향 함수값(y, 즉 자물쇠)만 가지고는 패스워드(x, 즉 열쇠)를 알 수 없고, 사용자가 패스워드를 주었을 때 맞춰 볼 수만 있다. (물론, 이 때 서버는 사용자가 전달한 패스워드를 인증이 끝나면 폐기한다는 조건이 있어야 한다.)

또다른 잡담으로, 앞의 보통 자물쇠의 경우 기술이 좋아서 자물쇠 내부를 잘 들여다 볼 수 있는 사람들이 있다. 시중에 떠도는 금고털이들이 그렇다. 그건 자물쇠의 구조적인 한계 때문이기도 하고, 그림처럼 열쇠의 모양을 마음대로 만드는 것이 아니라 생각해 볼 수 있는 열쇠의 모양의 가지수에 한계가 있기 때문이기도 하다. 이 경우, 문지기는 이런 공격을 시도할 수 있다. 열쇠 하나를 만든다. 자물쇠에 맞춰본다. 안 맞으면 다른 열쇠를 만든다. 또 맞춰본다. 이런 걸 몇백만번쯤 하면 자물쇠에 맞는 열쇠를 만들 수 있을 것이다. 더구나, 열쇠/자물쇠의 규격이 문제가 있어서, 열쇠의 모양에 한계가 있다면 만들어야 하는 열쇠의 수는 줄어든다. 톱니가 4개 달린 열쇠에 톱니 하나당 높이의 단계가 10개 뿐이라면, 열쇠를 만개만 만들어보면 된다. 실제 ID/PW 인증의 경우에는 열쇠를 만드는 게 정말 아무것도 아니다. 만개의 열쇠를 만들어서 자물쇠와 맞춰보는 작업을 몇초~몇시간 안에 할 수 있다. 그러니, 패스워드를 그냥 숫자 키패드에서 몇개 찍어서 쓰는 사람들은 몇초 안에 깨질 수 있는 패스워드를 쓰고 있다는 뜻이 된다.

또또 다른 잡담으로, 인증 과정에서 열쇠를 슬쩍 훔쳐볼 수 있는 서버(또는 문지기)가 탐탁치 않을 경우에는 어떻게 하는가. 자물쇠와 열쇠의 예에서는 비교적 간단하다. 열쇠를 조심해서 꺼내고, 손으로 잘 감싼 후에 자물쇠와 열쇠를 잘 갈무리해서 열면 된다. 열고 나서도 손으로 잘 감싸서 주머니에 넣으면 된다. 그럼 ID/PW를 이용한 인증에서는? 사실 방법이 없다. 자물쇠와 문지기의 예에서는 자물쇠와 문지기가 별개의 객체인 것처럼 말을 했지만, 실제로는 그렇지가 않다. 굳이 비유하자면, 사용자가 열쇠를 문지기에게 주면, 실제 열쇠를 자물쇠에 맞춰보는 건 문지기가 한다. 문지기에게 줄 때까지 열쇠를 아무리 잘 갈무리해봤자 일단 문지기에게 주고 나면 문지기가 열쇠를 빼돌리지 않는다고 그냥 믿어야 한다.

이와 관련하여, 웹서버의 경우 https 통신을 하면 무조건 안전하다고 믿는 사람들이 있다. 뭐, 사실 안전도가 비약적으로 상승하는 것은 맞다. 앞의 비유에서는 사용자가 문지기의 바로 앞에서 열쇠를 꺼내 주는 것처럼 보이지만 그렇지가 않기 때문이다. 현실에서는 열쇠를 꺼내서 본을 뜨고 어쩌고 해서 열쇠의 (완전히 똑같은) 사본을 만든다. 그리고 속이 잘 비치는 편지 봉투에 넣고 우편함에 넣으면, 오토바이를 타고, 트럭을 타고, 기차나 비행기를 타고 문지기에게까지 배달된다. 그리고 문지기가 열쇠를 자물쇠에 맞춰본다. 그러니 배달 과정에 있는 수많은 사람들이나 또는 우편함 속에 몰래 숨어 있던 스파이가 열쇠를 빼돌릴 수 있다. https 통신을 하면 열쇠를 무지하게 튼튼한 봉투에 넣어서 전달하는 것과 같게 된다. 그러니, 걱정해야 하는 수많은 사람들은 나가 떨어지고 문지기만 남게 된다. 안전도는 비약적으로 상승한다. 하지만... 여전히 문지기는 남아 있다. ID/PW 방식을 사용하면 이건 어찌해 볼 수가 없는 문제이다. PKI 방식을 쓰는 수 밖에.


ps. 그림 그리는 게 제일 힘들었음. -.-;;
ps2. 왜 글이 점점 늘어나지 -.-;; 일하기 싫다는 증거.
ps3. 패스워드편 말고 다른 게 있을지는 며느리도 모름.

'Cryptography' 카테고리의 다른 글

보안의 보짜 (패스워드편)  (0) 2009.12.01
KCDSA & EC-KCDSA + OpenSSL  (2) 2009.09.30
OpenSSL의 crypto library 뜯어보기 2  (0) 2007.04.24
OpenSSL의 crypto library 뜯어보기  (0) 2007.04.18
  
트랙백 0  |  댓글 0  |
분신처럼 들고 다니던 노트북의 액정이 맛이 가는 바람에 더 이상 이 분신을 들고 다닐 수가 없다. 그래서 방에다 LCD 하나 연결해 놓고 거의 데스크탑처럼 써 먹고 있는데, 그러다 보니 하루 중 제일 많이 접하는 컴퓨터가 노트북에서 랩에 있는 데스크탑으로 변했다. 거진 1년만인 것 같네.

문제는 노트북에 있던 음악 파일들을 모두 데스크탑으로 옮기고 난 후에 생겼다. 노트북에 있던 우분투에서는 quodlibet이라는 프로그램으로 음악 정리하고 듣고 그랬는데, 이 quodlibet에서 설정한 album artist 태그가 데스크탑에 깔린 winamp에서는 먹질 않는 거다. 좀 찾아봤더니, quodlibet에서는 quodlibet::albumartist 라는 custom tag에 album artist를 기록하는데, winamp에서는 tpe2라는 태그에 기록한다. 이 태그는 프로그램에 따라서 band라고 해석하도 하고, performer(quodlibet이 그렇다)라고 하기도 하고 album artist, 또는 orchestra라고 부르기도 하는 태그다. (관련글)

어쨌거나, 몇 천개 되는 mp3 파일에서 quodlibet에서 지정한 album artist를 winamp에서 알아먹을 수 있는 tpe2 태그로 옮겨 줘야 한다. mp3파일이 텍스트 파일이었으면 간단히 끝났을 텐데, 나는 요 mp3라는 녀석의 내부 구조에 대해서 아는 것이 없다. 그래서 적당한 프로그램을 찾아보았다. 그리고 찾았다. mp3tag 라는 프로그램이 있는데, 훌륭한 프로그램이다. 사용한 기능은, 다른 태그를 보고서 새로운 태그를 생성해 내는 기능이다.

아래 화면은 quodlibet에서 지정한 quodlibet::albumartist라는 custom tag를 리스트에 표시하도록 한 화면이다. 지금은 quodlibet::albumartist는 지정돼 있지만, winamp에서 album artist로 인식하는 tpe2태그(mp3tag에서는 %band%임)는 없는 상태이다.

작업할 파일들을 선택한 후, 메뉴에서 변환>실행을 누르거나 ALT+5를 누른다. 실행 그룹이라는 것이 뜨는데, 여기에는 각종 작업들을 하나로 묶은 "실행 그룹"이라는 것들이 나열된다. quodlibet의 albumartist를 winamp albumartist로 바꾸는 작업을 하는 것이니 "quodlibet albumartist to winamp albumartist"라는 이름의 실행 그룹을 새로 생성한다. 그리고, 실행 내용에는 소스형식을 %quodlibet::albumartist%로 정하고, 추측 방식을 %band%로 정한다. 이건, quodlibet::albumartist라는 이름의 custom tag를 읽어서 이 값을 band라는 태그(tpe2이다)라고 추측하도록 하자는 것이다.

그리고 나서는 실행 그룹 화면으로 돌아가서 방금 생성한 그룹을 체크하고 확인을 눌러주면 된다.

'기타' 카테고리의 다른 글

Quodlibet에서 Winamp로  (0) 2009.11.14
Filezilla server의 아이콘 색깔  (0) 2009.06.11
Thunderbird 메일 정리  (0) 2009.03.11
AhnLab Online Security 삭제  (26) 2008.12.09
Firefox에서 북마크와 주소창 이용  (0) 2008.07.08
Nintendo Wifi USB Connector의 이모저모  (0) 2008.01.08

국내에서 개발되어 국제표준인 ISO/IEC 14888-3 에도 들어가 있는 두 개의 전자서명 알고리즘이다. 이걸 OpenSSL에 어울리도록 코딩한 것이다.

올 봄에 나의 지도교수님의 언질로 만들었던 것인데, 애초의 마음먹은 것과는 달리 뒤에 가니 OpenSSL에 제대로 어울리는 코드는 만들어내지 못한 것 같다. 결정적으로 국내 표준에 명시된 HAS-160을 만들어 넣지 않아서 모양새가 좀 이상하다. 국제 표준(ISO/IEC 14888-3)에 있는 numerical example은 HAS-160을 안 썼다고 하기도 그렇고, 썼다고 하기도 그런 애매한 상태다. 국내 표준에 있는 numerical example과 맞아떨어지는 것을 제대로 구현하려면 HAS-160은 필수. 뭐, 그래서 OpenSSL에 패치를 보내는 거는 지금 상태에서는 적절하지 않고, 시간이 나면 HAS-160 코드를 만들어 넣으려고 했던 것도 시간이 지나니까 귀찮아져서 코드와는 점점 소원해진다.

그랴서... 그냥 썩혀 두기는 아깝고, 제대로 만들어 보자니 귀찮은... 계륵(?)과 비슷한 것이려나. 뭐, 어쨌든 여기에라도 포스팅해서 미끼를 던지고, 관심 두는 사람이 있는지 낚시질이나 해봐야겠다.

원래 올라가 있던 페이지: http://islab.postech.ac.kr/kcdsa.html

라이센스는 GPL v3

작성자는 Yeon-Hyeong Yang <yhyang@oberon.postech.ac.kr> <lbird94@gmail.com>

소스 코드:


'Cryptography' 카테고리의 다른 글

보안의 보짜 (패스워드편)  (0) 2009.12.01
KCDSA & EC-KCDSA + OpenSSL  (2) 2009.09.30
OpenSSL의 crypto library 뜯어보기 2  (0) 2007.04.24
OpenSSL의 crypto library 뜯어보기  (0) 2007.04.18
  
트랙백 0  |  댓글 2  |

아래의 어느 것도 문제의 원인이 아니었음! 단지 마우스가 불량이었음! -.-;; 아래는 그냥 기록상 남겨둠.

더보기



  
트랙백 0  |  댓글 0  |

그동안 신경을 쓰지 않고 있어서 모르고 있다가 방금 알았는데, Filezilla server interface 프로그램의 시스템 트레이 아이콘 색이 접속자가 있는지 없는지에 따라 색깔이 변한다.

client 접속이 없을 때 노란색

client 접속이 있을 때 녹색


'기타' 카테고리의 다른 글

Quodlibet에서 Winamp로  (0) 2009.11.14
Filezilla server의 아이콘 색깔  (0) 2009.06.11
Thunderbird 메일 정리  (0) 2009.03.11
AhnLab Online Security 삭제  (26) 2008.12.09
Firefox에서 북마크와 주소창 이용  (0) 2008.07.08
Nintendo Wifi USB Connector의 이모저모  (0) 2008.01.08

linux의 gnome 환경에서 쓸만한 음악 연주기 중에서 그 중 제일 쓸만하다고 판단되는 banshee 1.5.0이 나왔다. 근데 보면 aka 1.6 beta 1이라고 나온다. 안정버젼이 되려면 1.6이 될 때까지 기다려야 하는 건가? 어쨌든 현재 ubuntu jaunty 저장소에는 올라오지 않고 있는데 일단 subversion으로 받은 소스로 deb 패키지를 만들어서 설치했다. revision number는 5209라서 r5209 딱지를 붙였다.


monodoc-banshee-manual은 설치하지 않았는데 혹시나 해서(그냥 심심해서) 올려 둠.

근데 1.4.x 때보다 느려진 것 같다. 음악이 끊기거나 하는 건 아닌데 화면이 반응하는 속도가 참 아쉽다.

  
트랙백 0  |  댓글 0  |

terminal에서 vim을 띄워서 작업한다면 K 키로 man page를 보는 데 그다지 문제가 없다. 물론, 터미널이 제대로 된 터미널일 경우에.

그런데 gvim을 쓸 때에는 K 키로 man page를 보면 보기 싫게 나온다. less가 화면을 제어하기 위한 기능이 gvim에서 제공되는 emulated terminal에서는 제공되지 않기 때문이란다. (관련링크) 그래서 Dr Chip이라는 사람이 vim 창에서 자체적으로 man page를 출력해주는 vim plugin은 만들었다. man page viewer라는 것으로 man page를 보려는 keyword 위에서 K 키를 누르면 터미널에서 man이 구동되지 않고 vim 창이 쪼개지면서 새 창에 man page가 나온다. 새로 나오는 창은 일반적인 vim buffer처럼 동작한다. (간단히 말해서 h,j,k,l 키로 이동. ctrl+d, ctrl_u 등도 이용 가능. 등등등)

설치는 아주 간단하다. 일단 위 링크를 눌러서 Dr Chip의 페이지로 간 다음에 Man Page Viewer를 우클릭해서 어딘가에 저장한다. 요즘 왠만한 데스크탑용 vim이라면 확장자가 .gz인 파일을 그냥 열 수 있다. 그러니 그냥 vim으로 manpageview.vba.gz를 연다. 그런 다음에 :so % 라고 입력한다. (:부터 %까지 다 입력해야 함.) 이렇게 하면 ~/.vim 아래에 이런 저런 파일들을 생성한다. 다음부터는 gvim에서 K 키로 man page를 "잘" 볼 수가 있다.

ps. 찾아보니 KLTP에 이와 관련된 팁이 이미 있었는데 (이 글) 너무 오래된 (2002년) 글이다.

'Linux & Unix' 카테고리의 다른 글

USB 마우스 종종 먹통되는 문제  (0) 2009.06.22
banshee 1.5.0 released  (0) 2009.06.03
gvim에서 man page 제대로 보기  (0) 2009.05.18
2009년 우분투 세미나  (0) 2009.05.11
Ubuntu에서 노트북 배터리 아끼기  (2) 2009.05.07
sony VAIO + conky  (0) 2009.05.03
  
트랙백 0  |  댓글 0  |


우분투 한국 사용자 모임에서 "2009년 우분투 세미나" 를 개최합니다.

이 세미나에서는 우분투를 처음 접하는 사용자와 우분투를 사용하고 있는 사용자들을 대상으로, 우분투 소개, 데스크탑 설정 및 응용 프로그램 등의 기초적인 부분과 리눅스 커널 및 DBMS 등의 고급 내용도 함께 다룰 예정입니다. 또한 상당한 수준의 기념품이 (가능한) 참석자 전원에게 지급될 예정입니다. 더 자세한 내용은 다음 글을 참고하세요. viewtopic.php?f=2&t=5063&start=0

주의 : 세미나 참석 인원이 정원에 도달하였으므로, 추가 신청은 받지 않습니다. 하지만 기념품을 못받더라도 오시겠다! 하시는 분은 오셔도 됩니다.

라고 합니다. 이상 펌! ^^

저도 참석할 예정입니다.

'Linux & Unix' 카테고리의 다른 글

banshee 1.5.0 released  (0) 2009.06.03
gvim에서 man page 제대로 보기  (0) 2009.05.18
2009년 우분투 세미나  (0) 2009.05.11
Ubuntu에서 노트북 배터리 아끼기  (2) 2009.05.07
sony VAIO + conky  (0) 2009.05.03
ubuntu linux와 windows 사이에 rsync 설정  (1) 2009.03.01
  
트랙백 0  |  댓글 0  |

노트북 배터리를 아끼기 위한 첫번째 step은 뭐니 뭐니해도 일단은 powertop을 설치하고 어떤 것들이 노트북에 로드를 주느냐를 감시하는 것이다. powertop은 추가로 배터리를 아끼기 위한 이러저러한 방법들을 추천해 준다. 그런데 ubuntu의 경우에 laptop-mode-tools라는 것이 있어서 powertop이 추천해줄만한 것들이 이미 설정되어 있다. 사용자의 취향에 따라서 세세하게 조정할 수도 있다. GUI는 일단 모르겠다. 기본적으로는 /etc/laptop-mode/laptop-mode.conf 를 수정하는 방식이다. (현재 설치된 Ubuntu는 9.04임)

laptop-mode 설정

/etc/default/acpi-support 수정해서 ENABLE_LAPTOP_MODE=true 로 변경함. 이 것이 laptop-mode-tools에서 하는 작업들을 사용할 수 있게 해줌. laptop-mode-tools의 설정 파일은 /etc/laptop-mode/laptop-mode.conf 에 있는데 대충 설정들을 보면 전력 소모를 줄일 수 있는 설정들이 대부분 들어가 있는 것으로 보인다.

/etc/laptop-mode/laptop-mode.conf 내의 몇가지 option들을 enable한다.

  • CONTROL_NOATIME=1
  • CONTROL_HD_WRITECACHE=1

/etc/laptop-mode/conf.d/ 아래에 있는 conf 파일들에서 쓸모 있을 것 같은 설정들을 enable시킨다.

  • ac97-powersave.conf
  • bluetooth.conf
  • configuration-file-control.conf
  • dpms-standby.conf
  • ethernet.conf
  • hal-polling.conf
  • intel-hda-powersave.conf
  • intel-sata-powermgmt.conf
  • lcd-brightness.conf
    • echo [value] to echo 5
    • BRIGHTNESS_OUTPUT="/sys/class/backlight/acpi_video0/brightness"
  • sched-mc-power-savings.conf
  • usb-autosuspend.conf
  • video-out.conf
    • BATT_DISABLE_VIDEO_OUTPUTS="VGA"
    • LM_AC_DISABLE_VIDEO_OUTPUTS="VGA"
  • wireless-iwl-power.conf
    • 이건 enable하지 않았다. 설정 파일의 설명에 의하면 iwl4965 driver를 사용할 때 효과가 있다고 하는데, 현재 나의 경우 iwlagn driver를 사용하고 있다.

Reducing disk activities

아래는 사실 위에 것을 하기 전에 찾아본 것인데, 누구에겐가는 쓸모가 있을 것 같아서 덧붙인다.

에... 그러니까, conky가 report하기로 disk에 뭔가 계속 쓰여지고 있다고 한다. 이런 저런 명령어들을 찾아봤는데 무슨 process가 얼마나 (그리고 어디에) 쓰고 있는지 알려주는 것이 없는듯했다. 그러다가 이글(https://answers.launchpad.net/ubuntu/+question/30513)을 발견했는데 아래쪽에 보면 iotop이라는 프로그램(http://guichaz.free.fr/misc/#iotop)을 소개하고 있다. 이게 딱 내가 찾던 것인데... 문제는 이 프로그램도 어떤 프로세스가 disk에 접근하는 정도는 보여줘도 어떤 파일을 읽거나 쓰는지는 안 보여준다.

googling하다가 이런 글(http://ubuntuforums.org/showthread.php?t=839998)도 발견했다. journal commit과 page 교환 간격을 늘려주는 것이다. 그런데 이것대로 따라하고 나도, suspend 갔다가 돌아오면 sysctl.conf 의 설정은 원래대로 덮어쓰여진다.

ubuntu wiki에 보면 이런 것(https://wiki.ubuntu.com/ReducedPowerUsage)도 있다. 2006년 글인데 아직도 쓸모가 있을 것 같다.

  
트랙백 1  |  댓글 2  |

몇시간 전에(그러니까 술먹으러 가기 전에) 어렵사리 (생각보다 시간이 걸리더군요) 만든 겁니다. 문제는 있을 수 있습니다. 저한테 머라 하지 마세요. 우선은 fanspeed 부터 만들었는데 Sony VAIO에 관계된 몇가지는 (그래봐야 몇 개 안되는군요) 앞으로 만드는대로 포스팅하겠습니다. VAIO 안 쓰시는 분들에게는 필요가 없겠지만요. ^^

첫번째는 fanspeed를 가져오는 겁니다. upstream에 패치 보냈는데 언제 반영될지는 모르겠습니다.

sony_fanspeed 추가.
http://sourceforge.net/tracker/?func=de ... tid=757310


  
트랙백 0  |  댓글 0  |

나는 메일을 거의 지우지 않는 편인데 지금까지 7년이 넘는 기간 동안 연구실 메일 서버를 통해서 주고 받은 메일을 거의 대부분 가지고 있다. 양이 엄청나기 때문에 연도별로 별도의 폴더에 넣고 보관을 한다. 한 해 동안의 메일은 적으면 1800건, 많으면 3000건 정도 된다. 그런데 그 동안 컴퓨터를 몇 번 바꾸기도 하였고 폴더 보관 방식을 바꾸기도 해서 thunderbird의 폴더 데이터에 거품이 많이 끼었다. 거품 청소를 해야 하는데 청소하기 전의 총 데이터양이 10GB 가까이 되었다. 청소하고 나니 약 7GB 정도로 줄었다. 3GB는 이익을 본 셈이다.

우선 사용한 기능들을 보면 Thunderbird 자체의 압축(compress가 아니라 compact이다.) 기능과 Remove Duplicate Messages (Alternate) 0.3.1이라는 Thunderbird add-on의 기능이다. 그리고 거품 청소를 해야겠다고 마음먹게 만든 글은 [Thunderbird] Uses LOTS of disk space - can't clean up이라는 글이다.

모든 폴더를 정리했는데 스크린샷을 남기기 위해 archive04라는 폴더를 정리하는 것을 보도록 한다.

일단 thunderbird가 저장하고 있는 공간을 보면 archive04에 1.2GB 정도를 사용하고 있다. 백업했다가 다시 데이터를 살리는 경우에 이미 지운 메일을 thunderbird가 다시 복구해버리는 경우가 있어서 중복된 메일들이 꽤 있다. 그래서 일단 중복된 메일을 지우는 작업을 한다.

폴더에 오른쪽 클릭을 하고 Remove Duplicates...를 선택하면 중복된 메일들을 검색한다. 이 기능은 앞에서 말한 add-on에서 제공하는 기능이다. 간혹 사람이 보기에는 중복된 메일을 그냥 두는 경우가 있는데 add-on의 설정에서 어느 속성들을 비교할 것인지를 변경해 보면 된다. 아마 message ID를 끄고 To와 CC 항목을 체크하는 것이 사람 눈으로 비교하는 것과 같은 효과를 가져올 것이다.

중복된 메일을 찾으면 그 중에서 어느것을 남길 것인지를 물어본다. 어차피 중복된 것이니 그냥 첫번째 copy를 남기기로 한다. 확인을 누르면 중복된 메일들을 지운 편지함으로 옮긴다.

다 끝나면 Thunderbird가 표시하는 메일 수는 줄었지만 실제 디스크 공간은 그대로일 것이다. 이제 압축을 한다.

여기서 압축이란 zip 같은 것을 쓰는 compression이 아니다. 앞에 링크한 글에도 나오지만 지운 메일은 실제로 디스크에서 지워지는 게 아니고 지웠다고 표시만 하고 데이터는 그대로 있다. 단지 Thunderbird가 표시하지 않을 뿐이다. 이런 방식은 한 폴더의 메일들을 전부 하나의 텍스트 파일에 저장하기 때문인데 이렇게 하는 것이 효율 면에서는 좋다. 그리고 메일 수가 많지 않고 빈번하게 접근하거나 다른 곳으로 데이터를 옮기거나 백업하거나 하는 것이 없다면 그냥 둬도 괜찮다. 큰 텍스트 파일에서 일부분을 지우거나 수정하는 것이 사실 만만치 않게 로드가 많이 걸리는 작업이다. 텍스트 에디터로 보면 어려울 게 없는 것 같지만, 글자 하나가 지워지거나 삽입되면 그 뒤에 있는 모든 글자의 위치가 변하기 때문에 이것을 모두 기록해야 한다. 뒤에 덧붙여 쓰는 작업 같은 것과는 비교가 안된다. Thunderbird에서 말하는 압축이란 지워졌다고 표시된 메일들을 실제로 디스크에서 없애는 작업이다. (compact하게 만든다.) 폴더에 메일이 많으면 당연히 오래 걸린다. 인내심을 갖아야 한다.

압축까지 하고 나면 디스크 사용량이 많이 줄어든 것을 볼 수 있다.

폴더 하나에서 500메가 정도가 풀려났다.

'기타' 카테고리의 다른 글

Quodlibet에서 Winamp로  (0) 2009.11.14
Filezilla server의 아이콘 색깔  (0) 2009.06.11
Thunderbird 메일 정리  (0) 2009.03.11
AhnLab Online Security 삭제  (26) 2008.12.09
Firefox에서 북마크와 주소창 이용  (0) 2008.07.08
Nintendo Wifi USB Connector의 이모저모  (0) 2008.01.08

그동안 vim하고만 친했었는지라 emacs와도 한번 알고 지내고 싶었는데, 대략 한시간 만에 포기.

이유는 폰트 -.-;

요즘 세상이라는 게, 기능이야 어쨌든 뭐든지 일단 보기가 좋아야 하는데, emacs 쪽은 gvim 같은 쪽과는 다르게 폰트 설정하는 것이 뭔가가 상당히 복잡하고 사람들도 불평 불만이 많은 것 같다. 예전에 윈도우즈에서 emacs에서 돌아가는 무슨 소프트웨어(이름 까먹음)를 돌릴 때는 이렇게 눈을 괴롭히지 않았던 것 같은데... 하긴 윈도우즈야 모든 사람들이 거의 같은 설정을 쓰는 데다가 한글 폰트 같은 경우는 "한글 폰트 = 굴림" 같은 식이었으니 폰트 문제는 상대적으로 적었던 건지도 모르겠다.

일단 심심해서 죽을 지경이 되지 않는 한 emacs와는 계속 소원한 상태로 지내야겠다는 생각이 든다.

안녕 emacs.

'잡담' 카테고리의 다른 글

emacs -.-;  (0) 2009.03.02
양자 컴퓨터라...  (0) 2007.11.12
HCI (Human-Computer Interface)  (0) 2007.10.07
  
트랙백 0  |  댓글 0  |

(EDIT 2009.03.13 windows에서 rsync server를 사용하는 것은 포기했음. 자세한 사정은 이 글 끝의 덧..들을 참고. 아래는 그냥 기록상 남겨둠. 다른 사람에게는 도움이 될 지도 모르니...)


서설

노트북에서 작업을 하다가 갑자기 비교적 대량의 데이터를 백업해야 할 일이 생겼는데 FTP로 옮기고 있자니 짜증이 났다. 뭔가 일이 자동으로 일어났으면 좋겠는데... 그런 생각을 하다가 노트북 데이터의 자동 백업 방법을 생각해 보니 제일 바람직한 것은 rsync를 사용하는 것이었다. 버젼 컨트롤이 필요한 것들은 lab 한 구석에 돌리는 debian 서버에 subversion(옛날 것들)과 git(요즘 것들)을 혼합하여 저장하지만, 특별히 버젼 컨트롤은 필요 없이 단순히 동기화만 필요한 것들에는 굳이 subversion이나 git을 사용할 필요가 없어 보였기 때문이다. 버젼 컨트롤에는 아무래도 이러저러한 추가 정보들이 필요하다 보니 단순히 동기화를 위해서 버젼 컨트롤 소프트웨어를 사용하는 것도 낭비라고 여겨졌다. 그래서 lab에서 사용하는 windows 데스크탑이 HDD도 넉넉하니 단순 무식하게 rsync로 자동으로 동기화가 되도록만 해 놓고 싶었다.

이 글은 linux client(ubuntu 사용)와 windows server(win xp 사용) 사이에 rsync 설정을 한 삽질기이다.


서버

일단 windows가 서버가 되어야 하니 rsync server를 설치해야 하는데 찾아 보니 이런 것들이 있다.

DeltaCopy는 rsync server이긴 한데 이 글을 읽어보면 domain controller하고 얽혀서 별로 좋지가 않다고 한다. 서버가 windows xp인데다가 우리 랩도 windows domain controller하고는 담 쌓고 지낸지가 몇년이 됐으니 DeltaCopy는 나도 패스다.

cwRsync는 특별히 새로 나온 소프트웨어라기보다는 기존에 cygwin과 rsync를 직접 설치하던 것을 cygwin에서 필요한 부분만을 가져오고 rsync를 그 위에 설치해 주고 rsync 서버를 daemon mode로 (그러니까 윈도우즈 서비스로) 설정하는 것까지를 편하게 해 준다. cygwin에서 뭘 가져올지를 시간들여 생각할 필요가 없다. 그러니 나를 위해서도 이것이 좋은 선택이다.

cwRsync는 위 홈페이지에서 링크를 따라가면 sourceforge에서 다운로드할 수 있는데, client는 필요 없으니 서버만 다운로드한다. (cwRsyncServer_3.0.1_Installer.zip) 설치는 간단하다. 특별히 신경 써서 뭘 할 필요도 없다. 단, 설명을 읽어보면 서비스 시작 형태가 수동으로 설정된다고 하는데, 관리도구->서비스 에서 rsync server를 찾아서 자동으로 시작하도록 해 준다. (시작은 좀 있다가 한다.) 그리고 실제의 서버 설정을 하는데, 시작메뉴에서 cwRsync를 찾아서 rsyncd.conf를 누르면 설정파일 내용이 메모장에 뜬다.

rsync는 기본적으로 module 단위로 동작한다. 서버의 설정 파일에 모듈들을 지정하면 외부에서는 서버이름과 그 서버에 있는 모듈들이 보이는 식이다. 서버이름/모듈이름 의 형식으로 접근하게 된다. 설정파일에서 기본적인 것은 그냥 있는 것(test라는 모듈이 이미 하나 정의돼 있을 거다.)을 대충 고쳐서 써도 되는데 중요한 것은 charset을 처리하도록 손을 봐 줘야 한다는 거다. 일단 upload할 모듈의 끄트머리에 charset = utf-8을 적어준다. 한글 파일 이름만을 위해서는 윈도우즈 기본 charset인 cp949나 euc-kr을 써도 되는데 유럽쪽 글자들이 들어 있는 파일 이름을 위해서는 아무래도 유니코드가 좋다. 여기에서 utf-8로 정해줬다고 바로 그대로 동작하는 건 아니다. 이 글이나 이 글을 읽어 보면 cwRsync에 딸려 오는 cygwin이 유니코드를 사용하도록 돼 있지 않다고 한다. 그 글들에서 따라가 보면 어떤 일본어로 된 utf8-cygwin이라는 페이지가 뜨는데 거기에서 cygwin1-dll-20-11-18.tar.bz2을 다운로드한다. 압축파일을 열면 cygwin1.dll이라는 파일이 나오는데 그걸 C:\Program Files\ICW\Bin 아래에 덮어 씌운다.

그럼 그 다음에 rsync 서비스를 시작해 준다. 이 이후에 중간 중간 설정 파일을 바꾸면서 시험해 볼 때는 매번 서비스를 중지하고 다시 시작해야 할 필요는 없다. 설정파일을 바꾸면 바로 적용되는 듯하다.


클라이언트

클라이언트는 뭐 특별히 설명할 것이 없다. 한가지만 언급하자면 rsync 프로그램에 먹일 옵션으로는 -ausx --iconv=utf-8 정도가 좋은 것 같다. 물론 리눅스 클라이언트에서 사용하는 charset이 utf-8일 때 얘기고 옛날 식 euc-kr을 쓴다면 -ausx --iconv=euc-kr로 하면 될 것이다.


자동화

자동화는 클라이언트가 리눅스이니 cron 같은 것을 쓰면 된다. 이것도 여기서 특별히 설명할 것은 없네. 다른 데 더 좋은 설명이 많을 테니까.



어째 용두사미 격의 삽질기네. 뭐, 삽질에 시간이 제일 많이 걸린 부분이 저 위에 utf-8 관련한 정보를 찾는 시간이었으니 오히려 이런 식이 제 격인 것 같기도 하고. ㅋㅋ


그 날 이후

덧. 2009. 03. 12 컴퓨터를 갈아 엎고 나서 위에 기록한 거 대로 다시 설치했는데 이게 제대로 안된다. 문제는 아직 뭔지 모르겠다. cygrunsrv.exe를 실행하면 error 1053을 내고 서비스가 시작되지 않는다.

덧. 2009. 03. 13 cwRsync도 어차피 cygwin과 rsync를 설치하기 쉽게 패키징 한 것이다. 그래서 cygwin을 사용하지 않는 것을 찾아보았는데 Unison이라는 것을 찾았다. 그런데 이것도 문제가 있다. windows에 server로 설치하기 위해서는 socket method와 remote shell method를 선택할 수 있는데 socket method는 보안을 구현하기 거시기하다. 그런데 remote shell method로서 추천하고 있는 것이 결국 cygwin + ssh을 설치하는 것이다. 이래서는 어차피 다시 cygwin으로 돌아온 것이다. 그럴 바에는 그냥 cygwin + ssh + rsync로 가는 것이 훨씬 나을 것 같다. 그런데 다시 cygwin + ssh + rsync로 한다고 해도 앞에 덧. 03.12에서처럼 cwRsync에서의 알 수 없는 문제가 또 생길지도 모르겠다.

덧. 2009. 03. 13 cygwin을 직접 설치하고 rsync를 setup하려고 해도 같은 문제가 생긴다. cygwin 설치와 관련된 것은 아닌 것 같다. 그보다는 win xp에서의 permission setting 같은 것과 관련이 있는 것으로 보인다. 이것을 해결하기 위해서는 cygrunsrv.exe 프로그램에 관계된 자세한 문서를 찾아봐야 할 것 같은데 잘 못찾겠다. 정 안되면 소스를 분석해봐야겠다. 근데 그러려면 일이 커질 확률이 꽤 있다.

또 다른 해결책으로는 windows 머신에 virtualbox 같은 가상 머신을 설치하고 windows 방화벽에서 port forwarding을 할 수 있다. 그런데 이렇게 하는 것은 문제 해결 자체보다 해야 할 것이 많아서(가상 머신 설치와 설정 등) 별로 내키지 않는다. 그래도 이 방법에 대해서는 내가 잘 알고 있기 때문에 cygrunsrv.exe를 분석하는 것 보다는 빨리 해결할 수 있을 것 같다.

덧. 2009. 03. 13 이것 저것 살펴 보고 나서 내가 cygrunsrv.exe의 문제를 해결할 수 없을 것이라고 판단했다. 물론 시간을 들이면 못 하지는 않을 것 같지만 들이는 시간에 비해서 얻는 것이 미약하다. 당분간은 rsync 없이 ftp로 살아야겠다. 어차피 데이터는 한쪽으로만 흐르고 지워지는 데이터는 거의 없고 주로 교내 네트웍에서 자료를 옮기기 때문에 네트웍 대역폭을 신경 쓸 필요가 없고 공용 서버들도 아니고 critical service를 돌리는 컴퓨터들도 아니기 때문에 시스템 load에도 신경 쓸 필요가 없다.

고로... 그냥 ftp만 이용하다가 여름 정도 도면 cygwin과 cygrunsrv.exe에 중요한 변화가 있는지 체크해 보는 것이 좋을 것 같다.

이것 저것 찾아보았지만 dualhead를 사용하기 위해서는 xrandr(Xorg RandR)을 통해서 하는 것이 현재로서는 가장 수월한 것 같다. (실제로는 옛날 방법들은 잘 먹질 않는다 -.-;)

Virtual screen 설정
일단 xrandr로 dualhead를 사용하기 위해서는 내부화면이든 외부 화면이든 이것들을 합한 것은 하나의 virtual screen에 들어가야 한다. 그런데 intel 945GM chipset의 경우 virtual screen의 크기가 2048x2048을 넘으면 그래픽 가속 기능이 지원되지 않는다고 한다. 그렇게 되면 화면이 진짜 답답하게 움직인다. 그건 용납할 수가 없으니 어쩔 수 없이 virtual screen의 크기는 일단 최대로 잡아서 2048x2048로 설정한다. 이것은 /etc/X11/xorg.conf 에서

Section "Screen"
   Identifier "Default Screen"
   Monitor "Configured Monitor"
   Device "Configured Video Device"
   SubSection "Display"
     Virtual 2048 2048
   EndSubSection
EndSection

와 같이 수정하여 설정할 수 있다.

외부 monitor 활성화 방법
터미널에서 xrandr 명령어를 통해서 활성화할 수 있다. intel 945GM 칩셋의 문제로 virtual screen이 2048x2048을 넘을 수 없기 때문에 외부 화면은 내부 화면의 아래쪽에 붙도록 설정한다. (오른쪽이나 왼쪽에 붙게 하면 가로 길이가 2048을 넘는다. ex, 1366 + 1024 = 2390. 위, 아래로는 여유가 있다. ex, 768 + 1200 = 1968. 그런데 오른쪽이 아니라 아래에 붙게 하면 간혹 좀 헷갈린다. 뭐, 그래도 어쩔 수 없다.)
$ xrandr --output VGA --auto --below LVDS
위 명령에서 VGA는 외부 output이고 LVDS는 내부 output이다. 끌 때는
$ xrandr --output VGA --off
라고 한다.

내부/외부 monitor의 우선순위
xrandr이 훌륭히 일을 처리해 주긴 하지만 중요한 문제가 하나 있다. xrandr로 외부 모니터를 활성화시키면 이것이 주화면이 된다는 것이다. 이것은 VAIO의 내부 LCD가 두번째 CRTC에서만 구동되기 때문이고, 외부 VGA output은 첫번째와 두번째 CRTC 중 어느쪽이라도 사용할 수 있기 때문이다. 그리고 모니터 두개가 다 활성화되면 첫번째 CRTC에서 구동되는 외부 모니터가 목록상 첫번째 녀석이기 때문에 이것이 주화면이 된다. 이걸 제대로 바로잡는 것은 내 힘으로 해결할 수 있는 건 아닌 듯하다.

어쨌거나 이것이 일으키는 가장 큰 문제는 dualhead 상황에서 gnome-panel이 외부 화면으로 옮겨 붙어 버린다는 것이다. 보통의 경우라면 그다지 큰 문제는 아니겠지만 presentation을 하는 경우라면 외부 모니터가 활성화되자마자 사람들은 내 gnome-panel을 보게 될 것이다. 뭔가 찜찜해지게 된다. 다음 글에서 이것을 해결하기 위한 트릭을 찾았다. (아래 URL 참조) 모든 것이 자동으로 후다닥 일어나게 하려면 Fn+F7 펑션키로 구동되는 스크립트에 위 글에서 찾은 꽁수도 포함시켜야 할 듯 하다. 어쨌든 다음의 간단한 명령어를 사용한다.
$ gconftool-2 --type int --set /apps/panel/toplevels/top_panel_screen0/monitor 1
위의 명령어는 외부 모니터가 활성화될 때마다 항상 실행해야 한다. 내부 모니터 하나만 활성화되어 있을 때에는 gnome이 이것을 monitor 0로 인식한다. 실제로 CRTC 1에서 돌고 있더라도 순서만 인식한다. 여기에 외부 모니터가 활성화되면 CRTC 0에서 구동되는 외부 모니터가 순서상 앞이기 때문에 monitor 0가 되고 내부 모니터는 밀려서 monitor 1이 된다. 외부 모니터를 끄면 다시 내부 모니터가 monitor 0가 되는 식이다.

Function key (Fn+F7) 동작 설정
이를 위해서는 두가지 일을 해야 한다.
  • Function key (Fn+F7)를 누르는 acpi event가 발생했을 때 어떤 스크립트가 실행될 것인지를 정한다.
  • 실제 실행될 스크립트를 작성한다.

첫번째 것은 /etc/acpi/events/ 에 acpi가 구동될 때 읽어들일 file을 만들어서 스크립트를 등록하는 작업이다.


곁다리 열기

펼쳐두기..



VAIO TZ27LN 모델의 경우에 등록해야 하는 키 입력 event는 acpi_listen 명령으로 알 수가 있다. terminal에서 다음과 같이 명령하고
$ acpi_listen -t 10
10초 안에 Fn+F7 (LCD와 모니터 그림이 있음) 키를 두세번 천천히 누른다. (-t 10은 10초 동안 acpi event를 잘 듣고 화면에 출력해 준다는 뜻. 그런데 man page를 다 읽어보진 않았지만 acpid에 의해 잡히지 않는, 그러니까 이미 등록돼 있지 않은 event만 여기에 잡히는 것 같음.)
yhyang@beren:~$ acpi_listen -t 5
sony/hotkey SPIC 00000001 00000012
sony/hotkey SPIC 00000001 0000003b
sony/hotkey SPIC 00000001 00000012
sony/hotkey SPIC 00000001 0000003b
sony/hotkey SPIC 00000001 00000012
sony/hotkey SPIC 00000001 0000003b
대충 위와 같은 결과를 보여준다. 0012로 끝나는 것은 키가 눌렸을 때, 003b로 끝나는 것은 키가 release됐을 때의 event이다. (위의 예에서는 Fn+F7 키를 5초 안에 세번 눌렀음.) http://ubuntuforums.org/showthread.php?p=3986738&highlight=VGA#post3986738 에 있는 것과는 약간 다른데 HKEY가 아니고 SPIC가 붙어 있다. 무슨 차이가 있는지는 잘 모르겠지만 일단은 실제 acpi_listen으로 알아낸 것을 쓰기로 한다.

앞에서 알아낸 event를 등록하기 위해서는 /etc/acpi/events/ 에 설정 file을 만들어 넣어야 한다. 이름은 아무거나 해도 되는데 http://ubuntuforums.org/showthread.php?p=3986738&highlight=VGA#post3986738 에 있는 것을 따라서 sony-lcd-mode로 한다. 내용도 거의 그대로 하는데 screen_VGAon() 함수에서 외부 모니터를 켜는 방법을 그냥 --auto가 아니고 --below LVDS가 되게 한다.

function screen_VGAon(){
$SU "export DISPLAY=$DISPLAY; xrandr --output $EXTERNAL_OUTPUT --auto --below $INTERNAL_OUTPUT"
}


패널 위치 조정

그리고 앞에서 panel의 위치를 재조정해주는 것을 추가한다. (이게 잘 안되네)


잘 안되는 이유를 찾아봤는데 다음 글에서와 같이 dbus session id와 관련이 있는 듯하다.
http://ubuntuforums.org/archive/index.php/t-961726.html

일단 DBUS_SESSION_BUS_ADDRESS를 읽어들이는 부분을 추가한다.
# Figure out DBUS session id
source /home/$ON_USER/.dbus/session-bus/`cat /var/lib/dbus/machine-id`-0
export DBUS_SESSION_BUS_ADDRESS

그리고 screen_VGAon() 함수에 panel 위치를 재조정해주는 것을 추가한다.
function screen_VGAon(){
$SU "DISPLAY=$DISPLAY xrandr --output $EXTERNAL_OUTPUT --auto --below $INTERNAL_OUTPUT"
sleep 2
$SU "DISPLAY=$DISPLAY DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS gconftool-2 --type int --set /apps/panel/toplevels/top_panel_screen0/monitor 1"
}

여기에서 중간에 sleep 2가 들어간 것은 외부 모니터를 켠 후에 2초간 기다렸다가 panel 위치를 재조정하라는 것인데, 외부 모니터를 켜고 바로 gconftool을 실행하면 panel이 먹통이 돼 버린다. 이유는 아직 못 찾았다. 최소 2초 기다려서 panel이 외부 모니터로 넘어가면 gconftool을 실행한다. sleep 2 정도면 외부 모니터가 켜지고 약간의 지연 시간이 있는 것을 감안하면 외부 모니터에 실제 보이는 시간은 정말 순간이다. 외부 모니터가 반응이 너무 좋다면 낭패 -.-;;



TODO
  • 화면을 두개를 쓰면 배경화면이 두 화면에 늘어져서 보인다. 한 화면에 하나씩 보이도록 설정 할 것. 이것은 nautilus와 compiz의 충돌 때문이다.
    그런데, 다음 글에 보면 Ubuntu 9.04에 가서나 해결될 것이라고 한다. -.-;;
    http://brainstorm.ubuntu.com/idea/93/


참조 URL들

ps. Tomboy에 적어 놓았던 것을 그냥 긁어 붙이니 영 이상하다. html로 export해서 그것을 그냥 긁어 붙여도 이상하고 html 모드에서 소스를 긁어 붙여도 역시 이상하다. 깔끔하게 옮겨지질 않네.


아... 이건 별로 영양가도 없고 시간 많이 잡아먹는 삽질인데, 어쨌든 시작한 거라 일단은 어디까지 할 수 있나 알아보도록 하자. (이런 거 할 때가 아닌데...)

연결 준비

일단 PC쪽 환경은 VAIO VGN-TZ27LN 노트북에 ubuntu 8.10 Ibex Intrepid가 깔려 있는 상태이다. PC쪽에서 bluetooth를 가능하게 하려면 대충 다음의 패키지들을 설치해야 한다. 다른 패키지가 필요하다고 하면 그것들도 같이 설치해 준다.

  • bluez-gnome: bluetooth applet을 띄우고 각종 bluetooth 기기들의 등록과 연결을 처리한다. (이건 아마 대부분 깔려 있을 것임)
  • gnome-vfs-obexftp: bluetooth 기능이 있는 기기와 파일을 주고 받으려면 필요하다고 한다.
  • gnome-bluetooth: gnome-obex-server가 들어 있다. 폰 쪽에서 연결할 때 필요하다.

폰 쪽은 모델마다 다르겠지만, IM-S370 모델의 경우는 메뉴->sky 프로그램->블루투스에서 설정을 할 수가 있다. 일단 블루투스 on/off 에 들어가서 bluetooth 장치의 전원을 켠다.(당연하지) 그리고 자기정보에서 이름을 바꿔준다. 안 바꿔줘도 되지만 기왕이면 자기가 알아보기 쉬운 이름을 정해주는 것이 좋겠다. 그리고 환경설정에서 보안모드1(보통)으로 바꿔준다. 폰의 설명서에는 모드1에서는 경우에 따라서 패스키를 생략할 수 있는 모드라고 돼 있는데, 다른 문서(Service authorization issues 부분)를 보면 bluetooth에 본래 security mode가 셋 있다. 1에서는 패스키를 아예 사용하지 않고, 2에서는 service level에서만 사용하고, 3에서는 link level에서 사용한다고 한다. 즉, 3에서는 서비스 레벨에서 패스키를 이미 교환했던 건 어쨌건 link를 만들기 전에 항상 패스키를 사용하는 것이고, 2에서는 서비스 레벨에서 패스키를 이미 교환했으면 다시 또 패스키를 교환하지는 않는 것으로 추정된다. (더 자세한 것은 내가 bluetooth를 전공할 것도 아니라 살펴보지 않았다.) 어쨌든, 폰에서 보안모드2(패스키 항상 확인)을 선택하면 PC와 연결할 때 PC쪽에서 패스키를 설정할 수가 없다. 폰에서 보안모드1(패스키 때때로 생략)을 선택하면 처음 연결할 때 한번 패스키를 확인한다.

기기 등록

PC에서 블루투스 애플릿에 오른쪽 클릭을 하고 Setup new device...를 누르면 bluetooth device wizard가 실행된다. 여기에서 다음을 누르고 조금 기다라면 자신의 폰이 목록에 나온다. (앞에서 이름을 설정했으면 그 이름이 보인다.) 폰을 선택하고 다음을 누르면 connecting... 어쩌구 하면서 그 다음 줄에 패스키(PIN) 번호가 나온다. 폰 쪽에서는 패스키를 입력하라는 화면으로 바뀌었을 것이고 PC쪽에서 나온 PIN 번호를 폰에서도 입력해 준다. 그러면 일단 service level에서 키를 교환하고 이게 계속 유지되는 모양이다. 이렇게 한번 인증하고 나면 나중에 폰의 등록 기기 목록에서도 PC 쪽이 나오는 것을 확인할 수 있다.

사용하기

일단 인증은 했지만 그 다음에 할 수 있는 것은 사실 그리 많지 않은데 (사실은 다른 건 어떻게 하는지 못 찾아봤다.) 우선 파일 전송을 해 보도록 한다. PC에서 bluetooth applet을 오른쪽 클릭하고 Browse files on device...를 선택하면 기계들 목록이 나온다. 거기에서 자신의 폰을 선택하면 nautilus 창이 하나 새로 뜨고 거기에 폰에 저장돼 있는 사진 목록이 뜬다. 여기에서 파일을 옮기거나 이것 저것을 할 수 있다. 그외에 nautilus 창에서 전송하고 싶은 file에 오른쪽 클릭을 한 후에 보내기 context menu에서 바로 폰으로 file을 전송할 수도 있다.

폰 쪽에서 PC로 연결하기 위해서는 gnome-obex-server라는 것이 필요한데 gnome-bluetooth 패키지를 설치하면 들어 있다. 설치 후에 주메뉴->보조 프로그램->Bluetooth File Sharing을 선택해서 실행하면 서버가 실행되고 시스템 트레이(notification area)에 서버 동작 상태를 알려주는 아이콘이 생긴다.

file 전송 중일 때는 아이콘이 움직임


폰 쪽에서 PC로 연결을 하면 PC 쪽에서는 연결을 허용할 것인지를 묻는 화면이 나오는데, 자신의 폰이라면 "이 기기에서 항상 연결"을 선택하면 다시 허용 여부를 묻지 않고 항상 연결한다. 폰 쪽에서 PC로 연결할 때에는 그냥 file 전송 외에 주소록 항목을 전송할 수도 있다. vcf 형식으로 항목 하나당 한 file로 전송된다.

폰에서 이미지 파일을 전송했을 때

폰에서 주소록 항목을 전송했을 때


문제점들

문제는 몇 가지가 있는데, 일단 gnome-phone-manager라는 것이 동작하지 않는다. 이 프로그램은 bluetooth를 통해서 폰의 이러저러한 소소한 기능들(메시지 보내기/받기, 주소록 싱크, 일정 싱크 등등)을 PC에서 이용할 수 있도록 해준다고 한다. 이 패키지를 깔면 gnokii-common, libbtctl4, libgnokii3, libgnomebt0, libical0 등이 같이 깔린다. 하지만 SKY 폰하고는 연결이 되지 않는다. nokia 계열 폰하고는 잘 붙는 모양이다.

폰에서 PC로 파일을 전송하면 이미지 파일이든 주소록 항목이든 모두 사용자의 홈 디렉토리에 저장된다. 성가신데 저장 위치를 바꾸려면 gconf-editor로 설정을 바꿔줘야 한다. gnome-obex-server 인터페이스 자체에서 설정할 수 있는 방법을 제공하지 않으니 불편하다.

PC에서 폰으로 전송할 수 있는 것은 이미지 파일 중에서도 jpg 형식 뿐인 것 같다. (주소록 항목(vcf file)을 전송하는 것은 시험해 보지 않았음) 그것도 보통 아무 file이나 전송하면 SKY 폰의 문제인지 file 크기가 지원되지 않는 것이라고 메시지를 내고 폰에 저장되지 않는다.

결론

뭐, 결국 현 상황에서 bluetooth로 폰을 활용하는 것은 폰에서 찍은 사진을 데이터 케이블을 사용하지 않으면서(당연이 sky에서 제공하지 않는 데이터 매니저를 사용하지 않으면서) ubuntu가 돌아가는 PC로 전송하는 것이다. 다른 것은 잘 안되거나 문제가 있거나 활용도가 떨어진다.


ubuntu는 기본적으로 gnome 데스크탑 환경을 사용하는데 AWN 같은 것도 써 봤지만 아무래도 제일 무난하게 쓸 수 있는 것은 gnome-panel이다. 그런데 이 gnome-panel을 쓰다가 panel에 올려 놓은 applet이나 object들의 위치가 간혹 이리저리 엉키는 현상이 발생하곤 한다. 그러면 applet들 위치를 맞춰주느라고 또 이리저리 마우스질을 해야 하니 여간 귀찮은 것이 아니다. launchpad에 있는 이 글이나 brainstorm.ubuntu.com에 있는 이 글 같은 곳에 이런저런 얘기들이 있는데 모두 다 읽고 나서 ubuntu 8.10 intrepid ibex의 경우에는 문제들이 많이 호전됐다는 것을 알 수 있다. 그래도 applet들을 추가하고 마우스로 위치를 지정한 경우에는 어느 순간에 가면 엉키는 현상은 여전히 생긴다. 지금은 panel에 올릴 수 있는 applet들을 꽤 둘러본 상태고 더 이상 새로 applet을 추가할 일도 거의 없을 것 같기에 applet들 위치를 확정적으로 고정하기로 했다. 위에 링크한 첫번째 글에 중요한 hint들이 많이 들어 있다.

우선 손을 보기 전의 panel의 모양은 이런 상태였는데 한 번 엉키고 나서 마우스로 이리저리 조정한 것이다. 거기에 리붓을 하고 나면 또 이런 식으로 배치가 영 찜찜하고 간격도 생긴다.


위 링크한 글들에 의하면 gconf-editor를 통해서 applet의 위치를 직접 수치를 입력해서 지정해 줄 수가 있다는 것을 알 수 있다.


위 화면은 gconf-editor를 열고 /apps/panel 아래를 연 모습이다. applets에 보면 10개의 applet이 현재 등록돼 있고, objects에 보면 5개의 object들이 등록돼 있다는 것을 볼 수 있는데, applets에 있는 것들은 말 그대로 applet인 것들이고, objects에 들어 있는 것은 메뉴 항목이나 구분선이나 프로그램 실행 단축 아이콘 같은 것들이다. general 항목을 보면 현재 panel에 올라와 있는 applet들과 object들이 모두 나열돼 있다.


하나의 예로 applet_0을 보면 object_type이 bonobo-applet이라고 돼 있고 위치는 panel의 왼쪽 끝을 기준으로 1231 픽셀 우로 이동한 곳이다. bonobo_iid가 OAFID:GNOME_GWeatherApplet이라고 돼 있는 것으로 첫번째 스크린샷에서 오른쪽에서 두번째인 날씨 애플릿인 것을 알 수가 있다. position 바로 위에 있는 panel_right_stick이 체크돼 있는 경우는 위치를 panel의 오른쪽 끝을 기준으로 지정하게 된다. 패널의 왼쪽 끝은 상관 없이 오른쪽에 정렬해서 붙일 경우에 유용하다.

이제 삽질의 시간인데, applet들의 bonobo-iid를 보면서 어떤 applet인지 확인하고 object들의 경우는 object_type이나 launcher_location 등을 보면서 실제 어떤 녀석인지 확인한다. 기억력에 자신이 있으면 applet이나 object들을 하나씩 확인하면서 바로 위치를 지정해도 되고, 그렇지 않으면 어딘가 적어 놔도 된다. 어쨌든, 위치는 오른쪽 끝이든 왼쪽 끝이든 첫번째 녀석은 0, 그 다음은 1, 그 다음은 2, 이런 식으로 한다. 위치는 픽셀 단위이지만 panel에 applet이나 object들이 실제 올라갈 때는 겹치지 않도록 적당히 위치를 이동하게 된다. 1 픽셀 단위로 적어 놓으면 applet이나 object들이 사이에 간격 없이 잘 배열된다. 위치를 지정하면서 여섯번째에 있는 locked 항목도 체크해 준다.

이런 식으로 지정하면 실제 applet들의 위치가 바로 이동하지는 않는다. 그렇다고 또 마우스질을 할 수는 없으니 panel을 다시 띄운다. panel을 다시 띄우기 전에 gconf-editor에서 수정한 내용을 백업해 놓는다(만일을 위해서^^).

$ gconftool-2 --dump /apps/panel > panel.gconf

같은 식으로 하면 된다. panel이 떠 있다는 것은 gnome 세션의 기본 구성 요소에 panel이 포함돼 있다는 뜻이기 때문에 kill 명령으로 죽이면 gnome이 panel이 죽은 것을 감지하고 새로 띄우게 된다. (windows에서 explorer가 말썽을 부려서 프로세스를 죽이면 다시 뜨는 것과 유사하다.) 이런 식으로 한다.


panel이 다시 뜨고 나면 좀 보기가 나아진다. 필요한 applet들은 낭비하는 공간 없이 다닥다닥 붙어 있고, 위치가 엉키지도 않는다.


사실 이건 google에서 "ubuntu wlan blinking" 정도로만 검색해도 답이 나오는 것이긴 한데, 문제는 눈에 바로 보이는 답을 적용하면 해결이 안된다는 것이다. -.-;

구글링으로 바로 얻게 되는 답은 아마도 이것이 될 터인데:
http://blog.drinsama.de/erich/en/linux/2008052101-iwlwifi-blinking.html
VAIO-TZ27 모델의 경우는 저걸로 해결이 안된다. 보다 자세한 얘기들이 launchpad에 있는데, 한참을 읽어 보면 어떤 모델에서는 이렇게 하면 되고, 어떤 모델에서는 다르게 해야 하고 하는 얘기들이 한참 나온다. 결론부터 얘기하면 VAIO-TZ27의 경우에는 다음의 스크립트를 써야 한다.

#!/bin/sh
if [ "$IFACE" = "wlan0" ]; then
    for dir in /sys/class/leds/iwl-phy*assoc; do
        echo none > $dir/trigger
    done
fi

/sys/class/leds 디렉토리에 보면 총 4개의 subdirectory들이 있는데 "iwl-phy*:" 같은 접두어가 붙어 있는 TX, RX, assoc, radio이다. 추측해 보자면, TX, RX는 말 그대로 데이터가 송신/수신될 때, assoc는 무선랩 접속이 일어날 때 (associate이라고 부르는 동작이다), radio는 주변에 AP가 있을 때(그러니까 어디선가 전파가 잡히고 있을 때이다) wlan LED를 깜빡이게 하는 것 같다. 첫번째 링크에 있는 해결책이 본래 정석이 맞을 거다: AP가 잡힐 때와 association이 일어날 때는 깜빡여주는 게 좋고, TX/RX 일 때에는 성가시니 끈다. 그런데, 문제는 노트북 모델마다 저게 다른 것 같다는 거다. 아마 현재 커널(2.6.27-11)의 driver가 VAIO 모델에서 정확하게 들어맞지 않기 때문인 것 같다. 그래서 각각의 subdirectory의 trigger를 끄나 안 끄나 동작이 좀 요상해 지는데, 데이터가 송수신되고 있을 때 깜빡이는 건 assoc에 연결돼 있는 모양이다. VAIO는 이래저래 하드웨어가 잘 지원되지 않는 면이 있네. -.-;


이야기의 발단은 이렇다. 평소에 랩에서 쓰는 윈도우즈 데스크탑에 Filezilla FTP server를 실행해 놓고, 바깥에서 데스크탑과 자료를 교환해야 할 때 요긴하게 쓰곤 했다. (물론 하드에 들어 있는 각종 미디어 파일들을 주변 사람들에게 서빙하기 위해서도 사용한다.) 그런데 지난주 서울 출장 때 랩에 있는 데스크탑 FTP 서버에 접속을 하려니 연결이 되지 않는 것이다. 이상하다 예전에는 잘 됐는데... 그러다가 학교내 IP로 사용해야 하는 서비스를 위해서 데스크탑으로 원격 접속을 할 일이 있었다. 그런데 그 때 시스템 트레이에 있는 알림창이 보였다. Filezilla server가 네트웍 연결을 요청하고 있는데 수락하겠는지를 묻는 창이었다. 나는 분명 윈도우즈의 방화벽 설정에서 FTP 포트와 Filezilla server 프로그램을 허용하도록 등록했었다. 그래서 이게 도대체 어떻게 된 거지...하고 보고 있자니 이 알림창이 윈도우즈 방화벽이 아니라 Ahnlab online security(AOS)에서 띄운 것이었다. "뭐야 젠장..." 이놈의 엉뚱한 방화벽 프로그램이 도대체 왜 실행된 거지...

본래 이 프로그램이 인터넷 뱅킹 같이 activeX로 제멋대로 프로그램을 깔도록 내버려둬야 이용할 수 있는 국내 일부 거지 같은 사이트 때문에 설치된 것인데, 경험상 해당 사이트에서 접속을 하면 실행되고 접속을 종료하면 이 프로그램도 종료되곤 했었다. 그런데 어찌된 것인지 이번에는 계속 실행되고 있는 것이다. internet explorer의 프로세스를 찾아서 죽이려고 해도 작업 관리자에는 뜨지 않으니 internet explorer가 종료되지 않아서 이 놈의 AOS가 계속 살아 있는 것은 아니었다.

그러면 이 녀석의 프로세스를 직접 죽여야 하겠군...하고 생각했는데 작업 관리자를 아무리 잘 들여다 봐도 어느 녀석인지 알 수가 없다. 그래서 다시 생각하기를, 프로그램을 삭제하면 이 반갑지 않은 방화벽 프로그램도 자동으로 중지되지 않을까 하는 것이었다. 그래서 프로그램 추가제거목록을 열었다.

어라... 그런데 여기에서 삭제를 하려고 하면 프로그램이 실행중이므로 먼저 종료하라면서 삭제 작업을 진행하지 않는다. 뭐 이런... 그래서 다시 작업 관리자를 열어서 프로세스 목록을 봤지만 무엇인지 알 수가 없다. 짜증이 났다. 구글신께 도움을 받아보려고 "ahnlab online security 삭제" 같은 것을 검색해 봤지만 삭제 방법 같은 것이 나오지 않는다. 한참을 헤맸다... 그런데 구글 검색 결과를 하나씩 눌러보다가 우연히 이런 걸 발견했다.


가만 보니 ahnlab online security라는 프로그램의 정체는 결국 저 my firewall이라는 프로그램인 것 같다. 폴더를 뒤져보면 이런 게 나온다.


찾았다. 이 놈을 죽여야 하는군. 작업 관리자를 다시 연다.


있다. 클릭하고 죽인다. 어차피 언젠가는 또 인터넷 뱅킹 때문에 다시 깔리겠지만 일단은 괘씸하니 확실히 보내기 위해서 프로그램을 삭제한다. 난 저 안랩의 프로그램들이 마음에 안 든다.

생각해 보니 쫌 어이 없도, 재미도 감동도 없는 삽질기다. 그래도 저 my firewall이라는 놈하고 ahnlab online security라는 놈의 연관관계를 몰라서 한참을 헤맸으니 여기 기록을 남긴다.

Ubuntu는 Gnome Desktop을 기본으로 하고 있다. 따라서 각종 application들도 Gnome에 있는 것들이거나 Gnome과 잘 맞는 것들을 사용하고 있는데, 그 중의 하나로 Evolution이 있다. Evolution은 Gnome에서 기본으로 사용되는 프로그램으로 이메일, 주소록 관리, 일정 관리 등을 할 수 있다. 이메일이나 주소록 관리만을 위해서라면 (나의 경우 예전부터 사용하던) Thunderbird가 훌륭한 대안이고, 어떤 면에서는 Thunderbird를 더 좋아하고 익숙하다. 그런데, 일단 일정 관리라는 것이 중요한 문제가 되고, 그 밖에도 Evolution이 Gnome에 잘 맞다 보니 Gnome에서 쓰이는 다른 소소한 프로그램들과도 잘 연동된다. Gnome에서 쓰이는 다른 프로그램들과의 연동은 내가 어찌 해보기에는 좀 벅차고 시간도 없고 ㅋㅋ, 일단 Thunderbird에서 일정 관리를 할 수 있도록 한다.

Evolution에서 굳이 Thunderbird로 귀찮게 옮겨가려는 이유에는, Evolution이 보낸이 이름이 한글로 된 메일의 경우 화면에 제대로 표현해 주지 않기 때문이다. 물론, Evolution의 잘못이라기보다는 MS outlook으로 메일을 보내는 사람들의 문제이지만, 어쨌든 Thunderbird의 경우 이 문제가 없다. (그리고 일단 친숙하다! 하하)

1. 일단 Thunderbird를 설치한다. Ubuntu의 경우는 repository에 있는 것을 간편하게 설치할 수 있다. 터미널에서 aptitude를 사용해도 되고, synaptics 패키지 관리자를 써도 되고, gnome 메뉴에 있는 프로그램 추가/삭제 항목을 이용해도 된다. 보다 친숙한 한글 환경을 위해서는 Thunderbird용 한글 locale도 같이 설치 됐는지 확인한다.


2. Thunderbird에서 일정관리를 하기 위해서는 별도의 add-on을 설치해야 하는데 Lightning이라는 것이 제일 유명하고 좋다. ("제일 좋다"에는 약간 자신이 없음) Lightning이 add-on이다 보니 ubuntu repository에 있는 것을 설치해도 되고 직접 thunderbird 메뉴에서 최신 버젼을 설치해도 되는데, 최신 버젼인 Lightning 0.8의 경우 ubuntu에 있는 thunderbird와 잘 맞지 않는 것으로 보인다. 왜 잘 맞지 않다고 하냐 하면... 아래의 screenshot을 보면 된다.

add-on을 설치하고 thunderbird를 실행하면 달력 pane과 폴더 pane이 분리돼서 보인다.


메일 탭을 누르면 달력 pane의 내용은 사라지지만 공간이 여전히 남는다.


달력 탭을 다시 눌러도 정작 달력이 제대로 표시돼지 않는다. 툴바가 달력 모드로 바뀌어 동작하는 듯 보이지만, 실제로 툴바를 눌러도 화면이 바뀌지 않는다.


그외에도 달력 모드에서 캘린더 메뉴가 엉뚱한 내용으로 차 있다. 새 달력을 추가하는 것도 안되고 화면이 보기 불편한 것 외에 아예 제대로 동작하지 않는다.

그러니 일단 ubuntu의 thunderbird와 제대로 동작하는 Lightning add-on을 설치하는 것이 좋겠다. Lightning add-on은 lightning-extension이라는 이름으로 ubuntu repository에 있고 현재 이글을 쓰고 있을 때 버젼은 0.7이다. 설치는 간편하게 할 수 있다.


3. lightning을 설치했으면 일단 일정 관리를 할 수가 있긴 한데, 요즘에는 한 사람이 컴을 여럿 사용하는 경우가 드물지 않고, 꼭 그렇지 않더라도 여러가지 device에서 sync를 맞춰야 하는 경우가 생긴다. 이러한 용도로 사용하려면 palm용 sync 프로그램들을 사용해도 되지만, 여러 대의 PC 간의 sync를 맞추려면 또 귀찮아진다. 그러니 어딘가 한 군데에 달력을 저장하고 다른 여러 곳의 client에서 불러다가 쓰는 것이 스트레스가 줄어든다.

이를 위해서는 Google Calendar와 Lightning을 같이 사용하면 좋은데, Lightning에서 Google calendar를 이해할 수 있도록 해 주는 thunderbird 용 add-on이 역시 있다. Provider for Google Calendar라는 이름을 가지고 있다. 이 add-on은 Lightning이 설치돼 있어야 동작한다. 현재 최신 버젼은 0.4인데, 이 버젼은 함께 사용할 Lightning이 0.8 버젼 이상일 것을 요구한다. 여기에서 설치한 Lightning이 0.7버젼이므로 이것을 이용할 수가 없는데, Thunderbird add-on site에서 예전 버젼을 찾아보면 0.3.1 버젼이 0.4 이전의 최신 버젼이다. add-on을 설치하는 것은 Thunderbird 용 add-on을 설치하는 일반적인 방법을 그대로 따르면 된다.


4. 설치가 다 됐으면 이제 Google calendar의 달력들을 Lightning에 추가해야 한다. Google calendar로 가서 달력 관리 화면으로 간다. 그러면 제일 아래쪽에 달력 주소와 관련한 부분이 나온다.

비공개 주소의 XML 버튼을 누르면 비공개 주소가 나온다. (하지만, 실제로는 Lightning에 추가할 때 공개 주소를 사용해도 상관 없는 듯 하다. 실제로 주소를 사용하는 것이 아니라 주소에 나오는 캔린더 ID를 따로 처리하는 것으로 보인다.)

파란색으로 표시된 주소를 오른쪽 클릭하여 주소 복사를 선택한다. 이제 Lightning에 달력을 추가한다. 캘린더 탭을 누르면 달력모드로 전환되고, 달력 목록에 Home이라는 것만 하나 있을 것이다. 목록 화면 아무곳이나 오른족 클릭하여 New calendar 항목을 선택하고 On the Network을 선택한다. Provider for Google calendar add-on을 설치했기 때문에 Google calendar라는 항목이 보일 텐데 그것을 선택하고 앞에서 복사한 주소를 붙여 넣기 한다. 그리고 자신의 구글 아이디와 패스워드를 입력하면 끝이다.

Evolution에서도 Google calendar를 불러다가 쓸 수 있는데, 거기서는 기본 달력 하나만 접근 가능하다. 그런데 Lightning에서는 개별 달력 별로 주소만 입력하면 여러개를 사용할 수 있다. 공개 달력도 주소만 알면 추가 가능하다.

Google calendar의 달력 목록

Lightning에 추가된 모습


그리고 다 잘 됐으면 좋겠는데, 문제가 좀 있다. 읽는 것은 문제가 없는데 Lightning에서 수정하는 내용이 Google calendar 쪽으로 잘 전달이 되지 않는다. 이벤트를 마우스로 끌어서 다른 시간으로 움직이는 것은 잘 되는 것을 보면 잘못된 주소를 사용해서 그런 것 같지는 않다. 이동 외에 다른 동작, 그러니까 내용 수정, 생성, 삭제 등은 되질 않는다. 달력 설정에 딱히 뭘 건드려 볼 것도 없어서 언젠가 개발자들이 고쳐주길 기다리는 수밖에 -.-;; 그외에 달력을 off-line으로 저장하고 나중에 sync를 맞추는 것은 아직 안되는 모양이다. (어쩌면 이런 문제들은 Lightning 0.8에서 모두 고쳐진 것인지도 모른다. 써 볼 수가 없어서 모른다. -.-;;)


  
트랙백 0  |  댓글 0  |
 이전  123   다음 

fotowall :: ncloud RSS Feeds today : 7   yesterday : 18
total : 168,805