2006-01-01から1年間の記事一覧

Rule::Deduped::DBIC

エントリの重複チェックを行う Rule::Deduped のサブクラス。Store::DBIC で保存した entry から検索するもの。 Store::DBIC を愛用しているので、僭越ながら書いてみました。 - module: Filter::Rule rule: module: Deduped engine: DBIC - module: Store::…

slashdot.jp で EntryFullText が失敗するように

突然なんで? と思ったら… Firefox の Cookie を有効にしていた ログインして、ライトモードで読んでいた ため。ライトモードと普通のモードは HTML が違う、というオチ。 しかもライトモードだと切り出すヒントになるようなマークアップがないな… <H2>業界共通の</h2>…

to_plain_object 再考

もうちょっと整理。 Plagger::Thing に、以下のようにする。 use Scalar::Util qw( blessed ); sub _to_plain { my $val = shift; blessed $val && $val->can('to_plain_object') ? $val->to_plain_object : $val; } sub to_plain_object { my $self = shift…

Morkの文字コード

http://d.hatena.ne.jp/sfujiwara/20060604/1149445141 昨日の続き。 どうやら UTF-16 みたい。で、手元の Linux / Windows の Firefox だと LE (little endian) なんだけど、Mac OS X (mac mini) だと BE だ。これって環境依存だな… #!/usr/bin/perl use En…

Publish::JSON との関連で

miyagawaさんと先週ちょっと話してそのままになってた。 やはり、単に Plagger::Feed を丸ごと Dump するだけだと余計なオブジェクトが入ったりして、あまり嬉しくない。Feed, Entry, Enclosure あたりが to_plain_object のようなメソッドを実装して、bless…

CustomFeed::Mork頓挫

先週からほったらかしのネタ。 File::Mork で history.dat を読んで CustomFeed にする、というものだが。title のデコードがわからん。 例えば "YouTube - スプー、襲来 [SPOO ATTACK]" というタイトル。 Y$00o$00u$00T$00u$00b$00e$00 $00-$00 $00$B90$D70…

Schema::Pg 作りたい

やっぱりちゃんと Schema::Pg を作ろうと思い立ち、作業してみたらちょっと悩む。Schema/SQLite/*.pm の belongs_to, has_many で __PACKAGE__->belongs_to( feed => 'Plagger::Schema::SQLite::Feed' );こんな風に hard code してあるところはどうしよう? …

PlaggerLDRのバックエンドをPostgreSQLに

なんとなく PostgreSQL にしたくなった。 Schema::Pg を作る必要があるか? と思ったのだけど、SQLite のそのまんまでいける。 ただ entry.date が timestamp 型でないのが少々気持ち悪くはあるが。 $ createdb -E UTF_8 plagger $ echo .schema | sqlite3 pl…

Firefox の履歴から YouTube だけ抜く

http://d.hatena.ne.jp/kkentaro/20060528/1148838634 Firefox の履歴から YouTube だけ抜く 抜くだけならこんなので。 use File::Mork; my $mork = File::Mork->new( shift ) || die $File::Mork::ERROR; foreach my $entry( grep { $_->{URL} =~ /youtube\…

Filter::YouTube

cl.pocari.org - YouTube でタグによる RSS フィードを取得するには YouTube から直接 RSS が取れるのか。 で、実際にPlaggerで取ってみたら entry->icon がなくて悲しかったので Filter を。[追記] Rev.849 で Aggregator::Simple が Media RSS から thumbn…

CustomFeed::YouTube

サムネイル画像の URL が変わったらしく、CustomFeed::YouTube で取れなくなっていたので patch. @@ -63,7 +63,7 @@ $title_flag = 0; } }; - m!<img src="(http://static\d+.youtube.com/[^">]+/1.jpg)" class="vimgSm" />! + m!<img src="(http://[\w-]*static\d+(.[\w-]+)?\.youtube.com/[^">]+/1.jpg)" class="vimgSm" />! and $data->{image}->{url}…

Hatena-TubeをPlaggerで - GM作った

index.html の書き換え云々、の部分は GM でやってしまえ。ということで。先頭の var base = の部分はご自分の環境に合わせて変えてください。 ただ、Jemplate.js (0.18に付属のもの) に以下の patch を当てないとループを回ってくれない。"No object to ite…

Hatena-TubeをPlaggerで

http://www.fladdict.net/app/hatenatube/ Hatena-Tube 面白い。 願わくば、データを JSON で扱ってくれたりすると「それPlaggerで(ry」ということになって、PlaggerLDR のような面白いことができるんだけど……ということで、 Plagger で Feed から JSON をつ…

Webalizerのsitesって何?

昨日呑んでいて、同僚から訊かれた。webalizer sites でぐぐると Webalizerの見方というページがトップにくるのだが(日本語ページで検索した場合)、そこにはこうある。 Vists(訪問者数)とSites(サイト)は、基本的に似ているのですが、Visitsは30分以内の…

CustomFeed::Hobbit & EntryFullText

http://d.hatena.ne.jp/sfujiwara/20060518/1147979612 EntryFullText でレポートページも取ってくる。assets/plugins/Filter-EntryFullText/hobbit.pl sub handle { my($self, $args) = @_; $args->{entry}->permalink =~ m!bb-histlog\.sh!; } sub extract…

GimageView(gimv)をFC5で

GimageView を Fedora Core 5 に入れようとしたらすんなり入らなかったのでメモ。 ぐぐって GimageView 0.2.27 の make には GTK+ 2.x が必須なのでは ? を見つけたので、gtk2 を使うようにする。gimageview-0.2.27.tar.gzに入っている gimageview.spec に以…

CustomFeed::Hobbit

Hobbit / Big Brother のイベントサマリー画面(bb2.html) を読む Feed。サーバ監視のお供に。 status red はメールが飛んでくるからすぐ分かるのだけど、status yellow (軽微な障害) は見落としがちなので。 一応、以下の3つで動作確認。 BB-1.9c : 会社の H…

MacBookさわってきた

@渋谷Apple Store。黒いのしかいじれなかったが。表面は少しざらっとしたマットな感触。液晶はいわゆるつるピカ。2.3kgという数字ほど重い感じはしない、が、きっと鞄に入れて持ち運んだら重いんだろうな。キーボード。平べったくてキー間に隙間があって、…

Filter::Mork

Mozilla/Firefox の history.dat(履歴を保存している) を読む File::Mork というモジュールが CPAN にあるので、それを使って…… package Plagger::Plugin::Filter::Mork; use strict; use base qw( Plagger::Plugin ); use File::Mork; sub register { my($s…

Aggregator::SimpleでBASIC認証付きのfeedを読みたいのだけど

Plagger::UserAgent は LWP::UserAgent を継承しているので、credentials を config で定義できればよさそう。 しかし、いろんな Plugin で Plagger::UserAgent->new() してるようだ。 どうやって設定したらいいのかね。Mozilla/Firefox の signons.txt の中…

UNIVERSAL::which - make test失敗

perl - UNIVERSAL::which 0.01 released! http://blog.livedoor.jp/dankogai/archives/50493218.htmlmake test が通らない。単純な typo みたい。 t/01-base........Can't locate Universal/which.pm in @INC--- t/01-base.t.orig 2006-05-14 05:09:02.00000…

Rails/Plagger/Prototype.js/Jemplateで求人が

http://cnetnetworks.jp/recruit.html 応募条件: ・年齢30歳程度まで ・PHP, Perl, Rubyいずれかの経験がある方 ・Oracle, Postgresql, Mysqlいずれかに経験のある方 ・Ruby on Rails, Plagger, Prototype.js, Jemplateいずれかに興味のある方 ・サービスを…

Plaggerの起床をコントロールしたい(?)

会社の Linux マシンで Plagger を使っていて、Subscription::LivedoorReader を mark_read: 1 にしている。 cron で 5分ごとに起動しているのだけど、そのまんまマシンを落とさずに帰ると、自宅から LDR が読めない。(Plagger が既読に設定しちゃうから)退…

GMなしで Plagger with LDR

http://subtech.g.hatena.ne.jp/miyagawa/20060509/1147150987 これはすごい。社内の (Internetに出せない) Feed も LivedoorReader でさくさく読める。 Greasemonkey なしで使うためにこんな手段を講じてみた。要は http://reader.livedoor.com/api/(all|su…

Class::DBI キャッシュするな!

Class::DBI 0.96 以降のキャッシュ機構が mod_perl 環境で悪さをする件。 startup.pl に $Class::DBI::Weaken_Is_Available = 0; と書いておけば OK …… ではなかった。 普通に $obj = Obj->retrieve($id); などとして取ってくる場合は上記記述でキャッシュし…

CatalystでクライアントのIPアドレスを得る

$ENV{REMOTE_ADDR} ではなく、$c->req->address を使う。 CGI, test server では $ENV{REMOTE_ADDR} が取れるが、mod_perl 環境では取得できないので。

DBIx::Class::Loader で View を扱う

Catalyst::Model::DBIC で View が扱えない話。 素の DBIx::Class ならば特に問題はない。 package PgTables; use base qw/DBIx::Class/; __PACKAGE__->load_components(qw/Core DB/); __PACKAGE__->connection('dbi:Pg:dbname=template1', 'fujiwara', '');…

CDBI vs DBIC

Class::DBI と DBIx::Class のパフォーマンス比較。最初は join の扱いを調べるために始めたのだけど、DBIx はパフォーマンスに気を遣って実装されているようなので、単純に速度を比べてみる。とあるアプリケーションで作った、tag のテーブル。データ件数10…

Catalyst::Plugin::Static::Simple と mod_perl の食い合わせ

Catalyst::Plugin::PageCache を使って caching をするようにしたら、 何故か時々 Internal Server Error が起きる。 access_log にはこのような記録。何故に HTTP Status が '1' なのだ? *.*.*.* - - [03/Mar/2006:05:17:05 +0900] "GET / HTTP/1.1" 1 757 …