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

January 01, 2004 [長年日記]

[Misc] あけましておめでとうございます

今年もどうぞよろしくお願いいたします。

[Ruby-GNOME2] 久々にGType vs Rubyのクラスで悩む

GObjectではgtk_hoge_get_type()みたいな関数(実際はそのマクロのHOGE_TYPE_FUGA)を呼び出すことでその型(というかクラスと言って良いと思うんだけど)が何者かを知ることができる。実際はGTypeというIDが返される。

でも、この*_get_type()というのは1度呼び出されないとそれが何者かどうか確定しない。

実際、アプリケーションが全てのウィジェット(クラス)を扱うわけではないから、このようなLazyな実装はとても都合が良い。

ところで、Ruby-GNOME2では初期化時にGTypeとRubyのクラスを紐づけてしまう。そう考えるとそれだけでRuby-GNOME2はC言語版に比べて大層重い処理をやってしまっていることになる。

とはいえ、そこでProperty等の情報を取得してメソッドに自動変換したりしてるのでやむを得ないと思うし、その程度のことなら現在のCPU速度を考慮するとあまり気にしないでイイと思ってる(開き直り)。今のところ他にもいろいろやらなきゃいけないことも多いしね。

でも、このことで1点、困ったことにぶちあたってしまった。

というのは、hoge_get_type()という関数が公開されていないものがあるのだ。

ある特定の関数から呼び出されるようになっていて、いつそのGTypeが確定できるのかがモノによってマチマチだ。

具体的にはGdkの環境依存のクラス(X11, LinuxFB, Win32)のところがそうなってる。もちろん、環境依存の部分は隠蔽すると考えるのであれば、そもそも実装する必要はないんだけど、GTypeとRubyのクラスが1:1にならなくなるのでなんか気持ち悪い。特にGTypeからRubyのクラスに変換するときに、環境依存のGTypeがきちゃうとそれを環境非依存のRubyクラスにマッピングしてあげる必要も出てくる。

あ、そうか。逆に言えば、先にRubyのクラスだけ定義しちゃって、確実にGTypeが決まった後にRubyのクラスとGTypeをマッピングできれば良いのか。GOBJ2RVALあたりか。うーん。

[Fedora] MozillaでFlashプラグインが動かない

友人からの年賀状Flashを見ようと思ってFlashプラグイン(Shockwave Flash 6.0 r79)をインストールしたんだけどどうにも動かない。何でかなーと思って-gオプション付きでmozillaを起動したら以下のようなメッセージが。(LANG=Cにしたのは文字化け対策)

# export LANG=C
# mozilla -g
LoadPlugin: failed to initialize shared library /usr/lib/mozilla/plugins/libflashplayer.so [libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory]
LoadPlugin: failed to initialize shared library /usr/lib/mozilla-1.4.1/plugins/libflashplayer.so [libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory]
LoadPlugin: failed to initialize shared library /usr/lib/mozilla-1.4.1/plugins/libflashplayer.so [libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory]

なるほど、ということで、compat-libstdc++-7.3-2.96.118.i386.rpm, compat-libstdc++-devel-7.3-2.96.118.i386.rpmをインストールして再起動したら無事動作した。


January 02, 2004 [長年日記]

[Ruby] Ruby-GetText-Package

mswin32向けパッケージを用意しました。

一応、手元の環境では確認したんだけど、どうかな。

これ作ってる最中に気づいたんだけど、Ruby Installer For Windowsのruby180-10.exeってiconvが入ってないみたいなんだけどなんでだろ。 うささんのバージョンでは入ってるんだよな。というわけでうささんバージョン推奨ってことでOK?

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

(う) [アメリカにんはiconv使わないから気づいてないだけとか。]

むとぽん [iconv自体がWindowsに最初から入ってないからってことかと思うのですが違うのかな。]


January 03, 2004 [長年日記]

[Misc] 新年早々アホアホだけど

PSXって「ピーエスエックス」って読むのが正しいの?

「ピーエステン」って読んでたよ...。

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

ななし [染まりすぎ]


January 04, 2004 [長年日記]

[Misc] はー仕事カー

結局、休み中にやりたいことの半分もできなかったなぁ。

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

たけうち [あけおめ。仕事は鬱だけど今年もヨロピク]

むとぽん [あけましておめでとうございます。 相変わらずお忙しいようで(^^;)。]


January 11, 2004 [長年日記]

[Ruby-GNOME2] rbbr改造中

なんかWWWブラウザみたいになっちゃいそうだな。

