사용자 삽입 이미지

  일본의 격월 잡지로 WEB+DB PRESS 라는 IT잡지가 있습니다.
  이름에서도 알 수 있듯이 WEB과 DB 기술에 대한 최근 이슈를 말해주고,
  어떤 웹 서비스등의 구축 노하우같은 것을 공개하고는 하죠.

  일본에 계신 다른 분들은 어떻게 생각하실 지는 모르겠지만... 일본 내의 IT 잡지 중에서 최고는 이것이 아닐까 감히 생각해봅니다.

  일단 주로 오픈소스 계열을 다룹니다. 그리고 웹관련이다보니까, 웹개발언어인 Perl, Ruby, PHP 등의 언어를 주로 다루고 있는데요. 거기에 물론 Action Script 같은 곳도 있기는 합니다. Java Script 도 있구요.

  웹 서비스 보안이라는 측면에서도 알기쉽게 만화로 설명해놓기도 하죠.
  필진의 대부분은 일본의 유명한 IT 관련 블로거들입니다. 대표적으로 Dan Kogai 씨같은 분이 있죠.
  거기에 Perl 에 대해서는 2개월 간에 가장 큰 이슈였던 내용에 대해서는 Hatena 라는 일본 IT기업의 CTO 인 Naoya Ito 씨가 "Recent Perl World" 라는 섹션을 맡고 있습니다.

  솔직히 읽기 쉽습니다. 학생 때 한국에서 읽었던 마이크로소프트웨어 라는 잡지는 뭔가 내용은 있어보이는 데 상당히 뜬구름 잡는 얘기로만 보이기도 하고... 학생레벨에서는 좀 맞지 않는 것은 아닌가라고 생각도 했었습니다. 거기에 내용도 상당수 엔터프라이즈 환경과 응용 프로그래밍에 대한 내용들이 주를 이루고 있었기 때문에 실제로 만져보고 다루어보는 것에 어려움이 있었습니다. 즉, 그만한 레벨이 있어야 했다는 것이죠.

  하지만 WEB+DB PRESS 는 상세한 설명과 함께 코드를 다루는 내용이라면 튜토리얼 위주입니다. 실제 가벼운 이해를 바탕으로 간단하게 접해보며 이해를 도모할 수 있는 내용입니다.

  이번호에서는 "휴대폰 서비스 개발"에 대한 여러 이야기와 함께, MySQL 5.1 에 대한 상세한 내용들.
  그리고 OpenID 2.0 에 대한 전반적인 내용.
  iKnow 라는 근래 인기를 끌고 있는 영어학습 SNS 서비스의 구축 노하우 같은 것이 공개되었습니다.
 
  아, 참고로 이 잡지를 펴내는 기술평론사(http://www.gihyo.jp) 라는 출판사는 이런 실전적인 내용의 책들을 두루 펴내고 있더랍니다. 그리고 웹사이트에서는 자잘한 기술 입문기사들도 실려 있구요. 일본어가 가능하시면 한번 둘러보는 것도 좋을 듯 합니다. 아니면 번역사이트라도...

  이상이 WEB+DB PRESS 에 대한 간단한 소개입니다. 그러다보니 상대적으로 마이크로소프트웨어를 까지는 않았나 생각은 들지만... 그래도 한국에 갈때면 항상 찾아보는 잡지입니다. :-)

  혹시 일본에 계신 분들 중에서 IT잡지를 구독하신 다면 어떤 것을 선택하시고, 왜 그 잡지를 선택하셨나요?
  그리고 추천해주실 것이 있으면 추천도 부탁드리겠습니다.
  물론 IT서적두요 :-)
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by JEEN
사용자 삽입 이미지

 저도 슬슬 CPAN 모듈을 올려야하지 않을 까 하는 생각이 요즘 들어서 이래저래 찾아봐도 꺼리가 별로 보이지 않았습니다.

 Me2day API도 업로드 할 수 있지만.. 그대로 올리기는 왠지 좀 그렇고...
 Daum 이나 Naver API 도 있기는 하지만... 마땅히 하고 싶은 생각도 안들고...

 그래서 IRC 에서 amorette 님께서 한글 입력이 안된다는 이야기와 함께 LuzLuna 님께서 만들어라! 라는 이야기가 나와서 한번 손을 대 보았습니다.

 이른바 TDD DDD(DDuckbob-Driven Development) ... 떡밥주도개발 방식입니다.

 일단 CPAN에 이와 비슷한 모듈이 있는 가를 우선 확인해 보았습니다.

 Lingua::KO::(.+) 부분을 집중적으로 찾아봤지만.. 역시 없더군요.
 
 사실 예전에 PHPSCHOOL의 iamseeker 님께서 Java Script 도 구현해 놓은 게 있더군요. 그것을 참고로 해서 뚝딱 만들었습니다.

 CPAN 모듈을 만드는 것에 대한 한글 문서는 어디를 찾아봐도 나오지 않으니 perldoc(perlnewpod) 도 이번기회에 번역해버렸구요(perldoc-kr 플젝).

 뭐 대강 준비를 마쳤습니다.

 1. 모듈을 만들기 위한 스켈레톤을 생성합니다.

  : 이것은 h2xs 로 가능한데요. 사실 h2xs 는 C Header File 을 XS 모듈로 하기 위한 유틸리티인데요 Perl 모듈용 스켈레톤으로 쓰인다고 하네요.

