トップ 最新 追記
RSS feed

ただのにっき


2001-12-27(木) 10142歩 [長年日記]

散財自慢

年末最後のバトルが繰り広げられている散財自慢だが、白状しなければならないことがある。このシステム、年を越せないのである。越せないわけじゃない(たぶん新年のデータはちゃんと入力できると思う)。前年以前のデータが見られないのである。だから、がんばって大晦日に散財しても、勝利に浸っていられるのはほんのわずかの間だけ。

それじゃぁあんまりだ、と思うので、年越し対応をしようと思っていたんだが、けっこう忙しいのとモチベーションがいまいち高まらないので(だって年間王者は某石油王の息子で決まりだしさ)、しばらくこのままで行っちゃうことにした。年が明けたら、新しい気持ちで散財に励んでください(笑)。

hnf対応tDiary?

よくやるなぁ(笑)。

続・tDiaryは重いか

重いったら重いよ。もぅ、1.3系ったら重くてしょうがないよ(←自分で作っておいて何を言うか)。

どれくらい重いか見てみようと思って、Ruby付属のプロファイラを使ってみた。最初は漠然と「I/Oがけっこう食ってるんじゃないのー」と思っていたのだが、ぜんぜん違った。通算50%近くの時間を食っていたのは、ERbCompiler#compileだった。あぁ〜、そりゃそうだ〜。

なにせ、ページの外枠、日記本文、プラグイン適用と、都合3回もERbを通しているのだ。重くて当たり前である。こりゃなんとかせにゃあかんかなー、と思ったのだが、なかなかいい解決策は思いつかない。

一番いいのはキャッシュだろう。リンク元表示をプラグイン化してしまえば、前の二段階まではほとんど変化がないので、最新表示だけでもあらかじめrhtml化しておけば、最後のプラグイン適用だけで済む。キャッシュの更新は、本文の更新時かツッコミがあった時だけ。これはやる価値があるかも。

キャッシュの応用として、ERbのメソッド化機能を使う手もある。でもメソッド化したらどっかにとっておかなきゃいけないので、mod_rubyを前提にしたり、dRubyを動かしたりしないといけない。これはちょっと仰々しすぎるな。

それから、ERbをやめてerubyを使うという方法もある。もっとも、比べてみたことがないので、erubyの方がどれくらい速いのかはわからない。そもそもAPIが違うから、そんな簡単な問題ではない。

一番楽なのは、ムーアの法則様にお願いすることだな。これなら何もしなくてもいいんだけど。お願い、ムーア様。なんとかして。

本日のツッコミ(全2件) [ツッコミを入れる]

みずほちゃん [今までの日記を変換したくないので、hnfに対応させています。ところで、他フォーマットの対応ってどうなるんでしょう?]

たおかか [ええっ!! てことは練習自慢も年を越せないんですか!? ショック・・・。新しい気持で練習に励むかぁ(笑)]


2001-12-26(水) 8958歩 [長年日記]

tDiary 1.3.2

リリースしました。夕べ出そうと思ってたけど、Ruby 1.6.6が出たのでちょっと動作確認などしておりました。問題なかったけど(たぶん)。今年はおそらくこれで最後。

1.3.1からの変更点は以下の通り(スナップショットでの変更点を含む)。

  • プラグインの実装
  • プラグインのサンプル提供(misc/plugin)
  • 最新表示で月をまたぐ
  • ツッコミサマリの表示長を2倍に
  • ツッコミサマリは新しい方を優先して表示
  • ツッコミフォームを、リンク元表示の上に移動
  • セクションを囲む<div class="section">を追加
  • symlinkで複数日記を運用する場合の負担軽減
  • mod_rubyで動かないバグをFIX
  • 更新時に呼ばれるプラグインのテスト実装

 詳しくはChangeLogを参照。プラグインに関する文書をmisc/plugin/README.htmlとして書いたのでどうぞよろしく。

最後の「更新時に呼ばれるプラグイン」についてちょっと解説。

通常のプラグインは実装者が好きな名前をつけられるんだけど、それを日記記述者がどこかで明示しなくてはならない。何かのイベントをきっかけに呼ばれるコールバックのような仕組みはこれではダメなので、名前を固定する必要がある(もちろんあらかじめ名前を登録するという方法もあるけど、複雑すぎる気がする)。そこで、updateという固定名称のプラグイン呼び出しをshow.rhtmlに埋め込んだ。

