トップ 最新 追記

じじぃの日記、ツッコミ可

Twitter: @jijixi_org
Xbox Live: jijixi

初心者が書いた OCaml 入門
Spotlight tips サイト内リンク集
1970|01|02|
2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|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|11|
2011|05|
2012|01|

2004-10-01 やっぱメモリはいっぱいあった方が良いよね〜 [長年日記]

% [PC] Eclipse on FreeBSD

以前一度入れてみたものの、「くそ重っ!! こんなん使ってられん」つって消した Eclipse を再度入れてみるテスト。なんでって、わりと必要に迫られて(苦笑

ビルド中に javac がメモリ不足で死ぬという災難に見舞われながら、三度目の挑戦 (X 止めてやっとこ) でなんとかインストール終了。

やっとかよ〜……と疲れた溜息を漏らしながら起動……NullPointerException とかで java が死ぬ。ぐはっマジかよ!!と戦慄を覚えるも、環境変数 JAVA_HOME が Kaffe の方を指してたのを思い出して、jdk1.4.2 の方に指し向けてやると起動した。ふぅ、脅かしやがる。

・・・でもまあ、くそ重くて使いもんにならんのは変わらないわけですが(爆

% [PC] Eclipse on WindowsXP

やっぱメモリが 112MB しか無いマシンで Eclipse は無理…ってことで、メモリが 512MB な Win マシンでがんばろう。FreeBSD から触りたいときは rdesktop で何とかするってことでひとつ。

エディタ上でバックスペースしようと思って Ctrl+H を押すと検索パネルが出たりしてストレス溜りまくりなんだが、Package Explorer のファイル名で『右クリック -> Open With -> System Editor』とやるとシステムで関連付けされたアプリケーションが立ち上がってくれるのがわかったんで、さっそく java 拡張子を gvim に関連付け。おお、良いじゃん快適よ。VisualStudio はどうしてこれができんのか。…と思ったら、ソリューションエクスプローラのところからできるっぽいな。今さら気付いてもあんまし意味無いけど(苦笑)。って言うか、どうしてこういう環境設定をする場所を方々に散らすんだ M$ は。どっかにまとめとけっての。

VisualEditor が 1.0 になってるってことで記念に(?)使ってみるが……VisualStudio や WideStudio のようなレベルを期待するとがっかりしますね。なんつーか、どうにも融通が効かない。マウスで操作できるのは実質ウィンドウの大きさくらいのもんで、他のパーツのサイズやなんかは結局プロパティをぷちぷち手打ちしていくしかないみたい。まだまだこれからって感じですな。


2004-10-02 なんか知らんがアホみたいに眠いぞ [長年日記]

% [PC] gtk2 なアプリに geometry を指定するにはどうしたら良いの?

Gimp とか Gaim は前回のウィンドウ場所を憶えててくれるからまだ良いんだが、Mozilla のやつが毎回毎回問答無用で左上隅にべろっと窓を開くんで困ってる。クリップドックを隠すんじゃねえ!!

-geometry オプションはさらっと無視されるんだが、他にどうすりゃ良いんだ?

% [PC] 風博士を入れてみた

まあ、わりと良い感じではありますね。素の Mozilla よりは起動も速いし動作も軽いようだ。

ただ、劇的に違うってわけでもないし、どんなもんかね。それに乗り換えるには致命的な問題が一つあって、ブックマークが使い回せないのだ。インポートもエクスポートもできないのに、独自形式なんだもの……

まあ、独自形式とは言っても xml だから、ちょっとがんばればわしでも変換フィルタは書けそうだが、そこまでして移行する価値が今のところ見出せないんで、モチベーション上がらず。でも、わしでも書けそうってことは、実際書いて使ってる人はどっかにいるだろうなあ。くれないかなあ@他力本願寺。

ああ、それと、xfce4 のテーマファイルをちょっと改造して使ってる .gtkrc-2.0 だとブックマークバーとかのボタンが変なのがちとアレゲだな。それと X のリソースで Xft*antialias: False だと、環境設定のフォントの項目を開こうとすると落ちます。デフォルトテーマにするとなんともないんで、これもテーマが絡んでるっぽい。特殊な環境だろうし、バグリポートとかするつもりは無いけど、もし関係者がここ読んだときのために環境は書いとこう。FreeBSD 5.2.1R + ports current で、風博士のバージョンは 0.1.9 です。

% [PC] フォントの項目で…

詳細設定のところで適当にフォントの設定してたら、いつの間にか落ちなくなってた。デフォルトの設定が何か悪さしてたのか?


2004-10-03 長年じゃないのに長年日記が表示されてしまうのはいかがなものか [長年日記]

% [PC] Eclipse on MacOSX

こんなのもあったんだ…と思って入れてみる。G3/450MHz なマシンだが、わりとなんとかなる。まあ、重いには重いけど。やっぱネックはメモリか (iMac には 512MB 積んでるんで)。

メモリさえ十分にあれば、多少のろい CPU でもなんとかなるってことなんだよね、やっぱり。112MB しかないマシンでは無理なんだよな…Eclipse 起動しただけで 50MB くらい実メモリ消費してるし。プロセスサイズが 260MB って何やねんそれ。まあ、MacOSX 版だと 110MB/450MB だから、それに比べれば良心的なのかもしれんが(苦笑

それにしても、MacOSX 版はスペックから想像するよりも随分快適だな。P4/1.8GHz の WindowsXP とそれほど変わらないように見える (『見える』だけかもしれんが)。JavaVM の性能が良いのかね。それとも VM が OS に組込みな分、SWT の性能が良い?


2004-10-04 タイトルを付け忘れていた罠 [長年日記]

% [PC] この頃は Java ばっかりいじってる

まあなんつーのか…あんまり好きにはなれなかったとは言え、Java ってわしの志向に近い言語ではあるんだよね。つまり…

・静的型付けじゃないと安心できない
・メモリ管理なんてやりたくない
・どの OS でも同じように動いてほしい

% こういう要求を一応満たしているわけで (だから、以前勉強してみたんだけど)。ただ、やっぱり何か違うって気がするんだよな。何が…とははっきり言えないんだが。

ただまあ、最近はオブジェクト指向なものに慣れてきたのもあって、わりと冷静に付き合えるようになったような気がする。以前はオブジェクト指向ってものがわかってないとダメなのか?みたいなプレッシャーがあったりしたんだが、『オブジェクト指向は便利な魔法なんかではない』ってのがわかってしまえば、それなりの付き合い方はできるもんだ。無理にオブジェクト指向的な方法を採る必要は無い。

そもそも、C++ とか Java のようなクラスベースのオブジェクト指向ってのが、元々のオブジェクト指向の理想(?)みたいなものとかけ離れてるような気がするのは気のせいだろうか。オブジェクトが中心の考え方なはずなのに、これらの言語ってどう見てもオブジェクトじゃなく『クラス』が中心じゃない?

ただ、オブジェクト指向がどーのこーのってのを考えなければ、この『クラス指向』とでも言うべきものは便利と言えば便利だ。んで、これの良い所ってのは要するに『環境を切り離せる』ところなんじゃないかと。カプセル化だの実装の隠蔽だのって小難しい言葉を持ち出すまでもなく、C とかで何か書いてても、他から触られたくない部分ってのはたくさんあるわけで、そういうのを C の機能だけでなんとかしようと思えば、使う側、使われる側がお互いに気を遣いあわないといけない。それを簡略化してくれるのがクラスベースなオブジェクト指向の一番の強みなんじゃなかろうか。継承だのなんだのは、単なる便利機能であって、本質じゃない。

逆にプロトタイプベースのオブジェクト指向は、わしのイメージするオブジェクト指向というものに合致するように思う。とは言え、プロトタイプベースの言語をちゃんと勉強したことが無いので、Ruby の特異メソッドとか、soopy なんかを見ての想像だけども。

でも、よく考えると、「だから何?」って気もするんだよな。クラスベースだろうがプロトタイプベースだろうが、(わしが思っている) オブジェクト指向のメリットである『環境の切り離し』は可能だろうし。それぞれの言語がクラスベースであること、あるいはプロトタイプベースであることの理由って何なんだろう。よくわからん。敢えてロマンのかけらも無い理由を示せば『実装上の都合』とか(苦笑

そう言った意味では、Ruby っておもしろい。クラスベースとプロトタイプベースの特徴を両方持ってる。実際はクラスベースにプロトタイプベースをちょっと混ぜてるって感じなのかもしれないが。(だってほら、プロトタイプベースってのをよく知らないからさ、よくわかんないんすよ)

これを節操が無いと取るか、既成概念にとらわれない真のオブジェクト指向を目指していると取るかは、人それぞれなんだろうけどね。ちなみにわしは、節操が無いんだと思ってますが(爆)。って言うか、自分自身が何にでも手を出す節操の無い人間だから、そう思いたいってだけって話も(笑

・・・なんでこんな話になってるんだろ(苦笑


2004-10-05 眠いときに考えごとしながら車の運転をするのは危ない [長年日記]

% [PC] どっかに良い JNI の解説ページは無いものか…

あーわからん。JNIEnv を取得するまでは何とかなったんだが、その後 FindClass() とか GetFieldID() とかがさっぱりうまくいかない。package 指定してないクラスを取得しようとしてるのがダメなのかなあ……そもそも、メソッドシグネチャとかも、正しく指定できてるのかよくわからんのだよな(苦笑

でも FindClass() でも失敗してるんだから、とりあえずクラス名の指定がまずいんだろうなあ。触ろうとするクラスを、適当にどっかの package に属させてやってみるか……ちゅうか、package に属してないクラスの完全修飾名ってどうなるのが正しいんだ?それとも package に属さないのがそもそもダメ?でも、たかがサンプルコードでいちいちそんなのやってられんじゃないすか。めんどくさい。

いやぁほんとにどっか良いページ無いすかねぇ。ここはちょっとイマイチなんだよな。もう一歩突っ込んだのが欲しいんだが (できれば日本語で)。はあ……本買ってきた方が良いかな。

Beans のこととかも調べなきゃないのに…全然追っつかないよ。覚えなきゃないこと多すぎ。


2004-10-06 近年まれに見る腰の調子悪さでやばい [長年日記]

% [PC] 今日の新言語 OOoB (笑

勝手に略してるだけで、こんな表記は見たことないんだけども、何かってぇと OpenOffice.org Basic のことですわい。いや、請求書の用紙を作ってくれって頼まれてね、そいじゃ OOo で作りましょって思ったわけだけど、その課程でちょっと自動化したいところがあったんで、マクロの記録を試してみたのよ。で、記録されたコードを見てみると・・・全然役に立たねえ!!

そのまんまは使えなくても参考くらいにはなるだろうと思ったのに、ただただ外部のライブラリ (どうやら Java で書かれているっぽい) を呼び出してるだけで、何がなんだかさっぱりわからん。単にあるオブジェクト (フローティングフレーム) を別のページにコピーしたいだけなんだが、そんなことすら直接できないんですかい。

ヘルプを見ても、その外部ライブラリ (と言っても OOo 純正だぞ) の説明は皆無だし、Basic に組込みの関数は、ざっと見た感じ『よっぽど大量じゃないかぎり手でやっても変わらん』ような気がすることしかできないっぽい。ちなみに文法はまんま VB のパクリって感じ。まあ、MS Office との互換性を重要視してるわけだから、それでも良いんだが、せめても少しまともなリファレンスマニュアルを付けてもらわんと、全く役に立たないっすよ。

暇を持て余してるなら、もっと一生懸命調べてみても良いんだが、それほど暇でもないんでとっとと諦めて、(クールじゃないからやりたくない系の) 別の方法で作り直しましたよ、さくっと。って言うか UNO って何だ!!


2004-10-07 ほんとサブマリン特許ってやぁねぇ [長年日記]

% [PC] 何が悪いのか JNI

まーなんつーか、世の中 PureJava なモノしか売れないんでしょうか。って言うか Eclipse (と言うより SWT) だって PureJava じゃないじゃん。

…と言ったわけで JNI の資料を求めて本屋巡りを敢行中なんですが、Java の本はアホほど種類があるのに、JNI のことが書いてあるのって全然無いですな。あってもせいぜい数ページ。唯一見掛けたのがオライリーのでっかく『JNI』と書いてある本……なんだが、オライリージャパンの書籍リストに載ってないな…ハテナ?『Jiniクイックリファレンス』ってのはあるけど、ちゃんと中身も見たし、これと勘違いしてるわけじゃないはずだが。それとも、オライリーっぽい見た目だったからそう思い込んでたけど、違う出版社の本だったのかな。とにかく、今度またチェックしてこよう。


2004-10-08 腰の調子が悪いと、あらゆるところに影響が来る [長年日記]

% [本日のリンク元] google 検索 (デスクトップ環境KDE xbox)

いったい何を調べたいんだ、こいつは……と思ったんだが、XBOX で動く Linux があるんだったっけ?でも、そもそも XBOX って KDE がまともに動くほどのメモリを積んでるんだろうか。最低 256MB くらいは無いとつらいと思うんだが。

% [本日のリンク元] google 検索 (OCAML JAVA クラス 呼び出す)

むむ、これは OCaml から JAVA のクラスを呼び出したいってことですか?いったいどんな用途なんだろう(わくわく)。

OCaml から直接 Java に触れるならとってもクールだけど、とりあえずそんな方法は知らんので、JNI(C/C++) で Java を呼び出すものを書いて、それを OCaml から使うのが無難なところだろうね。

でも、せっかくどっちともバイトコードで動くプラットフォーム非依存な言語なんだから、OCaml のランタイムと Java の VirtualMachine が直接やり取りできれば、すんごくカッコイイよなぁ。わざわざプラットフォーム依存な環境を間に挟むなんてナンセンスだ。やっぱ Inria にがんばってもらうしか。

って言うか、OCaml のコードを Java のバイトコードにコンパイルするって話が、どっかで持ちあがってなかったっけか?……あ、これだ。情報元はこちら

ところで、Parrot ってどんな塩梅なんだろ? Perl6 はどうでも良いけど(爆)、Parrot にはちょっと期待してるのよね。(と良いつつ、全然調べたこと無いんだけど)

% [PC] JDK 1.5.0

なんかふらっと java.sun.com を覗きにいったら JDK1.5 のベータ印とかが取れてたみたいなんで、なんとなくインストールしてみた。Eclipse で使ってみると (Preference -> Java -> Installed JREs で設定ね) 少し軽い感じ?

それはともかく、Generics とか Enum とか、AutoBoxing とかプログラマに優しい新機能が満載だから、早いとこ普及してくれると良いねえ。でも、Enum はどうか知らんけど Generics とか AutoBoxing とかはコンパイラの仕事のような気がするから、1.5 の新規クラスとかを使わなければ 1.5 の javac でコンパイルしたバイトコードが 1.4 で動いたりするんじゃないのかな〜とか思わなくもないんだが……どうなの?

% [PC] JNI なんて…JNI なんてぇ!!

昨日寝る前にちょっと思い付いていじってみたけど、やっぱりダメだった。んで、今日はまた資料を求めて本屋巡り…のついでに、最近できたデカイ本屋を帰宅渋滞に巻き込まれながら探して突入してきましたよ。地平線が丸かったです (嘘つけ)。

そこで、ピアソンの続き物シリーズ (なんだそりゃ) の一冊に JNI の説明を見付けて立ち読み。いや、だって、たかが十数ページのために 6,800 円は出せませんよ、貧乏なんですから。そんで、それを読んだかぎりでは……わしがやってた方法でだいたい良いみたいなんだよなぁ。細かい間違いはあったけど、基本的には間違っていない。と言うわけで、もう少し今の方向でがんばってみようと心に誓いつつ、また別のことを始めてる移り気なわし(爆

……そろそろカテゴリを『Java』にした方が良いかしらん。


2004-10-09 のどのつかえが取れた気分 [長年日記]

% [Java] JNI 奮闘記その後

はあ、やっとうまく行ったよ。昨日の立ち読みのおかげで、『何が間違ってて何が間違ってないか』がはっきりしたおかげです。やっぱ問題のある箇所を特定することは大事だよね。その辺がはっきりしないと、どこを直して良いモノやらさっぱりですからなあ。

ともあれ、これで C/C++ 側からの callback には目処が付いた。良かった良かった。


2004-10-10 今日は (元) 体育の日 [長年日記]

% [Java] 上げずに投げろ

練習がてら Java のコードを書いてます。Eclipse でプロジェクト作って、ファイルの雛型も Eclipse で作って、gvim で開いてガーって書いて、たまに Eclipse のエディタに反映させて文法のチェックをする…ってなスタイル。いい感じに連携できてる気がします。

それにしても、なかなか慣れない。基本的にわしってオブジェクト指向言語の経験って Ruby くらいのもんなんで、そっちの感覚をどうしても引きずってしまう。

ポリモーフィックなオブジェクトを作ったつもりが、静的型付けのせいで役に立たなかったりとか、例外を上げようと思って raise って書いちゃったりとか、その度に Eclipse のエディタに激しく怒られます。いや〜!! 真っ赤っ赤。赤ペン先生助けて (意味不明)。

% [Java] JDK1.5 on FreeBSD (撃沈)

Linux 用のバイナリをメインマシンの FreeBSD 5.2.1R に突っ込んでみたが、『そんなシステムコールは無え』とか言われて動かない。しょぼ〜ん。Current だと動くかなあ。できれば 5.3R で動けば良いなあ。

% [PC] 思案中

省ちゃんに入れた OpenBSD だが、別の OS に切替えようかと思案中。いや、別に OpenBSD がダメな OS だってんじゃなくて、サーバとして放置するならきっとばっちりだったんだけど、なんだか結局メインマシンから操作するメインマシンの一部と化しつつあるんで、その場合は (特に最近のニーズからして) ちと不便なんだよな。Java 関連が弱すぎる。ports に入ってる jikes や kaffe もちょっと古いし、pkgsrc を導入してみたものの、そっちの新しめな jikes も kaffe もエラー出まくりでインストール不可。って言うか、インストールできないもの多すぎな気がするぞ pkgsrc。

とまあ、そんなわけで、java が簡単に使える OS に切替えようかしら〜などと思ってるわけですよ。となると、やっぱり Linux が無難かねえ。でも得意の Debian は Java 関係は微妙だし (と言うか sid でさえ eclipse のパッケージが 2.x だしなあ) 野良 apt を探すのは骨が折れるし、やっぱアレですか、いよいよ Gentoo に手を出すときが来ましたか?でも、そんな新しい作法を覚えるだけの余裕が無いなあ。う〜、でも日和って FedoraCore2 ってのは勘弁願いたいところだ。う〜ん……

やっぱ Debian/sarge 辺りで、Java 関連はパッケージ管理を諦めて /usr/local に突っ込みまくり…ってのが一番手っ取り早いかなあ。


2004-10-11 今日は体育の日 (だからって運動はしませんが) [長年日記]

% [PC] どうすりゃいんだ?

Eclipse で cvs に import したいときってどうしたら良いんだろうか。とりあえずリポジトリにはアクセスできるようになったんだが、Eclipse で新規に作ったプロジェクトをリポジトリに登録する方法がわからん。・・・え、それとも、そもそもこの発想が間違ってる? cvs も自己流で使ってるしなあ。

% [PC] なんだそりゃ

上の件解決。適当に別の手段で (わしの場合、ssh でアクセスしてるので、シェルから) 先にディレクトリを作ってやれば良いだけだった。その後 Package Explorer でプロジェクト名を右クリック→『Team』→『Share Project...』を選んで commit してやれば良い。

要するに、import っていう操作ができんのだろうな。だから、あらかじめ空のベンダブランチを作ってやって、そこに commit する形にしないといかんと。・・・なんか微妙に納得行かんが。

% [Java] Java の練習がてら

WideStudio の重要なクラスの一つ、WSCvariant の Java 版を作ってみてます。プリミティブ型とオブジェクト型の混在とか、勉強に最適かと思って。

んでまあ、効率とか云々は置いといて、とりあえず使えそうな感じにはなってきたんだが……これってどうやってテストしたら良いんだろう。10 種類の型をシームレスに扱うようになってるんで、それぞれの機能の分岐が果てしないんですが。頭痛くなってきた。

こーゆーのって JUnit とか使うと楽になったりするんだろうか。って言うか JUnit ってどういうもんか全然わかってないんですが。

% [OCaml] otags is a tool for building "TAGS" files for emacs and vi.

Debian sid/sarge にこんなパッケージが。ありがたい、使わせてもらおう。…と言いつつ、このところ Java ばっかりで OCaml を触る暇が無いんだが……

% [雑談] プログラミング言語「日本語」

かなり笑える。『古いシングルタスクのシステムでは、「どうも」を何度も繰り返すことによってタイミングを制御することもあったが…』とか(笑


2004-10-12 あなどれねえぜ [長年日記]

% [雑談] スピーカだってマイクになるんです

やっちまったよぅ。いやね、Windows マシンの中身をちょっくらいじったんですよ。ついでにこの前のコンデンサ爆発を踏まえて煤払いも一緒に…って感じで。つっても、実際は HDD を一台追加しただけなんだけど、ケーブルの長さの関係とかでドライブ類を全部外して配置し直しするという大工事。

まあ、その作業は無事終えましてね、目立った問題も無く動き始めたわけです。その後二日くらいたってから気付いたんだが、なんか知らんが音が鳴ってない。あれ〜?と思っていろいろ調べると……スピーカを LINE 入力に繋いでた ... orz

「あっちゃ〜、間違えるならせめて MIC 入力に繋げよな〜」とか思いつつ、繋ぎ直す。システム音を鳴らしてみるとちゃんと鳴ってる風だったんで、「ふぃ〜」とか額の汗を拭いつつ、その件は終了……のつもりだった……が。

その後、適当に iTunes とか使ってたわけだが、ある日突然気付いた。…なんか音痴だ!!

えぇっ!? いつから?……たぶんだんだんと症状が悪化してきたんじゃないかと思うが、気付いたときにはもう音が歪みまくってめちゃくちゃ。やっぱ、LINE 入力に繋いじゃってたのはまずかったかぁ(泣

結局、死亡中のマシンに放置されてたサウンドカードをサルベージして復旧……したのは良いんだが、なぜか音痴なのが直らない。なんですと〜!?と冷汗をかきつつ、Mac を立ち上げて (正常なはずの) 音楽を流してみる……音痴だぁ(死

どうやら、何日も微妙におかしくなった音楽を聴き続けていたせいで耳がおかしくなっていたようだ。だって、ゲームボーイアドバンスから聴こえる音楽ですら変に聴こえるんだもの。

でも、一晩寝たら治りました。って言うか、治ってくれなかったら怖すぎる(苦笑)。ともかく、みなさん、LINE 入力端子にスピーカ繋いじゃいけませんぜ。

% [Java] セルフツッコミ

なんだそうかぁ。この前書いた JRE の変更が有効なのはプロジェクト側だけなんだねぇ。Eclipse 自体が使う JavaVM は JAVA_HOME 環境変数で決まるらしい。

まあ、考えてみればそんなもんか。でも Windows だと JAVA_HOME が (ぱっと見) 設定されてないから、あそこで設定するんだとばっかり思ってたよ。ちなみに Windows では JAVA_HOME はレジストリに自動的に設定されてますね。やってみたこと無いけど、環境変数に設定すれば、この設定って上書きできるのかな。


2004-10-13 発作的嗜好 [長年日記]

% [雑談] はまりそう

LOTTE のクールショックっていう…なんて言うか…ペラペラの飴(?)。

たまにこーゆーミント系のものに無駄にはまることがあるんだよな、わし。前もフリスクにはまって「お前はフリスク臭い」と罵しられたことも(笑

なんか、とっとと溶けるんで舌が痛くならないわりに、すーすーする感じが長く続くのがイイ。フリスクは舌が痛くなるから止めたんだよな。

……でも、この手のものって、煙草以上に食い物の味がわかんなくなるから、ほどほどにしないと(苦笑

% [Java] 仕事の合い間を見ながら JUnit の勉強

JUnit に限らず、UnitTestFramework ってのは、要するに今まではその都度書いていたテストドライバを定型化してしまって、そうすることでテストの実行なんかも自動化してしまう…ってなもんなのかな。

まあ、さすがに期待してたような『テストケースの自動生成』なんてのはやってくれないみたいだが (つーか、そんなもん期待すんなよな) 便利なことは便利っぽい。特に Eclipse を使ってれば、テスト用コードの雛型を自動生成してくれるんで、あとはチェック項目ごとに淡々とコーディングしていけば良いみたい。

ただ、ブラックボックステストなら良いんだが、ホワイトボックステストをしたい場合に、テスト対象の private メンバや、テストクラスを別パッケージにした場合の protected メンバやなんかに、すんなり触れないのがちと面倒。そもそもユニットテストって、どっちかと言うとホワイトボックスなものなんじゃないの?こういう場合は reflection を使ってアクセスするのが常套手段のようだが、それならそれで、その辺も簡略化してくれる仕組みがあると良いのになあ。…それともあるのかしら?

まあ、どっちみち reflection は覚えなきゃと思ってたから、勉強しつつやりますがねぇ。ただ、いちいち reflection でやるのはいかにも面倒な気はする。いちいち遠回りなコードになるし。楽をするなら、テストクラスもテスト対象と同じパッケージに入れちゃって、private なメンバには問答無用で (protected な) getter を用意するってのも一つの手かなあ。


2004-10-14 ツッコミ入れたい [長年日記]

% [OCaml] このページへのツッコミ

ツッコミ入れたいんだけど、そういう作りじゃないし、メールアドレスも書いてないみたいなんで、ここでぼそっとつぶやいておきます。

ここで彼が『List.exists は、述語 p と l1,l2, ..., ln に対して (p l1) || (p l2) || ... || (p ln) なわけですが』と思っているのは、おそらく下記のコード (OCaml のソースコードより)

(* ocaml-3.08.1/stdlib/list.ml +119 *)
let rec exists p = function
    [] -> false
  | a::l -> p a || exists p l

% なんだけど、これって実際は彼の言うような動きはしないよね。要するに、

  | a::l -> p a || exists p l
            ^^^^^^^^^^^^^^^^^

% …の部分は、まず p a (p は bool 値を返す関数) が評価されて、『false なら』次の exists p l という再帰呼出しが評価される。p a が true だったら、そもそも || 以降は評価されないで p a の結果 (要は true) を返して終わり。

結局は、彼が示している if を使ったものと同じことをしてるわけです。ただ、こっちはほぼ間違いなく末尾再帰だけど、if を使った方はもしかしたら末尾再帰にならないんじゃ?という気がしないでもない。(いや、たぶんこっちも末尾再帰だとは思うけど。だって同じことだし)

C とかやってる人なら、こういう動作って別に自然だと思うんだけど、そうじゃない人には変に見えるのかもね。ちなみに、この動作を確かめてみたいなら、トップレベル (ocaml コマンド) で、

# true || (print_endline("hoge"); false);;
- : bool = true
# false || (print_endline("hoge"); false);;
hoge
- : bool = false

% こんな風にやってみると、わかりますかな。最初が true の場合は "hoge" が出力されません。つまりは || 以降が評価されてないってこと。

% [雑談][WideStudio] 宣伝

やっと発売日が決まりました。ほんと頼むから買ってください。

執筆者には今月末くらいに届くらしいので、とりあえずわしは枕にしてみます(爆)。たぶんページ数から言って、ちょうど良いんじゃないかと予想してるんだが(笑)。いや、下手すると枕にするには高すぎるかも?

% [PC] 省ちゃんのその後

結局 OpenBSD を消して Debian/sarge をインストール。ファイルシステムは ReiserFS です。微妙に Kondara の呪い(笑)。いや、別にわしは Kondara な人じゃなかったんだけど。ext2 なんて腐った FS は使いたくないし、ext3 は結局中の人は ext2 だから信用できないし、xfs はよくわかんないし……てな消去法で。

JDK と Eclipse はバイナリ配布されてるものを /usr/local に展開するだけにしましたよ。まあ、十分でしょ。ssh の X fowarding で FreeBSD@LOOX から動かしてます。LOOX でローカルに動かすのより快適(苦笑

まあ、Eclipse をいじるなら、基本的には Windows マシンでやるんだけどね。

% [雑談] 最近…

気付いてる人は気付いてると思うけど、tdiary を 2.0 にアップグレードしたときから、フッタにアクセスカウンタを表示してます。プラグインが付属されてたんで、なんとなくね。

んで、最初の頃 (9 月頃) はだいたい一日につき 10 くらいだったんだよね。しかもその内の最低一つはわし自身なわけで。

ところが、最近ずんずん増えてきて 20 くらいは行くようになってしまって、ちょっとプレッシャー(苦笑)。でもまあ結局いつもどおりのことしか書いてない気がしますが(笑


2004-10-15 最近めっきり寒くなりましたなあ… [長年日記]

% [OCaml] 昨日のネタへのセルフツッコミ

おお、こりゃいかん。あの例じゃイマイチ証明になってないよなあ。証明ではないけど、とりあえず、この辺の Boolean operators ってとこを見てもらうと、昨日言いたかったことがわかってもらえるかと。

最初の式が true なら、次の式は評価されないってはっきり書いてますね。んで、『expr1 || expr2』は『if expr1 then true else expr2』のように動くと。

% [PC] CDR 関係が泣ける状況

あーもー、なんだっつーのかねえ。省ちゃんに入れた Debian で cdrtools を使おうとすると、いろいろ変な挙動が……

どういうわけか、kernel2.4 だと cdrecord で CD を焼こうとすると、最初にちょっとだけ書き込んで止まってしまう (書き込みランプが消える) んで、なんじゃこりゃーと叫びつつ kernel2.6 を入れたわけですよ。そしたら書き込みはできるようになってめでたしめでたし……って今度は cdda2wav がおかしいっての!!

なんか真っ当じゃない wav データができてしまって聴けません。当然 CD に焼いても腐ってる状態。んで、kernel を 2.4 に変えるとちゃんと lip できる。……なめとんのか。

一瞬ドライブが壊れてるのかと思ったが、よく考えれば OpenBSD 入れてたときは快適に使えていたしなあ。まあ、とりあえず曲の取り込みなら別に他のマシンでもできるから、焼き機能を重視して kernel は 2.6 で行こう。なんか納得はいかないけど、詳しく調べる元気が無い(疲

% [PC] 小型円盤偏執症

まったく、なんちゅー名前だろうね(苦笑)。と言うわけで、省ちゃんの CDR の件は kernel2.6 でも cdda2wav じゃなく cdparanoia を使えば大丈夫だと判明したのでめでたしめでたし。ちなみに cdparanoia は黙って使うとゲンミツなエラーチェックのせいでやたら時間かかるけど、-Z オプションを付けてやれば cdda2wav と同じように動いてくれます。cdda2wav できれいに読み取れてるドライブならエラーチェック無しでもまあ大丈夫でしょうよ。

それにしても結局なんなんだろ…cdda2wav が腐ってるのか?

% [雑談] 安かろう悪かろう…って時代じゃないと思うが

サービスの質の低下が取りざたされる Amazon.co.jp だが、この前のはかなり微妙だったなあ。なんせ、発送通知にはペリカン便で送ったと書いてあるのに、佐川から荷物が届いたからな(苦笑

これ、ちゃんと届いたから笑い話で済むけど、届かなくて問い合わせするとなった場合にどうなってただろうな。そもそもあのメールに書いてあった伝票番号は通用するのか。

あーやって書いてる以上、届かない場合はまず日通に連絡するわな。でも、向こうにしてみれば寝耳に水だろう。結局、わしが佐川に連絡を取るまでには、さぞ無駄で不毛でしかも頭に来るやり取りがあるに違いない。もしそうなってたら、さすがに寛容なわしをしても、Amazon.co.jp の利用停止を考えてたと思うなあ。


2004-10-16 ATF を交換してすっきり [長年日記]

% [雑談][PC] トラックポイントじゃないと生きていけない人

と言うわけで、この前買ったキーボードのトラックポイントがツルツルで困るので、替えのキャップを探してたんだが見付からなくて、結局こんなのを買ってしまいましたよ。白いキーボードに赤いポッチって、なんか変。お弁当?

でも、10 個入りはさすがに多すぎると思うなあ。まあ、一応 LOOX にも使えるみたいだし (さらに似合わないんだが) もしかしたらもう一台くらいトラックポイント付きキーボードが増えるってことも、有り得ないとは言えないんで良しとしよう。


2004-10-17 あー寝不足だ [長年日記]

% [PC] XP に説得力を感じたこの頃

WindowsXP のことじゃなくて、eXtreme Programing のことね。つっても、よくわかってないんだけど、要するに JUnit みたいなユニットテストフレームワークを使って、常に細かくテストとデバッグをしながら、ボトムアップで作ってくような手法のことなんでしょ……って思ってます。……合ってる?

ま、まあ、合ってなくても良いんだが、そういう手法での開発もなかなか良いもんだなと。と言うか、一般的なオブジェクト指向言語と、この手法って相性が良いみたいな気がするね。

んで、このところ JUnit を使ってテストしまくってわけだが、テスト対象とテストコードの両方を並行してデバッグ (テストコードもプログラムである以上、バグがあるわけで) していくと、すごくいい感じで進められるんだよね。どういうテストするか考えてるうちに、ロジックの不備に気付いたりとか。ユニットテストってクセになるって言うけど、なんかわかる気がする。なんか楽しいんだよな(笑


2004-10-18 3 時間寝れば、スッキリ……みたいな人が羨ましい [長年日記]

% [Java] interface を実装したメソッドのアクセス制限は変えられない?

…んですかね?いや、こんなのを書こうとして eclipse に文句言われたんで…

public class IntList extends ArrayList {
   protected Object set(int index, Object elem) {
      return super.set(index, elem);
   }
   public int set(int index, int value) {
      Objcet o = super.set(index, new Integer(value));
      return ((Integer)o).intValue();
   }
   public int get(int index) {
      Object o = super.get(index);
      return ((Integer)o).intValue();
   }
}

% これ自体は即興だけど、まあこういうような感じでスーパークラスから継承したメソッド (最初の set ね) を protected で塗りつぶして云々…てのを考えたんだが、アクセス制限変えられませんと言われたわけ。

でも、あれ?そういうのもアリだと思ったけど…と思って調べると、もともとこの set メソッドは List インターフェイスを AbstractList で実装してるものなんだよね。うーん……

結局、ArrayList を継承するのは止めて、ArrayList をフィールドに持ってそいつに丸投げするように書き換えましたが。ああ、Generics 使いたいね。

ああ、でも Generics が使えても上のようにプリミティブ型を要素にするのは無理なのかな?あ、AutoBoxing を併用すれば一応大丈夫か。


2004-10-19 今日はなんだかあったかい [長年日記]

% [雑談] ああ、不安だなあ…

だいじょぶなのかなあ、ほんと。……などと自分にしかわからない現状への不安な心境を吐露してみる。うー……せめて、これ一本に打ち込めるならまだしも、生活のためには金も稼がねばならんし……あーうーデスマーチの呼び声が聴こえる……ううぅ……


2004-10-20 誰かほんとに、3時間寝たらスッキリてな感じの薬とか開発してください [長年日記]

% [本日のリンク元] google 検索 (ccApp 暴走)

おいおい、まだそのネタが続いてるんですかい?って言うか、もしかして 2005 になっても同じ問題が出てるとか?

ちなみにわしはノートン先生には見切りをつけて、フリーのアンチウィルスソフトを使うことにしましたよ。これ。非商用、家庭での使用、に限り無償ってことなんで、学校とか職場では使えないみたいですが、わりといけてます。たぶんフリーなやつでは唯一常駐保護をしてくれるものじゃないかと思う。やっぱ、なんでもクリックしてしまう初心者に使わせるなら常駐保護は必要だよね(苦笑


2004-10-21 厄日か? [長年日記]

% [雑談] これから取り返すできごとが無いかぎり、今日は最悪な日になりそうな…

寝坊した。便器が朱に染まった。カーステレオが壊れていた。・・・勘弁してくれ(泣

% [雑談][WideStudio] 実はわしも初めて表紙を見たんだったりして(苦笑

そうか…WideStudio のイメージカラーは何となく青って思ってたんで、表紙も青がベースになると思い込んでたんだけど、どうやら T-Engine の方のイメージカラーに合わせたらしいね。なかなかかっこよく仕上がったなあ。

% [本日のリンク元] google 検索 (java main 関数呼び出し とほほ)

・・・いったい何を調べようとしているのやら(笑


2004-10-22 値段相応ってことだよなー [長年日記]

% [雑談] カーステが壊れたので

通勤時間がさみしくてかなわん…ってことで、とりあえずドンキホーテで安っちいポータブル CD プレイヤーを買ってきた。半月後に 12 ヶ月点検があるんで、本格的な対処はその時にっていうつもりなんで…まあ、それまでの場しのぎ。

しかし、安いだけあって、そのままだと『CD を聴いてるとは思えない』音質の悪さ。なんじゃこりゃ!!…と某探偵風に叫びつつ、まずはヘッドホンを手持ちのに替える。音質、劇的に向上(苦笑)。別に特別すばらしいヘッドホンってわけじゃなくて、携帯電話に付いてきた (わしの機種には MP3 プレイヤーが付いてるので) ものなんだけどなあ。CD の音を擦り切れかかったテープ並みの音に変えるヘッドホンなんて、今どきどこで作ってるっていうのか。そこら辺で適当に部品集めて作っただけで、これの 10 倍はマシなものができそうな気がするが、わざと品質落として、ヘッドホンを別個に買わせようって魂胆ですか?(と思っちゃうくらいの、ダメな品質ってこってす)

まあ、たかだか四千円程度のプレイヤーに、いちいち文句付けるなって話もあるんだが(苦笑)。ただ、もう少し工夫の余地がありそうなんで、しばらくいろいろやってみよう。

% [雑談][PC] 逃避行動とでも言うのか

嫌いな…とまで行かなくても、特別好きでもない言語でプログラムを書いていると、どうしても好きな (と言うか、興味のある) 言語で何か書きたいという欲求が出てきてしまう。

以前 VB.NET で書いてたときには、Ruby が書きたくてしょうがなかった。今は Java で書いているが、OCaml で何か書きたくてしかたがない。ちなみに Ruby はもう、新しい発見がたくさんで楽しい…という時期は過ぎて (と言っても極めたわけじゃないけどね) 何げなく使う日常の道具として馴染みつつあるんで、特別書きたくてしかたがなくなったりはしない。

はあ……OCaml のページのネタもいくつかあるんだけどなぁ。OCaml 書きてえ……

% [Java][Eclipse] 長期に渡る運用?

Eclipse の日本語版プログラマーズ・ガイドを読んでいて思う。『長期に渡る運用』って何だ?

不思議に思って中身を見てみると IProgressMonitor の説明なんかがされている。なるほど、『時間のかかる操作』のことだな(苦笑

念のため原文を見てみると、『Long-running operations』となっていた。コンピュータ技術者なら、この『operations』を『運用』などとは訳さないよなあ。どっかに翻訳を委託してるのか?

% [Eclipse] 実行メソッド

翻訳を外注するのは良いが、もう少しコンピュータ関係に造旨の深い人間がいるところにできないものかね。メソッド名まで訳すなよ(苦笑

% [雑談] こんなこと書いたばっかりなのに

悲しいとき〜、悲しいとき〜、配線のチェックをしたらあっさり直ったとき〜、配線のチェックをしたらあっさり直ったとき〜 ... orz

最初はヒューズを疑ってたんだけど、結局そっちは無事。んで、せっかく無茶な態勢で足元覗いてるんだから、配線も念のためチェックしとこうと思って、ちょちょっと緩みを直してみたら・・・ねえ。

昼間は時間無かったかし、夜は暗くて見えないから…と思ってやらなかったんだが、うちに帰れば懐中電灯があるんだって今日になって思い付いたんだよな。昨日のうちに気付いてれば、無駄な金使わなくて済んだのに(苦笑


2004-10-23 まったりとお勉強 [長年日記]

% [本日のリンク元] google 検索 (1bitを取り出す)

なんだろ、これ。ビット演算ができる言語なら、調べたいビットだけ on にした値と and を取るだけですが……ってそんな単純な話じゃないですか?

ちなみに、Java にはビット列を保持する java.util.BitSet ってクラスがあるね。これを使うと、BitSet 型のインスタンス同士でビット演算ができて、特定のビットの中身が知りたいときは、get メソッドで取り出せる。

イマイチ、何のために存在するのかわかんないけど (普通は整数値でビット演算すりゃいい話だし) コレクションクラスに保持させたいときには、どうしてもオブジェクト型にする必要があるんで、まあそのためのものなのかね。要するに Number のサブクラス群のような。

% [雑談] 前にこんなこと書いたことがあるが…

ドエライことになってますな…新潟方面。北海道南西沖地震のときに震度5の地域にいたわしとしては、他人事に思えないです。

本震と同じ規模のものを余震と呼ぶのはどうなのよ…とか思ってしまうな。一時間の間に震度6が三回だなんて、とんでもない話だ。せめてもの救いは震源が内陸だったことだね。津波も併発してたら、もっともっとひどいことになってただろう。

被災した方々には、謹んでお悔やみ、及び、お見舞申し上げます。


2004-10-24 初雪のニュースとかは、あっさり流されてます [長年日記]

% [雑談][WideStudio] 執筆者献本が届いた

いやぁ、感慨深いです。最初の話だと夏くらいには…って感じだったんで、相当延びてるわけですが、その分喜びもひとしおかと。

巻末のリファレンスマニュアルがなかなかイイ感じに仕上ってるので、WideStudio をいじってる人にはお薦めです。

一応、自分の書いた部分のページ数を調べてみたが、リファレンス部分を除いた約 500 ページのうち、170 ページほどをわしが書いてます。やっぱ三分の一だ(苦笑

いろいろやったなあ。OpenOffice.org Draw で図の類いもたくさん書いたし、果てはアイコンのドット絵まで書いたからなあ(笑)。まさか小学生くらいの頃の経験が生かされるとわ。でも、一生懸命 GIMP で書いたあとで、KDE にいい感じのアイコンエディタがあるのに気付いてぐったりしたもんだ(笑

と言うわけで、何度も何度も宣伝してうるさいだろうけども、WideStudio 徹底ガイドブックは 11/2 発売です。今までの WideStudio 本よりも良い出来だと思いますよ(ひいき目入ってるなあ)。その分ちょっとお高いですが(苦笑


2004-10-25 偽善だろうが善は善、感謝の度合いに違いは無かろう [長年日記]

% [PC] テキスト指向の思考

他人の作った Word や Excel の書類を見ると鬱になる。なぜ、こうも皆『レイアウトとソースが分離されていない』文書を作るのかと。それじゃあ、紙に手書きするのと変わらないじゃないか。

ここで言う『レイアウトとソースの分離』というのは、先にテキストファイルを書いて、それを使ってレイアウトしろ…とかって極端なことじゃなく (と言いつつ、わしはよくやるが) 、もう少しレイアウトの変更などに柔軟に対応できるように作れないものかと、そういうことである。レイアウトをある程度見ながら、テキストの編集ができる…ってのが、ワープロがここまで普及した要因だと思うしね。

おそらくは一太郎を祖とする、現在のワードプロセッサーの作り (と言っても要するに Word や、その互換を目指すもののことだが) は、個人的には間違っていると思うのだ。

まず、テキスト部分在りき、というのが良くない。つまり現在のワープロは第一の要素として文章があり、その上に図などを追加する形になっているが、これがそもそも間違っている。ワープロというのが『レイアウト機能が付いたタイプライター』であるならば、文章部分と図版部分は同一のレベルでなくてはいけない。より具体的に言えば、テキスト部分は最初からイメージ部分と同じようにブロック化されているべきだ。

ちなみにブロック化というのは、RE のように矩形編集をサポートしろ…ってことではなくて (これはこれで便利だけどね。vim でも Ctrl-V で似たようなことが…って Windows だとペースト機能に乗っとられて使えんな) フローティングフレームに入れとけと、そういうことです。んで、いわゆる改ページに相当するものとして、新規フレームに移って入力する機能とかを付ける。当然、フレーム単位で切り貼りや、結合、分割などができるのが望ましい。

というようなワープロが普及してくれれば、他人の作った文書を編集させられるときの苦痛も、いくらか軽減するんじゃないかな〜などと思ったりするんだけど……ま、夢物語だな(苦笑

% [PC] レイアウト指向の思考

その気になれば、現在のツールで十分にレイアウトのことを考えた文書が作れます。実際、わしは 10 年近く前から、そういう指向で文書を作っている。そういう考え方になったのは、ClarisWorks (現 AppleWorks) を使ってたことが大きいと思うが。

例えば、OpenOffice.org はわりと良いですよ。ClarisWorks でもよくやったんだが、ベースを Draw で作るのだ。そして、テキストや図は、それぞれフレームとして配置していく。レイアウト重視の場合はこれが一番きれいにできる。

あと、箇条書きなんかの場合、最近はアウトライナーが装備されてる場合が多いけど、そういうのが無かった ClarisWorks では、よく表を利用してたね。表計算じゃなくて『表』ね。表と言うとどうしても『枠線があるもの』という先入観があるのか、これを教えると大抵驚かれるんだが、要するに枠線を非表示にした表をレイアウト枠として利用するわけだね。自動の箇条書き機能だと柔軟性に欠ける…ってときは、今でも役に立つテクニックです。

% [PC] RE for Windows の思い出

一時期 (六年くらい前かなぁ) 入れ込んでたエディタです。vi のようなのを行指向エディタと呼ぶならば、これは『面』指向エディタとでも言うものですな。

編集用のバッファとして矩形の領域が用意されているので、他のエディタではちょっとありえない『新規ファイルの 30 行目の 40 桁目から書き始める』なんてことが普通にできちゃいます。アスキーアートを描くのに便利だったりするんだけど、どのプラットフォームでも同じツールが使いたいというわしの志向にとって、Windows 版しか手に入らないというのは致命的でして、結局 vim に地位を奪われました。元は UN*X のエディタらしいけど、継ぐ者がいないのか、なんでもありそうな FreeBSD の Ports にもありませんね。

ともあれ、他にこんなエディタは見たことが無いので、未経験の人はぜひ触ってみてくださいな。結構ショック受けますんで(笑

% [雑談] 致命的なほどのトイレの長さ

便器の長さが 30m ある…とかいう話ではなく (あたりまえ)、コトをイタすのが長いってことね。あらかじめことわっておくが、以下の話はとても下品です。お食事中の方はご注意を。

そもそもわしは小さい方からして長い。構えてから出るまでに時間がかかり、キレも悪い・・・年寄りじみてるなあ。前立腺かどっかが悪いのかしら?とか思ったりするが、小さいころからこうだから、どうしようもない。一応、指摘された場合には、『尿道が長いから時間がかかるのでぃす』とのたまうことにしている(笑

で、本題のでっかい方。基本的に常に便通不順である。そんな言葉あるのか知らないが。三日くらいまったくもよおさないこともあれば、一日に三度も四度もってときもある。毎朝一回?そんな夢物語みたいな状況は、もう二十年は覚えが無いな。いや、マジで。

そのせいもあってか、なんというかこう……大層キレがよろしくない。端的に言うと、ねっぱる (これ方言か?)。要するに、拭いても拭いても付いてくる。ウォシュレット?そんなもんで綺麗になるなら苦労しない。結果、わしは大量に紙を消費する。それはもう、ヘンな疑いをかけられるほどに(苦笑

だからわしは便所ってもんが大変嫌いである。と言うか憎んですらいる。何日か溜まっているときなどは、一生懸命拭いてるうちに第二弾、第三弾が来るのだ。30 分も便所に籠もることを強要される人間の気持ちがわかるか?しかも、戦いを終えてぐったりしながら便所を出ると、家族から文句を言われるわけだ、長いだの紙使いすぎだの。好きでそうしてるわけじゃねえ!! しまいにゃキレるぞ。

・・・まあ、違うところはすでにキレてるわけだが(爆

% [Java][本日のリンク元] google 検索 (JNIEnv 取得)

…なんてのがあったんで、覚え書きがてらサンプルコードでも。

...
#include <jni.h>
.
void jni_test(void) {
   JavaVM *jvm[] = {NULL};
   JNIEnv *env = NULL;
   const char *CLASS_NAME = "java/lang/System";
   const char *FIELD_NAME = "out";
   const char *FIELD_SIGNATURE = "Ljava/io/PrintStream;";
   const char *METHOD_NAME = "println";
   const char *METHOD_SIGNATURE = "(Ljava/lang/String;)V";
   const unsigned char VM_NUM = 1; // number of JVM.
   const char *HELLO_WORLD = "Hello World!!";
.
   jint result;
   jobject obj;
   jclass cls;
   jfieldID fid;
   jmethodID mid;
   jstring message;
   jvalue args[1];
.
#ifdef NEW_JVM    // C++ 側から JVM を起こす場合
   JavaVMInitArgs vm_args;
   vm_args.version = JNI_VERSION_1_1;
   result = JNI_GetDefaultJavaVMInitArgs((void *)&vm_args);
   if (result != JNI_OK) return;
   result = JNI_CreateJavaVM(jvm, (void **)&env, (void *)&vm_args);
#else    // すでに JVM が起動済みの場合
   jsize num = 0;
   result = JNI_GetCreatedJavaVMs(jvm, VM_NUM, &num);
   if (result != JNI_OK || num != VM_NUM) return;
   result = jvm[0]->AttachCurrentThread((void **)&env, NULL);
   // もしくは
   // result = jvm[0]->GetEnv((void **)&env, JNI_VERSION_1_1);
#endif
   if (result != JNI_OK) return;
   // こっからエラー処理を省略
   cls = env->FindClass(CLASS_NAME);
   fid = env->GetStaticFieldID(cls, FIELD_NAME, FIELD_SIGNATURE);
   obj = env->GetStaticObjectField(cls, fid);
   mid = env->GetMethodID(cls, METHOD_NAME, METHOD_SIGNATURE);
.
   message = env->NewStringUTF(HELLO_WORLD);
   args[0] = message;
   env->CallVoidMethod(obj, mid, args);
}

% 動作確認はしてません。あしからず。空行の部分に変なドットが入ってるのは、tdiary 対策なんで無視してちょうだい。それと、これは C++ での例です。C の場合にはも少しややこしくなりますね。あとは jni.h とこの辺でも見ながらがんばってくださいな。

実際のところ、いわゆる native method を実装する場合には、JNIEnv を取得することなんて考えなくてかまいません。つまり、Java 側から C/C++ に触る場合にはってことだけど、その辺は JavaVM の仕事だから。

この例のように JNIEnv を取得する必要があるのは、C/C++ から Java を触りたい場合。要するに Java からの呼び出しとは関係なく JavaVM にアクセスする必要がある場合。Java から C/C++ のライブラリを読み込むんじゃなく、JavaVM を起こすところから C/C++ でやりたいっていうなら、${JAVA_HOME}/jre/lib/${march}/ 辺りのライブラリをリンクしなきゃならないような気がする。やったことないからわかんないけど。


2004-10-26 めっきり寒くなって、暖房が入りだしたら、逆に暑い [長年日記]

% [Java] 昨日の話のフォロー

もしかしたら、あの文字列 (jstring) は後処理しないとメモリリークかしらん?と思ったりした。それとも関数を抜けた時点で Java 側の参照カウントも減って (故に GC 対象になって) くれるんだろうか。

うーん、リファレンスとかヘッダを見ただけじゃ判断が付かないなあ。 ReleaseStringUTFChars は GetStringUTFChars で取得したポインタの生存期間に関するもので、 NewStringUTF とは関係無いように見える。わからん……

% [PC] WindowMaker 0.90.0

ずーーーっと 0.80.2 のままだった WindowMaker がバージョンアップした。したのは良いんだが、困ったことに世間の流れには逆らえないのか Xft を使うようになっちゃってて、個人的にはノーサンキューな感じ。知らないで最初起動したら、マルチバイト文字がみんな豆腐になっててビビったぞ。

なぜか wmchlocale (今となってはコマンド名うろ覚えだが) が無くなってて、フォントの設定はどうしたら良いんだ…と途方に暮れたが、設定ファイルをバックアップして、wmaker.inst で新規にセットアップし、それを見ながら元のファイルを直す…って方法でなんとか Sazanami Gothic を使うように設定完了。要町とか東雲が使えないのは辛いなあ。

で、豆腐が無くなったので晴れて WPrefs (環境設定) を立ち上げてどこが変わったか…か、変わった?フォントの設定ができるようになってるじゃねえか ... orz

わしの貴重な二時間を返せ(泣

% [PC] FreeBSD 5.3-RELEASE

まだアナウンスは出てないけど、CVS に RELENG_5_3_0 のタグが打たれたみたいだから、リリースされたと思ってもいいでしょう。

わしは今、RELENG_5_3 で cvsup して絶賛 buildworld 中。んで、明日 buildkernel して、あさってインストールかなぁ。大きなバージョンアップは mergemaster がめんどい。あせってやると破滅するし(笑)、のんびりやりましょうや。


2004-10-27 振り積もる雪 [長年日記]

% [まんが] 今月のおお振り

みなさんお待ちかねの、おお振りのコーナーです。・・・いや、待ってないから。

いやぁ、熱い展開になってきたねえ。現実なら勝つなんてまずありえないけど、エンターテイメントとしてはオッケーだ。むしろ初戦はあっさり勝っちゃうくらいでも良い。そうなれば、その後の『研究された状態での苦労』が楽しみだし (いじわるだなあ)。

% [雑談] spam も巧妙になっている

最近 spam が増えたなあ。いや、厳密には @Nifty のフィルタ (たぶん構文解析系) ではじけないのが増えた…ってことなんだが。いくら学習させても、すぐにすり抜けてくる。spam のうちの半分程度はじければ御の字って感じなんで、あんまり役に立ってるとも思えないんだが、全部 procmail でフィルタするよりは良いかな、ぐらいで使ってる。

ちなみにわしは、@Nifty のフィルタに引っかかったものは spam 印を付けて受信し、それをキーにして無条件で Junk フォルダへ、それ以外をさらに procmail で適当に設定したキーで別の Junk フォルダへ、てな感じでやってます。以前は @Nifty の spam 印 Junk の方が多かったんだが、最近は procmail ではじいたものの方が多いです。

最近は、英語のメールで『オレオレ詐欺』みたいなのが来てましたな。まあ Subject しか見てないんだけど、いかにもそんな感じでしたよ。「あんたの家族が借金で困ってるから助けてあげて」とか、そんな感じだったと思うが。他にもいろいろバリエーションあったけど、html メールな時点で中身読む気にならないんで、すぐ消しちゃった。


2004-10-28 ああ…変なプレッシャーが [長年日記]

% [雑談] 皆勤賞

実は数日前に気付いたんだが、今月に入ってから一日も休まずに日記を付けていた。よくそんな書くことあったなあ。

……えー、「日記ってのは毎日付けるもんだろ」っていうツッコミは黙殺させていただきます(爆)。まあ、基本的に WEB 日記なんてのは不毛なもんだと思うんだが、それでも『意味の無い』不毛よりは『意味の在る』不毛でありたいわけで、書くことが無いのに無理矢理捻り出して書くようなことは避けたいのですわい。

と言いつつ、今日のコレは『意味の無い不毛』ではないのか?と問われると……う(汗

% [Java] Windows なんてキライだい(泣

自分用のメモ。『dllwrap --add-stdcall-alias』

ここ数日、前に作った JNI ライブラリが、Windows でうまく動いてくれない問題に立ち向かい中。そもそも dll が作れない…っていう状況は何とか脱して、今は JVM が dll を読み込んではいるが、C++ 関数の呼び出しに失敗する (たぶん) …という状況になってる。

dll は Mingw32 で作ってるので、おそらく VC++ で作られてる JavaVM が関数を見つけられないんだろう…と予想した。んで、おそらく上のオプションが解決手段ではないかと思うんだが……今は試せないので、あとで。

% [Java] さっきの続き

ビンゴ〜大正解。あー良かった、これだけやってうまくいかないと「FreeBSD や Linux でうまくいったのはたまたまで、実は根本的に何か間違ってるんじゃないか?」っていうイヤな考えも浮かびつつあったんで、いや、うまくいってほんとに良かった。

ってことで、Mingw32 で JNI の DLL を作る時は 『--add-stdcall-alias』オプションを付けないと動かないぞ。キヲツケロ。

% [Java][雑談] プログラマは暗記が苦手

…ほんとかどうかは知らんけど。少なくとも『自称』プログラマであるわしは苦手だ。だからプログラムを書く時には、いわゆるリファレンスマニュアルの類いは必須なわけです。

んで、オンラインマニュアルも良いんだけど、余計なものに画面を占拠されるのはイヤだし、本として手元にあってくれた方が個人的には好みなんですわ。本なら寝っころがっても読めるしね。

そういうわけで、今は Java でごにょごにょな状態なんで、思い切ってオライリーの『Java クイックリファレンス第4版』を買ってきた。実は第3版は持ってたりするんだけど、やっぱり 1.4 で追加されたクラスの説明が無いのがちょっと辛いんで。

しかし、見た目の大きさ (厚みも) はほとんど同じなのに、4,500 円だった第3版に比べて、第4版は 6,800 円と、なんと 2,300 円もお高い。なんでじゃ〜!!とか思うものの、中身をよく見てみれば、なるほど行間が詰まっててページ当りの情報量アップな上に、紙質を変えて薄くすることで実際には 300 ページほど増えているという状態。実質内容は 1.5 倍です…って感じ。ならまあ、値段相応か。どっちにしろ高いもんは高いんだがな(苦笑


2004-10-29 共有ライブラリ地獄 [長年日記]

% [PC] FreeBSD 5.2.1R to 5.3R

LOOX の OS をアップグレードした。FreeBSD にしてはめずらしく、結構ハマりポイントがあったんでメモ。

・カーネルモジュールが読み込めなくていろんなところが死
  ACPI やら IPFW やら、さまざまなものが動かず、ちょっと焦った。
  /usr/src/UPDATING の 20040806 のとこを読みましょう。
・wmlongrun が動かない
  厳密には longrun の状態を取得できなくて、000MHz と表示される。
  確かどこかで情報は得てたはずなんだけど忘れてた。
  longrun のサポートが スイッチで制御できるようになって、
  その結果 GENERIC カーネルから longrun 機能が消えてたのが原因。
  カーネルコンフィグに options CPU_ENABLE_LONGRUN を加えて
  カーネルを再構築して解決。
・端末系のアプリがおかしい
  libreadline のバージョンが上がったせいなのかも知れないが、
  とにかくおかしい。ビルドしなおせば良いものもあれば、そうでないものも
  あるみたいでどうしたもんか…って感じ

% そんなわけで、わりと微妙なアップグレードになりましたよ。まともな環境に戻るにはしばらくかかりそうです(疲

vim6 がおかしいのが一番困ってる。ビルドし直しても直らない。仕方なく日記は nvi-m17n で書いている状況。消してなくて良かった。

% [まんが] GUNSLINGER GIRL 4巻

ラシェルの話が激泣ける。作者も気に入ってるのか、二ページほど追加アリ。

% [PC] vim が直らん

どうもマルチバイト文字の記号 (『、』とか『・』とか) を入力すると表示が化けるようだ。依存する port はたぶん全部ビルドし直したはずなんだが、それでも直りません。参った。

まあ、マルチバイト文字を使わなければ問題は無いようなので、一番必要とするプログラミング時に関しては何とかなりそうだけど……やれやれだ。


2004-10-30 欝だ…… [長年日記]

% [PC] 散々なアップグレード

今までで一番ぐったりするアップグレードになっちゃいましたなあ。vim はやっぱり直らないままだし、代用にしてる nvi-m17n も、w3m で使うとたまに SEGV したりしてチョット……

イヤになるよ、もう。

% [PC] 激しく後悔中

vim ショックも醒めやらぬ中、別マシンの Eclipse を ssh 経由で動かしてたのまで調子が悪いのが判明して究極欝。

どうしてこう、必要なモノばっかり不具合が起きるのか。あんまりだよ。

頭に来たから、/lib とか /usr/lib とか /usr/include とかの日付が古いファイルはガンガン消して、その後怒りの portupgrade -fa だ。それでもダメだったら……どうしよう。泣ける。


2004-10-31 あー・・・ダル [長年日記]

% [PC] 怒りの portupgrade -fa

終わらねえぞ、こんちくしょう(泣)。そりゃなー、インストールしてる port って 300 以上あるし仕方ないっちゃ仕方ないが・・・それにしても、いろんな意味で鬱だ。


トップ 最新 追記

日記ってのは本来、自分で読み返すためにあるもんだよなあ……
もしくは有名人になったら死後に本になったりとかか?

RSS はこちら

jijixi at azito.com