블로그 이미지
JEEN

서울에 사는 꽃청년의 IT찌질모험기

Rss feed Tistory
IT/Perl 2009.08.25 12:53

[ Perl/Inotify/Flickr ] 특정 디렉토리에 그림파일을 넣으면 자동으로 Flickr 업로드

  2009/08/24 - [IT/Perl] - [ SVN/Perl/Inotify ] 고객 후렌들리하게 SVN 운용법 - 자동커밋/업데이트

 이전에 썼던 Inotify 떡밥을 또 계속 물고 늘어져 보겠습니다.
 SVN 을 가지고 노는 그닥 아름답지 못한 방법이 있었지만, 이번에는 특정 디렉토리에 파일이 생성되면 그것을 자동으로 flickr 로 업로드 시켜주는 녀석을 만들어 보겠습니다.

 사실 이 아이디어는 최근에 일본에서 주목을 받고 있는 fic*** 라는 회사의 툴에서 본 것입니다. 특정 디렉토리를 지정해서 거기에 그림 파일을 올리면 자동으로 업로드해서 웹 서비스에서 그림을 관리할 수 있게 해놓은 것이죠. 뭐 물론 이러저래 많은 기능이 있지만, 유저가 그림을 업로드하기 편리한 뭐 그런 것이죠.

  뭐 Dropbox 라든가, SugarSync 라든가.. 생각해보면 이런 Inotify 를 사용했을 것 같다라는 서비스는 찾아보면 좀 많이 있을 것 같기도 합니다.

  아무튼 작동환경은 Linux (Ubuntu 9.04) 이며, 위의 링크의 지난 포스팅과 같은 환경입니다.
  사용모듈은 Flickr::Upload , File::ChangeNotify 입니다.
 
  우선 flickr API 키와 암호를 받습니다.

- http://www.flickr.com/services/api/keys/

  이 화면에서 키와 암호를 얻기까지의 인증을 수행합니다.
jeen@haak:~$ flickr_upload --auth --key [your key] --secret [your secret]
1. Enter the following URL into your browser

http://....

2. Follow the instructions on the web page
3. Hit <Enter> When finished.

  그리고 Flickr::Upload 를 설치하면 사용할 수 있는 flickr_upload 커맨드로 위의 명령을 수행합니다.
  이것을 AuthToken 을 수령하기 위함입니다. 해당 API 를 사용한 어플리케이션이 유저의 Filckr 계정에 접근할 수 있는 토큰을 부여받기 위함입니다. 
  위에 제시되는 URL 로 접속해서 모든 확인을 끝내고 콘솔로 돌아와서 엔터를 누르면, AuthToken 을 받을 수 있습니다.

  그럼 특정 디렉토리에 그림을 업로드할 디렉토리를 하나 만들어 둡니다.

# flickr-auto-upload.pl
use strict;
use warnings;
use File::ChangeNotify;
use Flickr::Upload;

my $ua = Flickr::Upload->new({ 'key' => 'your flickr key',  'secret' => 'your flickr secret' });

my $dir = '/home/jeen/image/';
my $watcher = File::ChangeNotify->instantiate_watcher(
  directories => [ $dir ],
);

while(my @events = $watcher->wait_for_events()) {
  foreach my $event (@events) {
     my $path = $event->path;
     next unless $event->type eq 'create';
     $ua->upload(
      'photo' => $path,
      'auth_token' => 'your auth token',
      'tags' => 'auto',
      'is_public' => 1,
      'is_friend' => 1,
      'is_family' => 1
     ) or do { warn "something wrong"; next };
     unlink($path);

     print $path. " is uploaded\n";
  }
}

  key, secret, auth_token 에는 앞에서 발행받은 것들을 그대로 집어넣습니다. 그외 Flickr Upload 시의 파라메터에 대해서는 Flickr::Upload 모듈페이지를 참고해주세요.
  파일은 업로드 이후에 자동으로 삭제해버리게 해버렸습니다.
  뭐 그외 필터도 필요하겠죠. gif/jpg/png 가 아니라면 업로드 안되게 한다든가, 파일사이즈가 얼마라든가...

  굳이 Flickr 가 아니더라도, Picasa 라든가, TwitPic 이라든가.. 이런 부류의 서비스는 많고... 이런 서비스들의 API 를 구현한 CPAN 모듈도 찾아보면 금방 나올겁니다. (없으면 만들어서 올려주시구요)

   Mac 에서는 FSEvents 를 사용해서 해당 디렉토리의 변경에 대한 통보만을 받을 수 있습니다. 파일은 어케 안되는 것 같더라구요. 변경통보시에 매번 파일리스트에서 최신 변경일자를 조사해서 파일을 건져낸다든가 여러가지 방법은 있겠지만요. 혹은 뭐 여러가지 다른 방법도 많을 것 같습니다. 어차피 파일의 변경이력을 못건진다면 Mac 에서는 그냥 launchd 같은 것을 쓰는 편이 더 낫지 않을까 하는 생각도 해봅니다.
