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

March 14, 2002 つまりバランス感覚が重要ってことなのね(ぴぴーぴぴ)

[Ruby] Ruby-GNOMEのGtk::ItemFactoryにバグ

Ruby-GNOMEのGtk::ItemFactoryにバグがあった。どうやらコードの整理をしていたときに余計なところまで直しちゃったからみたい。

ちなみに、以下のパッチをあてれば直るはず。
--- ../../../ruby-gnome-all-0.27/gtk/src/rbgtkitemfactory.c     Sun Mar  3 07:13:43 2002
+++ rbgtkitemfactory.c  Thu Mar 14 23:44:11 2002
@@ -63,8 +63,9 @@
 }
 
 static void
-item_exec_callback_wrap(p_item, iter)
+item_exec_callback_wrap(p_item, ifact, iter)
     GtkWidget *p_item;
+    VALUE ifact;
     VALUE iter;
 {
     VALUE item;
これはちょっと重大なバグだよな....。RuWeexでも使ってるし...。

[Linux] GTK-2.0とGTK-1.2

GTK-2.0と共存できるんですか。 情報ありがとうございます。今度、ヒマを見て試してみます。

ちなみに、Ruby-GNOMEですが、そろそろGTK-2.0のブランチを作るみたいです。

Neilが言うには、GTK-2.0にするタイミングで、結構、メソッドとか定数とかの配置とかを見直したいみたいです。

どのように後方互換性を持たせるかはわかりませんが....。常に難しい問題ですよね....。

#ちなみに、2.0でコンパイルできたらパッチはNeilに送っていただけるのですか〜?(期待期待(^^;))

[Misc]へんなコード

小澤さんのページより。 そういえば、昔いた会社で、「関数の出口は必ず1カ所でなくてはいけない」と先輩に言われて面食らったことがある。 結構、その部署ではメジャーなやり方だったみたいなんで良いところはあるのかもしれんが、オレはなじめなかったな。

で、そういう発想だと、小澤さんの追記2の最初のコードみたいなのが良しとされて、2番目のコードはreturnが複数箇所にあって出口が複数在るからNGってことになってしまう。

さらに、これを守るがためにgotoを使ったりすることを推奨する人がいた。(以下はC言語風(^^;))
int ret = TRUE;
if ( ! foo()) {
    displayErrorDialog("fooError");
    ret = FALSE;
    goto EXIT;
}
:
if ( ! bar()) {
    displayErrorDialog("barError");
    ret = FALSE;
    goto EXIT;
}
:
:
EXIT:
(後処理)
return ret;

理屈としては、後処理の部分をまとめて書けるということだったように記憶してるが、全てこう書けというのでどうしようかと思った。後処理が必要ないときもこれで書く。うーむ。

まぁ、その時は、どっちが良いかなんつー判断はできなかったから、結局従ったけどね〜。

そうそう。引数には必ずinとoutをつける人がいたな。まぁ、C言語ならまだわかるんだけど、Javaとかでこれはなぁ。 あ、もちろん、Javaで引数にoutを使うってのはほとんどないはずなので、大体inのみが使われた。
int hoge(int inWidth, int inHeight){
}
あと、MSのハンガリアン記法(だっけ?)を全ての言語でやろうとする人。
int hoge(int intType, String strUser){
}

よく使う型だったらまだ良いんだけど、Javaとかだとすぐ破綻して、結局、「....以外は、objを先頭につけるように」ということで、objHogeとかしょーもない変数名を大量に作ってるプロジェクトもあったなぁ。

#そういや、オレ自身、ASP(VBScript)でこんな感じのルールを使ってた記憶があるな....。

バランス感覚がみょーに悪い人もいた。というかgoto文を推奨した人と同じ人なんだが。

数年後、Javaをやるのでデザインパターンを勉強したというのは良いのだが、とにかく何でもかんでも型(格好良く言えばフレームワーク)にはめたがる。んでもって、それで目的を達することができない場合は、意地でも型にはめるために、ソケットを使ったり、スレッド使ったり、ファイル作ったりと、ホントにそれ動くんかい?みたいなコードを平気で書こうとする。当てはめる対象が違ってるっつーことに気がついていない。しかもその方法を後輩に押しつける。ま、いいんだけどさ。

なんかいろいろ思い出してきたな。すっげー汚いコードを書いてる先輩(といっても別の会社の人だったが)に、ちょっと指摘したときの回答が笑った。

「コーディングは人によって趣味が変わるからね〜」

それ以前の問題なんです。だって相変わらずcore吐くじゃないですか。lintしたらWarning一杯。っつーかフツーのコンパイラですらWarningがでてるっちゅーの。

なんか調子が出てきたぞ。他にも無かったかなぁ。

そういや、C言語の流儀をJavaに持ち込む人が多かった。特に変数の宣言を必ずメソッドの宣言の直下でやらないとダメという人。こんな感じ。

int hoge(){
  int cnt = 0;
  :
  :
  for (cnt = 0; cnt < 10; cnt++){
  }
}
その人に言わせると以下のようなコードは悪とされる。
int hoge(){
  :
  :
  for (int cnt = 0; cnt < 10; cnt++){
  }
}

変数はなるべく狭い範囲で使った方がデバッグとかで間違いがないのは明らかだと思うのだが....。

ちなみに、上記のようなやり方をしてしまうと、使わなくなったローカル変数の宣言を残してしまう場合もある。まぁ、コンパイラでチェックできるかもしれないけど。

案外、先輩が言ったことを真に受けて、何年も、言語が変わっても、かたくなに守る人っているんだよなぁ。そう言う人に限って、「これは○○さんが言ったんだから守らなきゃいけない」って平気でのたまったりするんだよな。もうちょっと自分自身の考えを持って欲しいと思ったよ、ホント。背景を考えずにそういうことを鵜呑みにする人って、教える方もイヤだよな。後で「むとうさんがそう言ったから....」と言われたらたまらん。

ま、そんなわけで、オレが後輩に何か教えるときは

「オレが言うことの半分はウソで、残りの半分は将来使えなくなるだろうから気をつけるように。それからバランス感覚は大事。」

って言うようにしてたんだよね。実際、意図せずに美しくないコードを書くときもあったし(っていうかそれがほとんどか、今思えば(^^;))、新しい技術がどんどん出てきてることを考えると、結構、当たってると思うんよな。プログラミングに対する取り組みの姿勢とかそういうこと以外は時と共に変わっていっちゃうもんね。

#あ、もちろん、この文章だって、半分はウソで....(以下略)

[Misc] C言語

えらそうなことを書いてしまったが、以前、ポインタのポインタ(ダブルポインタだっけ?char**ってなやつ)がよくわかんなくて、夢に出てきてうなされたこともあるというのはここだけの秘密。

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

たむら [「オレが言うことの半分はウソで、残りの半分…」かなり気に入りました(^^; 私も使わせてもらおう。]

むとぽん [どもです。光栄です(^o^)。]

KENZI [hdparmのお話、参考にさせて頂きました。 「へんなコード」もちょっとおもしろかったです。 私は最初の会社の入社2..]


March 14, 2003

[Ruby] まつもとゆきひろ 答える

すでにみなさんがリンクしてるので今更なんだけど。まつもとさんは文章も巧いなぁ。

「初心者はいつまでも初心者ではなく、いつまでもその立場に甘んじているべきでもない」という理由で初心者に媚びることを拒否します。

自転車屋に行けば自転車にまだ乗れない人のために補助輪の付いた自転車を買うこともできますが、万人にそれが必要なわけではありません。私が乗りたいのは軽快に走れる自転車で、初心者に優しい補助輪付き自転車ではないからです。

オレは自分で「初心者なんで」と言い続ける人間に多少なりともうんざりした経験がある(というか進行形か?)のでここんとこに特にビビっと来てしまった。

そうなんだよ。補助輪つけたままじゃいかんのだよ。ころんでもいいから補助輪外す努力しようよ。そしたら一緒にサイクリングでも何でもついて行くから。

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

たけうち [過去形でしょ。今はないでしょ?]

むとぽん [いやなかなかそうでもないですよ。]


March 14, 2004

[Ruby-GNOME2] Ruby-GNOME2-0.9.1

リリースしました。バグフィクスとWin32対応、あとRuby/Libgdaが安定版であるlibgda-1.0.3をサポートするようになりました。

Win32版に関してはバイナリも用意しました。詳しくはSFのダウンロードのページを見てください。

[Misc] 変なリファラ

こんなの → http://awagumo.servehttp.com:8480/@@@@@@ 。

きたさんのところにも来てるのか。なんだろ。

[Misc] TODO

・Ruby-GNOME2: Ruby/GtkSourceView全面的にソース,API見直し

・Ruby-GNOME2: 新rbbrリリース

・Ruby-GNOME2: Ruby-GNOME2-1.0.0に向けての動きをまとめる

・Ruby-GNOME2: Ruby/GLibのGType関連直し

・Ruby-GNOME2: Ruby/GConfの例外処理見直し

・Ruby-GNOME2: Ruby/PangoのAPI再確認

・Ruby-GNOME2: Statusページで元ライブラリのバージョン単位に進捗がわかるようにする

・Ruby-GNOME2: その他いろいろ

・tDiary: disp_referre.rb(旧)にいただいたパッチ吸収

・Hiki: リンク元表示プラグインにいただいたパッチ吸収

・ObjectPoolさかいさん版吸収

だ、ダメだ、おわらん...(T_T)。


March 14, 2007

[Java] WebLogicでwarファイルに含んだjarを優先してロードする

いきなりプロプライエタリなネタ(でもないか)ですまんがメモ。とほほな仕事ですわ。

同じWebLogic Server 9.2上で動作する複数のアプリケーション(war)がそれぞれ別々のバージョンの同じライブラリ(今回はlog4j)を使う場合、warファイルのWEB-INF/lib/にファイルを配置してweblogic.xmlのprefer-web-inf-classesにtrueを指定すれば良い。

って、同じwarファイルの中のライブラリはデフォルトで最優先にロードしてくれるんじゃないのか。

[Java] Hibernateを使用するためにDBに外部制約を設定する必要ってあるの?

これ、無くてもOK?

なんだかいろいろとめんどくちゃいのー。


更新 設定