Twitter 上で要チェックなポストは、今年の4月から MAILPIA でケータイにメール通知するようにしていた(記事)のだが、最近メールが届かなくなってしまった。 フィードを変更してみたりメールアドレスを変えてみたりしたが駄目。 他に良さそうなフィードメール通知サービスが無さそうだったので Plagger を使うことにした。
Plagger は以前途中までインストールしようと思ったのだが、依存 Perl モジュールが多くて途中でやめてしまった。 今回は目的があってインストールするので、頑張ってインストールした。
インストールするホストに libxml2 と OpenSSL が無くて必須モジュールが入らなかったので、これを別途インストール。 Plagger は Subversion リポジトリの trunk をチェックアウトしてインストール。 依存 Perl モジュールは CPAN から。
ケータイ向けにテキスト形式のメールを送る Publish プラグインは Web で見つけたものを流用。まずは以下の3つレシピを cron で 10分毎に実行するように設定した。 メールは基本的に Gmail アカウントに送ってフィルタでケータイに転送。 うまくいっている感じ。
Plagger で Twitter にログインして replies API にアクセスするようにもできるけれどパスワードを書いておきたくないので、先月作成した CGI スクリプト(記事)経由で取得することにした。
[Twitter] ↑ [replies.atom さらし CGI スクリプト] ↑ [Plagger (cron で 10分毎)] ↓ [Gmail] ↓ [ケータイ]
Plagger で直接各 Twitter-ers のフィードを取ってこれるけれど、10分毎にアクセスするほどでもないので、Google リーダーに Twitter-ers のフィードをフェッチさせてタグでたばねて公開したフィード経由で取得することにした。
Plagger のレシピをいじらないで Google リーダー上で Twitter-ers を追加・削除でき、Google リーダーでもポストを読めるというのが利点。 ポストが少ない Twitter-er のフィードは Google リーダーが巡回頻度を下げるのでタイムラグが大きくなることがあるのが欠点。
[Twitter] ↑ [Google リーダー] ← [Web ブラウザ (設定・チェック)] ↑ [Plagger (cron で 10分毎)] ↓ [Gmail] ↓ [ケータイ]
外出先などで、居場所やイベントの情報を Twitter でチェックしたい時がある(役に立つかどうかは別として)。 ケータイから定期的に検索かけるなんてありえないので、メールでプッシュしておいて(気がむけば)読むぐらいにしておきたい。 キーワードの設定・管理については、操作・サーバ実装とも楽したい。
Twitter 関連ということで頻繁にケータイでアクセスして画面に出ている MovaTwitter を活用したい。 ということで MovaTwitter のクリボーに「アクセス keyword」と書くことで検索キーワードを指定できるように組んでみた。
[MovaTwitter クリボー] ← [ケータイ (キーワード書き込み)] ↑ ↑ クリボーのフィードを読んでキーワードを取得 ↑ [CGI スクリプト] → [twitter検索] ↑ [Plagger (cron で 10分毎)] ↓ [Gmail] ↓ [ケータイ]
いまさらだけれど、Plagger 便利だな。 とっかかり(インストールと概要理解)がちょっと難しいけれど、それを乗り越えてしまえば Perl なんでどうとでもなるという感じ。
社内 Web ページ全文検索用に設定していた Hyper Estraier だが、かなーり前からたまにクロール/インデックス作成に失敗してインデックスが壊れてしまうことがあった。で検索できないまま放置していたのだが、やはり時々検索したいというリクエストをもらったので、復旧することにした。 Hyper Estraier も 1.2.7 のままだったので、最新版に更新。 設置が 2006年6月なので3年ぶりの更新。
前回と同様ソースからのインストール。 今回は自分のホームディレクトリ以下に。 以下作業手順メモ。
wget http://qdbm.sourceforge.net/qdbm-1.8.77.tar.gz tar zxvf qdbm-1.8.77.tar.gz cd qdbm-1.8.77 ./configure --enable-zlib --prefix=$HOME/local/hyperestraier-1.4.13 make check make install
wget http://hyperestraier.sourceforge.net/hyperestraier-1.4.13.tar.gz tar zxvf hyperestraier-1.4.13.tar.gz cd hyperestraier-1.4.13 PKG_CONFIG_PATH=$HOME/local/hyperestraier-1.4.13/lib/pkgconfig ./configure --prefix=$HOME/local/hyperestraier-1.4.13 make make check make install
前回 /usr/local/var/lib/hyperestraier/estwaver に保存するようにしていたので、今回もそそれはそのままで。 クローラのルートにある _conf は作り直しの際に間違えて消してしまいそうになるので、ホームの etc においておいてシンボリックリンクをはっておく。 _conf は以前に作っておいたものを利用。
mkdir /usr/local/var/lib/hyperestraier/estwaver $HOME/local/hyperestraier-1.4.13/bin/estwaver init /usr/local/var/lib/hyperestraier/estwaver rm /usr/local/var/lib/hyperestraier/estwaver/_conf ln -s $HOME/etc/hyperestraier/_conf /usr/local/var/lib/hyperestraier/estwaver/_conf $HOME/local/hyperestraier-1.4.13/bin/estwaver crawl -revcont /usr/local/var/lib/hyperestraier/estwaver
cd $WEBDIR/search/hyperestraier cp $HOME/local/hyperestraier-1.4.13/libexec/estseek.cgi . chmod 755 estseek.cgi cp $HOME/local/hyperestraier-1.4.13/share/hyperestraier/locale/ja/estseek.* .
で estseek.conf を編集。indexname を /home/naney/local/hyperestraier-1.4.13/estwaver/_index に。その他好みにあわせて設定を変更。
前回の設定では、クロールとインデックスの更新夜中に行うからインデックスがロックされてもいいやと直にオリジナルのインデックスを更新するようにしていたが、今回はきちんとコピーして更新するようにした。 1日1回以下のスクリプトを実行するように設定。
#!/bin/sh PREFIX=/home/naney/local/hyperestraier-1.4.13 VARDIR=/usr/local/var/lib/hyperestraier test -e $VARDIR/estwaver-copy && exit cp -a $VARDIR/estwaver $VARDIR/estwaver-copy $PREFIX/bin/estwaver crawl -revcont $VARDIR/estwaver-copy $PREFIX/bin/estcmd inform $VARDIR/estwaver-copy/_index || exit rm -rf $VARDIR/estwaver mv $VARDIR/estwaver-copy $VARDIR/estwaver
リクエストしてくれた人、検索できるようになったから使ってね。
www.naney.org で使っているホスティングサービスは
という点でいろいろ遊べるのだが、
などから使いづらくなってきた。 なにより容量を気にして記事を書き控えようという心理が働くのがよろしくない。 そろそろ今後を考えて他社に乗り換えようかと。
選んだのはやはり人気があって SSH も使える「さくらのレンタルサーバ」。
選んだプランは容量 10GB のプレミアム。 スタンダードでも容量 3GB でまずまずだし cron も使えるから機能的にも十分なんだけれど、1ホストあたりの収容ユーザ数により余裕があるであろう1つ上のプランにしておいた。
Web から申し込んで、風呂に入っている間に DNS 設定が反映されて SSH ログインできるように。 順次ソフトウェアのインストール・コンテンツの移行とメールの設定をしてから、naney.org をこちらに切り替える予定。
naney.org メールサーバの移転に次いで、Web サーバの移転作業。
現行 Web サーバと Unison でファイル同期している Web コンテンツを、さくらのレンタルサーバへ Unison でファイル同期。
nDiki 用に DiKicker (WiKicker) を make install。
%bash $perl -MCPAN -e mkmyconfig $perl -MCPAN -e shell o conf makepl_arg PREFIX=/home/naney/local/WiKicker o conf mbuildpl_arg --install_base=/home/naney/local/WiKicker o conf commit notest install CGI::SpeedyCGI $tar zxvf WiKicker-0.420.tar.gz $cd WiKicker-0.420 $export PERL5LIB=$HOME/local/WiKicker/lib/perl5/site_perl/5.8.9 $perl Makefile.PL PREFIX=$HOME/local/WiKicker $make $make install
以前きっちり Module::Install で Makefile.PL を作っておいたおかげで、比較的スムーズにインストールできた(自画自賛)。
ちょっとはまったところは CGI::SpeedyCGI の make test を実行する(される)と SSH 接続がサーバ側から切られてしまうという現象にあったところ。 テスト用に大量にスクリプトが起動されるの検出して自動的に kick されたのだろうか。
さくらのレンタルサーバでは .htaccess Options が使えないようなので削除。 ExecCGI や MultiViews が有効になっているようなので問題なし。
Perl 5.005_03 用に書いてあったスクリプトについて、Perl 5.8.9 で文字化けしないように utf8 まわりを修正。
1時間毎に実行したい処理を列挙するシェルスクリプトを1つ作って、コントロールパネルから1時間毎に実行するように設定。
現行サーバでは任意の crontab を設定できたので、1時間毎はちょっと物足りない。 おいおい負荷にならない範囲で、外部から定期的に HTTP アクセスして処理を定期的に実行できるようにもするかな。
まだ動いていないスクリプトもあるけれど(大きいところだと NaneyOrgWiki (Wiki))現行サーバの解約日もせまっているので、サーバ移転させてしまうことに。
VALUE-DOMAIN で DNS サーバ設定を変更し www.naney.org でさくらのレンタルサーバにアクセスできるように A レコードを変更。
今のところ特に重い等もなく順調。 現行サーバでは深夜非常に重くなる時間帯があったのだが、それが無くなるのが嬉しい。 また容量が100MB*1から10GB*2になったので心理的にセーブしなくて良くなった。
年内に移行できて良かった良かった。
[ さくらのレンタルサーバ プレミアム ]
一昨日の夜から Twilog を使い始めてみた。あ、これいいね。
「Twitter のつぶやきをブログ形式で保存するサービス」というのにひっかかって今まで使わないでいたのがちょっともったいない。 自分の tweet は「RSS から cron で一定時間毎に取得して nDiki 用のマークアップ付きテキストファイルに自動変換」(記事)して「手動で取捨選択・編集して1〜数日分で1記事化」しているんだけれど、プレーンな形式では残していないので保存用に CSV 形式で取得できるのは非常にありがたい。定期的にダウンロードして保存したい。
ちなみに多くの人が言っているように他人の「その人のその日の tweets を順番に並べただけのまとめ記事」ってとてもつまんない(nDiki でもやっているけど)。 でも本人にとっては見返してみると記憶が蘇えってきて結構楽しいし、またきちんと検索できればパーソナルデータベースとしても非常に便利。 だからどんどんやればいいと思うよ。
あー、自分の Tweet 取得スクリプトも一部は v1.1 に合わせたのだけれど、RSS フォーマット版で呼んでて JSON 対応は先送りしてたんだよね。
ということで cron で動かしているのだけれど取ってこなくなった。週末修正するかなぁ。それともメンテナンス止めて Twilog のログダウンロードで済ますかなぁ。
Thanks everyone! API v1 Retirement is complete. Please use API v1.1 instead. dev.twitter.com/blog/api-v1-is…
— Twitter API (@twitterapi) June 11, 2013
IFTTT + HootSuite が HootSuite 障害で動かなくなった。
→ IFTTT + Gmail に変更。URL 短縮も自前でやる必要があるのでフィード側で対応したものの、Gmail 側に bot 疑惑をもられたのか「送信メールが reject される」「Gmail ログイン時に CAPTCHA 入力を求められる」「Android での Google アカウント設定も一度強制的に無効化された」などとなり、ban の危険性が出てきたので停止。
→ かわりに IFTTT の Mail チャネルを使おうかと。Mail チャネルだとそのアドレスにしか受信できないので、受信したら自動的に別のアドレスに配送するプログラムを書くことにする。さくらのレンタルサーバでのプログラム実行方法を確認。
→ IFTTT で Mail チャネルに送った場合 text/plain なパートはボディ中の URL が変なクリックトラッカーの URL に置き換えられているので使えないことが判明。text/html パートの方を使わないと駄目ぽ。ということで Perl スクリプトで「Email::MIME で parse」「HTML::TreeBuilder で該当箇所を抽出」「Email::Sender::Transport::SMTP::TLS」でメール送信するようにした。IFTTT での trigger が foursquare の時と feed の時で Email チャネルから送信される HTML 構造が変わるなんて……。組み合わせ別にテンプレートが違うのか。
→ 配送できるようになったけれど IFTTT からうまく送られない。再 activate しても PIN すら届かない。別のメールアドレスにすると PIN が届く(数時間後だったりすぐだったり)ので、窓口にしたいメールアドレスが利用不可になっているか(テスト中にエラーを返してしまっていて使えない判定されたとか?)、IFTTT の方の配信が詰まっているのかよくわからない状態。プログラムができたのにそもそも送られてこないとは。
→ という作業をしている間に放置していた postmaster に3万通ぐらい cron のログがたまってたのに気がつく。Gmail で受信しておくようにするかと Mail Fetcher 設定。そうしたら10数時間後ぐらいから、同じ Gmail アカウントに設定してあった Mail Fetcher を巻き込んで全部「確認中」で止まってフェッチしてくれなくなってあばば。急いで postmaster の Mail Fetcher 設定を外す。数時間後に他のフェッチが再開し始めてほっと一安心。
→ イマココ。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。