사용자 삽입 이미지

 -A 옵션은 Autoloader 를 생략하고, -X 옵션은 XS를 생략합니다. 어제 shibuya.pm tech talk 에서 XS 에 대한 공포감이 있기도 했고... 사실 XS 를 사용할 필요가 없는 100% Perl Code 만으로 만들테니까요. 그리고 -n 옵션으로 모듈이름을 넣어줍니다.
 아.. -b 옵션은 이 모듈을 돌리기 위한 Perl Version 을 제한합니다. 그러니 이 때는 5.8.8 이상에서만 돌릴 수 있다고 제한하는 겁니다. 일단 이름은 MyTest::Module 로 지정했습니다.

사용자 삽입 이미지

 MyTest-Module 이라는 디렉토리에 가면 이와 같은 파일/디렉토리 구성이 보입니다.

 Changes 는 이 모듈의 해당 버젼에서 어떤 것이 바뀌었나 하는 Change Log 같은 것을 기술합니다.
 README 는 모듈 사용에 관한 당부나 주의사항, 설치방법등을 기술하구요.
 MANIFEST 는 배포할 파일들을 지정해 줍니다.
 Makefile.PL 을 이용해서는 Makefile 을 만들고. make test 를 통해서 테스트를 make install 을 통해서 설치를 할 수 있으며, make dist 를 통해서 배포파일을 지정해줄 수 있습니다.

 t/ 의 아래에는 Test 코드들을 놓구요.
 lib/ 아래에는 모듈을 구성하는 pm 파일들이 놓여집니다. 여기가 바로 코드를 넣을 부분이죠.

사용자 삽입 이미지

 lib/MyTest/Module.pm 을 열면 이와같은 코드들이 뼈대를 구성하고 있습니다.
 아까전에 -b 옵션으로 정해준 Perl version 에 관한 제약은 여기에 들어갑니다. (use perl 5.008008)
 그리고 기본적으로 Exporter 를 통해서 필요한 subroutine 들을 export 할 수도 있습니다.
사용자 삽입 이미지

 그리고 그 아래에는 이 모듈에 대한 설명이나 AUTHOR 정보, 라이센스 정보를 담는 POD 가 있습니다. 만약 POD에 대해 모르신다면 perldoc(perlpod) 를 참조하시면 됩니다(perldoc-kr, doc.perl.kr 에서 찾으실 수 있습니다).

  일단 코드는 간단하게 이렇게 넣어봤습니다.

our @EXPORT = qw(blah);

sub blah {
  length(shift);
}

  blah 에 적당한 인수를 넣어 호출하면 길이를 반환하는 예제입니다. 물론 아무짝에도 쓸모없습니다.
  그리고 @EXPORT 할 것에 blah 를 추가해줍니다.

사용자 삽입 이미지

  'perl Makefile.PL' 을 하면...
사용자 삽입 이미지
  Makefile 이라는 파일이 생기게 되구요.
  그리고 모듈의 test 를 실행합니다. 테스트 코드는 t/MyTest-Module.t 파일에 기본적으로 쓰여진 코드입니다.

사용자 삽입 이미지
  그리고 make install 을 통해서 Perl 모듈의 기본 저장소에 이 모듈이 설치됩니다.
  그러면 어디서든지 'use MyTest::Module' 을 통해서 이 모듈을 사용할 수 있게 됩니다.

사용자 삽입 이미지
  그리고 'make dist' 를 통해서 CPAN 업로드 등의 배포를 위한 tarball 파일이 만들어지게 됩니다. 이 파일을 CPAN이나 아니면 다른 사람에게 배포할 때 쓰면 되겠죠? (물론 SVN 같은 것을 사용하는 것이 요즘 추세이기는 합니다만...)
 
사용자 삽입 이미지
  그래서 이처럼 MyTest::Module 모듈을 부르고 blah 를 호출해서 결괄르 얻었습니다. 결과는 12가 나오네요.

 이런식으로 간단하게 CPAN 모듈을 만들고, 테스트하고, 배포할 수 있습니다.
어때요? 참 쉽죠?

 그렇지만 제대로  된 테스트 코드도 쓰지 않았고, h2xs 로 생성되는 스켈레톤은 기본적으로 낡은 방식의 Makefile.PL을 사용하고 있습니다(use ExtUtils::MakeMaker).

  이 부분에 대해서는 다음에 천천히 설명하도록 하겠습니다. :-)
이올린에 북마크하기(0) 이올린에 추천하기(0)

'IT > Perl' 카테고리의 다른 글

