20091029 :: Xmarks for google chrome

온라인으로 북마크를 동기화하는 xmarks 서비스에서 IE용 클라이언트에 이어, 드디어 구글 크롬용 확장 기능(알파 버전)을 출시했습니다. 뭐 사실 출시한지는 좀 되었는지도 모르겠습니다만, 아직까지 리눅스용 구글 크롬에서 북마크 동기화 기능을 지원하고 있지 않은 관계로 혹시나 하고 찾은 Xmarks 홈페이지에 구글 크롬의 아이콘이 떡하니 표시되고 있더군요.

아직까지는 정식으로 공개된 기능은 아닌지라 이 곳에서 그 흔적을 찾을 수 있습니다. 설치과정은 매우 간단하며, 구글 크롬의 경우에는 확장을 새로 설치해도 브라우저를 재시작하지 않고 바로 적용이 가능해 지네요.

설치를 마치면 브라우저 왼쪽 아래 귀퉁이에 Xmarks 아이콘이 생깁니다. 이를 클릭하면 익숙한 세팅 마법사가 실행됩니다.

아래는 한 번 동기화 해 준 이후 보이는 화면입니다.

아직 저장된 로그인 암호는 동기화를 지원하지 않습니다. 사실, 구글 크롬의 북마크는 싹 지워버리고 그 때 그 때 마다 파이어폭스의 북마크를 바로 불러오는 방식을 썼었는데, 문제는 구글 크롬에서 추가한 북마크를 다른 곳으로 동기화 하기가 힘들었다는 것입니다. 이번에야 말로 뭐랄까 하나의 오랜 숙원이 해소되는 느낌이네요.

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

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

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

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

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

드디어 입성. 구글 웨이브

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

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

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

놀라운 실시간 협업 도구

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

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

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

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

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

무궁무진한 가능성

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

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

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

20071029 :: 일러스트레이터로 도식화 그리기 – 펜툴

펜툴을 알자

펜툴은 일러스트레이터의 기본이자 완성이라 할 수 있는 부분입니다. 기본적으로 모든 객체의 외형(shape)은 패스(path)로 이루어집니다. 또한 이러한 패스는 기본적인 베지어 곡선의 조합으로 만들어집니다. 베지어 곡선에 대한 이야기는 여기서 자세하게 할 수도, 할 필요도 없으니 간단하게 언급하고 넘어가도록 하겠습니다.

2007-10-25_046.png

먼저 위의 그림을 보도록 하겠습니다. 왼쪽의 포인트에서 곡선이 시작됩니다. 두 포인트 사이는 그림에서 보이는 그대로 직선이 아니라 곡선으로 연결됩니다. 첫번째 시작 포인트에서 뻗어나오는 부분은 포인트에서 뻗어나온 핸들(앵커포인트라고도 하지만 쉽게 핸들이라고 하겠습니다.)만큼 ‘당겨져서’ 곡선의 형상으로 ‘휘어’ 그려집니다. 반대편 끝나는 포인트에서도 핸들의 위치만큼 편향되어 3차곡선 (고등학교때 배운 3차 함수 모양의 곡선)의 형태를 그리게 됩니다. 이것이 가장 기본적인 단위의 베지어 곡선이며, 이를 이이 붙여서 패스를 만들게 됩니다.

펜툴 상태에서 마우스 버튼을 누르면 포인트를 찍게 됩니다. 손가락을 떼지 않고 마우스를 끌면 마우스를 따라 핸들이 뻗어나옵니다. 이러한 원리로 베지어 곡선을 그릴 수 있고 포인트를 추가해 나감에 따라, 또 핸들을 형성해줌에 따라 여러 형태로 자유로운 곡선을 그려나갈 수 있겠습니다. 그럼 몇 가지 유형에 맞추어 곡선을 그리는 방법을 알아보도록 하겠습니다.

유형 1

2007-10-25_048.png

가장 기본적인 곡선입니다. 핸들이 없는 정점에서 시작하여, 두 번째 지점에서 핸들을 만들어 곡선을 만듭니다. 현재 스크린샷에서는 화살표가 있는 방향으로만 핸들이 표시되어 있지만 실제적으로는 핸들이 있는 포인트를 기준으로 양쪽으로 똑같은 길이의 핸들이 만들어져 있습니다. 종점의 역할을 하는 세 번째 정점을 만들면 역시 두번째 포인트에서 뻗어나온 핸들의 영향으로 곡선으로 마무리됩니다.

여기에서 알 수 있는 것은 시작점이 아닌 끝나는 점에서 핸들을 뽑는 것이 원하는 형태의 곡선을 만들기가 쉽다는 것입니다. 시작점에서 핸들을 만들어 곡률을 정해놓으면 다음 포인트를 찍기 전에는 곡선의 형태를 예측하기기 쉽지 않으니까요 .

