블로그 이미지
JEEN

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

Rss feed Tistory
Project 2010.08.30 18:33

[ Instapaper/한글 ] Instapaper 프록시 재시동

2010/04/27 - [Project] - [ Instapaper ] Filstapaper Changes Log
2010/04/14 - [IT/Perl] - [ Filstapaper ] 몇가지의 추가수정사항
2010/04/05 - [IT/Perl] - [ Filstapaper/Instapaper ] 자잘한 추가 수정
2010/04/01 - [IT] - [ Filstapaper ] Instapaper Proxy 서비스의 자잘한 수정...
2010/03/28 - [IT/Perl] - 한국사람들을 위한 Instapaper Proxy - Filstapaper
2010/03/26 - [IT] - Instapaper 에 대한 이야기 - 안되면 고치면 되지 뭐..

  지난주 쯤에 @coiy 님께서, 그리고 오늘 @waejin 님께서 "안된다" 라는 말씀을 해주셔서...
  아.. 써주시는 분들이 계시구나 해서.. 급하게 서버를 준비해서 프록시서버를 띄웠습니다.
  (= 띄우게 했습니다. @y0ngbin++)

  여태껏 서비스가 다운된 이유가 6월 중순경 제가 이사를 함으로 집에 있는 서버가 꺼지고, 그리고 지금까지 오게되었다 라는 것이 원인입니다. 아무런 공지도 없이 서비스가 다운됨에 죄송합니다.

  기존 http://util.myemy.com/ 에서 http://app.perl.kr 이라는 그럴듯한 도메인에 올라타게 되었습니다.
  

  그리고 네이버 블로그를 사용하시는 박노자님의 블로그에서 Read Later 를 했을 때 이렇게 app.perl.kr 에서 중간에 필터링을 해주게 됩니다. (원래라면 iframe 을 사용한 사이트의 글들은 Instapaper 에서 읽을 수 없습니다)

  아무튼 app.perl.kr 도메인을 제공해주신 @kiseok7 님과 서버 준비 및 세팅을 해준 @y0ngbin (a.k.a. 용사장) 과 피드백을 주신 @waejin , @coiy 님께 감사하며 죄송하고 송구합니다.

  Instapaper Proxy (Filstapaper) 

신고
Project 2010.05.06 11:49

[ DL2 Server ] 이제 그만

2009/11/18 - [IT/Tips] - [ DeliciousLibrary2 ] BookMarklet++
2009/11/17 - [IT/Mac] - [ Perl & DeliciousLibrary2 ] with Bookmarklet

 작년말까지 좀 이래저래 손볼 곳이 있었지만.. 그대로 방치하고.. 이렇게 반년이 넘게 흘렀지만...
 딜리셔스 라이브러리를 만든 딜리셔스 몬스터 쪽도 특별히 움직임을 보이는 것도 아니고... (여러차례 외부 데이터 입력 통로를 만들어 달라는 요청과 질의에 무성의한 답변 등등)
 이런 데이터를 언제까지 담아두고 남에게 공개하기 어려운 형태로 놔두는 건 아무래도 아깝다고 생각을 하곤 했습니다. 
  그래서 유저스토리북이나 Google Books 로 데이터를 옮길까 생각을 함과 동시에,
  더이상 진전이 없는 작업을 그만하려고 합니다. 
  
  사실 몇가지 자잘한 수정내용은 있고, 통합해보고 싶은 기능도 여러가지 있었지만...
  TODO 정리하는 겸해서 깔끔하게 잊어버리기로 생각했습니다. 

  그래서 앞으로는 Delicious Library 2 Server 관련 업데이트는 없을 것입니다.
  몇몇 사용해주신 여러분께는 감사의 말씀을 드립니다. 
신고
Project 2010.04.27 20:00

[ Instapaper ] Filstapaper Changes Log

  iPad 로 Instapaper 를 즐기고 있는 시간이 늘어만 가고 있는 @JEEN_LEE 입니다.

  꾸준히 관리되고 있다는 것을 강조하기 위해 정기적으로 이렇게 계속 포스팅하게 되는군요.

