블로그 이미지
JEEN

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

Rss feed Tistory
IT/Perl 2010.12.04 00:29

아기다리고기다리던 "거침없이 배우는 펄"

There's now a Korean translation of Learning Perl, 5th Edition http://kangcom.com/sub/view.asp?sku=201012020002Thu Dec 02 14:10:38 via Tweetie for Mac


  우선 brian d foy 의 "거침없이 배우는 펄" 소개 트윗으로... (brian d foy 는 원서 Learning Perl 의 저자입니다, 그외 다수)

  @keedi, @kiseok7, @saillinux 이 세분의 혼이 들어간 역작 "거침없이 배우는 펄"이 드디어 출간됩니다.



  아무튼 이제껏 책이 없어서 펄 공부를 못하겠다 하는 얘기는 이제 덜 듣게되겠지요.
신고
IT/Perl 2009.12.18 18:29

Rakudo Perl 6 development release #24 ("Seoul")

  >> via (@aer0 / KLDP)

  오늘의 한국 Perl 커뮤니티의 가장 뜨거운 뉴스 중 하나가 Rakudo #24  개발판의 코드네임이 Seoul 이 되었다는 것입니다.

 예전에 Rakudo #12부터 Rakudo 는 매월 주기적으로 릴리즈를 약속하며, 그 릴리즈의 코드네임에 펄에 공헌한(?) Perl Mongers 그룹의 이름을 붙인다는 얘기가 있었습니다. 

  Seoul.pm 나름대로의 펄 공헌법.
  예~전에 Jesse Vincent 이 방한한 적이 있었고, 지난 9월 YAPC::Asia 가 끝나고 Jonathan Worthington 이 한국을 방한한 적이 있었습니다. 그때 @jachin24, @keedi, @saillinux, @aer0, @perlstudy 등이 환대를 해주었고, 결정적으로...

  Rakudo Perl follows a monthly release cycle, with each release code named after a Perl Mongers group. The December 2009 release is code named "Seoul" for Seoul.pm, who hosted Jonathan so well recently, and because they have a cake duck.

  여기의 "a cake duck" ....

http://c.ask.nate.com/imgs/qrsi.tsp/8968286/12055381/0/1/A/떡볶이-아랑이.JPG

  .... 떡볶이라고 합니다. (via @saillinux) 

  이참에 Seoul.pm 로고를 떡볶이로 하는 건 어떨까 하는 주장을 내어봅니다. 

** 추기

chromatic 이 a cake duck 에 링크를 걸었군요.


행운과 부활을 가져다 주는 초자연적인 어떤 개체를 뜻한다고 합니다. 

a cake duck == 떡볶이 설은 어디까지나 Jonathan Worthington 과 함께 논 @saillinux 의 말을 그대로 인용한 것에 불과합니다. :-)

뭐, 어찌보면 이번건 좋아해야하는 지 씁쓸해 해야하는 지 미묘하네요. 쩝. 
신고
IT/Perl 2008.08.21 13:53

[ Perl ] Perl 로 메일보내기 ... SSMTP 와 MIME::Lite 를 사용해서!


  Perl 로 메일을 보내려면 어떻게 해야할까요?

  저도 몰라서 근처 사는 최선생님께 물어봤습니다.

사용자 삽입 이미지

"메일, 그거 삶아먹으면 되는 거 아닙니까?"


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

 Net::SMTP 라든가... CPAN 을 찾아보면 Mail 에 관련된 모듈은 널리고 널렸습니다.

 전 MIME::Lite 를 사용하기 때문에... 이쪽으로만 다루겠습니다. :-)

 사실 Korean Perl Workshop 참가신청을 만들 때, 메일 송신 스크립트 때문에 좀 고단했던 적이 있었습니다.
 메일서버도 없고, 사용할만한 건 Gmail 인데... CPAN 에서 Gmail 에 관련된 메일 송신 모듈이 제대로 동작하지 않는 것도 문제였죠. KPW 자체적인 메일 서버도 가지고 있지 않았구요. 시간은 촉박했고...
  설령 메일서버가 있다고 해도... 메이저 포털로 메일을 보낼 때 잘 안된다고 하는 그런 이슈도 있었구요.

 그때 한줄기 빛이 내려왔는데,, 그것이 SSMTP 라는 것입니다.
 
 SSMTP 가 무엇이냐는 자세한 설명은 여기에서 하지 않겠습니다. 구글해주세요.

 우분투에서 간단하게 SSMTP 패키지를 설치할때는...

