2009-07-11 :-)
_ おひる
シーフードのクリームソーススパゲティ
_ [リッジレーサー7]リッジレーサー7
オンラインバトルなど。どうもルーム内での反応が遅いというか自分以外の反応が見えないときがある。ネットワークがラグってるのか。
- 走行距離 25186.181 km
- RSGP 進行度 100.0 %
- 名声 18831 FP
_ 読書
2009年6月29日 - 2009年7月5日の読書メーター
読んだ本の数:1冊
読んだページ数:285ページ
狼と香辛料〈7〉Side Colors (電撃文庫)
短編と中編。あとがきを読むまでホロ視点ということに気づかなかった。「甘いにおい」という言葉が多用されており、アリエスにくんかくんかしたい
読了日:07月02日 著者:支倉 凍砂
読書メーター
_ [読書メーター]読書メーター先週分のまとめプラグインの詰めが甘かったので結局 posttdiary することにした
アレ [ 20090619#p06 ]
プラグインが呼ばれるたびに最新の「先週分のまとめ」を取得して出力しているので、過去に書いた日記を表示すると表示した日を基準にして「先週」のぶんが表示されることになる。おそまつ。
取得した「先週分のまとめ」をどこかに保持しておけばいいんだが、tdiary のキャッシュを使えばよさそうなんだが、日記本文をキャッシュに保存しておくのはおかしいよなあ、ということであまり良い解決策を思い浮かばなかったので結局文章を posttdiary するようにした。
こんな流れ。いくつプロセスを起動するんだよ、という富豪なアプローチ。
crontab の @weekly を書いておく ↓毎週日曜日 00:00 book_meter.rb が起動する ↓先週分のまとめを取得 ↓ localhost:25 へ投げる postfix が受け取る ↓ .procmailrc を置いておく procmail が起動する ↓ posttdiary が起動する ↓ tdiary へ書く
こんな book_meter.rb を用意しておく。日記への書き込みも WWW::Mechanize で出来そうだがまあいいや。
#!/usr/pkg/bin/ruby -Ke require 'rubygems' require 'mechanize' require 'tmail' require 'net/smtp' require 'nkf' class BookMeter def initialize @from = 'foo@example.jp' @to = 'bar@example.org' end def get mail = 'hoge@example.com' pass = 'PASSWORD' agent = WWW::Mechanize.new agent.get('http://book.akahoshitakuya.com/login') agent.page.form_with(:action => '/login'){|f| f.field_with( :name => 'mail' ).value = mail f.field_with( :name => 'password' ).value = pass f.checkboxes[ 0 ].check f.click_button } page = agent.get('http://book.akahoshitakuya.com/matome_lw') body = Nokogiri( page.body ) text = body.search( 'textarea' )[ 1 ].to_s text.sub!( '<textarea onclick="this.select()" style="width:500px;height:200px;">', '' ) text = "{{'" + text + "'}}" return text end def tsend( message ) mail = TMail::Mail.new mail.to = @to mail.from = @from mail.subject = NKF.nkf( "-M", "読書" ) mail.date = Time.now mail.mime_version = '1.0' mail.set_content_type 'text', 'plain', {'charset'=>'iso-2022-jp'} body = message mail.body = NKF.nkf( '-j', body ) mail.write_back Net::SMTP.start( "localhost", 25 ) {|smtp| smtp.sendmail mail.encoded, @from, @to } end end def main bm = BookMeter.new text = bm.get bm.tsend( text ) end main