신고
IT/Mac 2009.06.17 17:26

[ Mac ] ExpanDrive++ - SFTP/FTP 를 그냥 Finder 에서!!


  최근에 가입이 승인된 AppleForum 을 둘러보면서 ExpanDrive 에 대한 글을 접하게 되었습니다.
  (AppleForum 을 가입승인없어도 글은 볼 수 있습니다)


 SFTP, FTP 를 그냥 마운트해버려서 Finder 에서도 쉽게 볼 수 있다!
 
 라는 것에 눈이 번쩍 뜨였습니다.

  이제껏 맥에서 작업하다가 제 섭으로, 아이폰으로, 회사 컴퓨터로
  일일이 scp 를 때려가면서 삽질을 하고 있었기 때문이죠.
   (거기에 username 은 컴퓨터마다 다 달라서... ;ㅁ;)

  가격은 무려 $39.95 입니다. 무려라고 할까.. 예전에 Things 나 Notebook 샀을 때랑 비슷비슷하군요.

  가장 필요한 이유는... 최근에 Mac을 다시 깔고나서 DiskAid 가 작동하지 않아서..
  iPhone 에 iComic 으로 볼 만화를 못 집어넣고 있었던 것이 가장 컸습니다(80%)
  물론 업무적인 차원에서도 이래저래 불편한 점은 많이 있었죠(20%)

 이제 ExpanDrive 로 원큐에 해결!


 왠지 업무효율(?)이 5%는 오른 것 같은 느낌이 듭니다.
신고
ExpanDrive, FTP, mac, SFTP, ssh
IT/Perl 2009.06.09 17:42

[ Perl ] remedie (iTunes 가 부럽지 않은 Podcast(?) Web(?) App(?))

  Plagger 로 유명한 Tatsuhiko Miyagawa 씨가 작년 shibuya.pm tech talks에서 선보인 적이 있는 remedie 는... 지금 말하기는 솔직히 떡밥이 상했다고 봐도 됩니다. Plagger 에서도 그랬듯이, 자신이 원하는 설정과 방식으로 Web Page 를 긁어와서, 그것을 어떤 방식으로 처리할 것인가를 아주 유연하게 처리할 수 있었습니다.
 remedie 에서도 마찬가지... 굳이 PodCast Feed 뿐만이 아니라, 특정 Web page 에서의 미디어 정보를 그대로 긁어와서 등록시킬 수 있습니다. 이것이 다른 Podcast 어플과는 다른 점이지요.
 그리고 remedie 는 Local Web Service 입니다! 즉, 자신의  서버/PC/Mac 에 스탠드얼론으로 띄우면 지정된 port 로 Web 에서 접근할 수 있지요. 

* remedie 의 설치 

 우선 설치에는 git 이 필요합니다. git 이 설치되지 않았다면 우선은 git 을 설치해주세요.
 Mac 을 기준으로 설명하면...
 
 sudo port install git-core

 그리고 git 설치가 완료되면 
 
git clone git://github.com/miyagawa/remedie.git

 을 실행하면 실행된 디렉토리 아래에 remedie 라는 디렉토리가 생성됩니다.

 그리고 README.mkdn 에 자세한 내용이 실려있으니... 여기까지!

 의존 모듈을 설치하는 부분은 "문서를 읽어주세요!"

* remedie 조작 

  위의 의존 모듈 설치를 모두 끝내고 perl bin/remedie-server.pl 로 remedie 를 띄운다면 http://localhost:10010 으로 접근할 수 있습니다.

  그러면 대략 아래와 같은 화면이 나옵니다.

   