sudo apt-get install ssmtp

 로 설치가 가능합니다.

  그리고는 /etc/ssmtp/ssmtp.conf 에 아래의 설정을 넣습니다.

root=your.email@gmail.com
mailhub=smtp.gmail.com:587
useSTARTTLS=YES
AuthUser=your.email@gmail.com
AuthPass=your.password
rewriteDomain=gmail.com
FromLineOverride=YES
hostname=blah

 그래서 메일계정은 gmail 을 사용하기로 하고 위와같이 설정했습니다. Gmail 을 사용하면 어디든지 메일을 보낼 수 있기 때문이었죠. Gmail 을 스팸처리하는 곳은 없을 테니...
  MIME::Lite 모듈이 없으면 설치해주세요.
 
use strict;
use warnings;
use MIME::Lite;

my $msg = MIME::Lite->new(
    'Return-Path' => 'sender.email@gmail.comr',
    'From'        => 'sender.email@gmail.com',
    'To'          => 'receive@email.com',
    'Subject'     => 'saillinux 산 버터, 어떻게 생각하시나요?',
    'Charset'     => 'utf-8',
    'Encoding'    => '8bit',
    'Data'        => '사실 그거 삶아먹으면 괜찮은거 아닙니까?'
    );
$msg->send;

 이렇게 스크립트 하나 만들어서 실행시키면...

사용자 삽입 이미지

 이렇게 메일이 오게됩니다. +_+

 뭐, 파라메터 넘겨서 From ,To 바꾸거나, 제목 바꾸거나... DB 에서 긁어와서 집어넣거나... 혹은 Template 를 사용해서 메일 내용을 꾸미거나... 하는 방법도 있겠죠.

 여러가지 다양한 부수적인 내용은 직접 해보시면 됩니다.
 현재 KPW 사이트에서는 KPW::Mail 이라는 Wrapper 모듈을 만들어 두고 사용하고 있습니다. Template 도 만들어서 Mail 내용등은 완전히 분리시켜두고 말이죠.

  Daum이나 Yahoo 에서는 Subject 가 깨지는 현상도 있다고 하는데요. keedi 님께서 이에 대한 처치방법을 알려주셨네요.
  use MIME::QuotedPrint qw(encode_qp);
  use Encode qw(encode);

 필요한 모듈을 use 해서... Subject 를

...
Subject => '=?UTF8?Q?' . encode_qp(encode('utf-8', "블라블라"), '') .'?=',
...
 
 이런식으로 감싸면 된다는 군요. keedi++

 (SSMTP 는 jachin 님으로부터 줏어들어서 saillinux 님께서 설정해주셨습니다. jachin++, saillinux++)


  :: 이상 IRC #perl-kr 에서 h0ney 님께서 "메일 어케날려요?" 라는 떡밥을 날리셔서 썼습니다.
  :: (떡밥주도 블로그 포스팅 전략!!)

:: 2011/12/29 추기
  최근 코드관련 얘기를 하는 블로그를 따로 만들어서, 위의 내용을 좀 더 보완했습니다.
  http://jeen.github.com/blog/2011/12/29/perl-email-send/ 
신고
IT/Perl 2008.08.06 21:24

