20091026 :: 경축, 구글 웨이브 입성

지난 주말, 회사 워크샵에서 그야말로 녹초가 되어버린 몸을 이끌고 절뚝이며 집으로 돌아와서는 깜짝 놀라고 말았습니다. 음 아침에 부랴부랴 서둘러 나가느라 컴퓨터를 켜 놓고 나갔던 바람에, 컴퓨터는 하루가 넘는 시간 동안 외로이 팬돌아가는 소리만 내면서 저를 기다리고 있었던 것이었습니다.

따뜻한 물에 몸을 씻고 (음 전 생긴 것 만큼이나 깔끔해서 집에 들어오면 꼭 씻…) 벌렁 드러누워 메일함을 살펴보니 놀라운 메일이 하나 도착했더랬습니다.  그것은 다름 아닌, 구글 웨이브 팀으로부터 온 메일!

두둥… 그것은 다름 아닌 구글 웨이브 초대장이었습니다. 구글 웨이브 웹사이트가 생긴 이래로 심심하면 한 번씩 들러서 초대장 보내달라고 앙탈을 부렸던 것이 드디어 오늘에야 결실을 보게 되었습니다.  일어나서 덩실덩실 춤이라도 추고 싶었지만 정말이지 몇 년만에 공도 차고 볼링도 했더니 온몸이 쑤시고 결려서 그렇게 하진 못했네요. 마음이 점점 급해왔지만 호흡을 가다듬으며 조심스레 링크를 클릭하자, 거짓말같이  구글 웨이브 시작화면에 로그인 창이 표시되었습니다.

(로그인할 수 없는 사람이 첫 페이지를 가면, ‘당신의 계정은 아직 로그인할 수 없음’이라고 아주 냉랭하게 말해주는 바로 그 박스가 사실은 로그인 박스였던 것입니다 – 라고 말해도 구글 서비스들의 로그인 박스는 똑같이 생겼으니까 그닥 낚일 사람은 없을 듯 하네요)

드디어 입성. 구글 웨이브

구글 웨이브에 처음 발을 들이는 기분은 뭐라 말할 수가 없었습니다. 하지만 흥분도 잠시, 이내 ‘앗 이거 뭥미’하는 생각이 들었습니다. 마치 gmail 계정을 맨 처음 얻었을 때의 기분 같더군요. 뭐랄까 새로운 툴을 접하는 바로 그 마음만은 뿌듯하기 그지 없는데, 쓸래도 쓸 데가 없는 그런 기분 아시나요? 제가 gmail 계정을 처음 얻은 게 gmail이 베타로 오픈되어 초대장만으로 가입할 수 있던 매우 초창기였습니다만, 당시에 저는 그냥 놀고 먹는 휴학생이었던 관계로 이메일이란 걸 쓸 일이 없었거든요 ㅠㅠ. 마치 그 때와 같은 황량함이 들기 시작했습니다.

회사 동료들이라도 초대해서 놀아볼까 했는데, 초대장을 발송해도 바로 바로 가입이 되는 것은 또 아닌가 봅니다. ‘침 발라야 할 우표가 아직 많다’며 너스레를 떠는 모습은 왠지 구글답다는 생각이 듭니다.

그래서 구글 웨이브에 대해 이것 저것 검색해 보던 중, 국내에도 웨이브를 쓰시는 분이 적잖이 있을 것이라는 생각이 들었습니다.  아니나 다를까 트위터를 타고 초대장이 난무했던 모양입니다. 공개된 wave에서는 벌써 친해진 사람들이 꽤 있는 듯 보였습니다. 전 워낙에 낯가림이 심해서 누구랑 그렇게 잘 못하겠던데…

놀라운 실시간 협업 도구

사실 저보다도 먼저 구글 웨이브에 입성 성공하시 분들이 꽤 많은가 봅니다. 이미 활발하게 활동했었던 흔적들도 좀 포착을 했더랬죠. 구글 웨이브에 처음 들어섰을 때 구글이 제공하는 튜토리얼 문서 개념의 wave에는 기존에 공개된 바 있는 wave 관련 영상이 있습니다만, 실제로 실시간 문서 수정이 일어나는 걸 좀 보고 싶었더랬습니다.