[Misc] Matrox Millenium P650

たまにXが固まる(リモートからはログインできる)んだけどドライバのせいかな。それともFedoraのせい?


January 13, 2004 [長年日記]

[Misc] 今、仕事中(3:40am)なのです

Oracleのりビジョンアップグレード対応で待機してるのですが、アップグレードに失敗して復旧作業に入りました...(T_T)。

検証環境ではきちんと検証したはずなのに....(T_T)。

はー、明日(今日?)どうやって顧客に弁明しよう....(T_T)。

ってか、きちんとサービス復旧できるのか心配になってきた。

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

通りすがり [ご愁傷様です。私も今(4:45)Oracle使ったプログラム作ってます...一人でデスマーチは寂しいです。]

むとぽん [おーご同輩。お互い大変ですねぇ(^^;)。 私は待機だけだったので遊んでたのですが、なんだかんだで結局退社したの1..]


January 18, 2004 [長年日記]

[Ruby-GNOME2] Logo for Ruby/GtkGLExt

Ruby/GtkGLExt向けのサンプルを書いてみました(と言っても、GtkGLExtのC言語で書かれたサンプルをRubyで書き直しただけです)。

思ったよりフツーに動くのでちとびっくりしました(^^;)。

いろいろと事前に必要なライブラリとかが多いのですが、良かったらマウスでグリグリしてみてください。

ちなみに、Linux上では若干再描画が上手にいかないようだ(マウスポインタの部分が絵を壊す)。これはオリジナル版もそうなのでしょうがないと思うんだけど、Cygwin上だときれいに表示されるんだよなー(もちろんCygwin上でも動くYO!)。

ところで、Ruby/GtkGLExtでは、RubyのOpenGLバインディングであるOpenGL Interface for rubyを使うんだけど、これってメソッド名がCamelCaseなのね。先頭文字も大文字。

まぁ、悪くはないんだろうけど、他の部分がCamelCaseではないので、その部分だけ浮いた感じがする、ってか、やっぱり見づらいよなー、混在は。


January 19, 2004 [長年日記]

[Misc] うーむ

昨日Ruby-GNOME2 MLに送ったメールが届いていない様子。エラーメールも戻ってきた。

急にどうしたんだろう。

そういえば、数日前、オレの使ってるhighway.ne.jpのメールサービスが一時的に動かなくなったんだけど関係してるのかな。

[Misc] Software Design 2004-02

Ruby-GNOME2が紹介されてるとのこと。記念に買おうかな。

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

たむら [まいど〜♪ screenshot多数です>Ruby-GNOME2]

むとぽん [まだ買ってないです:-|。]


January 20, 2004 [長年日記]

[Ruby-GNOME2] Visecas

Jan Weilさん作。EcasoundのGUIフロントエンドだそうです。Ruby/GTK2とRuby/Libglade2を使ってるようです。

なぜかサウンド関連のアプリケーションが多いみたい。

[Misc] やっぱりSFにメールが届かない

一応、Highwayのサポートに届かないんだけど、ってメール出したら、紋切り型のつれない返事。とにかくこちらが書いたモノを読まずに一次回答用のテンプレートを送ってきたようだ。

そんなわけで、ちとむかついたので厳しくリプライ。

といっても、あの調子ではなかなか解決してくれないだろうから、 ひとまず、XREAのアカウントでSFのMLに入り直してしばらくはそちらのアカウントでやりとりすることにして当面を乗り切ることにした。

XREAのアカウントでSFのMLに入れるってことは、少なくともSFとhighway間か、あるいは、mutoh@highway.ne.jpというアカウント自体がまずいのかってとこだよなー。

動きを見ると、他のアカウントからのポスト(XREAのオレのアカウント以外も)はOKっぽいので、mutoh@highway.ne.jp自体がSFにrejectされてるのか?と思ってSF上のドキュメントを漁ってみるとWhy does Sourceforge reject my mail?というのを見つけた。最近のサービス停止でメールサービスの入れ替えを行っていたようなので、これに該当するようになってしまった可能性もありそうだ。というわけで後でゆっくり見てみることにしよう。

[Misc] やっぱりSFにメールが届かない(2)

もう一度冷静にエラーメールのログを読んでみる(抜粋)。

  ruby-gnome2-devel-en-request@lists.sourceforge.net
    SMTP error from remote mailer after RCPT TO::
    host mail.sourceforge.net [66.35.250.206]: 550-Postmaster verification failed while checking 
    550-Called:   61.122.117.161
    550-Sent:     RCPT TO:
    550-Response: 550 unknown user
    550-Several RFCs state that you are required to have a postmaster
    550-mailbox for each mail domain. This host does not accept mail
    550-from domains whose servers reject the postmaster 