[ Perl ] Perl 에서의 ORM , DBIx::Class에 대해서... #5 - InflateColumn


 현재 개발중인 프로젝트에 쓰이는 내용을 살짝 다뤄볼까 합니다.

 음... 테이블의 칼럼 수가 많거나, 적거나.. 아직 정해지지 않아서 나중에 추가될 지도 모른다거나... 이런 불안함에서 제대로 테이블을 만들더라도, 나중에 ALTER TABLE 의 폭발을 겪게 되는 경우가 있었습니다. 컬럼을 추가하거나, 지우거나, 바꾸거나 하면서 불안함이 있다는 것이죠. 그래서 YAML 을 그대로 집어넣게 되었습니다.

 이럴때 가볍게 쓸 수 있는 것이 inflate_column 입니다.
 위의 얘기는 잠시 접어두고 그럼 예제를 볼까요? MyTest::User 에 다음과 같은 것을 추가했습니다.

 __PACKAGE__->inflate_column(<br />    user_id => {<br />        inflate => sub {<br />            my ($value, $obj) = @_;<br />            # $obj->$column_name 으로 User Schema Class 의 컬럼을 참조할 수 있습니다.<br />            sprintf "%04d", $value;<br />        },<br />        deflate => sub {<br />            my ($value, $obj) = @_;<br />            $value;<br />        },<br />    });

  이것으로 무엇을 하느냐...

  User 의 user_id 컬럼을 지정해서 user_id 를 처음부터 건드려놓은 상태로 내놓거나(inflate), Table 에 입력을 할 시에도 마찬가지로 입력 직전에 건드린 상태로 쓰기를 수행(deflate) 하는 겁니다.

  위의 예제에서는 User 의 user_id 를 zero-fill 합니다. 1 이라면 0001 이라든가.. 이런 형식으로 나오겠죠?

my $user = $schema->resultset('User')->search({});

while(my $row = $user->next) {
    print $row->user_id."\t".$row->name."\n";
}

  그럼 한번 뽑아볼까요?
사용자 삽입 이미지
  자, 이렇게 나오네요.

  이렇게해서, 예를들면 datetime 의 data type 을 가지고 있는 created_on, updated_on 은 DateTime 인스턴스로 만들어 줄 수도 있겠죠.

  제가 사용하는 경우는 ...

CREATE TABLE test (
   no    INT NOT NULL,
   attributes   TEXT NOT NULL,
   created_on DATETIME NOT NULL,
   updated_on DATETIME NOT NULL,
   primary key(no)
 );

  이런 Schema 가 있다면...

use YAML;
__PACKAGE__->inflate_column(
  attributes => {
     inflate => sub {
        my ($value, $obj) = @_;
        YAML::Load($value);
      },
      deflate => sub {
        my ($value, $obj) = @_;
        YAML::Dump($value);
       },
});

  이렇게 inflate_column 을 설정해두었습니다. 그리고 이런식으로 등록합니다.

 my $obj = {
    irc => {
       perl => {
         saillinux => {
           envy => 'yuni',
           attack => 'JEEN',
           love  => [ 'ero', '하얀_고양이', 'Fate' ],
          },
        },
    },
 };
 
 $schema->resultset('Test')->create( attributes => $obj );

 이렇게 등록된 데이터는 YAML 형식으로 보관되어 있을 겁니다.
 그리고 빼내서 쓸려면 이런식으로 합니다.
 
my $rs = $schema->resultset('Test')->search({})->first;
print $rs->attributes->{irc}->{perl}->{saillinux}->{envy};  # yuni
print for (@{ $rs->attributes->{irc}->{perl}->{saillinux}->{love} }); # ero 하얀_고양이 Fate

  이렇게 사용합니다. :-)

  inflate_column 를 사용하지 않는 경우에는 집어넣을 때는 매번 YAML::Dump 하고...
  뺄때는 매번 YAML::Load 해야 되겠죠.

  이렇게 가볍게 InflateColumn 에 대해서 알아보았습니다.
신고
IT/Perl 2008.05.18 13:41

YAPC::Asia 2008 이야기 #2

Conference Dinner Party에 대한 이야기입니다.
사용자 삽입 이미지PENTAX Corporation | PENTAX K100D Super | 1/45sec

사진이 맥주밖에 없지만... 스시랑 이것저것 많이 있었습니다.


일단 저로써는 회사사람이외에 다른 일본 Perl Hackers 들과 안면을 튼 적이 없기 때문에...

쩝.. 마땅히 소개고 뭐고 할 게 없어서 상당히 죄송했습니다.

그래서 영어를 하시는 saillinux님을 밀고 당기면서 해외 구루들과의 접촉을 시도해나가게 되었습니다.

일단 Jose Castro 에게 부딪혀서 keedi님께서 왜 Korea.pm 의 등록이 늦는가에 대한 이야기를 물어봤더랬습니다.

아무래도 나라이름이 Perl Mongers 이름이 되면 좀 안좋은 듯 해서 다른 명칭이 없냐는 이야기가 나온 듯 한데...
사용자 삽입 이미지PENTAX Corporation | PENTAX K100D Super | 1/60sec

Jose Castro


기존의 Seoul.pm 이 wordpress blog 페이지로 쓰이고 있고, 별다른 엔트리도 없기에 이것을 어떻게 하는 듯한 이야기가 나온 듯 합니다. 아무튼 3주이상의 확인작업이 필요하다는 군요.

그다음은 Ingy Dot Net인데... CLKao씨가 Ingy 맥주가 없다면서 따라달라고 했더랬습니다. 그래서 제가 따라줬죠. (It's my honor sir! 라고 했었는데 피식 웃더군요) 그리고 자연스레 사진찍고 이것저것 얘기를 나누고 했더랬습니다.

사용자 삽입 이미지PENTAX Corporation | PENTAX K100D Super | 1/90sec

그다음은 자연스레 CLKao와 긴 이야기가 계속 되었습니다. 반갑게 인사하고 여러얘기를 나누며, 명함 교환을 하였죠. Audrey Tang에 대한 이야기도 잠깐 있었습니다. aero님께서 무척 궁금해 하시는 부분이라서...(최근에 Audrey Tang이 연애질한다는 이야기때문에, 여자는 OSS의 적이다! 라는 얘기까지 있었었죠.)

그리고 자연히 Jesse Vincent에게 붙어서 이야기를 계속했습니다. 이때 Audrey Tang에 대한 좀 더 자세한 이야기를 듣게 되었습니다. 바빠서 못나왔다고 하더군요. 그리고 그녀는 매우 대단하다면서 Jesse 가 매우 극찬을 아끼지 않았습니다. 그리고 이때 Prophet의 Patch도 하지 않은 저와 keedi님은 Jesse로부터 T-Shirt를 받게 되었습니다. ( 2008/05/17 - [IT/Perl] - YAPC::Asia 2008 득템 목록... 에서 확인 하실 수 있습니다)

 그런다음의 타겟을 물색하던중에, 한국분을 발견하게 되었습니다. Jeff Kim씨의 부인되시는 분이셨는데, 작년에 Amazon의 EC2에 대한 세션이 있었는데.. 제가 작년의 Amazon S3에 대한 세션을 잘 들었다고 했는데.. EC2라고 정정해주더군요. 상당히 뻘쭘했었습니다;;
 NY.pm 에 계시고, 현재 미국에서 Perl은 어떤지에 대한 이야기도 들을 수 있었습니다. "안보이게 많이 쓰고 있다"는 이야기를 들었습니다. 그리고 한국은 어떤가에 대해서는 모두들 쓴웃음을 지을 수 밖에 없었지만요.

 그리고 한때 PerlMania와 hanIRC를 들썩이게 했던 purewish님과도 여기에서 직접 만날 수 있었습니다. 모두들 궁금해했었거든요.

 그리고 오스트리아 비엔나 대학 교수와도 간단한 이야기. Beginng Perl 등의 저자인 Simon Cozens와도 얘기할 기회를 얻었습니다.

 그리고 miyagawa씨와 한국 Perl에 대한이야기와,  Perl Mania에 대해 알고 있다는 이야기, Korea.pm이 안되면 Perl 쓰는 회사 많은 지명을 쓰면 어떠냐는 이야기와... 이런저런 이야기를 함께 하게 되었습니다. 중간에 TAKESAKO씨와의 얘기에서 "Yappo가 던져준 한글 번역은 전부 니가 해준거냐?"라는 것에서 약간은 반가움을 느끼게 되었습니다. (그런 것을 보고 있었을 줄이야!)
 그리고 한일 양국의 사람들끼리 같이 사진도 찍었습니다. :-)

 물론 Yappo와도 함께...
 
사용자 삽입 이미지PENTAX Corporation | PENTAX K100D Super | 1/60sec

Moooooooooose~


 이 날의 포즈는 김치도 치즈도 아닌 Mooooooooose~ 였습니다. :-)

____________________________________
2008/05/18 - [IT/Perl] - YAPC::Asia 2008 이야기 #1
2008/05/17 - [IT/Perl] - YAPC::Asia 2008 득템 목록...
신고

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

YAPC::Asia 2008 이야기 #3  (2) 2008.05.18
YAPC::Asia 2008 이야기 #2  (0) 2008.05.18
YAPC::Asia 2008 이야기 #1  (0) 2008.05.18
YAPC::Asia 2008 득템 목록...  (2) 2008.05.17
TOTAL 466,714 TODAY 33

티스토리 툴바