사실, ‘구글 문서 도구’에서도 실시간 협업은 가능합니다. 문서의 편집권을 갖고 있는 두 사용자가 문서의 앞 부분과 뒷 부분을 각각 편집하고 있다보면, 자신도 모르는 사이에 자기가 고치지 않은 부분까지도 이미 수정이 되고 있는 문서를 발견할 수 있습니다. 실험적으로 확인한 바로는 약 20~30초 간격으로 문서의 sync가 발생하는 것 같았습니다.

이에 비해 구글 웨이브는 하나의 wave(문서나 블로그의 포스트와 비슷한 개념)에 여러 사용자들이 동시 편집을 하고 있다면, 이를 키 스트로크 단위로 받아서 문서를 수정 처리합니다. 그래서 사용자 PC의 메모리가 넉넉한 편이며, 네트워크 사정이 좋다면 동시에 글자들이 주르르르륵 타이핑되면서 거대한 문서가 작성/수정을 반복하며 만들어지는 놀라운 광경을 체험할 수도 있습니다.

저는 저 말고는 아는 사람 중에 아직 구글 웨이브 입성하시 분이 없어서, 그냥 컴퓨터 2대로 실험해보았습니다. (구글 문서 도구 때에도 이런 식으로 하니까 되더라구요)  우선 데스크톱에 웨이브 하나 만들고 이를 열어 둡니다. 그리고 노트북을 들고 자리에 누워서 웨이브에 접속합니다. 물론, 똑같은 계정을 사용하지요. 그래서제가 만든 waves를 보면 아까 데스크톱에 열어둔 wave가 보입니다.

이걸 노트북에서 더블클릭하고 수정을 시작하니, 저멀리 데스크톱에서 제 웨이브 화면에 수정 사항이 거의 실시간으로 표시됩니다. 아, 공개된 웨이브에 글을 쓰고 오타를 수정하고 또 계속해서 글을 쓰는 것을 누군가가 보고 있다면 그것이 실시간으로 보일거란 생각을 하니 왠지 공개된 wave에 글을 쓰거다 덧다는 것이 좀 뻘쭘해질 것 같은 기분이 듭니다.

무궁무진한 가능성

협업 도구로서의 구글 웨이브는 정말이지 대단한 가능성을 가지고 있는 것 같습니다. 이미 메일과 문서도구를 업무에 도입하여 사용하고 있지만, 이 기능 그대로에 어느 정도의 확보된 안정성과 속도 등만 보장된다면 대단히 유용한 도두가 될 듯 하네요. 사내에서 진행하는 브레인 스토밍이나, 프로젝트 관련자 연락처 모음, 사진 공유 등은 물론 회의록 정리 도구로 사용한다면 실시간으로 회의 중계가 가능하고, 심지어는 원격지에서도 회의 진행까지는 힘들지만, 참가가 가능할 수도 있을 거란 생각이 드네요.

우선 현재로서는 신기한 것 조금 뿐이지만, 사용자 층만 늘어난다면 충분히 매력적인 서비스가 될 수 있을 것 같습니다. 실시간으로 업데이트 되는 것이 눈에 보이기 때문에 아마도 트위터를 능가하는 수다 도구로 발전할 가능성도 있을 것 같네요.

정식 오픈을 하기전까지 개선할 부분이나 최적화가 많이 필요하겠지만, 워낙 능력자가 많은 구글이니 구글 웨이브가 발전하는 모습을 조금씩 엿보는 것도 꽤 쏠쏠한 재미가 있을 것 같네요.

20071111 : notepad++ 과 정규표현식

지난 글에서는 소개하지 못한 notepad++의 기능 중 찾기/바꾸기에서 정규 표현식을 사용하는 법에 대한 이야기를 조금 하고자 합니다.

최근엔 html 코딩을 거의 하지 않고 (좀 해야할텐데) 있지만, 엑셀 문서의 내용을 미리 텍스트 파일로 만든다던가, 콘솔박스로부터 가져온 로그에서 필요한 자료를 추출하는데 있어서 notepad 의 덕을 톡톡히 보고 있습니다. 물론 회사 노트북은 주로 개발자들이 많이 사용하므로 Ultra Edit나 Edit Plus와 같은 보다 널리 알려진 편집기들이 설치가 되어 있습니다만, 개인적으로 뭔가 복잡해보이는 UI를 가진 이런 편집기보다는 깔끔해보이는 notepad++가 훨씬 더 사랑스럽더군요. 뿐만 아니라 무설치버전을 그냥 USB 메모리에 넣어다니면서 간단히 사용할 수 있다는 장점도 있고 해서 계속 notepad++를 고집중입니다.