[ Perl ] CPAN 모듈 만들기!! #2  (0) 2008/07/04
[ Perl ] CPAN 모듈 만들기!! #1  (0) 2008/06/26
[ Perl ] Shibuya.pm Tech Talk #9 XS Nite 갔다왔습니다.  (0) 2008/06/25
[ Perl ] Test 이야기 #1  (0) 2008/06/24
Posted by JEEN

 1년만에 Shibuya.pm Tech Talk 에 다녀왔습니다. 작년과는 달리 이번에는 주제를 XS 에 한정해놓았기 때문에 여러모로 까다로운 시간이었습니다.

 2008.06.25. 18:30.
 Shibuya.pm Tech Talk #9 XS Nite가 시작되었습니다.
 
 "はじめてのXS" 라는 주제로 XS 가 무엇이냐는 얘기로 시작했습니다. 물론 XS라는 것이 무엇인지만 알고 어떻게 쓰는 지는 전혀 모르기 때문에 일단 알듯 말듯한 느낌으로 들어나갔습니다.
  XS 코드는 C 라이브러리를 사용하기 위해, Perl 코드의 퍼포먼스가 맘에 들지 않는다면 퍼포먼스를 높이기 위해서 XS를 선택할 수 있다고 합니다. 그리고 좀더 Internal 한 Perl 을 다루기 위해서 라고 하네요.
  스피커인 hirose31씨는  ganglia 라는 시스템 모니터링 툴을 만들고 XS를 사용해서 효과를 봤다고 합니다. 정작 그러기 전에 XS에 대해서 아무것도 몰랐기에 perlxs, perlxstut, perlguts, perlapi 등의 perldoc 을 직접 보고 알아나가면서 했다고 하네요. 아무튼 일단 XS에 감만 잡은 시간이었습니다. (저도 내용은 모조리 까먹어서 역시 XS 문서를 번역해야되겠다 라고 생각하고는 했습니다)

 그 다음은 Daisuke Maki 씨의 "Perl 5 Internals" 에 대한 이야기였습니다. a3r0 님께서 근래에 빠져계신 Perl5 Internal 에 관련된 내용이었습니다. 역시 난해하고, 제 레벨이 너무 낮음에 절망하는 시간이었습니다.
  SV, AV, HV, GV 같은 XS 의 값 유형... 그리고 그에 대한 상세한 내용에 대해서 훑고 가는 시간이었습니다.
  Perl Code 를 예로 두고, 이럴 때 Perl 은 Internal 에서 어떻게 움직이느냐 하는 얘기가 주를 이루었습니다. 그리고 이런 사항을 확인하려면 Devel::Peek 를 사용하라는 얘기였습니다.

  쉬는 시간에 D.Maki 씨는 Chumby 에 XMPP 를 이용해서 그라비아 아이돌 화상을 실시간으로 전송시키는 그런 가젯을 선보였는데요. 다음은 XMPP를 한번 파보고 싶다는 그런 계기가 되었다고 할까요? 물론 Chumby 도 갖고 싶다는 그런 생각도 하게 되었습니다.

  쉬는 시간이 끝나고 Inside Ruby.pm 이라는 세션이 시작되었습니다. XS에 대한 기본 이해없이는 전혀 이해할 수 없는 이야기였습니다. 그 다음의 세션인 PerlMachine 도 마찬가지였었습니다.
  이렇게 모르고 멍하니 있는 시간이 부끄럽고 더 부끄러운 사실은 그들이 현역 대학생이라는 것이죠. 난 저 나이 때 무엇을 하고 있었나 하고 지나간 세월을 후회했습니다. 

  그리고 그 뒤에 Lightning Talk 가 있었습니다만... 역시나 대부분 XS 이해없이는 다른 행성이야기였습니다. 그래서 생략하겠습니다. :-(


  정말 세상은 넓고, 능력있는 사람들은 많습니다. 솔직히 많이 부럽습니다. 그 부러운 만큼의 공간이 제가 채워나가야할 부분이겠죠. 더군다나 시기가 시기인 만큼.. 어정쩡하게 생활하면 정말로 도태되어지겠구나 생각하게 되었습니다. 좀 더 자신을 채찍질할 수 있어야 되겠죠.
 
  세션이 끝나고, song 님께 塩ちんすごう라는 오키나와 특산품을 받았습니다. :-)
 
사용자 삽입 이미지

  잘 먹겠습니다. :-)

 세션 비디오가 공개되었네요.

 http://techtalk.jp/2008/06/shibuyapm9.html

 참고하시기 바랍니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by JEEN
사용자 삽입 이미지

 일단 이렇게 Perl에서의 Test 만을 다룬 책이 있습니다.
 그리고 최근에는 gihyo.jp 에서 tokuhirom 씨가 Happy Testing Perl 이라는 제목으로 연재를 하고 있더군요. 거기에 Advanced Perl Programming 에도 Testing 에 대해서 언급하고 있고...
 그래서 여기에서 다루고자 하는 내용은 위의 내용들을 바탕으로 하고자 합니다.(저작권은 괜찮나?)

  솔직히 제 자신도 그렇게 Perl로 Test Code 써본 기억이 별로 없습니다. 무엇을 테스트해야하느냐 하는 것을 일단 종잡을 수가 없었죠. 아련하게 이런 것을 하면 되겠지 하는 생각이 들 때가 있지만 항상 시간관계상 다른 일때문에 파묻혀 버리는 일이 허다합니다.

  아, 생각해보니까 Test Code 같은 것을 써본 적이 있습니다. 왠지 윤동주 시인의 시 한구절 처럼 ....
나는 무엇인지 그리워
이 많은 별빛이 내린 언덕 위에
내 이름자를 써 보고
흙으로 덮어 버리었습니다.


나는 무엇인지 헷갈려
이 많은 $%@가 있는 코드 위에
내 테스트 코드를 써 보고
rm -rf test.pl 해버렸습니다.

  ;;; (쿨럭...)

  일반적으로 Perl 에서의 Test Code 는 .t 라는 확장자를 가집니다(그냥 명시적으로).

  제가 예전에 아련하게 쓴 테스트 코드란...

