2009年04月07日(火) 15:08
XML::Feed::Deduper 書いた - TokuLog 改めB日記/MSM
http://github.com/tokuhirom/p5-xml-feed-deduper/tree/master
feedをaggregateしてきて、あたらしいエントリがあったらなんか処理する、みたいなのはよくやるんですが、そういう処理をやるたびに DB_File とかつかってどうこう、みたいなのはめんどいので、適当にできるモジュールをでっちあげた。
http://github.com/tokuhirom/p5-xml-feed-deduper/tree/master
feedをaggregateしてきて、あたらしいエントリがあったらなんか処理する、みたいなのはよくやるんですが、そういう処理をやるたびに DB_File とかつかってどうこう、みたいなのはめんどいので、適当にできるモジュールをでっちあげた。
Tumblrする画像を集めるために、50ほどのRSSを購読し、6000近いフィードの中から reblogするのは30枚程度。
2,3日に一回、この単純で退屈な作業をしていました。
しかし、自分で集めた画像を振り返るようなことはほとんど無く、どんなに写真が集まってきても特に反応があるわけでは無い。
そのような状況をふと振り返ったとき、大変な虚無感に襲われたというわけです。
icons which are all great to use for your web development projects. But we are different to other icon-related websites because we only list icons which you can use for free on personal AND commercial projects AND without having to provide back-links/credit to the author. These types of icons can be tough to find, so here is a while list for your convenience!
Rarami は、人工知能によって bayashi さんの趣味・嗜好を学習し、自動的にWebページを収集します。
「サッカー」「料理」「プロレス」「漫画」、あらゆるテーマで bayashi さんだけのオンライン情報誌を作ることができます。
利用はもちろん無料。
そもそも髪が濡れてる状態がすげー不快なわけですが、ドライヤーで乾かすのも面倒だからしばらくタオル巻いてたりするわけですけど、女の子のように上手く巻けなくてすぐはずれてしまうもんで結局ドライヤーをうだうだしながらかけたりするはめになってた。
ところが、そんなうだうだを一発で解消してくれて、しかも濡れた髪から吸水してくれるという魔法のようなターバン(ターバンの形状をしたタオル)があると聞いたのでご紹介。
プレスリリースにはまた、以下のように暗黙のルールが存在します。
A4サイズ1枚、図面や画像をいれても2枚以内のボリュームに抑える。また、文章は横書きでまとめる
1リリースでテーマは1つ。1つのリリースに複数の内容を盛り込まない
1つの文章・段落は長すぎないようにし、4?5行以内におさえる
専門用語やカタカナを使いすぎない。必要な場合には、必ず本文後に注釈をいれて説明をいれる
客観性をもたせる。主観的な表現やあいまいな表現は避ける。特に口語で「???%8
プログラムやモジュールでは「この文字列は Unicode 文字列であるかバイト列であるかわからない」という入出力パラメータを扱うべきではなく、つねに「Unicode 文字列」や「バイト列」であることを明確にしておくべき。そうすれば decode_utf8 や utf8::upgrade などで明確にフラグをたてることができる。
一般的にコミュニティを形成する方法は2つある。1つは、もともとコミュニケーションの需要があったところにサービスを提供することで、コミュニティが生まれるパターン。もう1つは、それまでコミュニケーションが存在しなかったところへ、何かを題材にした「つながり」を提供してやることでコミュニティが自然発生的に形成されるパターンだ。
――メールで気持ちは伝わるか?
A君:本気さはメールでは伝わらない。真面目なことをメールすると、ふざけていると思われてしまう。
Bさん:メールは会って話すのとは別物。
Cさん:メールは、口で言うのでは伝わらないことが伝わり、逆もそう。どっちもどっち。
D君:メールでしかつながっていない人とはつながっていると感じる。実際に会う友達とは、メールはそれほど重要ではない。
ブラウザで、Tube8の動画をダウンロードしようとすると、ユーザ登録が必要になりますが、以下のブックマークレットを使用すると、ユーザ登録してなくてもダウンロードできます。
ブックマークレット単独で動作します(前述の WWW::Tube8 モジュールなど必要ありません)。
[tube8]
javascript:p=document.getElementsByTagName('html')[0].innerHTML.match(/var videourl="(http[^"]+\.flv)"/);location.href=RegExp.$1;
DBICはRDBMS特有ストレージのモデル的抽象化であり、本来は他のビジネスオブジェクトの裏で消えているべきところが、実際にはものすごくよく使うものだから同レベルでのモデルが存在する、というそれだけの事。
あなたがこれから書くCatalystアプリはDBICを使うにしてもControllerから直接の呼び出しは避けましょう。それは本来抽象化されているべきことです。そういうふうに組み立てて行くとうまく密結合を防ぐ事ができるはず。
Catalyst::Model::Adaptorのパッケージには
Catalyst::Model::Adaptor - アプリケーションの起動時にインスタンスを生成
Catalyst::Model::Factory::PerRequest - リクエストごとにインスタンスを生成
Catalyst::Model::Factory - $c->model()で呼ばれるたびにインスタンスを生成
が入ってるのでそれぞれの用途で使い分けるといいです。
Webstemmer はこのようなニュースサイトのレイアウトを自動で分析し、記事本文とタイトルだけをとってこれるようにします
はてなブックマークにポストする
#!/usr/bin/perl
use strict;
use warnings;
use XML::Atom::Client;
use XML::Atom::Entry;
use XML::Atom::Link;
my $api = XML::Atom::Client->new;
$api->username('ユーザー名');
$api->password('パスワード');
my $collection_uri = 'http://b.hatena.ne.jp/atom/post';
my $uri = '登録するエントリのURI';
my $comment = 'コメント';
my $link = XML::Atom::Link->new;
$link->type('text/html');
$link->rel('related');
$link->href($uri);
my $entry = XML::Atom::Entry->new;
$entry->add_link($link);
$entry->add(undef,'summary',$comment,{type => 'text/plain'});
my $member_uri = $api->createEntry($collection_uri, $entry);
my $posted_entry = $api->getEntry($member_uri);
print $posted_entry->as_xml;
Perl には例外処理がないので、シグナルをキャッチするしかないんじゃないかと思います。
たとえば、
$SIG{'TERM'} = "terminal";
と宣言すると、TERM シグナルが発生した場合に自動的に terminal(); 関数が呼ばれます。
利用可能なシグナルの一覧を調べるには、
perl -e "$,=qq/\n/;print keys(%SIG);"
をコマンドラインから入力してください。
サブルーチンへのリファレンスをハッシュに設定して、それをコールするのが素直と思われます。こんな感じ:
use strict;
sub hogehoge( $ ){ print 'msg: ', $_[0], "\n"; }
my %Proc = ( 'hoge' => \&hogehoge );
my $call = 'hoge';
$Proc{ $call }->( 'test' );
ひるまない。
それが自由人。
女の子の太もも画像 ( http://metiss.blog92.fc2.com/blog-entry-142.html ) にリンクされている画像をカレントディレクトリにダウンロードしたければ以下のようなコマンドをたたくだけです。
$perl -MLWP::Simple -MFile::Basename -e 'map{mirror($_,basename($_))} get($ARGV[0]) =~ m{<a.*?href="(http://[^"]+\.jpg)"}gi;' http://metiss.blog92.fc2.com/blog-entry-142.html
Tiarra と mobirc の導入をまとめた記事を書いておこうと思います。
Tiarra はIRC Proxy ソフトで、IRC のチャンネルに入りっぱなしにしておいて、ログをとっておいたり、Tiarra に接続するだけで、登録してあるチャンネルに自動的にJoinしてくれるようにする便利なソフトです。
どのモジュールがどのモジュールを起動時にロードしているかについては、id:miyagawa さんに教えていただいた下記のワンライナーが便利です。
perl -Ilib -E 'BEGIN { unshift @INC, sub { say join "\t=>\t", scalar(caller), $_[1] } }; use HTTP::Engine; use HTTP::Engine::Interface::CGI'
このワンライナーをつかって、いらないモジュールは遅延ロードにしてしまいましょう。
▲楽