* remedie 의 특징 

  Mac/Linux 에서 remedie 는 실행계정의 홈디렉토리 아래에 .remedie 라는 디렉토리를 생성합니다. 
  여기에 Feed 관련 정보를 모아두는 DB (SQLite) 나, access/error 로그 등이 존재합니다. 
  (Windows 는 안써봐서 모르겠습니다...)
  
  직접적인 DB 조작은 권하지 않지만... 혹시나 해서...

* Fluid + remedie for Mac

  Mac 에서는  Fluid 라는 App 이 있습니다. 웹서비스를 로컬 App 로 작동하게 하는 것인데요.
  remedie 의 경우 이렇게 설정해주면 아주 편합니다.
  물론 jGrowl 이라는 자체적인 웹에서의 통보처리도 있지만, 
  Fluid 를 통해서 remedie App 을 만든 경우에는 
  새로운 피드 갯수 가 뱃지로 달려버리죠. 
  그리고 jGrowl 이 아니라 Growl 로 통보를 해줍니다.
  완전한 Mac App 로 바뀌어 버리는 것이죠.


* Fluid + remedie + U70


* 등록해놓은 Feed List (OPML)


  이 URL 을 다운로드 해서, New -> Import OPML 로 집어넣으면.. 제가 구독하고 있는 Feed 들과 똑같은 것을 구독하실 수 있습니다.
  
  ** 추천해주실 만한 곳이 있다면 메일로 접수받습니다. jeen |_at_| perl.kr

* References

 ** remedie 의 저자인 miyagawa 씨가 타이완의 오픈소스 컨퍼런스에서 발표한 영상과 슬라이드가 있으니 참고하세요. (라기보다 이 영상과 슬라이드를 보는 게 훨씬 이해가 빠를 거라고 생각합니다 ;ㅁ;)
신고
IT/Gears 2009.06.07 00:52

[ USB Monitor ] U70 을 만나다!

U70
  한국에서 현재 최저가 89,000원 정도의 USB Monitor U70 을 구입했습니다. 목적은 역시 키보드를 두들기면서 다른 것을 실시간으로 보고 싶다는 것이었죠. 
  위의 사진처럼 remedie 를 띄워 놓으니 딱 좋군요. (remedie 에 대해서는 적당한 타이밍에 소개하겠습니다)

U70
  회사에서는 Twitter 와 IRC 용으로 쓰고 있습니다. 회사에서까지 PodCast 를 보고 있을 만한 사장급 여유를 보일 수 없는 소인배니까요 :-)
  U70 내장의 USB 는 USB 대가리(?)가 두개 달린 쌍두사 였는데.. 그냥 볼품없어서 일반 USB 케이블로 꼽아도 잘 돌아갑니다. 별도의 전력케이블도 필요없이 USB 전력만으로 먹고 삽니다.
  화면크기는 모델이름에서도 알 수 있듯이 7" 입니다.

  한국의 U70 상품 소개 페이지에는 기본적으로 Windows 에서만 돌아간다는 뻥을 쳐놨지만...
  Mac 에서도 돌아가며, Linux 용 드라이버도 최근에 나온 걸로 알고 있습니다.

 *** Google Keyword "Display Link", "Mac"

  모니터의 수가 늘어날 수록 작업의 효율이 늘어난다는 속설을 들은 적이 있는데...
  딴짓 효율이 더 늘어날 것만 같습니다만... 그래도 좋습니다. 활용하기 편해요!! :-)

  일본에서는 8" 모델이 1.2만엔 하는 것에 비해서 7" 모델이 최저가 8.4천엔 정도에 구입가능하니... 그야말로 買い得!


신고
IT/Mac 2009.05.27 00:58