postmasterアカウント(mailbox)がhighway側に存在しないのでrejectされる、ってこと?


January 22, 2004 [長年日記]

[Misc] Highway

まだメールの件のリプライがない。なんだかなー。


January 24, 2004 [長年日記]

[Misc] SD 2004 2月号購入

たむらさんの記事でRuby-GNOME2が紹介されていたので購入。chrootネタでRuby-GNOME2が出てきたのはちょっとびっくりしましたが、まぁ、それはそれということで(^^;)。

ちなみに、記事のStock Item and Icon Browserのバグは最新版では直っています。

#ってか、「図32 Stock Item and Icon Browserでバグを発見」ってのについ笑ってしまった(^^;)

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

Before...

むとぽん [ちなみに現在リリースしているrbbr最新版ではGC.startを使った暫定対処となっていますが、もともとこの件はRu..]

むとぽん [あ、暫定ではなく本格対処ということで>FIX済み]

たむら [了解です。サポートHiki修正しておきます。]


January 26, 2004 [長年日記]

[Ruby] 正規表現練習帳

MoonWolfさんとこ。ちと遅れたけど、これ便利だなー。練習帳というかデバッグとかにも使えそう。

普段irb使って確認してたりするから非効率的だったんだよな、オレ。

これは是非使わさせていただきたいな。

[Misc] 放置されてたので

かなり不機嫌そうな感じでHighwayのサポートセンタに電話してみた。受付の女の子にはかわいそうだが、1週間近くメールサービスがおかしくなるのはちと耐えられない。

んで、ついさっき、折り返しメールが届いた。

ご連絡いただきました件ですが、ご指摘の通り現在「postmaster@highway.ne.jp」のアドレスは存在いたしておりません。

「550-Postmaster verification failed while checking」のエラーが当サービス側のSMTPより応答しておりますので、この部分を中心にエンジニア側と調整確認を取っております。

だと。

こういうのの設定とかってとっても苦手だったりするのであまりえらそうに語れないんだけど、postmasterの有り無しでこういうチェックをかけるところがあるのね。

確かにセキュリティ上、チェックしないよりは効果的かも。ってか、そもそも、postmaster無くても良いってことすら知らなかったよ。

そういう意味では勉強になったなぁ。災い転じてってことか...。

#ってことになればいいんだけど。

[tDiary] adulau's diary

たださんのところで知ったんだけど、彼はベルギー人なのかな。Laurentもベルギーに住んでる。知り合いなのかな、それとも偶然か、ちょっと興味深い。

ってか、LaurentはよくtDiaryの質問をオレにくれるんだけど、tdiary-talkはあまり知られてないのかな...。MLであればそれなりに情報も蓄積されるだろうに。

[Ruby-GNOME2] Ruby/Libburn

先ほどと同じくLaurentが。また新しいプロジェクトを始めたらしい。すごい。

オプティカルディスクを操作するためのライブラリLibburnのRubyバインディングとのこと。

サンプルにRuby/GTK2を使ってくれているらしい。

[Misc] How do you think?

きたさんとこから。オレも結構使ってるのでGoogle検索してみた。

"How do you think about" 7,650件

"What do you think about" 932,000件

なるほど。確かにWhatの方が圧倒的に多い。これからは気をつけないといかんなー。英語は難しいなー。

[Misc] しかし

久しぶりに巡回すると浦島太郎の気分だな、こりゃ。

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

なかだ [postmasterって必須、かつ対処可能な人間が読まなければならないんじゃ?]

むとぽん [むむ、やはりそういうものですか。]


January 27, 2004 [長年日記]

[Java] Webアプリケーション開発者(ってかむしろ運用してる人)のみなさまへ挑戦的な問題です

ロードバランサ・フロント(WebLogic)2台・バック(Oracle,クラスタ構成)のいわゆるWebシステムがあります。

このアプリケーションが最近よく"No resources available"というメッセージのSQLExceptionをあげ、それ以降はそのサーバ上では同じ例外が出続けるため、サービスを提供できなくなることがわかっています。

(調べるまでもないのですが)ログの結果からConnectionPoolから取得したConnectionのリリース漏れが原因のようです。

例外が出ていないサーバ上ではかろうじてサービスを提供し続けることができますが、ロードバランサではラウンドロビンで処理を振り分けているので1/2の確率でエラー画面が表示されることになります。