그리하여 오늘 소개하려는 내용은 정규표현식을 사용하여 텍스트를 손보는 내용입니다. 그럼 정규표현식은 뭔가요?하고 물어야 정상입니다. 스크립트나 프로그래밍에 익숙한 분이시라면 그래도 어느정도 정규표현식에 익숙하시리라 생각이 됩니다. 하지만 대략 정규표현식이 무엇인지 모르는 블로거들이 더더더욱 많을 것으로 생각되니, 정규 표현식에 대한 간략한 설명이 필요할 듯 합니다.

정규표현식이란

정규표현식은 특정한 문자열을 쉽고 간단한 방법으로 찾아내기 위한 표현식입니다. 정규표현식은 현재까지 표준화된 하나의 통일안이 있는 듯 하지는 않습니다. 대표적으로 Perl 언어가 정규표현식을 지원하는 것으로 알고 있습니다. 또한 리눅스의 강력한(강력하다고 소문난) grep 라는 텍스트 필터 툴에서도 정규표현식을 지원합니다. 그 중 notepad의 정규표현식은 Scintilla의 그것을 거의 그대로 받아들였으며, 이는 펄에서 지원하는 정규식과 그 사용법이 매우 흡사합니다. 참고로 firefox의 국민 확장기능인 Adblock[adblock plus]는 자바스크립트와 비슷한 정규식을 사용하며, UltraEdit의 경우에는 grep와 비슷한 정규식을 사용하는 것으로 알고 있습니다.

Notepad 정규표현식의 문법

물론 여기에서 모든 걸 다 설명할 수는 없지만 몇 가지만 알려드리도록 하겠습니다. 정규표현식 자체는 일반 문자열의 매치를 포함하여, 이를 축약하여 이의 변형까지 함께 찾을 수 있도록 합니다. 참고로 백슬래시는 한글로 인코딩된 페이지에서는 \(원화표시)로 보이게 됩니다.

  • ^ : 행의 시작을 가리킵니다. 곧 숫자로 시작하는 행은 다음과 같이 표현됩니다.
    • ^\d.+
  • [] : 대괄호는 포함된 문자들 중 하나와 매치하는 문자를 나타냅니다. 즉 [abc]라고 쓰면 a, b, c 중의 한 글자라고 보면 됩니다. 물론 [a-z]와 같이 하이픈을 넣어서 범위 전체를 지정해줄 수 있습니다.
    • [0-9]라고 적으면 한 글자의 숫자를 뜻합니다.
  • [^abc] : []속에 들어간 ^표시는 이 대괄호에 포함된 글씨는 제외한다는 뜻입니다.
    • S[^cde]m 이라는 정규식은 Sam, Sbm은 매치하지만 Scm, Sdm은 매치하지 않습니다.
  • $ : 행의 끝을 말합니다.즉 숫자로 끝나는 행은 ^.+[0-9]$와 같이 표현합니다.
  • . : 마침표는 임의의 한 글자에 해당합니다.
  • + :어떤 문자 뒤에 붙어서 해당하는 문자가 1개 이상, 여러 개라는 뜻입니다.
    • \d+라고 하면 1, 123141, 2513452345234등 길이에 무관하게 연속된 숫자를 찾습니다.
  • * : +와 비슷하게 어떤 문자 뒤에 붙어서 그 문자가 0개 이상이라는 뜻을 나타냅니다. +는 그 문자가 반드시 한번은나오지만 *는 문자가 나오지 않아도 상관없습니다.
    • sa+m은 sam, saam, saaaaaam에 매치됩니다만 sm에는 매치되지 않습니다. 하지만 sa*m은 sm에도 매치됩니다.
  • \d : 한 글자의 숫자를 말합니다. (digit) [0-9]와 같습니다.
  • \w : 한 글자의 문자를 말합니다. [a-zA-Z]와 같습니다.
  • \s : 한 칸의 공백을 의미합니다.
  • \ : 백 슬래쉬는 이스케이프 문자를 뜻합니다. 즉 ^, [, .과 같은 특수한 의미를 가지는 문자들을 글자 그대로 찾을 때 사용합니다.
    • \[abc\]라고 입력하면 a,b,c 중의 한 글자가 아닌 [abc] 자체에 매치됩니다.

보다 더 상세한 설명은 notepad++ 홈페이지(영문)에서 살펴볼 수 있습니다. 영문으로 설명이 되어 있지만 설명 자체가 쉽고 간단하며 예제와 함께 살펴보면 금방 이해할 수 있으리라 생각됩니다.

예제를 통해 살펴봅시다.

예제를 머리 써서 만들기 보다는 실제로 숩이 사용하는 방법을 예로 들어보려고 합니다. 콘솔박스를 통해 수집된 로그를 (어디서부터 받은 로그인지는 비밀) 토대로 메모리 사용량에 대한 정보를 추출합니다. 사실 콘솔 박스로부터 수집되는 정보는 상당히 다양하지만 메모리 정보를 담고 있는 부분은 아래와 같은 형식으로 되어 있습니다.

[21:44:07 Oct 12 Fri] @0x3924004E|JVM| Free Memory: Heap [ 2368340/ 6291456], Native[ 7299824/32505856]

우선 로그파일 전체를 notepad++로 불러들어와서 찾기(ctrl+F)를 실행합니다. 우리는 위와 같은행을 모두 찾아서 추출해야합니다. 통상 ‘Free Memory:’ 로 검색해도 무리가 없겠습니다만, 종종 중간에 정보가 끊어지고 2행에 걸쳐 깨진 채로 정보가 남는 경우가 있기 때문에, 그러한 행들은 찾아서는 안되겠습니다. 따라서 heap과 native 정보를 모두 포함하고 ‘숫자]’로 끝나는 행을 찾아야겠지요. 이러한 정보는 다음과 같은 정규식을 통해 찾을 수 있습니다.