유형 2

2007-10-25_049.png

시작점에서부터 핸들을 만들어 곡선을 그리는 경우입니다. 두번째 점에서 핸들을 만들면 같은 길이의 핸들이 반대방향으로 뻗어나와 함께 움직입니다. 이는 세번째 점으로 이어질 때에 완전하게 완만한 곡선을 만들기 위함입니다. 그리고 세 번째 지점에서도 핸들을 뻗어 곡선의 형태를 마무리하고 있습니다.

유형 3

2007-10-25_047.png

늘 완만한 곡선만 그릴 수는 없습니다. 곡선으로 휘어지다가도 날카롭게 코너를 만드는 부분이 특히나 도식화에서는 아주 높은 빈도로 발생하는 경우라 볼 수 있습니다. 기본적으로 직선으로 연결되는 지점에서는 그냥 한번의 클릭으로 포인트를 찍게되면 위의 그림처럼 뾰족한 코너가 됩니다. 그리고 이어지는 다음의 부분은 매우 중요한 부분이니 눈 한번 비비고 잘 살펴보시기 바랍니다.

2007-10-25_050.png

앞서도 말씀드렸지만 곡선을 연속적으로 만드는 경우 핸들은 포인트를 기준으로 양쪽 방향으로 균일하게 만들게 됩니다. 이때 핸들을 끌었다가 놓은 후 방금 전에 찍었던 포인트에 다시 펜툴 커서를 갖다 대면 위의 그림에서와 같이 커서옆에 꺽쇠표시(^)가 나타납니다. 이 때 클릭을 한 번 해주면 바깥쪽으로 뻗어나온 핸들만 초기화되어 사라집니다.

2007-10-25_051.png

따라서 계속 패스를 그려나가보면 위의 그림처럼 방금 다시 찍은 포인트는 뾰족한 코너 포인트가 되어 있는 것을 알 수 있습니다. 이것이 펜툴 사용의 기본이자 정수가 되는 부분이라 하겠습니다. 남은 것은 거의 눈의 속도로 손이 따라갈 수 있을만큼 연습에 연습을 거듭하는 것만 남았습니다. 이후 소개해드릴 이미지를 깔아놓고 트레이싱하는 법을 이용하여 핸드폰이나 자동차와 같은 곡선과 직선이 적절히 혼합되며, 그리 복잡하지 않은 형태를 따라 그리는 것을 반복해 보는 것이 좋습니다.

관련글 ::

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의 소스는 모두 차단해버리게 되어 네이버 메인화면에서 약간 썰렁한 쇼핑몰 광고 이미지들을 한 방에 날려버릴 수 있게 되는 것이지요.

20091008 :: 바코드의 날

어제가 바코드 탄생 50주년을 맞는 날이었답니다. 위의 황량한 이미지는 이 날의 구글 첫 페이지의 모습입니다. 구글 로고 대신에 떡하니 바코드가 찍혀있다보니 보는 이로 하여금 큰 시각적 충격을 맞이하게 해 줍니다.

더더욱 무서운 사실은 구글(영문 검색 페이지. 한국어 페이지는 예의 그 오목조목 서비스 명칭이 많이 달린 페이지로 동일했습니다) 첫 페이지에 접속하면 눈에 익은 파란색 글씨들 (로그인이라든지, 검색 카테고리 링크 등)이 하나도 보이지 않고 딱 저 바코드와 텍스트 입력 박스만 보인다는 사실입니다.

흠칫 놀라고 있을즘에 서서히 다른 글씨들이 나타나서 이 곳이 구글임을 알려주더군요. 워낙 순발력이 떨어져서 스크린샷은 그냥 잘라 먹긴 했습니다만, 딱 저만큼만 나오는 홈페이지라면 일어나서 박수 한 번은 쳐줘야 될만큼 과감한 시도라고 생각되네요.

어제의 영향인지는 몰라도 구글 첫페이지의 로고는 원래 모습으로 돌아왔습니다만, 여전히 구글 로고 이미지와 검색 박스를 제외한 나머지 페이지 구성 요소들은 어제와 마찬가지로 페이지 로딩 완료 후 1~2초 후에 서서히 나타나는 군요. 상당히 멋진 효과라는 생각도 들고, 그만큼 검색어 입력만을 강조하려는 (얼마전 구글으 검색 박스의 크기도 큼지막하게 키우고, 검색어 자동완성의 폰트 크기도 좀 무식하게 크게 키운바 있습니다) 그들의 의지가 살짝 엿보이는 대목입니다.