* 추가 지원 사이트 ( 2010-04-14 ~ 2010-04-26 )
 - 전자신문 ( http://www.etnews.co.kr )
 - 블로그코리아 ( http://blogit.blogkorea.net )
 - 100인닷컴( http://www.100in.com )
 - 인천일보( http://news.itimes.co.kr ) - reported by @waejin

  위의 블로그코리아, 100인닷컴은 뭐 블로고스피어 개념의 사이트라서 그냥 js 레벨에서 추가했고, 
  나머지는 charset 이 지맘대로이거나 한 경우입니다.

  몇가지 euc-kr 사이트를 보면서 느낀 것인데 꼭 euc-kr 이라고 깨진다는 것은 아닌 것 같습니다. HTML 을 좀 지맘대로 그려놨다거나 하는 경우가 예외상황의 대부분인 것 같았습니다.
  인천일보의 경우에는 "ks_c_5601-1987" 이라는 charset 을 사용하고 있었구요.
  (ytn 도 아마 똑같은 charset 이었던 걸로 기억합니다)

  이렇게 유지해나가고 보면 왠지 중간중간에 집계한다거나 하는 뻘짓을 시도해봄직도 한데...
  사실 뭐 귀찮기도 하고... 본연의 기능에만 충실하자는 입장이라.. :-)

  깨지는 사이트나 이런 것도 해봐라 라고 말씀 건네주신다면야 감사하겠습니다.

  Filstapaper 의 자세한 내용은 


  을 참고하세요. ( 하루 리퀘스트 수가 100개가 넘는다면 전용 도메인을 생각해보겠습니다 =3==3)
신고
Project 2010.04.07 23:59

[ Feedback ] FeedBack 폼을 달아봤습니다 (UserVoice)

   회사에서 어떤 서비스를 만들고 유저에게 '어떻게 했으면 좋겠습니까?' 라고 묻는다...
  이 얼마나 열린 개발인가.. 유저들이 의견을 주면서 그것을 개발자는 신속하게 개발하고, 유저가 코드 예제를 주면서 이런 게 있다... 유저가 개발을 한다.. 우왕 이건 개발 2.0 ...... 은 훼이크고..

  제가 본 몇몇의 회사에서 유저에게 "이 서비스를 어떻게 할까요?" 비슷한 질문을 던지는 걸 본 적 있습니다. 대개 잘 안팔리는 서비스가 그렇습니다. 확실히 그런 거 내놓고 성공하는 서비스 본 적이 없습니다. 그 서비스를 기획하는 사람이 앞으로 이 서비스를 어떻게 만들어나가겠다는 비젼도 없다는 거죠.

  작년에 고객에게 "버그를 알려주면 선물을 준다" 라는 자세로 어떤 이벤트를 한 곳이 있었습니다.
  이름만 대도 다 아는 그런 회사입니다. 아이리버요.
  사이트 리뉴얼하고서 유저에게 "버그를 발견해서 알려달라" 라는 자세를 가집니다. 보통이면 부끄러워할 마당에 이벤트를 열어 고객에게 혜택을 줬던 걸로 알고 있습니다. 아, 충격이었죠.

   회사차원의 서비스가 아니라면 괜찮은가?
  그것도 사실 아니기는 합니다만... 서비스에 따라서는 피드백이 반드시 필요한 경우가 있지요.
  셀 수 없을 정도로 많은 패턴을 처리해야 하는 경우가 특히 그렇지 않을까 생각합니다.

  그래서 붙여봤습니다. UserVoice 라는 서비스를 이용해서...
 
   http://util.myemy.com/
   http://uservoice.com

  유저에게 있어서 접근할 수 있는 창구가 다양한 것은 좋은 지 모르겠습니다.
  (사실 저 좋으라고 만든 것이지만요...)
신고
Project 2008.04.01 21:41

[PERL] 급조 #5 IRC Channel Log를 수집...해서 웹에다가 뿌리자!

출근시간이 플렉시블한 관계로 인해서...

출근시간이면 제 귀가 가렵기 그지 없습니다.

제가 irc.hanirc.org #perl 에 들어갔을 때는 귀가 괜찮아 졌습니다.

이유는 제가 #perl 에 들어갔을 때는 험담이 끝났기 때문이라고 생각합니다.

라는 것은 훼이크이고...

예~전부터 생각했지만... 중간에 들어가면 대화의 맥을 못잡을 때도 있고,

중요한 정보나 Tip등을 본채로 그냥 넘겨버리기도 하고는 하거든요.

이미 회사에서는 사내 IRC의 로그를 남겨서 수시로 확인할 수 있게 만들어 뒀습니다.

회사의 주요 커뮤니케이션이 IRC를 통해서 이기도 하거든요. MSN같은 경우도 사용은 하는데...

1:1은 아무래도 무거운 분위기이며, 업무적으로도 증인이 없으니(프로젝트 중에서 수시로 말이 바뀌니...)

증인이 될 수 있고, 증거가 남게 되는 IRC를 사용하게 되는 것이죠.

어떻게 되면 공개처형같이 보일 수도 있겠지만 말이죠...

우선 서두는 이정도로 하겠습니다. 물론 사용언어는 Perl 입니다.

Ruby나 Python, Java등의 이미 만들어진 것들도 있고... Perl 도 물론 있는 것으로 압니다.

IRC BOT말이죠. 걔중에는 다양한 기능을 지원하기도 하니... 좋기도 하죠.

뭐... 그리 필요한 것도 아니고 해서.. 일단은 그냥 만들기로 했습니다.

처음은 Net::IRC를 사용해봤는데... 접속이 불규칙하고... 기본적인 뼈대만 만들어져 있는 상태라서...

POE::Component::IRC 로 하기로 했습니다. CPAN Rating 도 만점이니까... :-)

POE::Component::IRC 자체는 플러그 인으로 Log를 남기는 기능이 있습니다.

POE::Component::IRC::Plugin::Logger 였었나... 근데 안쓰고 그냥 저질러 버리고는

현재 #perl 방에서 가동중입니다.

걸 웹에서 보게 하는 건... 이미 만들어 놓은 게 있기 때문에... 공개만 하면 되는데...

이상하게 외부에서 제 섭으로 80이 답이 없네요.. 흠... 초허접 뉴비인 저로써는 어케할 도리가 없이

일단 머리잡고 공부하면.. 답이 나오겠죠.

 http://www.myemy.com:13000/

 여기에서 #perl 의 히스토리 로그를 볼 수 있습니다.

 너무 이것저것 남으면 아니되니까... 로그에 담지 않게 필터링하는 것 붙이느라

 (aero++) 간단한 건데... Encode 때문에 너무 고생을 했네요.
 
SpringNote 연계라든가... Me2Day 연계라든가... MSN으로 간다던가... 네이트온으로 간다던가...

FaceBook으로 자동 포스트 하든가... RSS 를 발행하든가... 다양한(=잡다한) 것들을 생각중입니다.

뭐, 어케 되겠죠 뭐...


신고
IRC, Log, perl
Project 2008.03.31 19:34

[PERL] 급조 #4 Me2day API를 써서 Growl 로 통보받자! (미완성)

사용자 삽입 이미지

Me2day Growl을 이용한 통지


잠깐 숙고한 끝에 삽질한 결과가 대충 나온 듯 합니다.

생각해보면 me2day 도 RSS 를 제공하고 있는데... 내용을 보면 시간대가 GMT라서 그런지...

제대로 갱신될려면 12시간 시간 차가 있어서 이건 쓸 수 없나 생각을 하게 된다. 뭔가 방법이 있지 않나

싶은데 그런 거 생각하느니.. 그냥 Me2day API로 긁어오겠다고 생각하게 되었죠.

일단은 이전에 올렸던 2008/03/28 - [Project] - [PERL] 급조 #3 Me2Day Perl API 만들기 v2 - 셸에서 미투데이 글쓰기 에서 처럼 똑같은 인증절차를 거치게 됩니다.

 인증후에는 Me2day 친구 정보를 얻어오구요. 이 때 $ENV{HOME} ."/.me2day/"안에 관련 파일을 만들게 해놨습니다.

 이미지라든가, 닉이라든가, 업데이트 날짜 등의 정보는 YAML 로 보관하게 해놓구요.

 일단 Mac::Growl 로 삽질한 보람이 없기 때문에(인코딩 문제가...) growlnotify 로 돌리기로 했습니다.

 좀 징그러운 코드지만 ...  system("growlnotify blahblah") 이런 식으로요...

 나오는 것은  친구 이미지, 아이디, 내용 등이고...

 아직 안해놨지만 커멘트 등록 여부에 대해서도 통보하게 해놔야죠...

 매번 업데이트 될때마다 YAML 에 담긴 정보들을 갱신시켜 주고 말이죠.

 하다보니까 나중에 어떻게 고치지...;; 이런 생각을 해봤는데... 일단은 움직이는 것만 확인하고

올리는 성급한 포스팅입니다. 아마 이번주 중으로 나머지는 어케될 듯 하네요....

 일단 Mac 유저들은 Growl 로 통지 받으면 되는 거지만...

 Windows 유저들은 Snarl 이라는 것이 있다는 데 써보지 않아서 모르겠습니다.

  Snarl도 CPAN 모듈로 제공되고 있기때문에... 나중에 시간이 난다면 해보고 싶... 지는 않습니다.

 perldoc 번역도 쪼큼씩 해야되고, 이것도 조금 해야되고, 일도 좀 해야되고...

 읽고 싶은 책도 많고... 쿨럭.. 우힝...

사용자 삽입 이미지

그나저나 이미지 바꿔봤습니다.


신고
API, growl, mac, me2day, perl
Project 2008.03.28 21:01

[PERL] 급조 #3 Me2Day Perl API 만들기 v2 - 셸에서 미투데이 글쓰기


 어제 Shell에서 Me2Day 움직여 볼까 하던 것을 오늘 실행에 옮겼습니다.

 http://code.google.com/p/me2day-perl-api/


여기가 프로젝트 페이지이고,

svn checkout http://me2day-perl-api.googlecode.com/svn/trunk/ me2day-perl-api-read-only

이걸로 checkout 하시면 되겠습니다.

뭐 이딴식으로 만들어 놨어.. 하시면... 플젝 같이 해주세요 :-)

사용자 삽입 이미지

먼저 인증샷... 인증을 합니다.


Me2day ID는 현재 자신의 ID를 입력하시구요.
사용자키는 http://me2day.net/[미투데이아이디]/settings/basic 에 가셔서 밑에 보시면
사용자키가 보이실 겁니다. 이걸 넣으시면 됩니다. 실패하면 당연히 튕기구요...

사용자 삽입 이미지

인증이 끝나면 이런 사용 예가 나타납니다.


인증은 한번이면 됩니다. 인증에 성공하면 ID와 사용자키는 $ENV{HOME}의 ".me2day_info"라는
파일에 들어가게 되고... 매번 실행시에 자동으로 인증을 하게 됩니다.

사용자 삽입 이미지

좀 잦은 삽질 후.. 드디어 셸에서 작동


 일단 이렇게 테스트한다고 뻘짓한 흔적입니다.
 사용법은 위에서도 말하고 있었지만 다시 한번 더...
 me2p.pl 본문  @:태그 태그 태그 태그
입니다.
 여기서 주의하실 점은 "링크"를 쌔우는데..

 me2p.pl "사이트":URL @:태그 태그 태그 태그
하시면 아니됩니다... 셸의 특성상 쌍따옴표는 특별취급하기 때문이죠.

 me2p.pl ¥"사이트¥":URL  @:태그 태그 태그 태그
번거로우시겠지만.. 이와같은 방법으로 일단은 해주시면 되겠습니다. 내키지 않는다면 피드백을 주세요.
혹은... 직접 바꿔주시면 되겠습니다.

그외에는 뭐.. 제가 미투데이를 그닥 자주 사용하지 않아서 잘 모르겠네요. 제가 아는 기능에 대해서는 일단

작동합니다. 일단은 "글쓰기"만 되는 것이라서요 :-) 나중에 읽기 라든가 만들어볼까 하지만...

