2006年8月29日
Plaggerは、とても便利で楽しいんだけど、インストールが難しいのが難点。
Linuxとか、MacOSXとかだと、割とスムーズにインストールできるので、Windowsにこだわらずに、VMWareとかで、Linux環境を作っちゃった方が早いんじゃないの? とか思っていたんだけど、
しげふみメモ:Windowsで簡単にPlaggerをインストールする方法
これなら、すごく簡単。さくっとインストール。
Plaggerキャズム越え!(笑)
ActivePerlをインストールしていれば、
C:\>ppm
ppm> search Plagger
ppm> install Plagger
ppm> q
C:\>plagger -v
Plagger version 0.7.9
てな感じで。
で、インストールさえ出来ちゃえば、例えば、
global:
plugin_path:
- C:\Perl\site\lib\Plagger\Plugin
assets_path: C:\Perl\site\lib\Plagger\assets
timezone: Asia/Tokyo
log:
level: info
cache:
base: C:\plagger
plugins:
- module: Subscription::Config
config:
feed:
- url: http://cheebow.info/chemt/index.xml
- module: Publish::PalmDoc
config:
path: /
prefix: PalmDoc
medoc: 1
なんて、設定ファイルを書いて、これを、palm.yamlってファイル名で保存。
コマンドプロンプトで、palm.yamlファイルのあるディレクトリに移動して、
plagger -c palm.yaml
とすると、ヒビノアワのRSSを取得して、それをPalm用のMeDoc形式にしてくれたりします。
他にも、取得先をいろいろ変更したり、出力方法を変えたりと楽しみ方はいろいろ。
Elementary, ... Plaggerで出前が寿司に対応しました
寿司を取ったりも出来ます(笑)。
ぜひ、お試しをー。
投稿者 CHEEBOW : 12:05
| [ Perl ]
2006年5月24日
PiloWebにはじまり、その後継版のPiloWebProなんてソフトを開発していたりするのですが、ふと、気付いた。
それPlaggerでやればいいんじゃね?
というわけで、さっそく、こんなプラグインを書いてみましたよ。
Plagger::Plugin::Publish::PalmDoc
Plagger::Plugin::Publish::OutlineText
追記:
本家に取り込まれましたので、そちらから使ってもらったほうが良いです。
エムロジック放課後プロジェクトの一環で、POD内の英語とかは、ka2hiroに書いてもらったりしつつ。
Plagger::Plugin::Publish::PalmDocはその名の通り、取得したフィードをPalmDocフォーマットのファイルで出力するPublish系プラグインです。
ダウンロードしたファイルを解凍して、Plugin/Publishディレクトリの下にPalmDoc.pmを、assetsディレクトリにPublish-PalmDocディレクトリ以下をコピーします。
YAMLには
- module: Publish::PalmDoc
config:
path: /path/to/
prefix: PalmDoc
medoc: 1
こんな感じで書いてもらうと、/path/to/ディレクトリの下にPalmDoc-*.pdbって形でフィードごとにファイルが出来ます。
medocを1にするとMeDoc形式で出力されます。
PalmDocに関しては、「Muchy.com - よくある質問と回答 > 「DOCアプリ」「DOCデータ」について、詳しく教えて下さい」を読むと良いかもです。
Plagger::Plugin::Publish::OutlineTextは、階層付きテキストとしてすべてのフィードを出力するプラグインです。
Plugin/Publishディレクトリの下にOutlineText.pmをコピーするだけ。
出力されたファイルは、階層付きテキストが読めるエディタならツリー状に表示されるはず。拙作の「Story Editor」とか。
モバイル系のデバイスでも階層付きテキストを読むことができるエディタやビュワーが結構あるみたいなので、それを使うのも良いかも。
YAMLには、
- module: Publish::OutlineText
config:
filename: /path/to/outline.txt
encoding: utf8
って感じで。この設定だと、/path/to/outline.txtをUTF-8で出力します。
両方のプラグインとも、出力されたファイルをてけとーにモバイルデバイスなどにコピーして、外出先で読んだりすると良いのではないかなーと思います。
ま、でも、Plaggerってなに? って人は、素直にPiloWebProを使った方がいいんじゃないかなーとは思いますが……。
投稿者 CHEEBOW : 14:42
| [ Development, Perl ]
2006年5月20日
「ヒビノアワ: Plagger::Plugin::CustomFeed::NetLadio」で公開した、Plagger::Plugin::CustomFeed::NetLadioを修正しました。
今Publish系のプラグインを作っていて、なんか文字化けするなーと気づきました。
というわけで、お使いの方は、新しいのを使ってくださいませ。
ダウンロードは
Plagger::Plugin::CustomFeed::NetLadio
こちらからー。
投稿者 CHEEBOW : 16:47
| [ Development, Perl ]
2006年4月 7日
最近、Movable Typeの標準スパム対策プラグイン「SpamLookup」をすり抜けてくるコメントやトラックバックが多くて嫌になる。
それも、短い英単語数語の内容だったりして、ますますウザい(笑)。
というわけで
MT BanASCII 3.2 対応: blog.bulknews.net
miyagawaさんの、このプラグインを試してみることに。
でも、これ、Perl5.8以上で動作ってあるので、このブログが設置してあるサーバでは使えない(Perl5.6だから)。
で、ソース見てたら、どうもEncodeモジュールを使っているところで引っかかっているっぽい。
なので、Movable TypeのモジュールMT::I18Nを使うように修正してみた。
--- mt-ban-ascii.pl.org 2006-04-07 17:27:23.085937500 +0900
+++ mt-ban-ascii.pl 2006-04-07 17:17:00.000000000 +0900
@@ -37,9 +37,9 @@
sub handler {
my($plugin, $obj) = @_;
- require Encode;
+ require MT::I18N;
my $charset = MT::ConfigMgr->instance->PublishCharset;
- my $text = Encode::decode($charset, $obj->all_text);
+ my $text = MT::I18N::encode_text($obj->all_text, $charset);
if ($text =~ /^[\x00-\xff]+$/) {
if ($Method eq 'junk') {
return (-1, "ASCII or Latin-1 comment");
いちお、これで動いてるみたい。
試してみたい方は、こちらから、ダウンロードできます。
mt-ban-ascii.pl(中止しました……)
追記:
MTBanASCII: コメントSPAM対策を MT3 に移植: blog.bulknews.netのコメントを見て気付きました……。
これじゃ駄目です。/^[\x00-\xff]+$/ だと、全部Banされちゃいますっ!
すでにインストールしちゃった人は、外してくださいませ……。ごめんなさい……。
投稿者 CHEEBOW : 17:18
| [ Movable Type, Perl ]
2006年4月 3日
「ヒビノアワ: YAPC::Asia 2006に行って来ました」で書いた、ホテルでハックしてたPlagger用のプラグインが、なんとかまとまったので、公開してみようと思います(Plagger0.6.0対応)。
Plagger::Plugin::CustomFeed::NetLadio
livedoor ネットラジオ / ねとらじから、現在放送中の番組表を取得するプラグインになります。
番組表の中から、例えば、最近放送が始まったものから5件分とか、リスナー数の多いものから10件分みたいな取得の仕方が出来ます。
この辺は、例によってyamlに書くわけですが、「最近放送が始まったものから5件分」なら
- module: CustomFeed::NetLadio
config:
limit: 5
sort: tims
order: desc
って書けばいいし、「リスナー数の多いものから10件」なら
- module: CustomFeed::NetLadio
config:
limit: 10
sort: cln
order: desc
って書けばよいです。sortに指定できるのは
- URL :放送ツールで指定されるURL欄
- GNL :放送ツールで指定されるジャンル欄
- NAM :放送ツールで指定されるタイトル欄
- TIT :放送ツールが送信する現在の曲名情報
- MNT :マウントポイント
- TIM :Unix epochでの放送開始時間
- TIMS : yy/mm/dd hh:mm:ss 表記での放送開始時間
- CLN :現リスナ数
- CLNS :Icecast1.3系が出力する延べリスナ数
- SRV :配信サーバホスト名
- PRT :配信サーバポート番号
- BIT :ビットレート
※livedoorねとらじ ナレッジベース:ヘッドライン取得ツールへの情報提供についてより
になりますが、リスナ数とか、放送開始時間くらいしか使い道はなさそうな予感……。
limitを0にすると全件取得になります。orderはascで昇順、descで降順にソートします。
出来上がったフィードには、タイトルとして番組名、linkは放送しているストリーミングのURL、authorは放送者名ってのは分からないので、マウントポイントの頭から / をのぞいたのものにしてます。
本文は、
ジャンル名
Broadcasting URL: http://203.131.199.131:8080/hoge
Relation URL: http://jbbs.livedoor.jp/music/00000/
Listeners: 18
Total listeners: 19
Bit rate: 24
みたいな感じにしてます。
これを元にして、ストリーミングをFetchすれば自動録音も出来ちゃったりするかもって気もします。
良かったらお試しくださいませー。
追記:
NetLadioはNetRadioのスペルミスじゃない? というメールを頂いたのですが、
5.ladioという表記に関して
ねとらじは2004年7月にlivedoorに営業譲渡を行いましたが、以前は個人で運営されておりその頃はladio.netというドメインで運営されていました。
これは単純にradio.netというドメインがとれなかった事に端を発しているのですが、今ではねとらじという一般のラジオとはひと味もふた味も違う放送の場の微妙なニュアンスを象徴しているのではないかと考えています。
個人運営の頃の歴史を引き継ぐ意味も込めて、現在もladio.livedoor.comというドメインで運用させて頂いております。
ということで、正しい表記なのです。紛らわしいですけども(笑)
ねとらじリスペクトということで、僕のプラグインもこの名前をつけることにしました。
Perlはあんまし得意じゃないなぁ、とか苦手意識があったんですが、それじゃいかんと勉強のつもりで書いてみました。
なので、コードとか結構変だったりするのかも。ううむ。
特に、
my $sort = lc($self->conf->{sort}) || 'tims';
my $order = lc($self->conf->{order}) || 'desc';
my @items;
if ($sort eq 'tim' ||
$sort eq 'cln' ||
$sort eq 'clns' ||
$sort eq 'prt' ||
$sort eq 'bit') {
@items = sort { $a->{$sort} <=> $b->{$sort} } @{$data->{source}};
} else {
@items = sort { $a->{$sort} cmp $b->{$sort} } @{$data->{source}};
}
@items = reverse @items if $order eq 'desc';
このあたり、各項目ごとにソートの方法を変える部分が、もうちょい何とかなるんじゃないかと思ったり。
あと、ねとらじ側で用意しているメタデータのXMLがS-JISなのでXML::Simpleでそのまま使えないので、
my $xml = $res->content;
from_to($xml, 'shiftjis', 'utf8');
$xml =~ s/shift\-jis/utf-8/;
こんな変換をしてみたんだけど、これも、もう少しうまいやりかたがあるような気もするし。
それから、初めてPODってのを書いてみたのだけど、その記述方法云々の前に、そもそも英語がおかしくないか? それが心配。日本語の文章をexcite翻訳かけて、ちょっと修正しただけなので……。
というわけで、アドバイスなんかもいただけると嬉しかったりします。
投稿者 CHEEBOW : 11:04
| [ Perl ]
2006年3月31日
昨日のYAPC::Asia 2006のプレゼンで興味を持った、PERL5WEBDBを手元のFedoraCoreマシンにインストールしてみました。
手順は、
# cd /var/www
# tar xzf perl5webdb-0.01.tar.gz
# cd perl5webdb-0.01
# bin/makeconf.pl `pwd` 3000 name pass >> /etc/httpd/conf/httpd.conf
# /etc/rc.d/init.d/httpd restart
こんな感じで。
ポートを何番にしていいのか良く分からなかったので、とりあえず3000とかにしてみた。これでいいんかな?
で、実際に http://localhost/webdb/ にアクセスしてみると、
Waiting for debugger...
わくわくして、待っても
Waiting for debugger...
あれれ。
なんか、僕が勘違いしてるとか、必要なものが入ってないとかなのかなー。
動かしてみたいのに。うーん。
投稿者 CHEEBOW : 13:50
| [ Perl ]
29日、30日の二日間YAPC::Asia 2006 Tokyoに参加してきました。
もともと、Perlは仕事で触ることはあるけど、そんなに好きな言語ではなかったのです。でも、MTに触れるようになってからは、とっても興味が出てきて、勉強をしたりしてます。まだまだ、経験も足りないし、Perlハッカーの集まりに参加してもなー、とは思わないでもなかっただけど、最近やたらアクティブでポジティブな僕は、えいやっ! と参加してしまいました。
しかし、まー、濃い。濃い二日間。
だって、会場を埋め尽くすのは、ハッカーだらけなんですよ。愛読してるブログのあの人や、この人。でもって、Perlの神様までいるし!
懇親会では、ビール飲みまくりで、いろんな人と話しまくり。でも、Perlの世界で僕はまったくの無名なので、自分のことを説明するのが大変。でも、今回は仕事の名刺とは別に「CHEEBOW名刺」を用意していたので、多少は分かってもらえたかなーと。いつかは、そんなんなしでも「あのCHEEBOW」って言われるようになりたいものですわ。うん。
朝からずっとセッションに集中してるので、疲労感もなかなかのもん。なのに、熱に浮かされたようにホテル(家まで帰るのが面倒で会場近くにホテルを取ってた!)に戻ってから、ハック!
翌日はなんとか寝過ごさずに起床。朝モスして、会場に。
セッションを夢中で聞く。でも、英語のセッションは、何を言っているのかがほとんど分からないので、楽しさ半減だったのだと思う。英語が分かればなぁ。でも、プレゼンの資料には翻訳もついてたので、なんとか理解は出来たかも。通訳だと、あのスピード感みたいなのはでないので、こういう方法はありかも。
あと、高橋メソッドを使う人が多かった。あのメソッドだと、英語のプレゼンでも、表示されている文章が短いので僕でも理解しやすくて、良いなーと思った。面白さとかスピード感だけじゃなくて、そんなメリットもあるんだなー。
しかし、濃い二日間だった。帰りの電車の中では、泥のように眠りこけました。
こんな素敵なイベントを企画、運営してくれたスタッフのみなさんにお礼を言いたいと思います。
ほんと、ありがとうございました。
むちゃくちゃ楽しかったです!
あ、で、僕が興味を持ったセッションの紹介と解説をば。
そのうち、プレゼン資料も公開されるのではないかと思うので、その時には、ぜひみてみてくださいまし。
・Plagger - RSS/Atom remixing platform
最近僕が興味を持っている、pluggableなフィードアグリゲーションソフトについてのプレゼン。
このプレゼンを聞いた後、がぜんやる気が出て、ホテルに戻ってからハックしてしまった。
・mixi.jp: ChangeLog
mixiがどのようにサーバを増強したり、負荷分散させてきたかの歴史。
さすがに、アクセス数がハンパじゃない。
プレゼンの後の質疑応答でも誰かが質問していたけど、この規模になったら、商用ソフトやハードの採用を検討してもいいかもと思った。
もしくは、Googleみたいに、根っこから自作するとか。
LAMPの限界ってのもありそう。
・the first postmodern computer language vs the first Babel-17 computer Language: Ruby
ご存知、高橋メソッドの、高橋さんによるプレゼン。
Rubyは、洗脳言語……なんだってーーーー!
・Perl Best Practices
とっても、ためになったプレゼン。
- コードのスタイルなんて気にせず、後で、Perltidyを使えばいいじゃない
- return undef; は駄目。return(); の方がいい。
- 正規表現を使うときは/xms を付けとくとイイ!
- モジュールを作る時は、Module-Starterを使おう。俺テンプレートも使えて便利!
なんて、Tipsが盛りだくさん。
Damian Conway
Oreilly & Associates Inc (2005/08)
売り上げランキング: 15,910
おすすめ度の平均:
あの会社にいた頃にこの本があったら
買わなくちゃ!
・Inside Hatena::Bookmark's Backend
はてなブックマークのサービス開始からの、サーバ構成の変遷。
あと、Apache2.2、かなりヨサゲ。
・rapide - Remote Apache IDE
Perl CGIのデバッガ。
すごく出来がいいので、びっくりした。
これは、かなり期待しちゃう。
ダウンロードはこちら。
Kazuho@Cybozu Labs: PERL5WEBDB
・ppencode for Perl6
とにかく腹を抱えて笑った。
内容もプレゼンも最高!
・Template Toolkit + Javascript = Jemplate
最近、流行のJemplate。
JSONを使うときとかに便利だなー。
ブログとかで噂は聞いていたけど、やっぱ、良さそう。
今度使ってみたい。
投稿者 CHEEBOW : 11:58
| [ Perl ]