open my $fh, $ARGV[0];
my $num = 0;
my $flag = 0;
while(<$fh>) {
    $num++;
    my @data = split /\t/, $_;
    my $item = scalar(@data);
    if ($item ne $flag) {
        $flag = $item;
        print "Line : $num . $flag\n";
    }
}

 이런 것이죠. 즉, 원하는 결과가 제대로 나오는 지 사전에 미리 확인해보는 것입니다.
 그러니 이런 것도 어떤 면에서는 테스트 코드가 되기도 합니다. 그런데 문제는 1회용이라고 생각하고 냉큼 지워버린 다는 것과... 결과의 참/거짓 여부는 작성자 본인만이 알고 있다는 것입니다. 그리고 그 판단도 일부분은 자기가 감수해야한다는 거죠.
 그리고 테스트 코드도 엄연한 결과물의 하나라는 것을 염두해둬야 합니다. 지우지 말고 적당한 네이밍 센스를 동원해서 적당한 이름자를 붙여줍니다. 그리고 테스트 코드를 별도로 보관해둡시다.
 
 Perl 에서는 Test를 위해서 Test::(.+) 의 수많은 모듈들이 존재합니다. 그에 대해서는 차차 알아가보도록 하겠습니다. :-) 일단 제대로 테스트 코드를 써보지 않은 놈이 테스트를 말하려니 우습기 그지 없군요.
 
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by JEEN
 일반적으로 웹 페이지를 스크래핑할 때 정규표현식에 대한 이해는 필수입니다.
 페이지를 싸그리 통채로 스크랩하는 거야 물론 간단하지만, 페이지의 일부분을 도려내고 싶을 때는 정규표현이 없으면 헤맬 수 밖에 없습니다.

 그리고 정규표현은 가독성이 단점입니다. 어중간한 정규표현이야 괜찮겠지만... 어떤 정규표현을 보고, 이게 뭐하는 것인지 알아내기란 참으로 힘든 일일 겁니다.

 use LWP::Simple;

my $content = get("http://www.daum.net");
my ($title) = $content =~ /<title>(.+)<\/title>/i;

print $title;
 < 어중간하게 쉬운 정규표현의 예 : 웹페이지의 제목 을 얻어내는 스크립트 >

use Web::Scraper;
use URI;
 
my $html = scraper {
  process 'title', title => 'TEXT';
}->scrape(URI->new("http://www.daum.net"));

print $html->{title};
 < 정규표현을 사용하지 않은 예 >

 이런 간단한 예제에서는 Web::Scraper 가 지는 것은 당연하겠죠. :-)
 차이가 있다면 문자코드입니다. 정규표현을 사용한 예제에서는 해당페이지에서 사용하고 있는 문자코드(다음의 경우에는 euc-kr)로 결과가 나오게 되지만, Web::Scraper 를 사용했을 때는 모든 결과는 반드시 UTF-8 으로 반환됩니다.
  늦었지만 이 쯤에서 Web::Scraper 에 대한 자세한 이야기.
  모듈의 저자는 일본의 유명한 Perl Hacker 인 Miyagawa 씨입니다. 전 작년 Shibuya.pm Tech Talk 에서 이 내용을 처음 접하고 꽤나 빠져들었던 기억이 납니다.
  이 모듈의 구성은 Ruby 의 Scrapi 라는 스크래핑 툴에서 차용했다고 합니다.

THIS MODULE IS IN ITS BETA QUALITY. THE API IS STOLEN FROM SCRAPI BUT MAY CHANGE IN THE FUTURE

  라고 Web::Scraper 페이지에 가면 나옵니다. 그리고 어떤 특별한 문서도 없이 Scrapi API 문서를 참조하시면 됩니다.

  아아.. 그러고 보니 이런 설명은 왠지 필요없을 지도...

  Web::Scraper 의 Slide에서 쉽게 볼 수 있습니다. 그쪽의 내용이 직관적이고 여러가지 예제들도 있으니 쉽게 쓸 수 있을 것입니다.

  그러고보니 Firefox 확장으로 WebScraper IDE 라는 것도 있으니, 보다 쉬운 웹 스크래핑이 가능하지 않을까 생각되네요.

  WebScraper IDE (for Firefox3)


  여기까지 보시고도 잘 모르시겠다는 분은 없겠죠?

  혹, 잘 모르시겠다면, 댓글이나 IRC에 들러주셔서 같이 한번 궁리해보았으면 합니다. :-)

  나중에 이를 적용한 예제를 몇가지 올려보도록 하겠습니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by JEEN

안녕하세요

perl 언어 관련 컨퍼런스인 "1회 Korean perl workshop" 을 준비중입니다.
최근 perlmania.or.kr과 서울 지역 펄 스터디 모임을 중심으로 펄 커뮤니티가

활성화 되면서 첫번째 perl 워크샵을 7월중에 열기로 의견을 모았습니다.


1. 워크샵 명칭 : "Korean Perl Workshop : Rising Perl"
2. 날짜 : 7월 19일(혹은 26일)
3. 장소 : 서울 모처
4. 대상 : perl에 관심이 있는 누구나.


이번 워크샵의 취지는 다음과 같습니다.

국제적으로 perl은 매우 많이 쓰이는 언어이고 해외 펄 커뮤니티 역시 갈수록