Macbook의 트랙패드와 키보드 무반응 사태!!


  작년 3월에 사서 지금까지 잘쓰고 있는 맥북!

 그러던 중에 오늘 IRC Client 어플인 Colloquy 를 사용하던 도중에 커서가 뺑글뺑글 마크로 바뀌면서 키입력과 트랙패드 조작에 꿈쩍도 안하는 사태에 직면했습니다.

  뭐 리부팅하면 되겠지 해서... 전원을 눌러서 껐다가 켰는데 여전히 안됩니다. 배터리가 이상한가 해서 배터리 빼고 바람을 후후 불어서 다시 꼽아도 안되더군요. 이때의 마우스 커서가 왼쪽 상단부분에 머물러서 움직일 생각을 하지 않으며, 키보드도 침묵 상태였습니다. 

  마침 보증기간도 지났고, 애플케어 같은 것도 안해놨고, 보증기간 지나서 애플케어 가입도 안된다고 그러고..., 된다고 해도 3만엔이고...

  혹시나 하는 마음에 애플 고객센터로 전화를 걸어서 현 상황을 설명하면서 상대의 대응에 대해 들었습니다.

  먼저 SMC 라고... 장치관리에 대해서 리셋하는 것이 있다는 군요. 배터리와 전원케이블 모두를 제거하고.. 전원버튼을 5초이상 누르랍니다. 그리고 다시 켰을 때!!! .... 아무것도 바뀌지 않았습니다.

  실망감과 함께 밀려드는 당혹감... "하드웨어 문제인 것 같으니 수리를 맡겨야 되겠다. 일률적으로 가격은 4만 5천엔!" 이라는 담당자의 말에 덜컥! 하면서 "아직은 안되겠으니 나중에 애플 스토어 가서 직접 알아보겠다" 라고 하고는 전화를 끊었습니다.

 다행히 회사에 남아도는 USB 키보드와 마우스는 잘 인식이 되더군요. 윈도우용 키보드라서 안먹히는 거 아닌가 생각했는데... Window 키가 맥의 Command 버튼 역할을 하니.. 사용하기도 편리했습니다. 그냥 진작에 이렇게 쓸 걸 하고 생각도 했습니다.

 하지만 맥북의 용도는 역시 들고다니면서 쓰는 것에 있습니다. 요즘에는 좀처럼 자리를 잡기가 쉽지는 않지만... 평소같으면 지하철 빈자리에 앉아서 열심히 기술칼럼을 번역하는 재미가 사라져버리는가 했죠.

  배선불량이니 접촉불량이니... 여러모로 검색하고 검색해본 결과... 비슷한 증상들에 대해서 대처법은 가지각색이었습니다. 한번 드라이버로 열어볼까 했는데... 회사사람도 예전에 열었다가 다시 조립을 못했다 라는 얘기를 듣고 ... 그냥 깔끔하게 다시 밀어보자 라는 생각으로 Mac OS X Install disc 를 꺼내들었습니다.

  그리고 하드웨어 테스트라는 게 있어서 d 를 누르고 들어갔습니다. (그전에 Command + option + R + P 로 NVRAM 초기화 하는 법도 있었는데.. 이것도 안통했었습니다. 그래서 하드웨어 문제인가보다 라고 생각을 했었죠.)

 가만.. D 키가 먹히는 걸 보니 하드웨어 문제는 아니라고 확신이 들었습니다. 그러다가 하드웨어 테스트 화면에서 트랙패드가 움직이는 것을 보면서... 역시 "하드웨어 문제"는 아니다!!! 라는 결론을 내렸습니다. 

  확장테스트를 거쳐 1시간 30분의 시간이 지나고... 아무런 대처도 하지 않았지만...
  시작화면을 거치고 트랙패드가 움직이는 것을 확인했습니다! (얏호!)

  그리고 공돈 4만 5천엔 벌었다~ 라고 스스로 기뻐했죠. 솔직히 4만 5천엔이라면 돈 더 모아서 새 모델을 하나 더 사겠다 라고 생각할 정도입니다. 3번 수리에 신품과 같은 가격이라면 이건 좀 A/S 정책이 이상한 거 아닐까 라는 생각을 하곤 했습니다.

  말로만 듣던 애플의 Fucking 한 A/S 대책. 멋모르고 수리 맡겼다가 4만 5천엔 날렸으면 어떻게 할뻔했을까 생각하면 아찔하기 그지 없습니다. 

  ** 추기 
:: 문제는 다시 재발했습니다. 그래서 멋모르고 일단 드라이버 들고 뜯어봤는데요. 
** 혹시 먼지때문에? 
- 그럴리가 없지만... 아무튼 먼지는 잔뜩 끼어있었습니다. 에어 스프레이로 먼지를 날리니까 좀 조용해지고 발열도 좀 덜해지는 그런 감이 들기는 했습니다.

