free as in air

2007|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|09|11|12|
2012|03|04|05|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|03|04|06|09|
トップ «前の日記(2008-02-23) 最新 次の日記(2008-02-27)» /編集

2008-02-26 [長年日記]

§ [//] 夜食

 夜食

§ [java] JNIコーディングメモ

 参考になる。

§ [rjb] Rjb::throw

 なんか、Rjb::throwしたあと、スレッドに例外情報が残ってるので、throwしたあと関係ないタイミングでrjb_check_exception()した瞬間raiseしちゃう時があるような、と最近語尾が弱い俺、プライスレス。env->ExceptionClear()を呼ぶタイミングがないからか。しかし、ないものはないような。Javaからコールバックされてんのかどうかとか調べなきゃわかんないか?サンプルコード。あと、何もしないでいきなりクラス名でbindするとSEGVる気がする。クラス自体が状態持っちゃうからうまくユニットテストできないな。

§ [devel] Re: 動的型の言語では以下のようなプログラムの問題を検出できない、という指摘

 どうせその辺の凡百なプログラマは、静的型言語でも動的に生成した文字列をキーにハッシュ操作したりするんだからあんま気にすんな。

 追記:当然だけど静的型言語でも緩くやれちゃう。動的型言語でユルくやれてけしからんと言うなら、静的型言語なんかもっとガチガチにしなきゃいけなくない?文字列の生成がすごく……大変です……とか。ダメなプログラマはいるし、そこに何言ってもしょうがないような。

§ [tag] 分散プロジェクトの誤謬

 最後は普通のPMの話になったりして。職業柄あるある過ぎて笑ってしまうね。

 

本日のツッコミ(全4件) [ツッコミを入れる]
<< arton (2008-02-27 00:43)

そうなのかぁ(Exceptionが残る)。jevnポインタ設定のタイミングでクリア呼べばいいかな(どうせ、次のオペレーションを呼ぶわけだし)。<br>bindのは、具体的にはどうすれば再現するの?

<< 桑島雄一郎 (2008-02-27 01:45)

zsh 1339 [134] % RUBYOPT=-rubygems ruby -e 'require "rjb"; class Cmp;end; c=Cmp.new; Rjb::bind(c, "java.fake.Interface")'<br>-e:1: [BUG] Segmentation fault<br><br>zsh 1340 [134] % RUBYOPT=-rubygems ruby -e 'require "rjb"; class Cmp;end; c=Cmp.new; Rjb::throw("java.fake.Interface")'<br><br>ruby 1.8.6 (2007-06-07) [i486-linux]<br><br>zsh: abort (core dumped) RUBYOPT=-rubygems ruby -e<br>-e:1: [BUG] Segmentation fault<br>ruby 1.8.6 (2007-06-07) [i486-linux]<br><br>zsh: abort (core dumped) RUBYOPT=-rubygems ruby -e

<< 桑島雄一郎 (2008-02-27 02:05)

あれ、コピペを挿入する行を間違えた。むしろこう。<br>ruby -e 'require "rjb";Rjb::bind(0, "hoge.huga")'<br>ruby -e 'require "rjb";Rjb::bind(0, "java.lang.Comparable")'<br>ruby -e 'require "rjb";class Cmp;def compareTo;0;end;end; Rjb::bind(0, "java.lang.Comparable")'<br>ruby -e 'require "rjb";Rjb::throw("msg", "hoge.huga")'<br>ruby -e 'require "rjb";Rjb::throw("msg", "java.lang.Error")'

<< arton (2008-02-27 20:46)

なるほど。それはありそう杉。