トップ 最新

ただのにっき

2009-03-29(日) [長年日記]

Jリーグの試合速報を携帯で見やすくする

スーパーサッカーの速報をスクレイピングして、シンプルなテキストを吐くスクリプトを書いただけなんだけど(ソース@gist→mobile_supers.rb)。相当シンプルにしてあるので、スタジアムの混雑した電波状態でも快適……なはず。来週の名古屋戦で試す。

自宅サーバが死ぬまでは別の(もっと泥臭い)スクリプトでやっていたんだけど、最近けっこうまともなHTMLになったようなので今回からちゃんとNokogiriを使った。

とはいえ、これを短間隔のcronで回すというのも芸がない。というか、試合やってないときまでアクセスさせたくない。かといって、CGIにして毎回動的に作らせるのも、相手サイトの負荷が高いときのレスポンスが気になる。で、

  • 最短5分間隔で最新情報を見られるようにする
  • それより短い間隔でアクセスしても静的ファイルが返るだけ

という運用方針のもと、実現するためにたつをさんのキャッシュ方式を参考にして.htaccessでmod_rewriteを設定した。まぁ、ほとんど丸写し:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/football/score\.txt$ /cgi-bin/update-score.cgi [L]

update-score.cgiはこんな感じ:

#!/usr/bin/ruby
require 'nkf'
require 'mobile_supers'
text = NKF::nkf( '-s -Z1', Jleague.miniscore2mobile )
open( '../football/score.txt', 'w' ) {|f| f.write( text ) }
print "Content-Type: text/plain; charset=Shift_JIS\n\n#{text}"

あとは5分間隔でcronを回して、score.txtを削除すればよろしい。あとやるとすれば、リンク先も同じように見られるように拡張するとか、そんなところか。

単体ファイルのソース管理にGist + gistyを使う

上のような「プロジェクトにするほどでもない」プログラムを公開したり、ソース管理したいときにはGitHubのGistが便利なんだけど、gistyを入れるとさらに便利になる。

Gistの使い方やgistyのインストール方法はあちこちで書かれているので略。cloneされたGistのプロジェクト(?)は数字列で可読性が低いので、symlinkを張るといいね:

% echo $GISTY_DIR
/home/sho/src/gists
% cd ~/src
% ln -s gists/87404 mobile_supers

いつものように、防火壁の内側からproxy経由のsshでGistを使うためには、~/.ssh/configに以下を追加すれば良いようだ:

Host gist.github.com
HostName ssh.github.com
Port 443
ProxyCommand corkscrew YOUR_PROXY_HOST YOUR_PROXY_PORT %h %p

GistのリポジトリはGitHubそのものとはホストが違うからsshサーバも別かと思ったら、これは共通でいいようだ。Corkscrewの設定など、その他のノウハウは以前の記事を参照:

Tags: git