OpenFLのクローラにPlagger::Plugin::Store::Fastladder使ってみた
オープンソース版 Fastladder(以下 OpenFL)を使うと、ローカルからのロードなので先読み機能もかなり強力になっています。
もうそれは、しゅぱぱぱぱってフィード読み込めちゃって、まだまだ数千フィードも読んでない僕からしてみれば明らかに宝の持ち腐れなんですけど、移動中や学校、ネットの繋がっていないところで RSS をチェックしたいっていう願望はあったわけです。
アプリケーション版の RSS アグリゲータでもいいけど、どうせなら mixi とかはてブとかも読みたいし、Plagger したかったけどいままでは LivedoorReader つかってたので PlaggerLDR 使うとかしか方法がありませんでした。
よくわからないので、PlaggerLDR は入れなかったわけですが、OpenFL が出てきて、もうマジ ktkr でした。
とか僕の背景はどうでもいいわけですが、OpenFL のクローラを Store::Fastladder 使うための手順を書いておこうと思います。(ここでは MacOSX/Leopard を使った例を書きます)
OpenFL の DB を MySQL にする
Store::Fastladder が(おそらく)MySQL しか使えない模様だし、SQLite は数ヶ月で重くなっちゃうらしいので、ここは MySQL にしておきます。
MacOSX では dmg から入れる方法と MacPorts から入れる方法があるわけですが、僕は MacPorts からインストールしました。
sudo port install mysql5 +server
make スクリプトが延々走るのですが、それを最大化して教室でやってたらクラスの女子にキモイとか言われたので気をつけましょう。
設定ファイルを弄ります。
sudo cp /opt/local/share/mysql5/mysql/my-small.cnf /opt/local/etc/mysql5/my.cnf
sudo vi /opt/local/etc/mysql5/my.cnf
[mysqld]に次の行を追加
[mysqld]
…
default-character-set = utf8
default-storage-engine = innodb
パーミッション設定
sudo chown -R mysql:mysql /opt/local/var/db/mysql5/
データベース初期化
sudo -u mysql mysql_install_db5
MySQL のロード
sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
起動しているかの確認
mysql5 -u root
これでウェルカムだの言われれば成功です。
OpenFL で MySQL を使うようにする
まず、OpenFL の最新版を取得してください。(→svn up しろ)
database.yml を MySQL 用にします。
cp config/database.yml.mysql config/database.yml
これを任意に設定。
adapter: mysql
encoding: utf8
database: fastladder
username: root
password:
socket: /opt/local/var/run/mysql5/mysqld.sock
と、すると幸せになれます。
設定が終わったので、データベースを初期化。
mysqladmin5 -u root create fastladder
RAILS_ENV=production rake db:migrate
rake でがーっとなんか出てきたらたぶん成功です。
ついでに、script/server -e -d production とか打ってサーバ起動しておきます。
さらにさらにlocalhost:3000とかにアクセスして、アカウントも作成しておきましょう。
DBD::mysql を入れる
DBD::mysql とか言うモジュールはそのままだと動かないそうなので、ちょっと書き換えて make し直します。
まず普通にインストールします。
sudo cpan -i DBD::mysql
MySQL のコンフィグにシンボリックリンクを張ります
sudo ln -s /opt/local/lib/mysql5/bin/mysql_config /usr/local/bin/mysql_config
cpan の作業ディレクトリに移動
cd ~/.cpan/build/DBD-mysql-*.****/
***の部分はおのおの違うので臨機応変に
で、次のコマンドを叩く
sudo perl Makefile.PL --cflags=-I/opt/local/include/mysql5/mysql "--libs=-L/opt/local/lib -L/opt/local/lib/mysql5/mysql -lmysqlclient -L/opt/local/lib -lz -lm -L/opt/local/lib -lssl -lcrypto"
そして make します。
sudo make
sudo make test
sudo make install
Store::Fastladder を入れる
Store::Fastladder は、まだ Plagger の trunk にはありません。
なので次の場所からチェックアウト
svn co http://svn.bulknews.net/repos/plagger/branches/fastladder-crawler/plagger/ fastladder-crawler
これが plagger でも使えるようにシンボリックリンクを張ります。
ln -s fastladder-crawler/lib/Plagger/Plugin/Store/Fastladder trunk/lib/Plagger/Plugin/Store/
これで Store::Fastladder が動くはずです。
適当に yaml 書いて Store::Fastladder すれば完璧です。
- module: Store::Fastladder
config:
connect_info:
- dbi:mysql:fastladder
- root
- on_connect_do:
- SET NAMES utf8
member_id: 1
おめでとうございます。ありがとうございます。
- Leopard に MySQL と DBD::mysql を入れる方法 - Do you read me?
- MacPorts で MySQL5 をインストール | stick stack
- FreeBSD に Fastladder インストール - dzfl?
ちなみにこれをすることによって、イントラネットな学内ウェブも OpenFL で読むことが出来ます。(学校に来たときに学校用の yaml で plagger を動かせばいいだけ)
今居るネットワークが学内なのか学外なのかを判断して、yaml を自動的に切り替えるソリューションとか作りたいですね。
学内に居たとしても Proxy を経由すればコンテンツとれるわけですが、いまいち Plagger で Proxy を通す方法が分からない・・・。
追記
日本語でおk!