** 문제의 악화
- 이제껏 하드웨어 테스트 화면에 들어가면 그래도 트랙패드 정도는 움직여줬는데... 어느순간부터 하드웨어 테스트 화면에서도 트랙패드는 안 움직입니다. "정말로 하드웨어적인 문제다!!!" 라고 절망하며... 지갑이 가벼워질 것 같은 느낌이 팍팍 들었습니다.

** 적당한 구글 키워드 검색
- 까먹었지만.. 구글 키워드로 검색하면 비슷한 증상을 호소하는 사람이 많았습니다. 그중 몇몇은 Mac OSX 다시 인스톨 하니까 되더라.. 라는 얘기를 했는데... 저도 똑같이 했지만 불발! 데이터와 시간만 날렸습니다 ;ㅁ; (타임머신 안써서...)

** 트랙패드를 압박해라!
- 어느 블로거가 이런 증상의 대처방안으로 트랙패드를 압박하는 방법을 소개했습니다. (트랙패드랄까 트랙패드 쪽의 접촉부위랄까...) 
  배터리를 열면 회색테이프로 어떤 칩을 감싼 부분이 있습니다. 분해해보면 알겠지만... 키보드와 이쪽이 연결되어 있다는 것을 알 수 있지요. 즉, 이 부분을 압박시키는 것이었습니다. 확실히 접촉불량이 문제인 듯..
 티슈 한장을 뽑아서 4-5번 정도 접고... 회색테이프 부분위에다가 고이 올려둡니다. 그리고 배터리를 끼워서 닫습니다. 적당한 압박이 좋구요. 티슈의 두께가 너무 두꺼우면 배터리가 안들어가니까... 적당한 게 좋습니다.
  그리고 켜본 결과!! 트랙패드가 움직이기 시작했습니다!! 오오!! 키보드도 제대로 움직이기 시작했구요. 
  증상 재발이후 4일이 지난 지금까지도 잘 쓰고 있지만!
  그래도 너무 임시방편이라서 자기책임하에 위와 같은 증상에 위와같은 일을 해보심이 좋을 듯 합니다.
  AppleCare 남으신 분은 그냥 AppleCare 에 맡기기를 권해드리며, AppleCare 도 만기, 돈도 없는 저같은 경우에는 "자기책임" 아래에서 해보시는 것은 어떨까 생각합니다.
  절대로 전 책임지지 않겠습니다. -ㅁ-


신고
IT/Mac 2009.04.04 00:59

[ Mac Life ] Mac 으로 즐기는 (셀프)도촬라이프

  요즘 블로깅 거리도 없고 해서 그냥 이곳저곳 싸돌아다니다가 발견했습니다.

 http://www.techyouruniverse.com/technology/automatic-isight-capture-to-have-your-mac-be-a-time-lapse-camera

 보통은 Photo Booth 따위로 isight 로 사진을 찍거나 하는데요. isight_capture 라는 커맨드라인 유틸로 순식간에 사진을 찍을 수 있게 됩니다. 그래서 cron으로 설정해놓고 맥을 켜놓고 있는 동안의 자신의 모습을 재발견하는 것이지요. 자세한 설명은 위의 링크를 참고해주세요.

 isightcapture 로 사진을 찍으면 한장은 대략 30kb 전후의 저화질 사진이 됩니다.  이걸 5분간격으로 찍게 cron 으로 설정해놓습니다. 그러면 해당 설정에 따라서 자신이 설정한 디렉토리에 차곡차곡 사진이 쌓이게 된다는 것입니다.
 
  그 결과가 아래와 같습니다. 자는 시간 과 출퇴근 시간을 빼면 거의 mac 을 켜놓고 사니까... 15시간 정도... 그러면 하루에 180장 정도가 찍히려나요.
  하루치 사진을 모아놓고 딱 보는 순간에 ...
  "워야 이 돼지새끼는!"  ...일하면서 따분해 하는 모습들이 많아서...
  내가 일을 할때 즐거워 하지 않는 구나... 라고 많이 느끼게 됩니다.
  쩝... 권태기려나요. 겨우 3년차에...
 

 아무튼 힘내보렵니다. Mac 을 가지신 동지여러분... 셀프도촬의 세계로 달려나가 봅시다. :-)
 (일반인들은 암만해도 자뻑할리는 없으니 겸양의 미덕을 가지게 되는 장점이 있습니다)