이미지가 떠오르지 않는군요.

태그의 경우는 @: 다음에 오면 무조건 태그로 인식합니다. 스페이스로 태그를 나눌 수 있습니다.

잦은 이용부탁드리겠습니다 :-)
신고
Project 2008.03.27 20:16

[PERL] 급조 #2 Me2Day Perl API 만들기...

오늘의 떡밥은 pung96님께서 me2day 친구 신청하신 것으로 시작되었습니다.

떡밥 전문



쿨럭.. 그리고 Twitter는  TwitterPOD같은 멋들어진 어플이 있는데 me2day는 없을까? 라는 질문에...

그딴 거 없다는 이야기를 듣고 실망하며... "그래서 제가 Twitter만 한다니까요" 라는 혼잣말을 덧붙인 뒤에...

aero 님께서 "그럼 만들어라"라고 하심에... pung96님께서 지원사격하고, 하얀_고양이님께서 관망하던 차에..

원래는 하얀_고양이님께 외주 주겠다라고 했었는데... 그냥 삘 받은 김에 만들어보기로 했습니다.

사용자 삽입 이미지

http://codian.springnote.com/pages/425517


(aero님께서 perl API만 없다고....)

일단 기본 토대는 aero 님의 Springnote API 모듈이 있었으니까... 쉽고 쉬운 작업이었습니다.

