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

May 01, 2005 [長年日記]

[Ruby] (続) WEBrick on Win32

WEBrick::HTTPServer.newでCGIInterpreterを渡せば良いのか。そーかそーか。

srv = WEBrick::HTTPServer.new({:BindAddress => '127.0.0.1',
                               :Logger => WEBrick::Log::new($stderr, WEBrick::Log::DEBUG),
                               :CGIInterpreter => 'c:\ruby\bin\ruby.exe',
                               :Port => 10080})

でも、これだと外部の拡張ライブラリ(Ruby/GLibね)を使おうとするとDLLが無いって言われるんだよなー。どうもPATH(環境変数)がうまく読み込めないっぽい。これもCreateProcess()の制限なのかなー。うーむ。

これも

[Ruby] Ruby-GetText-Package-0.9.0

リリースしました。今回のウリはCGIとERBのサポートです。簡単ですがチュートリアルっぽいものも用意したので興味のある方はどうぞ。

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

たむら [:CGIPathEnv つうのがあります。 http://www.ruby-lang.org/ja/man/?cmd..]

むとう [なるほど。それを使うんですね。 うーん、先にリリースしちゃいましたー。Ruby-GetText-Package。残念..]


May 03, 2005 [長年日記]

[Ruby] Ri18n: Make your Ruby application international.

Ruby-GetText-Package-0.9.0リリース直後にリリースされたPure RubyなL10n化ライブラリ。GetTextをベースとしているようだが、moファイルを使わずにpoファイルを直接パースするなどある意味ロックだ。

ちと参考までにソースを読んでみたが...。うーん。まぁ、Ruby-GetText-Packageのメンテナをやってる段階ですでに公正な判断はできないとは思うんだけど...。

サンプルがなぜか動作しなかったので純粋にソースを見て気になった点をあげてみる。

  1. poファイルを直接使うのでRuby/Libglade2なんかとは相性悪い(ってか使えない)
  2. I18nServiceのシングルトンを生成する(それならmoduleでも良いと思うんだけど...)。そしてアプリごとにi18nconfig.rbというファイルを作っておいて、それを元にpoファイルを解析させる。したがってbindtextdomainみたいなものは不要...なようなんだけど、逆に言えば複数のTextDomainは扱えないんじゃないかな...(深く追ってないのでもしかしたらオレの誤解かも)。アプリやライブラリごとにi18nconfigを上手に使い分けれるようになっているのだろうか。
  3. rgettextは使わずにrake gettextとするらしい。確かにrgettextというツールを使う必要がないのは便利かもしれない。msgmerge的な機能も提供してるっぽい...試せてないけど。
  4. ユーザの利用するロケールを自動判別するような仕掛けが見つからない。例えば、ENVでLANG周りを利用するとかいうコードが見あたらない。起動時に-lオプションで設定する例があったりするけど、ユーザが能動的に設定するのだろうか....。まぁ、直接設定する方法もあるので、アプリ側のコンフィグで設定するとか、GUIで設定機能を作り込めば良いっちゃ良いのか...。
  5. ライブラリ名がrequire 'gettext'。思いっきりRuby-GetText-Packageと重複している。これを試した人は、Ruby-GetText-Packageを再インストールしないとRuby-GetTextなアプリは動作しなくなると思う。うーん、これはやめて欲しかった。

[Ruby] Ruby-GetText-PackageとERB(等のテンプレートエンジン)

今回、Ruby-GetText-PackageをERB対応させてみて気づいたんだけど、正直あまり上手なやり方ではないと思う。なぜなら...とつなげる前にERB+Ruby-GetTextのrhtmlファイルの一例を以下にあげる。

オリジナルrhtmlファイル(単なるHTMLに見えるのは単純化のため):
<html>
<head>Sample page</head>
<body>
<h1>Sample Header</h1>
<p>Hello world</p>
</body>
</html>
 
GetText化したrhtmlファイル:
<html>
<head><%= _("Sample page") %></head>
<body>
<h1><%= _("Sample Header") %></h1>
<p><%= _("Hello world") %></p>
</body>
</html>

ロジックを記述するべき<% ... %>の部分で「異なる言語を想定する箇所を特定するだけのためにRubyのコードを挿入する」ことをしている。これはまぁ、<%=_(" ... ")%>という複雑なマークアップが「異なる言語を指定している」って割り切っちゃってるわけなんだけど、やっぱり見づらいしなんかちょっと違う気がする。

そこでいろいろ考えたんだけど、rhtmlの<% ... %>以外の部分で何らかのHTMLタグで囲まれる部分をそれぞれ部分文字列としてmsgid化できるようなパーサを作ってそこを全て翻訳対象にする、というようなことが必要な気がしてきた。

上の例で言えば、rhtmlはやはりオリジナルrhtmlファイルのままで、"Sample page", "Sample Header", "Hello world"の部分は勝手に抜き出して、msgidとしてくれる、という感じだ。

純粋なHTMLの中から上記のような文字列をロケール化するような機能をつければ、元がERBだろうと他のテンプレートエンジンだろうと関係なく使えるな、遅そうだけど。あ、でもERBとかが設定したDBの値がたまたまmsgidと重複したときとか考えるとERBはERBのレベルのままHTMLのタグの部分をロケール化できないとダメかもしれない。となるとエンジン側で対応してもらった方が良さそうな気もする。

なんか抜けがあるような気はするんだけど、なんとなくそう思ったことをここにつらつらとメモできた、ということで今日は寝るとしよう。明日早いんだよなー(苦笑)。


May 04, 2005 [長年日記]

[Ruby] (続) Ruby-GetText-PackageとERB(等のテンプレートエンジン)

入れ子の要素のどこまでが1つのmsgidかという点が難しいのかー。

まぁ、割り切っちゃっても良いんだけど、spanタグを使って色づけしたいんだけどその部分は言語によって前後する、ような場合はspanタグごと外出しにしたいもんな...。

<div>I love <span style="color:red">Ruby</span></div>

とか言うのがあったとして、日本語に翻訳すると「私はRubyが好きです」って訳すだろうからI loveとRubyが別々のmsgidになっちゃうとちょっと都合悪いな。

spanだけは例外にして、この場合はI love <span style="color:red">Ruby</span>自体がmsgidになれば良いのかな。うーん、微妙だ。

やっぱり今の実装が現実的なのかなぁ。


May 05, 2005 [長年日記]

[Hiki] sendmailプラグイン

Ruby-GNOME2 Project WebsiteのHikiでは、更新がかかった際にruby-gnome2-cvs@lists.sourceforge.jpにメールを投げるようになっているんだけど、2005/4/4を境にぷっつりとメールが投げられなくなったことに今更気づいた。

今まではHiki標準の機能(net/smtpでのメール送信)が使えていたんだけど、その際はsourceforge.jpをSMTPサーバとして使っていた。どうもこのsourceforge.jpが現在ではSMTPサーバとして使えなくなったような感じだ。まぁ、今までの使い方が若干Relayっぽい使い方なような気もしなくもないので、セキュリティの絡みかなぁ、と思ったり。

SF.jpのバグトラッカーや要望を読んでみると、sendmailコマンド自体は使えるようになってるらしかったので以下のようなプラグインを作ってみたら無事動作した。SF.jpにホスティングしてる人で同様の悩みがある人がいたら使ってみて。

def sendmail(subject, body)
  require 'time'
  message = <<EndOfMail
From: #{@conf.mail_from ? @conf.mail_from : @conf.mail}
To: #{@conf.mail.untaint}
Subject: #{subject.to_jis}
Date: #{Time.now.rfc2822}
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
X-Mailer: Hiki #{HIKI_VERSION}
 
#{body.to_jis}
EndOfMail
 
  open( "|/usr/sbin/sendmail #{@conf.mail}", 'w' ) do |o|
     o.write(message)
  end
end

汎用的にするには/usr/sbin/sendmailを外出しにした方が良いね。

それから、このプラグインはhiki/hiki/util.rbのsendmail()メソッドを上書きしてるのだけど、元のsendmail()メソッドは微妙に文字列をuntaintしたりしてなかったりしてて、そのルールがよく分からなかったのと面倒くさかったのでこちらは全部untaintしなかった。

もしかしたらそっち系でエラー出る(というか何も起きない)かもしれないので、その場合は文字列(特に@conf.foobar)をuntaintしてみると良いかもしれない。


May 08, 2005 [長年日記]

[Ruby-GNOME2] APIリファレンス

GW中、何か新しいツールでも作ったろうかと思ってたんだけどそこはぐっと我慢して、今まで何度も指摘されているドキュメントが少ない問題を少しでも緩和するためにRuby/GTK, Ruby/GDKを中心にAPIリファレンスを拡充することにした(英語版の方だけどね)。

... が、終わらなかった... がんばったのに... orz。ってか、クラスもモジュールもメソッドも説明も多すぎるんだYO!(逆ギレ)

とはいえ、ことRuby/GTK, GDKに関して言うとだいぶ網羅できてきた。もう一踏ん張りだなー。ようやく頂上が見えてきたかな。え?まだ6合目?(T_T)


May 10, 2005 [長年日記]

[Ruby-GNOME2] Recent Pages

なんか、Ruby-GNOME2 WebsiteのRecent Pagesがなぜか毎日大量に更新されている。なぜだ...。

実際に更新されているページはきちんとメールが届いているし、dataファイル自体の日付を見るとアップデートされていない。info.dbのlast_modifiedだけがアップデートされてる感じだ。

一部cronでバックアップ取ってるからそれが原因な気がしてるんだけど、それ自体を起動しても何にも起きないしな....。


May 12, 2005 [長年日記]

[Ruby] Ruby-VTKとRuby/GTK2を組み合わせる

Ruby-VTKはThe Visualization ToolKitのRubyバインディングなんだそうですが、Ruby/GTK2(+ Ruby/GtkGLExt)とも一緒に使えるんですね。すごい。


May 13, 2005 [長年日記]

[Misc] 怒られるから気をつけろ

otsune氏のところとkzysさんのところから。ふーん、煽るのが流行ってるのか。

でも、何を煽ろうと思ってるんだか、氏が言及しているUTF-8の話の人よりわかりづらいな。

まぁ、今回は煽られてる対象では無さげだけど、変にイヤな感じで巻き込まれたので反応してみるか。

まずは、kzysさんのところのコメントで、otsune氏は

「自分の領域で抱え込んで、罵倒しあったりする段階を超えて「そんなくだらん罵倒で優越感を感じようとしても意味ねぇか」という段階になって、殺伐と自分の作ったソフトの情報公開をしてくれたほうが良いと私個人は考えています。」

とか言ってるけど、そもそもオレの話で言えば、場所はともかく、自分の作ったソフトやドキュメントの公開は元からしてるわけだし、第一、それとRSSの話がどう関係しているのか全く理解不能だ。オレに言わせたら、くだらん罵倒で優越感を感じてる段階を超えられていないのはまさにotsune氏のことだとしか思えない。

オレは当時自己防衛的な行動を取っただけのつもりでいるのだが、otsune氏は人を煽るために自分に直接被害を与えてるわけでもない他人を巻き込むのな。

それから、「怒られるから気をつけろ」と、さも、オレがえらそうな立場で、tokuhiromさんやだてさんを自分より下に見て言っている「えらそうにしてる(何も分かっていない)ヤツ」という印象を暗に与えようとしているあたりも腹立たしい。

オレはあくまで、だてさんと同等の立場で「抗議」をしただけだし、それにtokuhiromさんがどう絡んでいたのかなんて当時も今もよくわかってないのにな。

そのあとで、「Linuxビボ〜ろくについてはCCライセンスで解決済みだったので、煽り材料として使うのはあまり良いことじゃなかったですね。これは反省すべきだ→オレ。」と書いてるけど、CCライセンスで解決してなかったら煽り材料として全然OK!とも読み取れる物言いも理解できない。なんか寒々とした気分になってきたよ。

啓蒙活動がしたいのなら、それはそれで勝手にやってくれて良いのだけど、もうちょっと自分の言葉で物事を表現するとかできないものかね。

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

KATO Kazuyoshi [巻き込み、蒸し返すようになってしまってすみません。 otsuneさんがFUDぎみだと思ったので、つい。]

むとう [いやいや、私に代わって正して頂いてありがとうございました。 おかげで気づきましたm(__)m。]

otsune [今回の話の持って行きかたがおかしくてむとうさんに失礼だというのはkzysさんの指摘で初めて理解しました。 申し訳あり..]


May 14, 2005 [長年日記]

[Misc] 怒られるから気をつけろ(2)

otsune氏からツッコミあり。過ちについてはすでに謝罪頂いているので、今度は少し冷静な反応をしてみようと思う。

氏のツッコミと氏のサイトに追記された情報によると、議論したいポイントは

  1. PlanetRubyJapanの時の「RSSを集計して再表示するな」という抗議だと理解しています。この件について解決しないまま、RSSを集計して再表示するサービスが増えているとは思いませんか?
  2. ドキュメントの設置場所
  3. ライセンス

の3点らしい。
しかし、上記の議論を今さらオレとしてもしょうがないと思うのだが...。ってか、PlanetRubyJapanの件はまだ誤解してるみたいだし(意図的に曲解してる?)。
いずれにせよ、オレと議論をしたいのだったら、まずは問題となった過去の件をもう一度さらって、何が問題でどこを是正すべきなのかを指摘して頂きたい。指摘して頂きたい、というのは少なくとも今の時点で自分の何が悪かったのか、ということは(自己解決した部分以外では)不明だから。
ホントはどこを読むべきか、ということについてもotsune氏自身に検索なりして欲しいんだけど、一応、今回のotsune氏の議論としたいであろう過去の記事にリンクを時系列に貼っておく。

どの記事も議論の最初のポインタであって、その後、他の人の考えを読んでいくうちに自分の過ちに気づき考え直している部分があるので、これらのポインタのみに近視眼的にコメントするのはやめていただきたい。

  1. Website構築ツールとしてのWiki
    この辺で、tDiary-usersにドキュメントを置かなかった経緯を書いている。
  2. Wikiについての雑感
    まぁ、上の流れで読むことになるだろうけどWikiに対する自分の考え方を書いている。
  3. 文章公開システムとしての Wiki
    文章公開システムとしての Wikiについてこういうツールはどうだろう、という話。
  4. MUTOPON7 ANNEXのドキュメントはGFDL
    GFDLのドキュメントが他の場所にライセンス違反状態で転記されたことについて。
  5. Web上のRSSリーダなるもの
    これがPlanet Rubyの件
  6. index.rdfについて
    RSSを集計して再表示するサービスに対する、オレの対策。

超まとめをしてしまうと「ツールがまともに情報発信者のライセンスを守ってくれるならOK」という話になると思う。

ちなみに、現在のRSS WWWサービスは必ずしも上記の条件を守れているとはいえないので、オレ的にはあまり嬉しくない状況が続いている。

でも、オレ自身は技術的に解決しちゃっている(つもり)ので、周りがどうであろうと関係ない。ってか、余暇でやっている以上、その辺の啓蒙活動に専念してるヒマがあったら、それこそ、Ruby-GNOME2のドキュメントなりツールなりライブラリ本体の改善なりに時間を費やしたいからね。昨日も今日も、Ruby/GDKのAPIリファレンス書く時間をこうやってつぶしてるわけだし。

ちょっと本題とは外れるが。

otsune氏の今回の話し方は「長いものには巻かれろよ」という、なんとも大味で一方的な話であるような気がする。自分自身の意見は述べずに、オレの意見だけ言わせようというやり方もどうかと思う(これについては後述する)。

特に1つめのPlanetRubyJapanのくだりは、「RSS WWWサービス、みんなが便利に使ってるんだから、一人だけ文句言うなよ」的な(ある意味高圧的な)印象を受ける。

でも、本当にそういった議論の方向性は正しいのだろうか?オレはそうは思わない。

それよりも、RSS WWWサービスに現状どういう問題があって、それをどう改善していけば、オレみたいな発想をする人間も含め、ハッピーになることができるのだろうか、というような議論の方がよっぽどためになると思うんだけどな。

[Misc] もうちょっと自分の言葉で物事を表現するとかできないものかね

昨日の最後にオレが書いた文なんだけど、これについてはもう少し補足しておく。

今回のotsune氏のやり方もそうだったんだけど、最近、blogやML等で、

自分の意見は言わずに、あるいは他人に代弁させて相手から意見を引き出し、その中で間違っている箇所を批判する、また、代弁者に落ち度がある場合はそれも批判する

という自分が傷つかないやり方をしている人が多いように思える。

テクニックとしてはアリだとは思うが、自分が本当に何かを伝えたいのであれば、相手よりも先に自分自身で考えをまとめて、自分自身の意見として明らかにした上で他の人の意見を聞くべきではないだろうか。

例えば、今回の3つの論点で、otsune氏は、一部の客観的な事実は述べているものの、自分の意見を明確に述べていない(どこかで述べてるかもしれないけどオレには見つけられなかった)。

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

q [otsuneって人はその件ではこんなこと書いてるから何言っても無駄でしょう。 「httpプロトコルでのアクセスを許可..]

むとう [まぁ、現時点でのotsune氏がそう思っているかどうかというのはおいておいて...。 RSSを読むことを許可したくな..]


May 17, 2005 [長年日記]

[Ruby-GNOME2] WebsiteのRecent Pagesがおかしい(2)

どうやら、info.dbが壊れている模様。titleがところどころ無くなってしまうようだ...。うーん、困った。今日出たばかりのhiki-0.8.0-previewに変更したら治るのかなー。うーむ。


May 26, 2005 [長年日記]

[Ruby] ruby-libxml2/libxslt2

XML:ToolsのメンテナであるTransさんから、ruby-libxml2/libxslt2をRuby-GNOME2 Projectで拾ってくれーというメールが来た。

おぃおぃ、またかよ、勘弁してくれよ。今のままだってメンテナンスが大変なのに、これ以上新しいライブラリが入ったってメンテナンス放棄されたら面倒見きれんよ...。

とメールをやりとりしてみると、実は一筋縄ではいかない状況に置かれている模様でちょっとサプライズド。

  1. 2年ほど前にオリジナル作者のSean Chettendenがメンテナンスを実質放棄

  2. その後、人から人へと渡るんだけどホームレス状態

  3. その状況に耐えられなくなったTransが当時出ていた数々のパッチをマージしてメンテナを引き継ぐことにしてrubyforgeにプロジェクトを作成

  4. もちろん、当時、Seanにコンタクトは取ったもののなしのつぶて

  5. ところが、最近になってSeanが「やっぱり、オレがメンテナンスするんだー!」と言い始めた

  6. でも、どうも2年前のバグありオリジナルバージョンからやり直すと言っているらしい

  7. TransはどうにもSeanを信用できないし、実際にまだ実装が出てきていないっぽい...うーん、気持ちはわかるなー

  8. なので、folkしてRuby-GNOME2 Project Teamの一員としてしっかりとメンテナンスしたい。もちろん、メンテナンスはTrans自身がやる。

うーん。そーかー。なんつーか、オレがRuby-GNOME2を始める頃にものすごく状況が似てるのねー。やばい、つい感情移入しちゃう。

メンテナンス自体は彼がやってくれるらしいし、そういう状況なんだったら、受け入れなくもないんだけど....、ライセンスがLGPLじゃないんだよなぁ。この辺が揃ってないと色々面倒くさそうだしなぁ。BSDライセンスかな。さすがにオリジナル作者にお伺い立てずに勝手にライセンス変えちゃまずいよねぇ。

なんとなく、Ruby-GNOME2というそれなりに続くことが約束されている(というか、まぁ、実績ベースでね)ライブラリの一員になることでSeanの動きを牽制する政治的駆け引きな様な気もしないでもない....。なんていうか、イヤーんなことに巻き込まれてる予感....(-o-;)。

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

Before...

lrz [Hi Masao (and all), If I completely understood, Trans Ono..]

むとう [咳さん、なひさん: 状況によりますよね。 もし、今、Ruby-GNOME3始めるぜ!って言われたら、だったら、Rub..]

lrz [Thanks for the explaination! I hope Trans and Sean will a..]