신고
IT/Mac 2009.03.18 12:17

[ iPhone ] iPhone OS 3.0 !!!

  오늘 새벽 2시쯤에 Apple 에서 iPhone OS 3.0 에 대한 발표가 있었습니다. 
  현재 펌웨어 버젼이 2.2.1 이니... 뭔가 대단한 변화가 있겠지요.

(from engadget)

 iPhone OS 3.0의 주요한 기능 중 하나는 역시 'Copy&Paste' . 텍스트 뿐 아니라 그림파일 등도 복사가 가능하다고 하네요.

 Tethering 이라고.. iPhone 과 노트북을 연결해서 인터넷을 사용할 수 있도록 하는 기능을 본격적으로 제공한다고 하지만, 이것은 통신사업자의 협조가 필요한 부분이라는 군요. 지금은 Netshare 같은 어플을 사용하면 가능하긴 합니다만... App Store 에서 자취를 감춘 지 오래인걸로 알고 있습니다.

 그외 Sync 관련해서 여러모로 추가되었고...
 음성녹음이 기본 App 로 추가되었으며, BlueTooth 를 이용한 파일전송이 가능해졌으며, 뿐만 아니라 여러 블루투스 장비들을 연결해서 사용할 수 있게 되었답니다. 

 가장 아쉬운 건 역시 Push Notification. 제한적인 백그라운드처리를 지원하지만... 역시 제한적이라는 게 좀 그렇군요. 그냥 완전히 오픈시켜줬으면 좋겠는데...

 아무튼 SDK 도 기능향상과 함께 업그레이드 되었고, 베타판은 신청을 통해서 받을 수 있다고 합니다.
 이번에도 iPod Touch 는 업그레이드에 10달러 가까운 돈을 내야하구요. iPhone 은 무료로 가능하다고 하네요.
 그외 여러가지 있지만... 제가 주목한 건 이정도입니다. 

 자세한 내용은 위의 링크를 참고로... 솔직히 감상을 말하자면..
 "소문난 잔치에 먹을 게 있기는 한데... 편식할 것 같다" 입니다.

신고
IT/Perl 2009.02.03 20:18

[ JavaScript ] jGrowl Notification 을 IRC 로그 뷰어에 갖다 붙여봤습니다.

  요근래 remedie 의 UI 부분 업데이트에서 도입된 jGrowl 을 IRC 로그 뷰어에 갖다붙여보자는 생각을 예전부터 쭈욱 해왔습니다. jGrowl 이란, Mac 의 Growl 이라는 Notifier 비슷하게 JavaScript 로 브라우져 내의 이벤트를 생성할 수 있게 한 것입니다. Growl 은 Mac App 에서 발생하는 각종 동작 정보를 알 수 있습니다. IRC 에서 누가 불렀을 때나, 새로운 RSS Feed 가 있을 때나, Mail 이 왔을 때 등등...

Growl 아이콘


Mac 에서의 Growl Notification 동작


  이 jGrowl 같은 것이 한국에서 쓰인 가장 일반적인 예제로는 미투데이가 있겠네요.

미투데이에서 사용하고 있는 Growl 틱한 Notifier

    jGrowl 은 jQuery 플러그인으로도 만들어져 있기도 하지만, 그외 무툴즈 버젼 이외에 여러 버젼이 존재하고 있습니다. 전 자바스크립트에 그렇게 능숙하지 못해서 그냥 웹사이트 뒤지고 song 님에게 도움받으면서 작업하게 되었습니다.

  - jGrowl : http://www.stanlemon.net/projects/jgrowl.html

IRC 상에서 코멘트 입력