다만 코드가 좀 아름답지 못할 뿐이었지만...

BEAUTIFUL CODE 상세보기
찰스 페졸드 지음 | 한빛미디어 펴냄
내 생애 가장 아름다운 코드! 38인의 코디 명장이 말하는 『BEAUTIFUL CODE』. 전세계의 유명한 프로그래머 38인으로부터 받은 글을 엄선하여 총33가지의 챕터로 구성했다. 프로그래머들이 소프트웨어 프로젝트 아키텍처를 구축하면서 쌓게 된 프로그래밍 노하우가 고스란히 녹아 있다. 이 책은 탁월한 소프트웨어 설계자로 살아가는 프로그래머들의 눈을 통해 세상을 바라볼 수 있도록 도와준다. 느리지만 우아하며 감동적인

전혀 아름답지 못한 코드가 되어버렸다.

일단은 기본적으로 Me2Day API Spec은 http://codian.springnote.com/pages 에 정의되어 있으니

간단한 작업으로 끝냈다(라는 것은 어차피 Me2Day 사용한 적이 없고, 자세히 모르니까 하는 뻘소리)

사용자 삽입 이미지

이런 식으로 커멘트와 포스트 각각 쓰기가 가능하게 되었다는 것...

일단 Source Repository는 http://code.google.com/p/me2day-perl-api/  에 등록해놨지만...

