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

May 05, 2002

[tDiary] tlink

はやくも対応していただけるなんてありがとうございます。

でも、確かにUser-Agentに日本語って聞いたことないですね....。

HTTP/1.1(RFC2068)的にはどうでしょう。

OCTETの any 8-bit sequence of data の定義って日本語(というか多バイト文字)もOKって意味でしたっけ?であればいけそうですが....。

追記:HTTP/1.1はRFC2068じゃなくてRFC2616ですね。いかんいかん。どうもです>ZnZさん。

あ、でも、RFC的にOKだとしてもanalog等のアプリがきちんと対応できてるかとか考えちゃうと、あえて日本語にしない方が良いような気も。ちなみにEUC-JPで返すんでしょうか?日本語返すなら今後はUTF-8かUnicodeあたりで返した方が良いような気もしますが、サーバがLinuxでanalog使うのだったらEUC-JPにしておけばひとまずひっかからなさそう。でも、サーバがWindowsな環境だったらたぶんどこかしらで変換が必要だろうな...。

というか、HTTPのヘッダってそれ自体のcharset指定できないような...。そうすると文字コードをどれにすべきかってかなり難しい問題な気が。

っていろいろ考えるの大変だから日記のURLじゃまずいっすか?(^^;)。

[Tools] Mozilla-1.0RC1, galeon-1.2.1

うまく動かなかった件だけど、結局、Mozillaの古いバージョンのファイルが残っていたのが問題だった。一度、mozilla/galeonまわりを全部rpm -e してさらに残ってしまっていた/usr/lib/mozillaを全部削除して、改めてインストールし直したら動いた。

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

遅くなりましたが、アクセスカウンタ表示プラグイン 1.2.0 をリリースしました。1.1.0の時のバグは直ってると思いますので使ってみてください。

それから今回は大きく2つの機能を追加しました。

  1. カウントアップ制限
    カウントアップさせたくないUser-Agent, Remote-Addrを指定できます。
  2. キリ番機能 いわゆる「キリ番」の時に何らかのアクションをユーザが定義できます。

キリ番機能は例えば、「あなたは1000人目のお客様です!」みたいなものをキリ番でアクセスした人にだけ表示する機能ですが、counter自体は表示させずに、こっそり指定したカウントの時に楽しいメッセージを表示させるなど、トリッキーに使うといろいろ遊べると思います。

[Misc] Linuxビボ〜ろく

最近のツッコミプラグインを入れてみた。ロゴの下部分。ツッコンでくれた人に対して呼び捨ても何なので「さん」付けにしてみた(^^;)。

[tDiary] アンカー自動生成プラグイン 1.2.0 リリース

あいかわらず人気ないけどオレ的には相当気に入ってるアンカー自動生成プラグイン だが、またしてもめげずにバージョンアップしてみた。今度は、話題(^^;)のtlink.rbを内部的に呼び出すことで、tlink.rb自体の機能をそのまま使うことができるようになったのだ(もちろん、この機能を使う場合はtlink.rbが必要だし、デフォルトでではこの機能はOFFだけどね)。

というわけで、少しでもユーザを増やすためにテレホンショッピング風に紹介してみよう(.... ってなぜ?(^^;))。

(A)ほら、Bさん。まずは、tlinkと比べてみよう。以下の2つは同じ意味になる。

<%= tlink "http://ponx.s5.xrea.com/bibo/20020505.html#p01", "Linuxビボ〜ろく" %>
<%= a "http://ponx.s5.xrea.com/bibo/20020505.html#p01", "Linuxビボ〜ろく" %>

(A)tlink と6文字打たずに1文字aと打てばOK。たくさん打つのがめんどくさいぐ〜たらなBさんに最適!

(B) なるほど〜。でもそれだけですか?

(A) うーむ。まだ、足りない?さすが、Bさんはお目が高い。

じゃぁ、そんなBさんは、さらに、辞書ファイルに以下を登録しておくというのがお奨めだね。

bibo http://ponx.s5.xrea.com/bibo/ Linuxビボ〜ろく

(A)これさえやっておけば、先ほどの例はさらに以下のようにできるんだ。

<%= tlink "http://ponx.s5.xrea.com/bibo/20020505.html#p01", "Linuxビボ〜ろく" %>
<%= a "bibo", "20020505.html#p01" %>

(B) ブラウザでURL全部コピーアンドペーストしちゃうから、そんな機能はうれしくないですけど...。"Linuxビボ〜ろく"のところだって普段は違う言葉いれますよね?

(A)もちろん! アンカー自動生成プラグインでもそんな使い方も当然できるよ。でも、それだと、そのURLが変わっちゃったときは手作業で全部変更しなきゃならないじゃないか。

(B)なるほど....。

(A)それに辞書ファイルにあるURLを呼び出すだけなら、こんな使い方もモチロンOK。

<%= a "bibo" %>

(A)驚くのはまだはやいよ。今なら、桐タンスがもう一つついてなんと無料。今すぐ使ってみなきゃぁ!

っていうか桐タンスはついてないんですが、ちょっとは使いたくなりました?ダメ?そんなこと言わずにtlink.rbしか使っていない人もtlinkも使ってない人も是非使ってみてね! ..... ダメ?(^^;)

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

Before...

むとぽん [実現したい機能としては、それがどこから来たのかということなので、zoeさんの方法だとちょっと分かりづらいような気が。..]