웹상의 IRC 로그뷰어에서 jGrowl 동작


  위처럼 IRC 에서의 대화는 웹상에서 일정시간(여기서는 20초설정)에 갱신되며, 이 갱신된 내용은 브라우저 안에서의 jGrowl 이벤트로 알려주게 됩니다.
  jGrowl 과 jQuery 의 높은 완성도에는 정말 탄성이 나올 정도입니다.
  기존에 만들어 둔 로그뷰어에 그대로 jGrowl 만 덧붙이는 간단한 작업이었습니다. jQuery 도 처음으로 써볼 겸 해서 간단하게 코드를 넣었습니다. $.getJSON 한방에 XHR 이 끝나는 게 너무 감동이네요. ㅜ_ㅜ (뭐 여타 JS 프레임웍이 그렇겠지만;;)
   Interval 을 20초 정도로 주고 웹사이트에서 매번 로그 뷰어 서버와 주고받고 합니다. 이러다보니 여러 유저가 붙었을 경우에는 빈번하게 리퀘스트가 오갈텐데... 이 부분에 대해서는 특별한 고민은 일단 하지 않았습니다. 뭐 어차피 쓰는 사람도 적을 테니... 라는 생각으로 있는데요. 이 같은 경우에서 뭔가 브로드캐스트 방식으로 통신할 수 없을까 하는 고민등등.. 여러가지 떠오르는 군요.
  서버쪽의 부하를 덜어줄 수 있는 여러가지 아이디어를 가지고 계신 분들께 지도편달 부탁드리겠습니다.
신고
IT/Mac 2009.01.28 21:03

[ Mac ] Colloquy (Mac IRC Client App) Plugin 만들기


 Colloquy 는 Mac 의 대표적인 IRC 클라이언트 App 입니다. 전 Mac 을 쓸 때에 이 Colloquy 를 가장 많이 사용합니다. 그만큼 IRC 에서 떠드는 일이 많아지고 IRC 는 하나의 생활이 되어버렸네요.
 Perl 로 재미있는 거 만들 수 없을까? 했을 때도 가장 먼저 떠오른 것이 IRC BOT 이었구요... 이번에는 IRC BOT 에서 할 수 없는.. 뭔가 클라이언트 환경에 맞는 일을 해보고 싶었습니다.
 구글 선생님에게 "Colloquy Plugin" 을 치니까 떡하니 나오더군요.

Plug-In Love - Unlimited extensability through Plug-Ins.

  
 - Colloquy :: Write Plug-Ins :  http://colloquy.info/project/wiki/Development/PlugIns

 이 페이지에서는 Plugin 을 쓸 때 지원하는 언어를 나열해놨습니다. Objective-C,  AppleScript, Ruby, Python, JavaScript .... 불행히도 Perl 은 없군요. CamelBones 가 저렇게 방치된 이상 더는 어떻게 못하나 봅니다. 이건 Mac 을 쓰는 Perl Guru 들이 어케 안해줄런지요.
  아무튼 제가 제대로 할 줄 아는 건 JavaScript 밖에 없으니 ... 일단 JavaScript 도 플러그인을 만들어 보기로 했습니다. 아주 친절하게도 플러그인을 만들기위한 기본 Template 이 갖추어져 있습니다. 


  IRC 프로토콜 상의 대부분의 이벤트에 대해서 정의가 가능하며, Mac 스럽게도 Growl 과 연동도 시킬 수 있습니다. 입력시킬 내용을 자동으로 필터링해서 보거나, 보여지는 내용에 대해서도 입맛에 맞게 바꿔서 볼 수 있습니다. 이런 것들로 "하이라이트 단어 설정"(이건 Colloquy 설정화면에도 있습니다), "이모티콘 설정"(이것도 물론...) 등을 할 수 있겠죠.

  제가 IRC 에서 주로 활동하는 곳은 #perl(irc.hanirc.org), #perl-kr(irc.freenode.org) 입니다. 
  채널의 성격에 맞게 새로운 CPAN 모듈이나.. 어느 모듈의 사용등에 관한 얘기가 자주 등장하기도 하죠. 생소한 CPAN 모듈이 나오면 Module 이름을 직접 URL 창에 쳐서 검색을 하거나 하기도 합니다만... 이 부분에서 CPAN 모듈을 정규표현으로 긁어서 CPAN 모듈 페이지에 링크를 걸어주도록 했습니다.
  그 내용은 아래와 같습니다.

  1. function processIncomingMessage( message, view ) {
  2.     var html = message.bodyAsHTML();
  3.     var finalHTML = html;
  4.     var linkRegex = new RegExp( '<a href="([^"]+)">([^<]+)<\/a>', 'gim' );
  5.     var result;
  6.     while( ( result = linkRegex.exec( html ) ) ) {
  7.         var name = result[1];
  8.         var schemeRegex = new RegExp( 'https?:\/\/' );
  9.         if( schemeRegex.test(name) )
  10.             continue;
  11.        
  12.         if( name ) finalHTML = finalHTML.replace( result[0], '<a href="http://search.cpan.org/perldoc?' + name + '" title="' + name + '">' + name + '</a>' );
  13.     }
  14.  
  15.     message.setBodyAsHTML( finalHTML );
  16. }
  17.  

  이 파일을 적당한 파일이름('CPAN.js') 로 저장해서 ~/Library/Application Support/Colloquy/Plugins/ 아래에 놓아둡니다. 그리고 IRC 상에서 /reload plugin 을 쳐서.. 플러그인을 불러옵니다. 


  위처럼 CPAN Module을 때렸을 때는 저렇게 Link 로 표시되며, 해당 링크를 누르면 브라우저에서 저 모듈 페이지가 열리게 되는 것입니다. 물론 제 Client 에서만 저런 HTML 형식으로 표시되기때문에 상대방은 제가 뭔 일을 하는 지 모르는 반응을 보이게 되는 것이죠.
  아, 다행스럽게도 Colloquy 는 ::이 들어간 것을 HTTP URL 링크로 처리하도록 정규표현을 걸어두었기 때문에 위의 JavaScript 소스와 같이 간단하게 모듈이름을 뽑아 올 수 있었습니다. 
  Windows 의 IRC 클라이언트 중에도 전용 스크립트를 사용해서 저렇게 플러그인을 쓸 수 있는 것이 있는 걸로 알고 있습니다. 많은 분들이 클라이언트 프로그램에서 플러그인을 사용하는 것을 봐왔고, 때로는 악질적인 행동으로 방 분위기를 더럽히기도 하죠.
  차후에 시간이 나면  여러가지 편리한 플러그인을 만들어서 공개해보고 싶네요. 
  Mac 을 쓰시며 IRC 를 애용하는 분이 계시면 꼭 한번 해보라고 권해드리고 싶습니다.