heap.+native.+\d]$

아래 스크린샷과 같이 ‘정규표현식’에 체크를 해주고 위의 정규식을 입력한 다음, ‘열려진 파일에서 모두 찾기’ 버튼을 클릭합니다. 버튼을 클릭하면 notepad++아래쪽으로 분할창이 생성되며 해당하는 행들이 모두 찾아집니다.

2007-11-12_062.png

그럼 새 파일을 하나 만들고, 아래의 내용을 모두 선택(Ctrl+A)하여 새 파일에 붙여 넣습니다.

이제 만들어진 식을 모두 요리할 차례입니다. 타임스탬프가 필요한 경우도 있고 그렇지 않은 경우도 있지만, 여기에서는 타임 스탬프를 포함하여 데이터를 정리하는 방법을 살펴보겠습니다. 그러기 위해서는 정규식의 패턴에 대해 살짝 살펴보아야 할 듯 합니다.

정규표현식의 패턴

정규표현식의 패턴은 사실 ‘찾기’ 보다는 ‘바꾸기’에 더 적합한 방법입니다. 예를 들어 ‘Tom Smith’라는 이름의 표현을 “Smith, Tom”과 같이 바꾸고 싶다면 어떻게 해야할까요? 단지 바꿀 이름이 하나가 아니라 굉장히 많은 고객 명단이라든가 그런 것들이라면 난감하겠죠. (단지 이런 경우라면 텍스트 파일을 엑셀로 불러들여서 공백으로 나누어 바꾸는 용자들도 존재합니다. 좋은 아이디어죠.)

이런 경우에 패턴을 사용합니다. notepad의 패턴 사용은 간단합니다. 패턴이 되는 부분을 () 괄호로 묶은 다음, 바꿀 단어에서 \1, \2와 같이 나온 순서대로 써주면 되는 것이죠. 즉 우리가 바꾸고자 하는 정보를 기준으로 예를 들어보겠습니다.

Line 394 : [21:44:07 Oct 12 Fri] @0x3924004E|JVM| Free Memory: Heap [ 2368340/ 6291456], Native[ 7299824/32505856]

위와 같은 로그 정보는 다음과 같이 풀이됩니다.

  1. 라인넘버가 표시됩니다.L로 시작됩니다.
  2. 타임스탬프는 [ 대괄호로 시작됩니다.
  3. 3쌍의 숫자가 콜론(:)으로 구분되어 시간을 표시합니다.
  4. 날짜와 요일이 표시되고 ]로 대괄호가 닫힙니다.
  5. 제거되어야할 문자열들이 주르륵 이어지고
  6. Heap 이라는 단어 다음에
  7. [로 시작되며 남은 heap 메모리량과 슬래시(/)가 붙어 전체 heap 메모리량을 표시합니다.이 때 숫자의 길이에 따라 공백이 있을 수 있습니다.
  8. heap 메모리 정보는 ]로 끝나며 이후 native 메모리 정보가 같은 형식으로 표시됩니다

