メイン


Perl Archives

2006年3月30日

YAPC::Asia 2006 Tokyo♨

250.jpg

Larry Wallが好きです。Perlはすごいツールで、作った人を尊敬するってこともあるけど、それ以上に、Larryからとても大切なことを学んだから。
プログラマの三大美徳やTMTOWTDIやコミュニティの大事さとか文化を教えてくれた。
言語学からコンピュータサイエンスに進んだという"文系"の経歴も自分と重ねてしまう。
いまから7-8年前にPerlを使って、彼のことを知って、楽しいことをいろいろ知らないままだったら、今の自分は無かったと思う。

で、本日、ツーショット写真(リンクはgree内)を撮らせてもらって、直筆サイン本をゲットしました。
ミーハーでごめんなさい。
でも、ビルジョイやグイドやクヌース先生を目の前にしてもこんなに浮かれないですよ。

今日の内容についてはスライド嫁だけど、オードリーたんのスピーチとダミアンのスピーチが面白かった。ダミアンのセッションで質問して「いい質問だね」って誉められた (照)。Ingyのスピーチは全然、聞き取れなかった。。
全体的に高橋メソッド。今日で、世界的にブレイクする予感。

Ruby陣営は挑戦的だったなぁ。それも面白かったけど。
PPエンコーディングやmy変数のセッションを聞いたLarryやダミアンの反応が明日の見所なのに、明日は仕事です。年度末。がんばろ。
コードをたくさん、書きたくなりました。


2006年5月23日

PEAR HTML_TagCloud Package Draft Proposal!

PerlのHTML::TagCloud::ExtendedのPHP版を作成し、PEARにProposalしてみました。(まだDraft。そしてまだ運用実績はありません。)

CPANにはExtendedじゃないのもあるのですが、Extendedのほうが時間経過を表現できたりして高機能です。

HTML::TagCloud::ExtendedがみごとなPerl OOしてたので、比較的容易に移植することができました。

ただホットタグ機能や設定用変数を渡すとこなど、いくつかの機能は移植しきれてません。
またtimestampの引数をはじめからUnixタイムスタンプにしたり、時間指定しなかった場合、latestとして扱うなど、いくつかの変更を加えています。

もうちょっとコードをきれいにして、コメント書いて、ドキュメント作って、Bugをとって、package.xmlをまとめて、PEARの色表現ルールにも対応して今月中にはPEPrフェーズに進みたいなぁ。package.xmlの書き方、わからん、とか思ってたら、渡りに船で上鍵さんが調査してるみたいだし。なんかいろいろ追い風が吹いているかんじです。

ソースコードはこちら
サンプルコードはこんな感じです。


<?php
// $Id:$

require_once '../TagCloud.php';

$tags =& new HTML_TagCloud();
$tags->addElement('PHP','http://www.php.net'39strtotime(20060315000000));
$tags->addElement('XML','http://www.xml.org'21strtotime(20060515000000));
$tags->addElement('Perl','http://www.xml.org'15strtotime(20060215000000));
$tags->addElement('PEAR','http://pear.php.net'32strtotime(20060415000000));
$tags->addElement('MySQL','http://www.mysql.com'10strtotime(20060501000000));
$tags->addElement('PostgreSQL','http://pgsql.com'6strtotime(20051201000000));

print 
$tags->buildALL();

?>


タイムスタンプを省略したり、まとめて配列をそのまま渡せるようにもしてみた。


<?php
// $Id:$

require_once '../TagCloud.php';

$tags =& new HTML_TagCloud();
$name 'a';
// set a item without timestamp
$tags->addElement($name'#'20);
foreach(
range(0,10) as $i){
    
$arr[$i]['name'] = $name;
    
$arr[$i]['url']  = '#';
    
$arr[$i]['count'] = $i;
    
$name++;
}
// set many item at once
$tags->addElements($arr);
$css $tags->buildCSS();
$taghtml $tags->buildHTML();
?>



いや,勢いって大事ですな。

HTML::TagCloud::ExtendedのAUTHORであるLyo Katoさんに感謝。
これを作る機会になった某プロジェクトに感謝。


2007年1月26日

WWW::GREE::Keyword and more...

ちゃんとしたPerlをしばらく書いておらず、ネタを探していたのですが、GREEのAPI公開ってことで、リハビリのつもりで作ってみました。
使い方はこんな感じ。

WWW::GREE::Keyword

 1 use WWW::GREE::Keyword;
2
3 my $api = new WWW::GREE::Keyword;
4 my $hot_keywords = $api->get_hot();
5
6 foreach my $item (@$hot_keywords){
7 print "$item->{'name'} : $item->{'count'}\n";
8 $id = $item->{'id'};
9 }
10
11 print "--\n";
12 $related = $api->get_related($id);
13 foreach my $item (@$related){
14 print "$item->{'name'} : $item->{'count'}\n";
15 $id = $item->{'id'};
16 }


ダウンロード WWW-GREE-Keyword-v0.0.1.tar.gz


XML::LibXMLをはじめて使ってみました。expatベースのXML::Parserよりlibxml2ベースのXML::LibXMLのほうが速いし。

モジュールのネーミングはAPI系ならWebService::GREE::Keywordのほうがいいんだろうけど、実はもう一個作りかけてしまったので、そのせいで悩んでいます。
作りかけはこれです。

WWW::GREE

 1 use WWW::GREE;
2
3 $gree = new WWW::GREE('user@example.com', 'password');
4 $responce = $gree->login();
5
6 die ('login fail') if (! $responce);
7 @blogs = $gree->get_friends_recent_blog();
8
9 foreach my $item (@blogs){
10 print "[$item->{'name'}] $item->{'title'}\n";
11 print "$item->{'body'}\n";
12 print "$item->{'url'}\n\n";
13 }

ダウンロード WWW-GREE-v0.0.1.tar.gz

GREEのHTMLはきれいなんでスクレーピングしやすかった。
こっちはまだ日記だけなので、もっとWWW::Mixiに近づけたいなぁ。

どちらもまだまだな出来ですが、一旦、公開しときます。
気づいた点があればコメントください。

CPANへの道のりはまだ遠い。。。

2007年4月 7日

YAPC::Asia 2007

今週の水曜、木曜とYAPC::Asia 2007へ行ってきました。
昨年の大興奮の一回目に続く2年連続の開催です。

今年はかなりさらにコアな内容だったなぁ、というのが漠然とした感想です。
個人的にはHigher-Order Perlの話が勉強になりました。
実用的な部分では、memcachedをはじめとするようなソフトウェアを世に出しているSix ApartがPerlの世界のリーディングカンパニーというかWeb全体をリードしていることを実感しました。社長さんやLiveJournalの中の人のお話は大変、参考になりました。

参加してよかったです。スタッフの皆様ありがとうございます。
あともっと会話をできるように英語を勉強しなきゃ、と痛感しました。












Powered by
Movable Type 4.25