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

May 04, 2008 [長年日記]

[Fedora] ASX形式のムービーをFirefoxからワンクリックで参照する

インターネット上の商用サイトではムービーを表示するためにASX形式のファイルを指定していることがある。これ自体はただのXMLファイルで中にwmvファイルのURLが記述されているだけのもので、gmplayerとwmvファイルを実行できるプラグイン(というかDDLだっけな、忘れた)が入っていれば-playlistオプションをつければ適切に実行することができる・・・んだけども、Firefoxでリンクをクリックして「アプリケーションで開く」でgmplayerを選択してもそのままでは実行できないので不便だ(wmv形式だとそのまま実行できるんだけどね)。Firefoxでは実行するアプリケーションを選べてもアプリケーションの起動オプションまでは指定できない・・・よね。

で、しょうがないので、以下のようなshellスクリプトを書いてそいつを指定することでgmplayer経由で実行できるようになった。

/usr/local/bin/asx_gmplayer.sh
#!/bin/sh
/usr/bin/gmplayer -cache 4096 -playlist $1

やっぱり、Firefox上からクリックするだけで起動できるようになったのはだいぶ楽だね。にしても、もっといいやり方ないのかなー。


May 11, 2008 [長年日記]

[Ruby] Ruby-GetText-Package セルビアン語リソース

セルビア語のリソースファイルを追加しました。ちなみにセルビア共和国は、南東ヨーロッパ、バルカン半島西部の国なんだそうです。

セルビア語リソース


May 12, 2008 [長年日記]

[Ruby] Ruby-GetText-Package-1.91.0 リリース!

まず、1.90.0からはRails-2.0.xのみのサポートとなってます。1.90.0をリリースしてから1.2.xで試して動かねーと言うレポートを何回か頂いたのですが、Railsの内部構造が変わった関係で(深く追えていないのですが)、とりあえず2.0.x向けに修正+テストしてます。

#どなたか1.2.xでも動作するようにしていただけたら助かります。

さて、本題。今回、仕様上の追加はほとんどしてません。しかし、1.90.0でメモリリークしていたのを修正したので1.90.0を使っている方はぜひアップデートしてください。

また、メモリリークを修正する過程で多少ですが速度改善できました。

こんなベンチマークを試してみます。

% cat benchmark.rb 
require 'benchmark'
require 'gettext'
include GetText
Benchmark.bm(18){|x|
  x.report("bindtextdomain"){ 50000.times{|i|
    bindtextdomain "test1"
  } }
  x.report("set_locale"){ 50000.times{|i|
    set_locale "ja_JP.UTF-8"
  } }
  set_locale "ja_JP.UTF-8"
  x.report("_() ja found"){ 50000.times{|i|
    _("language")
  } }
  x.report("_() ja not found"){ 50000.times{|i|
    _("language2")
  } }
  set_locale "en"
  x.report("_() en found"){ 50000.times{|i|
    _("language")
  } }
  x.report("_() en not found"){ 50000.times{|i|
    _("language2")
  } }
}

まずは1.10.0の実行結果。

                        user     system      total        real
bindtextdomain      1.290000   0.010000   1.300000 (  1.298361)
set_locale          3.530000   0.000000   3.530000 (  3.595346)
_() ja found        0.750000   0.010000   0.760000 (  0.763718)
_() ja not found    0.760000   0.000000   0.760000 (  0.761279)
_() en found        0.760000   0.000000   0.760000 (  0.768678)
_() en not found    0.770000   0.000000   0.770000 (  0.771336)

1.90.0でだいぶ改善します。が、メモリリークが・・・(しくしく)

                        user     system      total        real
bindtextdomain      0.900000   0.010000   0.910000 (  0.935536)
set_locale          3.730000   0.060000   3.790000 (  3.895379)
_() ja found        0.520000   0.000000   0.520000 (  0.550447)
_() ja not found    0.590000   0.000000   0.590000 (  0.585841)
_() en found        0.670000   0.000000   0.670000 (  0.684824)
_() en not found    0.500000   0.000000   0.500000 (  0.513706)

そして1.91.0。

                        user     system      total        real
bindtextdomain      0.930000   0.000000   0.930000 (  0.929744)
set_locale          2.720000   0.000000   2.720000 (  2.721422)
_() ja found        0.490000   0.000000   0.490000 (  0.492720)
_() ja not found    0.490000   0.000000   0.490000 (  0.486137)
_() en found        0.490000   0.000000   0.490000 (  0.489535)
_() en not found    0.490000   0.000000   0.490000 (  0.537117)