성장하고 뜨거워지고 있는 반면 한국의 펄과 펄 커뮤니티는 매우 저평가 되어있는 것이 사실입니다.
최근에 일본에서 열린 YAPC::Asia라는 펄 컨퍼런스만 보더라도 단일 언어를 주제로 500명에 달하는 국내외 참석자가 모였다고 합니다.
국내에서도 IT분야 뿐 아니라 생물공학이나, 언어학 등 여러 분야에서 perl이 쓰이고 있을 것입니다.
하지만 이렇게 perl을 사용하시는 분들이 모이고 의사소통할 수 있는 기회가 매우 적었던 것 같습니다.
그런 취지에서 이번 워크샵은 한국에서 perl에 관심을 가지신 분들이 모이셔서 서로 기술적인 교류도 하시고 한국 펄 커뮤니티를 한단계 올릴수 있는 기회를 갖고자 합니다.

이번 워크샵의 규모등이 아직 완전히 정해지지 않았기 때문에 몇가지 사전조사와 도움을 요청 하려합니다.
연락은 kpw2008@googlegroups.com 로 메일을 보내주시면 됩니다.

1. 참가를 희망하시는 분들은 미리 연락을 주셔서 참가 인원을 가늠할 수 있도록 도와주세요

2. 발표자 분들을 모집합니다. 주제는 perl관련 자유 주제이고 30분 가량의 일반 발표와 10분 정도의 라이트닝 토크가 있습니다.

3. 주변에 이번 워크샵에 관심이 있으실 분들에게 소식을 알려주세요

4. 워크샵 개최준비에 직접 참여 하기를 원하시거나 도움이나 조언을 주실 분들도 부담없이 연락주세요

5. 그 밖에 어떤 의견이나 아이디어, 혹은 격려의 글도 환영합니다.

감사합니다. 많은 참여 바라겠습니다.

=== 연락처 ===

현재 2개의 메일링 리스트가 운영중입니다.

1. 자유로운 의견개진이나 문의를 위해서 kpw2008@googlegroups.com로 메일을 보내시거나 http://groups.google.com/group/kpw2008를 방문하시면 됩니다.

2. 공개를 원치않는 문의사항이나 의견이 있으시면 perl-kr-conf-2008@googlegroups.com 로 메일을 보내시면됩니다.

3. 컨퍼런스 개최에 도움을 주실 분들은 http://groups.google.com/group/perl-kr-conf-2008에 가입해주세요.

그밖에 IRC에서도 도움을 얻으실 수 있습니다.( freenode.org t서버의 #perl-kr 채널과 hanirc.org 서버의 #perl)
http://doc.perl.kr/twiki/bin/view/Wiki/WebIRC 을 방문하시면 웹을 통해서 접속하실 수 있습니다.



----
 라고 합니다. 펄에 관심있으시면 한번 참여해 보는 것은 어떨까요?
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by JEEN
 지난달 IKC에 대한 간단한 소개 이후로 IRC봇 만들기에 관련된 여러 리퍼러를 확인했습니다. 거기에 요근래 봇관련 글에 댓글도 달리는 영광을 누리기도 했었습니다.(아아~ 관심 x2)
 봇 만들기글을 올리고 한 달동안의 경과에 대해서 말해보고자 합니다.

 1. 프로젝트 멤버

 - 오늘까지 6분이 프로젝트 멤버가 되셨습니다.(안습;;)
 - (물론 제가 억지로 집어넣으신 분도 계십니다;)
 - 요즈음 봇에 신경을 너무 많이 써주시는 분(yu**)도 계시고...
 - 달랑 한번 커밋 해주시고는 나몰라라하시는 분(Whi*****)도 계십니다 :-)
 - 나머지 분들은 바쁘신 와중에 관심(만) 보여주시고 계십니다. ;;

 2. 이슈
사용자 삽입 이미지
  - 대충 이런 이미지와 같이 스크립트의 버그나 미약한 기능들에 대해서는 이슈를 등록해놓습니다.
  - 어떤 사소한 것이라도 말이죠 :-)

 3. 리비젼
사용자 삽입 이미지
- 현재 리비젼은 34번까지 올라와 있습니다.
- 버그가 있던 없든, 일단 커밋하고 보자는 생각으로 마구잡이 커밋을 감행하고 있습니다.
- 아, 코드리뷰 할 때도 있습니다. 아래의 예제 처럼요.
   ex> 우왕.. 너무 좋아요. 수고하셨어요.
  (근데 코드얘기는 없...)
- 차후에 전체적인 코드리뷰만으로 포스팅할 생각을 하고 있습니다. :-)

4. 접속자
 * 국제
사용자 삽입 이미지
사용자 삽입 이미지

- Google Code 는 Google Analystic 을 지원하고 있습니다.
- 6개국에서 열혈한 관심을 보이고 있습니다. +_+ (물론 방문자 수는 캐안습입니다)

 * 국내
사용자 삽입 이미지
사용자 삽입 이미지

  - 이렇게 지역적으로 고른 분포를 보이고 있습니다. (물론 방문자수는 안습입니다)

5. 그 외 하고 싶은 이야기

  - 사실 언어를 공부할 때 가장 좋은 방법은, 남의 코드 베끼는  것이나 플젝에 참여하는 게 아닐까 생각합니다.
  - 그리고 이런 저런 새로운 모듈을 갖다 붙이든가, 자신이 하고 싶은 방향으로 뜯어고치든가, 여러가지 새로운 경향을 실험해볼 수 있는 장소가 되기도 하죠(yu** 님께서 Moose 실전용으로 커밋한 경우).
  - 뭐, 결국 하고 싶은 이야기는.. 와서 "왜 이렇게 코드가 개똥 같은 거야!"라고 말해줄 수 있는 사람이 필요합니다. 그리고 그 사람에게 배우고 싶다는 것이죠.
  - 한국형 CodeRepos 같은 것은 어떨까 막 생각하고 있습니다.
  - Perl 에 한정짓지 않고 마구잡이 커밋용 서버가 필요해질지도 모르겠어요
  - 결론은 perl-irc-bot 많은 참여를 부탁드립니다. :-)