신고
IT/Mac 2009.01.24 23:53

[ Mac ] Things : 모든 생각을 쏟아내게 해주는 GTD App


 제가 Mac 에서 빼놓고 쓰지 않는 App 가 있다면 Things 가 되겠습니다.
 하루하루 그 어떤 것이라도 뭔가 해야되겠다, 할 필요가 있겠다 라는 것들은 모조리 이곳에다가 쏟아냅니다. 
 그리고 오늘 해야할 것이 있다면 그 중에서 몇개를 뽑아서 Today 에 가져다 놓고 전력으로 해치웁니다.

 저도 아직 GTD 에 대한 자세한 개념은 잡혀있지 않지만, 제가 하고 있는 행위가 GTD 라면, 이 GTD 에 가장 최적화된 툴이 있다면 그것은 Things 가 아닐까 생각이 됩니다. 하지만 Mac 에서만 쓸 수 있다면 그것은 상당히 제한적일 것입니다. 출퇴근 시간, 취침전... 화장실... Mac 과 함께 할 수 없는 여러 시간들을 어떻게 처리하느냐, 그것을 위해서 Things iPhone App가 존재합니다.

 Things iPhone App 로 Mac 을 꺼낼 수 없는 장소에서는 손쉽게 등록할 수 있고, 이런 내용들은 무선랜 환경에서 Mac의 Things 와 Sync 를 통해서 서로간의 변경된 Task 들을 일치시킬 수 있습니다.


 요근래까지는 계속해서 BETA 에 머물러 있던 Things 는 최근 1.0 버젼을 내놓고 계속해서 업데이트를 계속하더니 드디어 라이센스 코드를 입력하라는 통보를 보내게 되었고... 꼭 필요한 어플이었으니 결국은 지갑속의 카드를 꺼내게 만들었습니다.

 엔화로는 4820엔, 패밀리 팩으로는 7233엔이라는 군요. 패밀리팩은 5명의 유저분의 라이센스 코드를 가지고 있습니다. 제가 4820엔을 내고 카드를 질렀냐면 그것도 아닙니다. 그렇다고 패밀리팩으로 쓸데없이 지를 일도 없구요. 그렇다고 과자를 낼름 먹어서 어떻게 해본 것도 아닙니다. 일말의 양심과 1500엔을 바꿔먹고는 Education Store 에서 학생용 라이센스로 3373엔에 구입했습니다.



신고
TOTAL 462,282 TODAY 32

티스토리 툴바