set_locale以外では1.90.0と1.91.0の違いは誤差みたいなものですが、1.10.0に比べると1.5倍以上になっています。ぜひお試しあれ。

今回の唯一の仕様追加ですが、ActionView::Helpers::FormBuilder#labelをローカライズできるようにしました。これは、cracchoさんのアイデア&コードをほとんどそのまま頂きました(ありがとうございます)。例えば以下のように使います。

  <% form_for(@article) do |f| %>
     <p><%= f.label :lastupdate %></p>
  <% end %>

で、実行結果(日本語出力の例)

<p><label for="article_lastupdate">最終更新日</label></p>

上記の例ではmsgidが"Article|Lastupdate"が表示文字列として使われます。もちろん、2つめの引数を取れば表示文字列は任意に指定できます。

  <% form_for(@article) do |f| %>
     <p><%= f.label :title, _("Foo Bar") %></p>
  <% end %>


May 17, 2008 [長年日記]

[Fedora] Fedora Core 9にアップデート

ぐわ、フォントがなんかかわいらしくなってる!

ちと横に間延びしている気もしないでもないがなんか今まで違う感じが良いね。

移行は大体スムーズに行った、と思う。

ただ、Firefoxのx86_64版のJavaアプレットが、まだイマイチ不安定な感じなのでFirefox関連をまるごとi386版に入れ直した。それ自体はうまく言ったのだけど、Flashを使ったサイトで音が出ない。

うーん、といろいろと悩んだりグーグル先生に問い合わせてごにょごにょやって・・・、結果としては、libflashsupportパッケージがx86_64のままだったのが原因だった。rpm -e libflashsupportしてyum install libflashsupport.i386したら無事動作した。ほっ。

お、Fedora Core 8の時はFirefoxのテキストエリアで日本語文字列がうまく編集できてなかったのだけど、大丈夫になってる。ありがたやー、ありがたやー。

あ、もう一つあった。ログイン画面(gdmかな?)がなんかかなりあっさりした感じになっちゃったけど、こういうものかな。それにユーザごとに指定してあった画像が表示されなくなっちゃった。なんでだろ。


May 18, 2008 [長年日記]

[tDiary] fortune-1.1.0

バグ報告を受け、fortune.rbで%%から始まる行をコメントとして扱うように修正しました。

驚いたのが、今回の修正が2008/05/19で、その前の修正が2002/05/19。なんと6年ぶりのピッタリ賞ですっ!!

ってか、まだ使ってくれてる人がいるんだ・・・、感謝。

にしても、こんな短いコードでも6年後には不具合があったりするものなのね(ってそれはオレ品質)。


May 20, 2008 [長年日記]

[Rails] RAILS OF RUBY ON RAILS

Rails of Ruby on Rails ~Case of LOCUSANDWONDERS.COM~(Plan de Sens/清水 智雄)

ひさしぶりに献本頂きました。ありがとうございます。

かなりおしゃれな作りとなっていて、今までのRails本とはだいぶ違う印象の本ですね。

内容ですが、Ruby On Railsの入門書、や、APIの使い方を細かく説明・・・という感じではないです。

例えばRuby-GetText-Packageの紹介では、rakeを使ったupdatepo/msgmergeを使うところまでは紹介せず、require 'gettext/rails', init_gettextするところまでとし、エラー画面にテーブル・カラム名以外が翻訳されるというところを紹介しています。微妙な割りきりですが、他はRuby-GetTextのサイトを読みましょう、というスタイルのようです。個人的には「テーブル名やカラム名も変更できるよ、その場合はRuby-GetTextのサイトを観てね」的なその他機能の紹介も欲しいところでした。

他のプラグインなども、同様にプラグイン全体の機能を深堀りするというよりは、さわりだけを紹介しているという感じです。

Rails入門書としては別の本をお奨めしますが、「こんなこともすぐにできるんだー」というような、自分のRails知識を広げるための足がかりにするための2冊めの本として読んでみるのが良いかと思うので、Rails入門書に飽きたけどもっとRailsの知識を本から吸収したい!というあなたにはお奨めします。

後半は実際にRailsを使って構築したサイトのオーナーへのインタビューが載っているので、開発事例を使って上司を説得したい人にはいいかもしれませんね。