이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by JEEN
사용자 삽입 이미지
 
 그러면 이제 자신이 원하는 페이지를 만들어 보도록 하겠습니다.

사용자 삽입 이미지

  ./script/oops_create.pl Controller Hello 로 Hello 라는 새로운 컨트롤러를 새로 생성하였습니다. 그리고 서버를 다시 시동하셔서(./script/oops_server.pl) 웹페이지를 확인해 봅니다.

사용자 삽입 이미지

  http://localhost:3000/hello 으로 접속해보면.. 'Matched Oops::Controller::Hello in Hello.' 라고 나옵니다. 이 말 그대로 Oops::Controller::Hello(프로젝트::컨트롤러::컨트롤) 에 매치했다는 것이겠죠. 그러면이렇게 해서 간단하게 페이지 생성을 할 수 있습니다. 이렇게 마치기 전에 Oops::Controller::Hello 가 어떻게 구성되는 지 알아볼까요? lib/Oops/Controller/Hello.pm 의 내용을 살펴봅니다.
package Oops::Controller::Hello;

use strict;
use warnings;
use base 'Catalyst::Controller';
                                                                                                                                                           
=head1 NAME                                                                                                                                                
                                                                                                                                                           
Oops::Controller::Hello - Catalyst Controller                                                                                                              
                                                                                                                                                           
=head1 DESCRIPTION                                                                                                                                         
                                                                                                                                                           
Catalyst Controller.                                                                                                                                       
                                                                                                                                                           
=head1 METHODS                                                                                                                                             
                                                                                                                                                           
=cut                                                                                                                                                       

                                                                                                                                                           
=head2 index                                                                                                                                               
                                                                                                                                                           
=cut                                                                                                                                                       

sub index : Private {
    my ( $self, $c ) = @_;

    $c->response->body('Matched Oops::Controller::Hello in Hello.');
}

 그러면 이와 같은 소스코드를 확인할 수 있으시겠으며.. 'Matched Oops...' 하는 부분은 바로 $c->reponse->body() 안의 문자열로 들어간 것임을 알 수 있습니다.  그렇다면 이 부분을 HTML로 적으면 된다는 것을 대충 짐작하셨을 겁니다.
 하지만 코드와 HTML을 섞어서 같이 쓰신다면... 처음에 허둥지둥 급하게 일을 할 때는 빨리 끝낼 수 있을 지 모르겠지만.. 장기적인 안목으로 봤을 때는 여간 불편한 게 아닙니다. 그리고 보기도 좋지 않죠. 그외 여러가지 제약이 될 수 있는 여러가지들이 있는 데... 이 것이 바로 템플릿의 등장이유가 됩니다.
 PHP의 대표적인 템플릿은 Smarty 라든가 Template_ 같은 것들처럼, Perl에는 Template Toolkit 이라는 강력한 템플릿이 존재합니다.
사용자 삽입 이미지
  이런 템플릿을 위한 View 를 생성하기 위해 './script/oops_create.pl view TT TT' 라고 입력합니다. TT 란 바로 Template Toolkit 을 뜻합니다. (처음의 TT는 View/TT.pm 이라는 것을 뜻하고, 두번째 TT는 Catalyst::View::TT 라는 모듈을 기반으로 한다는 것을 의미합니다)

 그리고는 ./root/hello.tt 라고 템플릿을 만듭니다. 예제로 이런 것을 만들어 보았습니다.
 Template Toolkit 은 기본적으로 [% ~ %] 을 템플릿 영역으로 사용합니다.
<html>
<head>
<title>[% title %]</title>
</head>
<body>
[% name1 %] ♥ [% name2 %]<br/>
그들은 왜 신림동으로 갔나?<br/>
</body>
</html>

 위에서 title, template, name1, name2 같은 것을 미리 정해놓았습니다.
 그럼 Controller 에서 해당 템플릿 변수에 값을 넣어주기만 하면 되는 것이죠.
 ./lib/Oops/Controller/Hello.pm 을 열어줍니다.
sub index : Private {
    my ( $self, $c ) = @_;

    $c->stash->{title} = 'PD수첩';
    $c->stash->{name1} = 'yuni';
    $c->stash->{name2} = 'saillinux';
  
    $self->stash->{template} = 'hello.tt';
}

 그리고 이와 $self->stash 로 하나하나 템플릿 변수를 지정해 줍니다. 여기서 $self->stash->{template} 는 해당 템플릿 파일과 매치를 하기때문에 위의 템플릿 변수를 넣어줄 템플릿을 지정해야 합니다. 위에서 'hello.tt'라는 템플릿을 만들었으니 'hello.tt'라고 넣어줘야 겠죠?
  $self->stash가 하는 일은 말씀 안해줘도 아시겠죠?
 아, 물론 Template 을 사용하게 되었으니.. $c->response->body()로 내용 넣어주던 짓은 이제 그만해도 됩니다. :-)
