블로그 이미지
JEEN

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

Rss feed Tistory
IT/Tips 2009.11.18 12:33

[ DeliciousLibrary2 ] BookMarklet++

2009/10/09 - [IT/Mac] - [ Delicious Library 2 ] Loves Perl! 안되면 되게 하라!
2009/10/10 - [IT/Perl] - [ Perl & Delicious Library 2 ] 한국책을 스캔하려고 해봐야 팔만 아프다!
2009/10/11 - [IT/Perl] - [ Perl & Delicious Library 2 ] 그럼 이제 웹 브라우저에서 DL2 로!
2009/11/17 - [IT/Mac] - [ Perl & DeliciousLibrary2 ] with Bookmarklet

 어제, 근 한달만에 불타올랐던 DL2 작업을 다시 시작하면서 Bookmarklet 을 통해서 DL2 에 등록하는 방법을 써봤는데.. 이게 나름 먹히지 않을까 하는 생각이 들었습니다. :-)
  그래서 어제 Aladdin 을 시작으로, 방금 YES24, 교보문고, 강컴 .. 제가 그나마 들락거린 적이 있는 곳을 대상으로 테스트한 결과 그리 어렵지 않게 ISBN 을 뽑아낼 수 있었습니다.
  아.. 물론 한국에서 발행된 서적만 가능합니다. 그리고 Aladdin 의 DB 에 들어있는 책이라야 가능하겠죠?
 
2009/11/17 - [IT/Mac] - [ Perl & DeliciousLibrary2 ] with Bookmarklet

  를 참고로 서버를 띄우시고, 아래의 북마클릿을 브라우저의 북마크란에 등록하셔서 사용하시면 됩니다.
 
  Insert Into DL2

  혹여나 책이 등록되지 않는 경우가 있다면 저에게 알려주시면 조치하도록 하겠습니다.
  Delicious Library 2 를 가진 모든 분에게 즐거운 책생활을 즐기는 데 조금이나마 도움이 되었으면 합니다.
신고
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 를 애용하는 분이 계시면 꼭 한번 해보라고 권해드리고 싶습니다.
신고
TOTAL 473,555 TODAY 14

티스토리 툴바