http://code.google.com/p/me2day-api/
에 자바랑 루비 버젼이 있는 걸 봐서...

이쪽에도 신청해놓을 까 합니다. reject 되면 ㅜ_ㅜ

일단 대충 정돈되고 나면... Shell에서도 가지고 놀 수 있게 되면 왠지 재미있을 지도~ 라고 생각합니다.

Web::Scraper가 셸 명령어를 지원하는 것 처럼...

:^) 그리고 때가 되면... CPAN에도 올려보고 싶...

하악... 아무튼 오늘도 떡밥에 물려서 이렇게 하루를 보내는 군요.


신고
Project 2008.03.26 19:47

[PERL] 급조 Access Log에서 검색 키워드만 뽑아서 샥샥샥...


 관리하고 있는 어느 사이트의 검색 기능을 손 봐야될 필요성이 있어서...

 일단은 어떤 걸로 검색되고 있는지 알아보려고 하던 차에...

 
사용자 삽입 이미지

떡밥 등장 : Apache Log


마침 #perl 방에서도 비슷한 떡밥이 돌아다니고 있었다.

사용자 삽입 이미지

Apache::ParseLog 쓸려고 했는데... L모님께서 "모듈씩이나..." 하는 바람에...


 싱싱하던 떡밥이 펄펄 날뛰고 있을 때 하려던 것이 시간이 지나고 지나고...
 
사용자 삽입 이미지

일단 access log는 뭐.. 이번달 분량만 해봤습니다.


 
use strict;
use warnings;
use Data::Dumper;
use Path::Class;

my $dir = Path::Class::dir("./");

my $data;
while(my $file = $dir->next) {
    next if $file->is_dir;
    next unless $file->basename =~ /^lighttpd/; # lighttpd.access_log.YYYY-mm-dd

    open my $fh, "<", $file or next;
    while(<$fh>) {
        if (/GET \/search\/\?(.*) HTTP\/1\.1/) { # 검색부분만 뽑아서
            my $url = $1;
            my @data = map { my @p = split /=/, $_; +{ name => $p[0], value => $p[1] } } split /\&/, $url;

            my $set;
            foreach my $blah (@data) {
                if ($blah->{name} eq 'keyword' && defined $blah->{value}) {
                    my $keyword = urldecode($blah->{value}); #URL_DECODE시키고...
                    $data->{$keyword}++;
                } # else blahblahblahblah... id 있음 뭐하고... 딴 거 있음 뭐하고...
            }
        }
    }
    print STDERR $file->basename." is white-catted\n";  #White-Catted 시켜서(의미없음)
}

foreach my $key (sort { $data->{$b} <=> $data->{$a} } keys %{ $data }) { # 정렬해서...
    print $key."\t".$data->{$key}."\n";   # 찍어바르기...
}

sub urldecode {
    my $value = shift;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/seg;
    $value;
}

이렇게 깨작거렸다. 결과는 제대로 나오는 데... 인코드를 보니까 BINARY로 되어있었지요.

아마 "binmode(STDOUT, ":utf8")" 을 넣으면 UTF-8으로 결과가 나올 겁니다.

걍 귀찮아서 셸에서 "nkf --utf-8 [FILE]" 해서 키워드 중에 일본어등을 보이게 해버렸습니다.

이런 거 하면서... 문제라고 느끼는 게 뭐냐면...

예전에 이런거 해놓고서는 스크립트 어디있는 지 까먹어서 다시 만들고 있다는 것입니다.

그래서 코드는 제대로 된 관리가 필요하다는 것을 새삼 깨닫고 있습니다. (그래봐야 나중에는 뭐...)
신고
TOTAL 460,419 TODAY 12

티스토리 툴바