zoe [あ、説明がかなり不足してました。 当然#の前にはURIがついてます。 #の後ろも、tlinkを使った日付が入ってたら..]

むとぽん [なるほど〜、そういうことですか。納得。]


May 05, 2003

[tDiary] Matzにっき

Ruby作者であるまつもとさんがtDiaryで日記をはじめられたようです。

スゲー。これでまた一つ楽しみが増えました。

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

久しぶり(?)に日記を巡回してたら、やまださんのパッチとそれに対するZnZさんの改善案を見つけた。

あてちゃって良いのかな。

[Ruby-GNOME2] Simple Text Editor

サンプルスクリプト第2弾です。

今回は、Ruby/GTK2以外のライブラリのパワーも知ってもらいたかったので、あえてRuby/GNOME2とRuby/Libglade2を使ってみました。

サンプルスクリプトとはいえ簡単なUndo/Redo機能・検索/置換機能も付いてるのでちょっとしたUTF-8エディタとして使えるかもしれません。是非、お試しください。

サンプルスクリプトという性格上、このツールに関する改善案(特にソースコード)などがあれば教えていただけると助かります。

コードを一から書き直してくれても結構です(^^;)。

#これだけの機能を1つのクラスで実装しちゃったのはあまり美しくなかったかなぁ。

ちなみに、これの開発期間は3日ほどです。一番最初のプロトタイプはアッという間にできたのですが、Undo/Redo, 検索/置換機能とか欲張ってたら3日かかってしまいました(連休中に終わらせるため他にも実装したい機能があったのですがやめときました(^^;))。

なお、実装にはgeditを参考にしました。ってか、geditをそのままRuby-GNOME2に移植しちゃったりしたら、喜ぶ人がいるかもしれないと思ったりして。

誰かやりません?

それにしてもGladeとRuby/Libglade2の組み合わせは慣れると便利ですね。

これだけの機能がついてRubyのコードとしては300step未満なのはスゴイ(自画自賛は良いこと無いかな...)。

P.S. 話はちょっとずれますが、どなたかこれをベースに(しなくても良いけど)Ruby-GNOME2を使ったエディタを作ってみてはいかがでしょうか。

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

やまだあきら [はい、もちろんです。ちゃんとレポートしてなくてすいません。]


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 05, 2006

[Rails] Ruby on Railsで日本語しか使わない場合でもRuby-GetText-Packageを使う理由

Ruby-GetText-Packageは元々メッセージの国際化のためのライブラリです。なので、とかく、

「アプリを国際化したい場合は使った方が良いよ。」

という話になります。これはこれで正しいのですが、Ruby On Railsに限って言うと、

「日本語でRoRを使う場合はとにかく使った方が便利だよ。」

なのです。ホント?

ViewやControllerでわざわざ英語を考えて_("eigo shiranaimon")なんて書いてらんねーよ、と思う方がいるかもしれません。

でも、国際化を考えない場合、_("eigo shiranaimon")なんてわざわざやらずに、素直に "英語しらないもん" と書いてしまえば良いわけです。

だとしたら、Ruby-GetText-Packageを使うメリット無いじゃん。と思うかもしれませんがそんなことはありません。

まず、Modelの各カラムを抽出したリソースファイル(メッセージカタログ, poファイルのこと)を自動で作成してくれます。このリソースファイルに日本語を記述するだけで、いろいろなところ(主に入力エラー時のカラム名等)が日本語化されます。テーブルが増えたりカラムが増減したりした場合もRakeのコマンド一発で差分を適切にリソースファイルにはき出してくれます。これを手作業でやったりしたらそれはもう大変な作業です。

さらに、入力エラー画面はRuby-GetText-Packageを使うだけ(追記:インストールしてinit_gettextを呼ぶだけ)で、全て日本語化されている状態になります。

また、Content-Typeも適切に指定してくれます。RJS等を一緒に使う場合、Content-Typeを指定する際にちょっとしたトリックが必要なのですが、Ruby-GetText-Packageを入れてしまえば意識する必要がありません。

ActionMailerについても、標準ではUTF-8のメールになってしまいますが、Ruby-GetText-Packageインストールするだけ使うだけ(インストールしてinit_gettextを呼ぶだけ)でISO2022JPに変換されてメールされるようになります。

これらだけでも、日本語+Ruby On Railsの組み合わせではRuby-GetText-Packageを使ってみる価値はあるのではないでしょうか。ぜひ、一度、使ってみてくださいね。


May 05, 2007

[Rails] cache_on_rails.rb by rakutoさん

世間はGWですか。そうですか。どうせ私はお仕事ですよ。

というわけで、DBのインポート作業中(この歳でやるかよ・・・)。

まぁ、そんな間、他の仕事をやる気にもならないので「そういえば、Rails + Ruby-GetTextでキャッシュできるようにしたいなぁ。」とグーグル先生に質問してみたら、これぞずばりというものを発見!

というかオレが考えていた以上に柔軟な設計になっている(User-Agentで見分けるあたり)。すばらしい!

ちょっと残念なのが他のpluginと違ってrequireが必要な点(ってオレが言うなって?いや、Ruby-GetText-Packageは汎用ライブラリであってプラグインじゃないんですよ)。あと、英語のドキュメントが見当たらない点(ソースコード内のコメントも日本語の模様)。

英語ドキュメントがあれば、Ruby-GetTextのサイトから紹介できるんだけどなぁ。

あと、Page/Action/Flagment全てのキャッシュに対応してるのか要確認(あとでやる)。


追記