じゃあプラグイン実装者はこのupdateを上書きしちゃえばいいかというとそれでは困る。競合するとどれかひとつしか呼ばれなくなってしまうので。そこで、updateはそのままで、@@update_procというArraryなクラス変数にProcオブジェクトを追加してもらうことにしてみた。例えば、きたさんのrecent_listを外部ファイルに出力したいなんて場合はこう書く:

@@update_proc << Proc::new do
   open( 'recent_list.html', 'w' ) do |f|
      f.write( recent_list )
   end
end

 このサンプルのままだとHTML的に完結してないとか問題はあるけど、基本的にはこんな感じ。これを応用すると更新情報をrdfで出したり……なんて真似もできるはず。なお、updateは文字列を返しても意味ないので、空文字列を返すように実装されております。

 あと、ツッコミがあった時にはupdateは呼ばれない。ツッコミも引っかけたかったら、@mode'comment'の場合にだけ動作するプラグインを書いて、@header@footerに埋め込めばいいので。じゃあなんて更新時は同じやり方ができないんだ、というと、更新時には@header@footerを使わないからなのであった(笑)。

 でもなー。なんかスマートじゃないんだよ。もっといい方法が思いついたら、この実装はさくっとやめちゃうかも。

tDiaryプラグイン紹介

今日の紹介は2件。

きたさんのカレンダーは、hns風のカレンダー表示をするプラグイン。これの名称がcalendar2なので、1.3.2に添付のドロップダウン型カレンダーはdropdown_calendar.rbというファイル名に変更されました(夕べのスナップショットを持ってった人は気をつけましょう)。標準添付するから完成度上げてください(笑) >きた あと、recent_listも。

それから、妙にランキング好きなzoeさんの最近のツッコミ。あ、これはランキングじゃないか。zoeさんのプラグインもいくつか標準添付したいなぁ。

Kondara

姉御復活だ。嬉しいなぁ。

忘年会

今日はS.P.C.の忘年会で、仕事のあと小田原へ。いままで小田原をベースにしてきたけど、来年の2Qからは新横浜に移動かな。寂しいのぅ。もう一回くらい、小田原で部会をしよう。

本日のツッコミ(全1件) [ツッコミを入れる]

きた [うひー. 完成度向上目指して頑張ります.]


2001-12-25(火) 7347歩 [長年日記]

WebCamとか

あ、ライトアップされたので、暗くても見えるようになりました。色合いが妖しいです。ちゃんとポーズも取ってます。って、銃口をこっちに向けるなー(笑)。

WebCamと言えば、これ良すぎ。まるで左利きのために作られたかのようなデザインも好感。SPYZ買ってなければぜったい買ってたなー。くー。

そうそう、ホンダは青山のASIMOをWebCamで公開すべきだよ。ときどき誰も操縦してないのに動いちゃったりするといっそうカワユイと思うぞ(怖いだろ)。

あ、そうだ。例の幻のAsumi、「∀sumi」と呼ぶのはどうか(読めねー)。

RuBBS

WindowsでProcess::pidが使えないのは困るなー、と思っていたら$$なら使えるという記述が。なんでやねん。確かにWindowsのPIDが取れてるみたい。じゃあこれ使おう。

てぇことは、Process::pidが使えないのは、mswin32版Rubyのバグなんだろうか……? 仕様的にはバグだな、マニュアルの$$の項には「Process.pidと同じ」って書いてあるもんな。帰ったらruby-devに報告しよう。

[追記]あ、よかった。直るんですね。まぁ、とりあえずは$$でいいや。なんでツッコめなかったんだろう……。

あう、あおきさんにもツッコまれてしまった。mswin32な話をすっ飛ばしてるのがバレバレだなー(笑)。……と思ったらruby-bugs-jaか。そっちは見てなかった。

本日のハンティング

適当日記です(133)。技術系の話以外の人だっていますよー。でも、Rubyを使うというハードルのせいで、それ系の話が増えてしまうのは否めないか(笑)。

本日のツッコミ(全4件) [ツッコミを入れる]

あぱれる [た,ターン...]

あおき [$$ と Process.pid が違うバグはこないだ 報告されてますよ。(ruby-bugs-ja PR#153)..]

mutecat [今日のハンティングってなんか良い感じ。]

arton [うーむ、バグだったのか(RubyRobots作ったときに気付いてたけど、そういうもんだと思ってた……)]


トップ 最新 追記
RSS feed