Ruby言語やLinuxのネタが多いです。
May 12, 2002
■ [tDiary] アクセスカウンタ表示プラグイン
なんか、昨日のアクセス数が最近の平均に比べ300件くらい多い。チェック用に備え付けてるXREAのカウンタから比べても200件以上多い。またしてもアクセスカウンタ表示プラグインのバグか?と思って、以下をチェックしてみた。
- Cookieは効いているか
- tlinkからのアクセスでカウントがアップしないか
- HEADリクエストでカウントアップしないか
■ いずれも問題ない....と思う。で、なんでかなぁと思ってanalogのウェブサーバの統計結果を見てみたら、興味深いことに昨日だけPockey/4.10.2(Win32; GUI; ix86)というUser-Agentからのアクセスが300件以上あることに気づいた。これってなんだか知ってる人いますか?
もちろん、アクセスカウンタ表示プラグインのバグの可能性は高いのですが奇妙に一致するので、まずはそれが何モノなのか知りたいので...。
,一-、 / ̄ l | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ■■-っ < んなーこたーない ´∀`/ \__________ __/|Y/\. Ё|__ | / | | У.. |
┌──────── │はにゃーん └──v───── ∧_∧______ /(*゜−゜) /\ /| ̄∪∪  ̄|\/ | しぃ |/  ̄ ̄ ̄ ̄ ̄
| | ____ |⌒彡 / |冫、) < あっそう |` / \____ | / |/ | |
\从/ ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ (;TДT)< オマエモカー ( つ つ \______ 〈 〈\ \ (__)(__)
■ フォントがMS Pゴシックじゃないとダメなのと、ヘタに使うと厳しいツッコミが入りまくりそうなかなり危険な香りがするので公開するのは自粛ときます(^^;)。
■ [Misc] Pockeyその後
最初はダレかがUser-Agentを変えて遊んでるだけかと思ってたんだけど、Googleで検索すると、出るわ出るわ。ここまで来ると、たぶんそういうツールがあるんだろう。にしても、そのツール自体は見つからない。いったいなんだろう。PDA系のブラウザかな....。
May 12, 2003
■ Wikiについての雑感
良い機会なのでWikiについてなんとなく考えていたことをとりとめなく書いてみよう。
■ RE: Wikiページの「所有」
まずは、たださんのページに対するオレの意見を述べておこう。
署名入りのWikiページを修正するのは、とても心理的ハードルが高い。
まさにそのとおりだ。実は、Wikiに対する考えはオレ自身、たださんに賛成だ。
■ ただ、オレは、Web(Wikiではない)で公開する文章には、複数の人間がよってたかって書くと効率が良いものと、そうでもない文章があると思う。
前者にはWikiを使えば良いし、後者はWikiに書いてもあまり意味は無い(書いても良いけど)。
#こ〜りんさんも同様のことを書かれていますね。
たまたま(意図的に)たださんが指摘した例は前者の例だし、オレがtDiary-users Projectから移そうと思っている文書は後者の方であると思う。
だから、現在、(図らずもtDiary-users Projectにあるオレの文書に限定して言えば)そもそもWikiページに書くべきでないものが(一時的に)Wikiに書いてあったということにすぎない。そして、そのことが結果としてオレ自身の(たださんが言うところの)モチベーションを下げまくったのだから、これはもう移すしかないのだ。ただ、このことに関してはオレ自身が最初にきちんと気づくべきだったと反省もしているんだけどね。
■ それから「奉仕の精神」だけど、たださんの指摘はあくまでもWikiWayに従ってWikiに文章を書く人の心構えだ。一般的な「奉仕の精神」と間違えて読んではいけないと思う。インターネットで情報を公開する上で、tDiaryについての情報がtDiary-users Projectに無ければ奉仕したことにならないということはないはずだ。
■ っていうか、オレは奉仕の精神でtDiaryのプラグインを書いたことはないんだけどな。自己顕示欲と言われればそうかもしれないけど、どちらかというとアーティスト(って言えばいいのかな(^_^;))として自分の中にあるイメージを実現して、それを公開してるだけなんだよねぇ。オレの中では作曲活動と趣味のプログラミング、文章を書くと言うことは全く同じことだ。
■ みんなは奉仕の精神とかでやってるのか...。
■ RE: Wikiページの「所有」(2)
Wikiで署名をするという行為は、フィードバックのチャンスをみすみす逃しているに等しいと思うからである。
確かに、Wikiであれば確率的にはそうかもしれない。
でも、オレはこびとさんがこっそりフィードバックするくらいならフィードバックは不要だと思っているので別にもったいないとかいう発想はないんだよね。
それに、フィードバックをくれる人はメールなりなんなりでフィードバックしてくれてるしね。その方がお礼も言いやすいし。
■ それからもう一つ。以下には全く賛成できない。オレにとってはおもしろくも何ともない。なんでこれがおもしろいんだろう。
十分に発達したWikiサイトの面白さは、個人としての「個」が消えてしまう一方で、サイト全体としての「個」が現れてくるところにあると思う。
逆に、オレは様々なツールのChangeLogを眺めては、あー、この人はここでも活躍してるんだー、とか見てきた人なので、Wikiであってもそういう名前が残っていたら楽しいだろうと思うのだけどな。
■ RE: 蛇足
「読む側」から見ると、「趣味の個人サイト」と「プロジェクトとして複数の人が運営しているサイト」では、後者にある方が安心だと思う。だって、個人サイトはその人が飽きたら、ある日突然消えてしまうかも知れない。
これは同意する。だから、tDiary-usersにオレのコンテンツを置いてもらえるようにアクセス権のあるWikiの提案をしたわけだし。
でも、そのこととオレのモチベーションを維持するのとどちらを取るかということで後者を取ったわけだ。
あと、オレの興味が無くなったときにWebから情報がなくなるというのもおもしろいかもしれない。困る人がいるかもしれないけど。
■ [Misc] Wikiの管理者
ここからはオレの意見だけ。まず、これはWikiに限ったことではないが、複数人で何かを行う場合、最終的な決定権を持つ人間を作るか、最終的な決定を行うためのプロセスを「最初に」決めておいた方が良いと思う。
たとえば、そのWikiにそぐわない内容がWikiに書き込まれたとする。それを削除するか残すかといったことを決めなければいけないかもしれない。こっそり消してしまうと、せっかく良かれと思って書いた人はこびとさんであっても良い気持ちがしないだろうから、削除する場合はその旨をどこかにアナウンスすべきかもしれない。
通常、フリーソフトウェアの開発では「優しい独裁者」が一人いる。このやり方は決定が早いし、オレ的にはおすすめだ。
■ [Misc] Wikiのセキュリティ
近年のインターネット事情においてWikiほど性善説をベースに構築されているツールは少ないと思う。
誰でも書き込めるのだから誰でも不正にコンテンツを書き換えることができる。
もちろん、これ自体は認証なしでやる以上、避けられることではないんだけど、たとえば、以下のようなコンテンツをそのWikiのトップページにそれとなく置かれたらどうだろう。
○○(Wikiによく書き込む人の名前)より 面白いツールを見つけました。○○ユーザだったらこれを試してみる価値ありです。 http://securityhole.com/goodtool.exe - おー、オレも試してみたよ。まだの人は是非! ××(こびと1) - 入れてみたけどイマイチじゃない? ■■(こびと2)
■ もちろん、ツールとはウイルスだ。○○さんはそのWikiで信用されている人の名前であればあるほど効果的だ。こびとさんの部分は書かなくても良いけど、書くとそれっぽい。
Hiki等では更新された瞬間に変更内容がメールで飛ばされるので、それを随時監視してさえいればほとんど実害は無いだろう。でも、もし、○○さんが旅行にでも出てたらどうだろう。
こういうのもセキュリティ脆弱性って言って良いような気がするけど違うのかな。教えてエライ人。
■ 実は、tDiaryのツッコミ欄にも同様の問題がある。ただ、Wikiに比べ、「日記」であるtDiaryではその影響は少ないと思うんだけどね。
#ツッコミ欄に変なリンクがはられていたら、それは安易にクリックしちゃダメだよ。
May 12, 2004
■ [Misc] メールサーバ
今回は対応が早かった。電話したからなんだろうけど。
結局、SF.jpからのスパムが多いのでそもそもrejectしてたんだってよ。
でも、オレのクレーム一つで解除したとのこと。何なんだ一体。
■ [Ruby-GNOME2] rubydevelop
Ruby-GNOME2ベースの統合開発環境とのこと。Dario Linsky作。DarioはRuby-GNOME2 Project Websiteドイツ語版をメンテしてくれてる。
■ とりあえず今日の段階で試してみるには、CVS版のRuby/GtkSourceViewをインストールした上で、bin/widgets/mdiview.rbのget_language_from_mime_typeをget_languageに置き換える必要がある。
RBBRを内部的に使っていたりする。なかなか良い感じで統合されてるね。
■ [Ruby-GNOME2] RRTicker
もう一つご紹介。TickerタイプのRSSリーダとのこと。市澤さん作。
May 12, 2005
■ [Ruby] Ruby-VTKとRuby/GTK2を組み合わせる
Ruby-VTKはThe Visualization ToolKitのRubyバインディングなんだそうですが、Ruby/GTK2(+ Ruby/GtkGLExt)とも一緒に使えるんですね。すごい。
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 %>

Before...
▲ なかだ [うーん、Mozilla on Xでフォントファミリを直接指定するのってどうすればいいんだろう…。]
▲ むとぽん [あ、それ私も気になってました。どうするんだろ?やっぱりXLFD?(^^;)。]
▲ むとぽん [counter.rbの件、お願いしますねm(__)m。>アビーさん。]