사용자 삽입 이미지
어떤가요? title 에는 PD수첩이.. name1에는 yuni 가 name2 에는 saillinux가 들어갔습니다.
 이런식으로 간단하게 Web Page 를 하나씩 추가해 나가시면 되겠죠?

 Template Toolkit 의 사용법은 이후에도 계속해서 알아가겠지만, 급하시면 아래를 참고하시면 되겠습니다.

 * 참고사이트
  - Template Toolkit
  - Catalyst

 다음에는 SQLite 를 이용한 간단히 Model 쪽을 살펴보겠습니다. :-)
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by JEEN
 2006년 10월 쯤... 넥스투어에서 일본행 오픈티켓을 끊은 적이 있었다. 물론 기한이 아슬아슬하게 일단 티켓은 예약하고 11월 1일 일본행 비행기를 타기 이틀전에 겨우겨우 발권 받아서 일본행 비행기에 오른 적이 있다.

 물론 티켓 결제는 정상적으로 1개월 전에 미리 예약하고 정상적으로 결제를 마쳤던 기억이 있다. 결제기한을 마치고 이틀, 삼일, 나흘이 지나도록 아무런 답변도 없길래.. 전화를 했고, 수많은 상담원 대기를 기다린 끝에 겨우겨우 어떻게 된 거냐고 따지니 그 다음날 아침에 곧장 티켓이 나왔다. 그리고 무사히 일본행 비행기에 몸을 실을 수 있었던 것이다.

 그리고 한달이 지나고... 연말 일본 연휴를 겸해서 한국에 잠시 갔다올려고 했는데... 오픈티켓을 이용하려면 어떻게 해야되냐고 넥스투어 상담원에게 물어봤지만 묵묵 부답이다. 메일을 보내도 대답이 없고, 국제전화비가 아까워서 어떻게든 답변이 오겠지 했는데 오지 않았다. 하도 답답해서 인상을 찡그리고 있으니, 지인이 직접 나서서 회사 전화를 사용해서 일단 넥스투어의 기나긴 상담원 대기시간을 뚫고 상담할 수 있게 되었다.

  "오픈티켓 사용해서 한국에 가려고 하는데요.. 어떻게 하면 되죠?"

  "네? 그냥 인터넷에 들어오셔서요 예약하시면 돼요?"

  "아니.. 제가 인터넷 찾아봐도 그런 메뉴가 안보이길래 전화를 했거든요. 일본에서요"

  "아..네.. 잠깐만요.. (하더니... 상담원 대기모드로 흘러갈 분위기가 감돌더니..) 일본은 언제 가셨어요?"

  "11월 1일요"

  "음.. 인터넷에 있는데.. 못찾으시겠어요?"

 한 10분정도 국제전화 잡고 있으려니 여간 눈치가 보여서(나중에 안 사실이지만, 국제전화 정액제를 사용중이었다고 한다) 말도 안통하고 못찾겠다고 하니까...

  "인터넷에서 하시면 되는데..."

 이말만 계속 하고.. 난 짜증나서 전화를 끊어버렸었다. 어차피 그때가 피크라서 못 갈것이다. 너무 늦었다라는 주위의 말을 듣고서는 에휴~ 하며 한 숨 쉬고 있을 때...

  "항공사에다가 직접 전화해보지?"

 라는 말에, 대한항공 일본쪽에 전화를 걸어보니 티켓이 없다고 한다. 어떻게 하지... 못가나 하고 있는데.. 상담원이

  "지금 유학생 할인용 좌석이 하나 있는데 예약이 아니되신다면 이쪽으로 알아봐 드릴까요? 아니면 JAL쪽으로도 타실 수 있는데요. 어떻게 하시겠어요?" 라고 일본어로... (분명 한국어 상담을 했는데, 한국어가 서투르셔서 일본어로 말해도 되겠냐고 해서 일본어로 바꿨었다)

 너무나도 반가워서 상담원이 불러주는 접수번호를 두어번 재확인하고 전화를 끊었다. 그리고 삼일정도 흘렀을 때, 직접 전화가 와서 "티켓이 발권되었다고.. 몇 시 어느 좌석이고.. 반드시 이것저것 챙겨오라"라는 전화를 받고서는 들떴었다.

 고객을 방관하던 넥스투어에 비해서, 항공사 상담원은 유연한 태도로 여러가지 가능성을 열어주었었다.

 내가 가장 한국과 일본의 서비스 차이를 얘기할 때 등장하는 케이스가 바로 이 케이스 였다.

 여기서 그만두면 넥스투어 깔 거리도 없다.

 출국과 입국 모두 화닥증 나는 고객대응으로 짜증을 내게했던 넥스투어에게 또 한번 티켓예약을 했었다. 물론 한국 출발이전이었고, 티켓 발권 확인도 끝난 다음이었다. 분명히 좌석도 여유가 있는 것을 확인했었고...

 또 한번 넥스투어는 늦장대응에.. 나의 기대를 저버리지 않았다. 화가나서 고객상담센터 같은 곳에 그대로 투고했고, 그 다음날 팀장이라는 사람에게 메일이 와서 "성수기라서 대응이 늦었다. 죄송하다"라며 즉각 티켓발권 을 해주었다.

 그리고 2년 조금 안되는 6월.. 여자친구가 일본에서 한국간다며 오픈티켓을 이번에 쓰고, 오는 티켓은 넥스투어에 예약을 했는데(2년 되었으면 서비스 개선했겠지라는 착각에 거기를 추천해버렸었다. 일본 여행사는 돌아오는 티켓에 대해서는 예약이 안된다길래...), .. 그리고는 일정이 바뀌어서 캔슬을 해달랬더니 묵묵 부답 5일째...

 넥스투어... 다시는 이용하고 싶지도 않은 곳이 되었다. 어떤 기대도 하지 않게 되었다.
 역시 이제 일본에서 왕복항공권 끊는 것이 골백번이고 옳은 일이라고 생각하고 있다(물론 오픈티켓같은 그런 장벽은 모르겠지만...).

 참고로 내가 이용한 일본의 여행사는 비자기간도 물어보고, 여권 기간이 어떤지도 물어보고, 메일은 보내면 두시간 안에 답장이 오곤 했다. 그리고 발권이후에는 잘 다녀오셨습니까? 라는 메일까지 보내오기도 한다.

 티켓발권이면 땡 하고서 느긋느긋하게 처리하는 한국의 넥스투어와 일본의 어느 여행사는 이런 부분에서 극명한 차이를 보여준다.

 그래서 비행기 표 예매할 때는 무조건 넥스투어만 피해달라고 말하고 싶다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by JEEN
 지난 주말, 일본 도쿄, 아키하바라 거리에서 끔직한 사건이 일어났다는 사실은 아마 모두 아시고 계실 겁니다.

 마침 오늘 아침 일본 뉴스에서는 아키하바라의 "보행자 천국"을 당분간 중단한다는 뉴스가 나왔습니다(주말의 아키하바라 도로는 낮에 차량진입을 금지합니다). 이런 자잘한 행정적인 조치까지 취해질 정도로 아직까지 미묘한 두려움같은 것이 있습니다. 행정당국은 물론이거니와 일본 거리를 배회하는 사람들마저두요.

 실제 아키하바라 사건 이후에는 지하철은 물론이고, 거리를 돌아다닐 때면 왠지모를 긴장을 하게 됩니다. 옆자리에 앉아있는 사람이 혹시나... 하는 생각을 여러번 하게되고, 약간이라도 인상이 험악해 보이면 괜히 모르게 긴장을 한 적도 있습니다(거꾸로 그 사람이 절 보고 그런 생각을 했을 지도 모르죠;;). 어제도 신주쿠 거리를 돌아다니면서 이렇게 평온하게 다니는 데, 그런 사건이 일어난다고 생각을 잠깐 해보면 등골이 쭈뼛해졌죠.

 무차별 살인 사건의 범행을 벌인 사람은 '누구든 좋았다', '아무도 내 말에 귀 기울여 주지 않았다', '외롭다' 라는 말을 했다고 일본 뉴스에서 나왔었습니다. 더군다나 그는 범행 이전에 휴대폰에 살인예고를 했다고 합니다. 수시간에 걸쳐서 예고문을 올렸지만, 누구도 그것을 신경써주지 않았고, 그것을 단순히 찌질이 취급했다는 것이죠. 진작에 관심만 보여주었더라면 하는 아쉬움이 있기도 합니다.

 결국은 커다란 비극이 일어났죠. 하지만 문제는 이게 처음이 아니라는 것입니다. 그 사람 뿐아니라... 일본 사회에서 일어난 범죄에서 저런 유형의 범죄가 다수 있었거든요. 그것을 하나하나 기억을 되새기기에는 희미해져버렸지만... '외롭다', '누구도 내 얘기를 들어주지 않는다' , 그래서 어떤 누구든 상관없이 범행을 저지르는 것말이죠.

 다른 어떤 사람들은 자극적인 비디오 게임들이 이런 사건의 동기를 제공한다고도 합니다. GTA 같은 것이 대표적이겠죠? 거기에 범람하는 일본의 성인게임들 역시나 타겟이 되어서 한 일본 여성 정치인은 이를 규제하는 법안을 제출했다고도 합니다. 이에 관한 반발이 상당하다는 것은 안봐도 비디오입니다(물론 대놓고 반발할 수 없는 뭔가가 있기도 합니다;;)

  이 사건이 있은 뒤에 왠일인지 집에서 전화가 왔었더랬습니다. 이제껏 제가 집으로 전화했었는데, 일본온지 2년여동안 집에서 전화온 적은 없었거든요. 물론 요즘 신경을 못 쓴 탓도 있었지만... 제일 먼저 걱정하던 것이 칼부림이 있었다는 데 괜찮느냐는 것이었습니다. 물론 괜찮다고 잘 지낸다고 했죠.

 이때 생각난 것이 아키하바라 사건의 범인이었습니다. 그의 어머니는 당신에게 들이대는 방송국 카메라 앞에서 쓰러져 눈물을 흘리고, 그의 아버지는 고개를 들지 못하며 연신 죄송하다고만 했었죠.

 그가 조금만 더 세상을 밝게 바라봤으면 어땠을 까 하는 생각을 해봅니다.

 그리고 한국의 인터넷 세상에서 판치는 외롭고 쓸쓸한 사람들이 내심 두려워지기도 하고, 씁쓸해지기도 합니다. 욕설이 판치고 상호비방에 제정신이 아닌 사람들을 보면... 이제는 '저 사람들은 정말로 외롭구나' 라고 생각하는 새로운 시선이 생겼습니다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by JEEN