よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

September 03, 2002

[tDiary] アクセスカウンタ表示プラグイン

またしてもデータが壊れた。うまく自動復旧できていなかったのかな...。今から見直します。しくしく。

... あれ? ローカルな環境だと仕様通りに動くな....、うーむ。やはり、XREAの規約が気になるなぁ。結構負荷かけてるし。

[tDiary] 本日のリンク元表示プラグイン

もしかしたらすでに気づいていた人もいるかもしれないが、Linuxビボ〜ろくでは本日のリンク元表示プラグインの次バージョンをテスト中だ(まだリリースしてないので注意)。

前回のリリース時に出た要望等(ってもう1月たつのか...(^^;))、それからたださんのUTF-8の自動判別(2)を若干形を変えて導入してある。

また、今度のバージョンでは検索エンジン以外のリンク元も整理できるようにした。実は作り始めた当初からこれがやりたかったんだよね。

きちんとメンテナンスすればかなりスッキリとした「本日のリンク元」になるはず。

そんなわけで、表示内容的には満足行く形になりつつあるのだが、その代わり相当重くなってしまった。プロファイリングしてみるとcounter.rb/disp_referrer.rbのセットでtDiary本体よりも負荷かかってたりする(^^;)。

最近、良くデータが壊れるのもこれとXREAの規約が絡んでいる可能性があるかも。

特に本日のリンク元表示プラグインは配列操作・文字列操作が多くて遅かった。

そこで、コードを見直してできるだけ高速化してみた。実はこれに2日くらいかかってしまった(実際、昨日までのバージョンに比べると倍近い実行速度になった)。まぁ、最初のバージョンの実装がダメすぎと言われたらひとたまりもないのだけど(^^;)。

で、プロファイリングをしていて気づいたんだが、本日のリンク元表示プラグインはURLエンコードやHTMLエンコードを繰り返し行っていて、これが結構高負荷だった。

そこで、MoonWolfさんのFastEscというのがあったのを思い出し実際に使ってみると、さらに10%くらいプラグインが速くなった(合計で最初のバージョンの40%くらいの実行時間になった)。というわけで、次のリリースではFastEscを必須にしようと思う。インストールが面倒くさくなるけどお許しを。

ちなみに、FastEscに含まれるcgi_fastesc.rbは、requireするだけで、CGI::(un)escape,CGI::(un)escapeHTMLをFastEscで置き換えてくれる。そこで、これはひょっとしてと思ってtdiary.rbの先頭あたりでrequireしてみたところ、若干ではあるが速度改善が(ただプロファイルの数値的には誤差の範囲かもしれない....)。

XREAでtDiary使ってたりCPU負荷率が気になる人は試してみると良いかも。

個人的な好みとしてはFastEscがStringクラスを拡張する形になっているのがちょっと残念。Moduleの形だとなお良かったんだけどなぁ。でもRubyでCGIやる人にはオススメ。

おっと忘れてたんだけど、本日のリンク元表示プラグインはもうちょっと調整して今週末にでもリリースするつもりなのでしばらくお待ちください。

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

MoonWolf [Nora(http://www.ruby-lang.org/en/raa-list.rhtml?name=Nora)..]

むとぽん [情報どうもです。後で見てみますね。]


September 03, 2006

[tDiary] amazon.rb入れ替え

9月からAmazonの何やらの仕様が変わり、昔のプラグインのままだとうまくAmazonの商品ページに飛んでくれないとのことなので、amazon.rbとja/amazon.rbを入れ替えた。amazonのキャッシュデータを削除して再度動かしたところ、無事に動いている模様。


September 03, 2007

[Ruby] URI.joinとFile.joinの挙動の違い

うーむ。オレ的には同じ結果が返ってきて欲しかったんだけどそういうモノでもないのか・・・。

% ruby -v
ruby 1.8.6 (2007-03-13 patchlevel 0) [x86_64-linux]
% irb
irb(main):001:0> require 'uri'
=> true
irb(main):002:0> File.join("http://www.yotabanana.com/lab", "20070101.html")
=> "http://www.yotabanana.com/lab/20070101.html"
irb(main):003:0> URI.join("http://www.yotabanana.com/lab", "20070101.html").to_s
=> "http://www.yotabanana.com/20070101.html"

URI.joinではlabの部分が抜けちゃうのね。とはいえFile.joinをURIをjoinする目的で使うのも気が引ける・・・ま、でも、File.joinはWindowsでも"/"が使われるから使えないこともないな。


追記