Ruby言語やLinuxのネタが多いです。
October 14, 2006 [おもひで]
■ [Ruby] Ruby-GetText-Package on raile_edge
updatepoタスクが動かなくなっていたのを修正しました。
これで、edgeでも一通りは動くようになったんじゃないかなぁ。
興味のある方は是非CVS版を試してみてください。
October 15, 2006 [おもひで]
■ [Ruby] メソッド(関数)化の基準
今日、メソッド(関数)の細分化について
「コメントを残したくないから、機能の一部をメソッド化してメソッド名で機能の内容を表現する」
という意見を聞いた。面白い考え方だと思ったけど、他からは全く使われないだろうメソッドだし、その内容自体が数ステップのもの、名前が長すぎた、等の理由で、メソッド化するのをやめてその呼び出し元に入れこんでコメントを残すように直した。
でも、そもそも、メソッド化する基準ってのはなんなんだろう?
ということで自分なりに考えてみた。
- 再利用するかどうか
再利用するかどうか、というとちょっと大げさかもしれないから、他から複数回呼び出されるかどうかって言い直しても良いかもしれない。基本はこれだよね。APIとして外部に提供する場合はもちろんのこと一つのクラスの内部であっても再利用する場合は別出しにすることが多いな。再利用する可能性があれば1ステップで収まるような内容であってもメソッド化する時があるし。 - オーバーライドされるかどうか
まぁ、上のとほとんど同じなんだけど、サブクラス化したときはこの部分をオーバーライドするだろうなぁ、と思ったところはメソッド化しておくかな。 - 再帰呼び出しなどの実装上の都合
まぁ、再帰の場合は広義に見れば再利用してると言えるのかも。 - 長すぎるメソッドの分割
長すぎてよくわからなくなりそうなとき、その機能をいくつかのサブ機能毎にわけることはあるなぁ。でも、実は純粋に分割するだけ、ということは少なくて、大抵は他のやり方に従っていると回避できるし、本当にそれがヒトカタマリならば多少大きくなっても1メソッドにしてしまうなぁ。必要悪的な使い方かな。
皆さんはどのような基準でメソッドを構成しているんでしょう。
■ [Ruby] コメントを書く基準
もう一つ。最近、コメントはなるべく書かないようにする傾向がある。それは「ソースを読めばわかるようなきれいなソースを書けばよい」ということなんだと思ってるんだけど、一方で「ファイルをオープンする」みたいなコメントが大量生産されていた頃(今も?)のアンチテーゼという側面もあるんじゃないかと思う。
でも「何でその実装をしたのか(Why)」というのが(他の人が見て)一目でわからないと想定される場合は積極的にコメントを残すべきだと思うなぁ。そうしないと後から自分で見てもわかんなくなっちゃうよ。
■ なーんて、えらそうなことを書いたけど、今日のこの2つの基準は自分の中でも達成できていないケースがあるなぁ。しょせん人間なんてそんなもんですな。
October 21, 2006 [おもひで]
■ [Ruby-GNOME2] 再始動!(?)
Ruby-GNOME2、かなり放置してしまったのでやらなきゃいけないことは山積してるんだよねー。年末までにはGTK+-2.10ベースのバージョンをリリースしたいなぁ。< と自分にプレッシャー。
ということで、まずはFedora Core 5のGTK+周りをアップデート。Ruby-GNOME2をインストールしてみたところ、Ruby/GTKでいきなり以下のようなウォーニングが出るようになっていた。
/usr/lib/ruby/site_ruby/1.8/glib2.rb: line 44 GLib-GObject-CRITICAL **:g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed /usr/lib/ruby/site_ruby/1.8/glib2.rb: line 44 GLib-GObject-CRITICAL **:g_param_spec_boxed: assertion `G_TYPE_IS_BOXED (boxed_type)' failed /usr/lib/ruby/site_ruby/1.8/glib2.rb: line 44 GLib-GObject-CRITICAL **:g_object_class_install_property: assertion `G_IS_PARAM_SPEC (pspec)' failed /usr/lib/ruby/site_ruby/1.8/glib2.rb: line 44 GLib-GObject-CRITICAL **:g_param_spec_boxed: assertion `G_TYPE_IS_BOXED (boxed_type)' failed /usr/lib/ruby/site_ruby/1.8/glib2.rb: line 44 GLib-GObject-CRITICAL **:g_object_class_install_property: assertion `G_IS_PARAM_SPEC (pspec)' failed
Ruby-GNOME2-0.14.1でも出るので、最近の修正とは関係ないらしい。
で、いろいろ調べていくうちに、GTK+-2.10.0でGTK_TYPE_TARGET_LISTが定義されたことで、もともとRuby/GTK2が内部でインプリしていたGTK_TYPE_TARGET_LIST周りのメソッドとバッティングしてしまっていたのが問題だった。
で、この問題は修正したので、とりあえずGTK+-2.10.xを使っている人は、最新版のCVSを使うと良いと思うよ。
・・・・リハビリにしてはかなりハードだった(苦笑)。
October 29, 2006 [おもひで]
■ [Misc] ニューPC
なんだかものすごくひさしぶりにPCを買ってしまった。小さいのが欲しかったので、Aopenの MP945-VXというベアボーンにしてみた。本当に小さい。HDDやメモリ・CPUにはノートPCの部品を使っている。CPUはIntel Core 2 Duo T5600(1.83GHz)、メモリは1GHzですよ。今まで使っていたのがAthlon1.3GHz(1.4GHzだったっけ?)の古いマシンだったんだけど、どのくらい快適になってるのか楽しみだ。わくわく。
というわけで、とりあえずFedora Core 6を無事にインストール終了。何のトラブルも無いなんてびっくり。あ、もちろん、x86_64ですよ。EM64Tつき。むふ(といってもよくわかってないんだけどさ)。
1600x1200で表示もできてるし今のところ前より快適な感じではある。
さてメールの移行とかもやるとするか。
■ [Fedora] Firefox-2.0
fc7のものを持ってきて上書き。devhelpとの依存関係の外しかたがわからなかった。devhelpはどうせ使わないし、ちょっと強引だけどrpm --nodepsで。
日記かけるかな。あ、オーケーだね。
ERROR: Your architecture, \'x86_64\', is not supported by the
Macromedia Flash Player installer.
■ [Misc] ニューPC(Aopenの MP945-VX) (2)

いろいろと移行中、暇なので写真を撮ってみた。手前が今まで使ってたタワーPC。んで、その上のマウスの奥にちょこっと載ってるのが新PC。ちっちゃいのぅ。うふ。
$ ruby -v ruby 1.8.5 (2006-08-25) [x86_64-linux]
むふ。
■ [Fedora] rpmdbが壊れた!?
なんだか、rpm -Uvhコマンドがフリーズするようになった。
検索してみたところ、似たような現象を見つけたので、そのとおりにrpm --rebuilddbしてみたら無事復旧した。よかった。
# cd /var/lib/rpm # rm _db.* (_db.001、_db.002、_db.003) # rpm --rebuilddb
それにしても、Firefoxのテキストエリアのフォントがちょっと辺だな・・・。カーソルが微妙にずれるときがあるぞ。
■ [Fedora] Flash Player on Firefox(x86_64) (2)
いろいろとググってみたものの動かすの結構大変みたい。
#nspluginwrapperというのが有力みたいだけど・・・。
まぁ、オレ的にはここはx86_64のみでがんばっても意味がないところなので、素直にi386のFirefox-2.0(x86ね。x86_64じゃないやつ)をインストールしなおして、libflashplayer.soを/usr/lib/mozilla/plugins/.にコピーしたら無事動作するようになった。
ちなみに、/usr/lib/...が/usr/lib64/...じゃないところがポイント。32bit版に入れ直したんだから、lib64を見ないのは当たり前だけど、それまでずっと/usr/lib64/...にファイルを置いたりしてたのでちょっとハマッてしまった。
あ、そうそう、バージョンは最新のShockwave Flash 9.0 d55というのを使ってみた。今のところいい感じだ。
October 30, 2006 [おもひで]
# chmod +x RealPlayer10Gold.bin # ./RealPlayer10GOLD.bin ./RealPlayer10GOLD.bin: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory
これはFedora Core 6に含まれるcompat-libstdc++-33-3.2.3-61.i386.rpmをインストールして回避できた(x86_64の方ではないことに注意)。
うーん、しばらく再生してるとセグメンテーション違反で異常終了するなー。クマった。