さて、この状態でサービスを上手に提供しつづけるにはどうしたら良いでしょうか。

それではスタート! チャララララララララー

模範解答F:特に何もしない

アプリが悪いんだから、アプリ開発ベンダが直すまでは何もしないと言い切るというのは自分に素直な回答といえます。しかしベンダの実力が伴わないとだめです。(特にいつ直してくれるかわからないという状況では)運用するのもこちらなので結局被害を被るのは自分たちです。理想と現実だいぶ違うから夢から覚める必要があります。

模範解答E:ロードバランサでヘルスチェック

"No resources available"を出したフロントサーバを自動で切り離し、もう片方のサーバのみでサービスを続けます。

模範解答Fより少しお利口さんです。でも、結局もう1台の方もすぐに同じExceptionが出てサービスの全停止となるでしょう。それまでにWebLogicを再起動できれば何とかなるかもしれませんが、2台いっぺんに落ちる可能性もあります。これでサービスを連続稼働できるかなんて、まだまだ夢見がちだからもすこし大人になる必要があります。

模範解答D:ソースコードレビューを行う

DBのスペシャリストとWebLogicのスペシャリストを使ってソースコードレビューを行います。

今までの模範解答よりはだいぶお利口でしょう。模範解答Fに比べいくらかクールです。ただ、レビューしても直すのがあのベンダなのでいつ直るかわからないところがつらいです。

でも、そこまで現実わかっているならもうひとがんばりです。

模範解答C:こちらで引き取ってソースを直す

もっとも限りなく正解に近いです。こちらの工数はかかりますが総合的には安くつく可能性すらあります。でも、全然関係ないバグを見つけてしまったらどうするか(いや、直すしかないですが...)とか、そのソースをアプリベンダがきちんとメンテナンスできるかとか、いろいろ決めなきゃ行けないことも多くなるでしょうから油断は禁物です。

この辺のチョイスのセンスでこの後の運用の大変さが大きく左右されます。まるで左右のフロントサーバのように。

模範解答B:フロントサーバを増やす

サーバを増やしただけでは単なる延命措置にすぎず模範解答Fと対して変わらないかもしれないのでなんとも中途半端です。なくても良いけどちょっとはあった方が、なんてそんなの微妙すぎです。

模範解答A:ユーザに使用制限をかけてもらう

ユーザがあまり使わないように頭を下げて回ります。実際には効果的ですが、そんなあなたは卑屈すぎです。アプリ改修は怖くないです。勇気をもてください。

模範解答G、Hとして、サーバのスペックを上げるとかいうことも考えられますがでかけりゃいいってものではないということを肝に銘じて欲しいです。女性の敵ですよ。

いろんな模範解答を考えてみましたが、最後に私の言いたいことは、そもそも最初の段階でもう少しまともなアプリベンダをチョイスすべきだったということです。アプリベンダの一部の人が優れたプログラマだからってその人が全部作るわけないのですから、それで全体を判断するのは良くないことです。加えて言えば、スケジュールとリソース管理がきちんとできる、いわゆるプロジェクト管理がきちんとできる人がいるベンダを選ぶべきだったと思うわけです。

ラーラララーラララーラララララ....

っと、まぁ、ちょっとむりくり何かにあわせたような模範解答(?)は置いておいて、みなさんがこのような状況に陥ったときはどのような解決策を取るのでしょうか。

アイデアを採用させていただいた方にはもれなくRuby-GNOME2のCVSアクセス権をプレゼント!(うそっ)

#ってかホント、誰かこんな状況下のオイラを救ってくれ...(泣)。

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

Before...

むとぽん [いやーホント必要ですよ、プロジェクト管理力強化。 そういう意識があるだけでもだいぶマシですよ。 今のベンダは若い会..]

kada [まるでうちのような会社です(苦笑)日本のSIerとかってこんなものなのでしょうか。転職前、大手電気系にいたのですが、..]

むとぽん [えっと、ウチ(SIer)の名誉のために言っておきますが、ここではクリティカルなバグのあるアプリをどう365d24h運..]


January 29, 2004 [長年日記]

[Misc] 書き忘れてたけど

昨日、無事メールが復旧した。postmasterを作ったんだとさ、ちゃんちゃん。

[Misc] ってーか逃げてー

今日も18:00すぎにサービスが停止した。

どうもユーザが使う時間が集中するらしい。ってことはつまり、毎日18:00くらいに落ちるってこと?オソロシー(泣)。


January 30, 2004 [長年日記]

[Misc] そして今日も...

しくしく(T_T)。