따라서 우리는 다음과 같은 정규식표현을 써서 필요한 정보를 패턴으로 묶어줍니다.

^L.+\[(\d\d:\d\d:\d\d).+\[([\s\d]+)/([\s\d]+)].+\[([\s\d]+)/([\s\d]+)]$

그럼 괄호로 묶은 부분은 순서대로 (타임스탬프),(heap),(total heap),(native),(total native)가 되는 것이며 이는 순서대로 \1,\2,\3,\4,\5가 됩니다. 이를 엑셀에서 쉽게 가져오기 위해서 임의의 구분자 |를 사용하겠습니다. 따라서 바꿀 단어는 \1|\2|\3|\4|\5가 되겠습니다.

2007-11-12_064.png

찾을 단어와 바꿀 단어에 위에서 작성한 정규식을 넣어주고 정규표현식에 체크한 상태에서 ‘모두바꾸기’를 클릭하면 깔끔하게 필요한 정보만 남은 창을 보여줍니다. 이를 텍스트 파일로 저장한다음, 엑셀에서 불러들여 |로 구분하여 셀을 나눠주면 깔끔하게 그래프를 그릴 수 있습니다.

정규표현식의 활용

“정규표현식이 뭐야 그거 몰라 무서워”

라고 외면하던 시절이 있었지만 이렇게 강력한 기능이 있다는 사실을 깨닫고 완전 빠져들 수 밖에 없었습니다. 자바스크립트도 이러한 정규식을 지원하며 엑셀 VBA도 정규표현식 객체를 지원한다고 하더군요. 각종 데이터를 노가다로 가공해온 지난날에 대한 아련한 아픔이 느껴지는 순간입니다. 에디트 플러스나 울트라 에디터를 비롯하여 다른 거의 모든 편집기는 정규표현식을 지원하는 추세입니다. 막상 정규식 자체의 모양새는 암호 저리가라 할 만큼 이상해 보이기도 하지만 조금만 활용하면 엄청난 노가다를 너무나 손쉽게 처리해 버릴 수 있는 강력한 무기가 될 수도 있습니다. 아울러 adblock과 같은 광고 차단 익스텐션들도 정규식을 지원하는데요, 여기서는 정규식의 시작과 끝을 ‘/’ 슬래시로 감싸주면 광고필터를 정규식으로 인식합니다.즉

/.+shop.+naver.+$/

과 같이 입력한다면 shop, naver가 들어간 url의 소스는 모두 차단해버리게 되어 네이버 메인화면에서 약간 썰렁한 쇼핑몰 광고 이미지들을 한 방에 날려버릴 수 있게 되는 것이지요.

20090929 :: 파닥파닥 – 구글 크롬 OS 베타 공개

낚시로 판명난 케이스로군요. 뭐 어쩐지 겁나게 이상하다고는 생각했습니다. 아래 글에서도 잠깐 언급했습니다만,  진짜 구글 크롬 OS가 나온다면 gOS에 근접했거나 혹은 사용자 UI 전체가 브라우저에 기반한 모양새가 되겠지요. 구글 wave는 이러한 플랫폼을 염두에 두고 개발하는 것 같습니다. 구글 wave에 대해 별거 아닌 걸 침소봉대 하는 거 아니냐는 의견들도 많이 보이지만, 제 생각엔 아마 구글 wave가 크롬 OS의 주된 사용자 인터페이스의 모습이 되지 않을까 별로 조심스럽지는 않게 추측해 볼 따름입니다.

구글 크롬 OS의 베타 버전이 공개되었군요. 다운로드는 여기서 할 수 있습니다. 설치 시디 이미지와 버추얼 박스용 하드 디스크 이미지 중 하나를 다운로드 받으면 되겠습니다.

구글에서 OS를 출시하겠다는 발표 이전에 gOS라는 제품이 사실은 먼저 세상에 고개를 들이밀었더랬습니다. gOS는 넷북을 위한 브라우저 베이스의 OS로 구글의 대표적인 제품들(지메일, 캘린더, 구글 문서 도구)과 가젯 등으로 구성이 되는 매우 심플하고 예쁜 OS로 주목을 받은 적이 있습니다. 구글과 gOS와의 직접적인 관련성은 잘 모르겠습니다만, 구글 크롬 OS는 gOS와는 분명히 다른 노선을 취하는 것으로 보입니다.

구글 크롬 OS는 그 이름에서도 데스크톱과 브라우저가 한 몸을 이룬 gOS의 간지를 뿜어주고 계시지만, 이번에 공개된 베타 버전을 설치해본 결과 상당히 실망스러운 느낌을 줍니다.  라이브 시디 이미지를 내려 받아  버추얼 박스를 통해 설치를 해 보았습니다. 우분투 리눅스와 마찬가지로 라이브 시디를 통해 데스크톱 모양새를 먼저 확인해 볼 수 있고, 설치를 할 수 있게 되어 있더군요.

시작 화면 자체는 상당히 깔끔하고 크롬에서 엿볼 수 있는 구글만의 디자인 감각을 확인할 수 있습니다. (물론 그렇게 빼어난 센스는 아니지만 그래도 깔끔한 편입니다.) 아래 그림과 같은 모습인데, 제가 찍은 스크린샷은 아닙니다…

라이브 인스톨(Install Live)을 실행하면, 우분투 리눅스의 설치과정과 거의 동일한 설치 과정을 거칩니다. 다만 차이가 있다면 우분투 리눅스는 시디에 포함된 내용 만으로 OS 설치가 완료되는 반면, 크롬 OS의 경우에는 먼저 라이브 시디의 내용을 하드 디스크로 복사한 다음, 추가적인 내용을 인터넷으로부터 더 내려 받아서 설치하게 됩니다. 게다가 설치 초기에 보여지는 ’1기가 미만의 메모리에서는 설치가 실패할 수 있으니 응용 프로그램을 모두 종료하라’는 팝업창에서 먼저 확하고 마음이 상하게 됩니다. (네… 집에 있는 256메가 메모리의 컴퓨터가 생각나서 흐흑..)

일차적으로 다운로드 등의 작업이 끝나고 나면 재부팅을 하게 되는데, 이 때에는 시디를 빼면 안됩니다. 시작 화면에서 ‘첫 번째 하드 디스크로 부팅’을 선택하여 설치를 완료하게 됩니다.

두 번 째 설치 화면은 처음의 구글스럽던 라이브 인스톨의 화면과는 다소 차이를 보입니다. 구글 크롬 OS는 수세 리눅스를 기반으로 한 것같군요. 어쨌건 그런 이후에 설치가 완료되면 구글 크롬 OS의 베타버전을 사용할 수 있게 됩니다.

사용상의 느낌은 가상 머신 위에서 돌아가서 그런지는 몰라도 상당히 무거운 느낌입니다. 그리고 OS 자체의 사용자 인터페이스와 구글 제품들이 통합된 사용자 경험은 전혀 통합되지 않은 상태로군요. 문서 작성에는 그냥 오픈 오피스를 사용하게 해 두었습니다. 심지어는 구글 크롬은 반복되는 오류로 웹페이지를 하나도 제대로 렌더링해내지 못하고 죽어버리네요.

이번 베타로 인해 구글 크롬 OS에 대한 기대가 한 풀 꺾이는 느낌입니다. 많이 불안정하고 제대로 써 볼 수도 없을 지경이라도 뭔가 구글만의 느낌을 담은 임팩트를 생각하고 있었는데, 내부적인 내용은 잘 모르지만 우선 겉으로 드러나는 모양새에 있어서 새로운 것이 하나도 없다는 것은 크롬 OS 베타버전이 그저 허망하기만 하고 Virtual BOX 설치한게 아깝기만 한 뭐, 대충 그런 느낌입니다.

아, 햄버거나 사 먹으러 가야지.

ps. 햄버거는 사먹고 왔습니다.

20090925 :: 리눅스에서 nortel vpn 접속하기

우분투 리눅스를 노트북의 주력 OS로 사용하면 가장 절망(?)적인 것이 한 가지 있다면 그것은 vpn연결이었습니다. 리눅스에서도 여러가지 vpn 클라이언트들을 제공하지만, 제 직장에서는 Nortel Networks Contivity VPN 을 사용합니다. 따라서 기존에 나와 있는 vpn 클라이언트들은 설정도 모르겠고, 구글링을 해봐도 어디에나 방법을 묻거나, “그런 거 없다”는 이야기 뿐이었습니다. (아 정말 이 말을 포럼에서 봤을 땐 보란 듯이 성공해보고 싶었습니다.. ㅠㅠ)

실제로 Nortel Networks에서는 리눅스용 클라이언트를 상용으로 팔고 있다는 소문도 있었고, 평가판을 제공한다는 이야기도 있었지만, 결국은 다 안되더군요. 하지만 피와 눈물과 땀을 엄청나게 투자한 끝에, 오늘 이 밤, 회사 vpn에 성공적으로 접속하여 원격으로 문서를 메일로 전달하는데 성공했습니다. 그럼 이제부터 그 눈물겨운 과정을 함께 하도록 하겠습니다.

사전작업

먼저 윈도우에서 VPN 클라이언트를 실행해서, 프로그램 정보 및 연결 정보 (트레이아이콘에서 Status…)를 확인합니다. 이 모든 정보는 매우 중요하니 모조리 기록해 두도록 합니다. 이제, 우분투로 부팅합니다. 참고로 제 경우에는 회사 vpn은 그룹ID, Password로 인증받는 경우입니다. 다른 설정인 경우에는 vpnc 프로그램의 설정 부분을 주의깊게 읽어보고 해당 항목을 윈도우용 클라이언트에서 찾으면 됩니다.

준비

맨 처음 할 것은 vpnc-nortel을 설치하기 위한 디렉터리로 이동합니다.

cd ~/bin   (이미 만들어두었다고 가정합니다)

먼저 소스를 svn에서 내려받기 위해 subversion을 설치합니다.

sudo apt-get install subversion

그리고 소스를 컴파일하기 위해 필요한 패키지도 설치합니다.

sudo apt-get install build-essential

vpnc-nortel 컴파일을 위해서는 다음 패키지도 필요하다고 합니다.

sudo apt-get install libgcrypt11-dev (혹은 build-essential을 설치하면 같이 설치되기도 합니다.)

그리고 vpnc를 기반으로 하기 때문에 vpnc가 의존하는 패키지도 미리 다운로드 받아둡니다.

sudo apt-get build-dep vpnc

이제 소스를 내려 받습니다. 아래 명령을 실행하면 vpnc-nortel이라는 디렉터리가 생성됩니다.

svn co -r 414 http://svn.unix-ag.uni-kl.de/vpnc/branches/vpnc-nortel

이 때, -r 스위치를 사용하여 버전을 명시했습니다. 저 버전은 되더군요. 최신 버전은 이상하게 안됐습니다.

설치

소스 다운로드가 끝나면 설치를 합니다. 방금 새로 생성된 디렉터리로 이동합니다.

cd vpnc-nortel

Makefile 파일을 조금 수정해야 합니다.

sudo vi Makefile (or sudo gedit Makefile)

그러면 긴 주석문 아래에 PREFIX 라는 값에 다음과 같이

PREFIX=/usr/local

이라고 되어 있는데, 여기를

PREFIX=/usr

로 수정해줍니다.

이제 설치를 진행합니다. 다음의 명령을 순서대로 입력해 줍니다.

make

sudo make install

설정

디폴트로 생성되어 있는 설정 파일은 cisco 장비에 맞게 되어 있습니다. 그러니 이 부분은 그냥 따로 보관합니다.

sudo mv /etc/vpnc/default.conf /etc/vpnc/default.conf.install

이제 설정 파일을 따로 만들어야 합니다. 설정 파일을 만들기 전에 어떤 어떤 항목을 설정할 것인지 미리 알아보기 위해서는

vpnc –long-help

를 입력하여 대략 알아봅니다. 그러면 설정값들이 뭘 의미하고, 설정 파일에서는 어떤 이름으로 설정하는지 나옵니다. 아까 기록해 둔 윈도에서의 설정값과 비교하여 입력할 수 있는 내용들을 골라봅니다.

sudo vi /etc/vpnc/default.conf (익숙치 않으시다면 vi 대신 gedit 를 사용하여, 텍스트 에디터에서 작업하는 것이 정신 건강에 좋을 수도 있습니다)

내용은 대략 다음과 같습니다. 단 아래 내용은 제 경우에 한한 것이니 다를 수도 있습니다. X로 가리거나 붉은 글씨로 표시한 부분이 그렇습니다.

Vendor nortel #Nortel 꺼라고 선언합니다.
Nortel Client ID V06_01
IPSec gateway XXXX.XXX.XXX.XXX
IPSec ID XXXXX (이것이 그룹 ID)
IPSec secret XXXXXXXXX (이건 그룹 Password)
NAT Traversal Mode none
IKE DH Group dh1 (D….. H….. 라는 뭔가 긴 단어의 약어입니다. 윈도용 클라이언트에서는 약어로 표시되지 않습니다.)

IKE Authmode gpassword
Enable Single DES #맨 마지막 줄은 첨에 없이 실행했더니 연결이 안돼서 추가했습니다.
#아이디와 패스워드를 묻지 않으려면 아래를 추가합니다. (전 안했습니다.)
Xauth username <아이디>
Xauth password <패스워드>

다 했습니다. 이제 vpnc를 실행합니다. vpn 설정을 위해 네트워크 설정을 내부적으로 변경하니 관리자 권한이 필요합니다.

sudo vpnc (혹은 sudo ./vpnc)

제 경우에는 아이디와 비밀번호를 묻더군요. 최신 버전을 설치했을 때는 이상하게 게이트웨이 주소를 파싱하지 못하고 연결이 안됐습니다. 계정 정보를 입력하고나면 윈도에서 연결할 때와는 달리 아주 빨리 연결이 돼 버립니다. 그리고는 “VPNC started in background (pid : 0000)”과 같이 잘 실행됐다고 나옵니다.

믿을 수가 없어서 핑도 날려보고, 원격 데스크톱도 연결해봅니다.

원격 데스크톱을 연결하고 싶다면

sudo apt-get install rdesktop 로 설치하고

rdesktop xxx.xxx.xxx.xxx (연결할 컴퓨터의 ip)

그러면 윈도에서 원격 데스크톱 연결을 실행한 것과 동일한 화면이 표시됩니다.

드디어 해냈습니다. 축하합니다!!! 짝짝짝짝

아, vpn 연결을 끊고 싶다면 아까 그 디렉터리로 가서 스크립트를 실행합니다.

sudo ./vpnc-disconnect

정말이지 감개가 무량한 순간입니다. 혹시 vpn 연결에 있어서 저와 비슷한 상황이신 분께 도움이 되었으면 합니다. 그럼 즐거운 하루 되세요!

20090923 :: Notepad++ 5.5 출시

오랜만에 쓰는 리눅스가 아닌 -_ – 유틸리티 이야기입니다. 제가 사랑한다고 여러 차례 고백한 바 있는 텍스트 편집기 notepad++이야기입니다. 버전이 4.X 대로 올라가면서부터는 그다지 눈에 띌만한 이슈가 없었죠… 뭐 사실 없었다기보다는 유니코드를 지원하기 시작했고, 많은 플러그인들을 기본으로포함하게 되었지요. 그럼에도 불구하고 이에 대한 포스팅이 없었던 것은 그저 뭐 귀찮았기 때문이랄까요. 아무튼 오늘 notepad++은 벌써 5.5 버전으로 훌쩍 뛰어 올랐습니다. 그럼 뭐가 바꼈는지 한 번 살펴 볼까요.

  1. 편집 콤포넌트인 Scintilla가 v1.78에서 v2.01로 변경되었습니다.
  2. 덕분에 다중선택에 대한 편집이 강화되었습니다.
  3. 여러 줄을 한번에 위/아래로 옮길 수 있게 됐습니다.
  4. 아이콘이 귀엽게 바뀌었습니다.
  5. 프로그래밍 언어별로 탭 설정을 다르게 할 수 있습니다.
  6. 증분 검색의 UI가 개선되었습니다.파이어폭스처럼 맞는 단어가 없으면 핑크색으로 변합니다.
  7. 기타 새로운 기능이 추가되고, 버그가 많이 수정되었다고 합니다.

스샷상으로는 사실 바뀐 걸 많이 찾아보기 힘드네요. 스샷은 우분투에서 WINE으로 띄운 모습입니다. 아이콘이 바뀐 건 사실 별 거 아닌데, 다른 에디터들과 헷갈리던 차에 차별화되니 그건 마음에 듭니다.