路傍のプログラマ

只のプログラマが綴る愚痴と備忘録

@Signed

2008-07-09 21:58:14 | プログラミング
記事「JSR-305: ソフトウェア欠陥検出用アノテーション 」
http://www.infoq.com/jp/news/2008/07/jsr-305-update
によると、

メソッドの引数や戻り値がnullである可能性があるとか、nullになってはならないことを明示するためのアノテーションが導入されるそうです。

@Nonnullとか@NullFeasibleとか。

整数型の符号を示すための@Nonnegative、@Signedとかも。

うーん。アノテーションで型システムの一部を実装するみたいな感じかなあ。

下位互換性(バイトコードレベルの互換性)のために無理してるんじゃなかろうか。

C++だと、テンプレートと型システムが協力して(絡み合って?)強力なツールになってたんだけど、

Javaには、ジェネリクスとアノテーションを組み合わせて使う方法は皆無に近かったような。せいぜいコンパイラの警告を抑制するくらい。違ってたかなあ。

Javaはどこを目指してるんだろう。

(追記 2008/07/10)
記事「コラム Java API、使ってますか? JSR 305: Annotations for Software Defect Detection」
http://journal.mycom.co.jp/column/jsr/016/index.html
にもJSR 305の話がありました。

この記事でも、想定されている用途は(当然ながら?)静的なエラー検出。

Javaではジェネリクスもアノテーションも、エラーチェックに用いるというのが流れなのでしょうか。

プログラマとしてはわくわくしないなあ。

32bitのVistaとは違うのだよ

2008-07-09 15:08:47 | プログラミング
メモリを4GB積んだ記念に、Vista 64bitをインストールしてみました。

インストールしてびびったこと。

JDKをインストールして、

・コマンドラインからjavaとたたくとエラーが出る。

C:¥Users¥hoge>java
'java' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

で、java.exeを探そうとして、

・forの機能拡張の$PATHを使おうとすると機能しない。

32bit版より、いろいろ制限が厳しくなってるらしい雰囲気が濃厚。

インストールが終わってまだ数時間ですが、先行き心配になってきました。

(追記)

・とあるVista 64bitネイティブで対応しているアーカイバで、ファイルをc:¥に展開しようとするエラー。

複数あるディレクトリうち、1つだけうまく展開され、残りはエラーが出て展開できず。原因は不明だけど、自分が開発する分には気をつけよう。

(さらに追記)

・VirtualBoxは64bit用を。USBメモリはホストから認識されなかった。

VirtualBoxの32bitのものは、インストーラーで拒否されます。

ホストOSとしてUbuntu 32bitを実行してみると、USBデバイスが認識されませんでした。共有フォルダは機能してるので、これで代用します。

(追記 2008/07/10)

・Process Explorerが怪しい動作をする。

Process ExplorerはSysinternal製の(今はMSに買収されたから、MS謹製といっても差し支えない)ソフトで、プログラムが利用するメモリの最大値を調べたりするのに使っています。

このソフト、64 bit環境でも使えるのですが、こいつのexeを実行すると、64 bit版のexeをその場で作って実行します。

・・・セキュリティにうるさい昨今、こういう動作はそのうち禁止されそうな。

OS XのUIをカスタマイズ

2008-07-04 09:54:54 | その他
Finderが(Windowsのエクスプローラーみたく)フルパスを表示してくれればなあ。
Dockは2Dのやつの方が使いやすかったなあ。

そんな私にぴったりの記事がありました。

記事「The Seven Most Important Leopard Interface Tweaks」
http://news.softpedia.com/news/The-9-Most-Important-Leopard-Interface-Tweaks-88856.shtml
には、

OS Xのユーザーインターフェイスをカスタマイズする7通りの方法を紹介していました。

こういうのをみると、OS XもWindows並にこなれてきたんだなあ、と思います。

メモ: PyInstaller 1.3をUbuntu 8.04にインストール

2008-07-03 20:44:03 | プログラミング
UbuntuではPyInstallerをapt-getでインストールできなくて、ちょっと面倒だったのでメモ。

PyInstallerのサイト
http://pyinstaller.python-hosting.com/
から、PyInstaller 1.3をダウンロード、展開。

後は、ドキュメントに従って、

(1) 展開したディレクトリの/source/linuxで、
python Make.py -e

(2) 正常に終わったようなら、
make
ここで、もしzipがどうのこうのとエラーが出たら、apt-get libzip-devしてから、もう一度make。

(3) 展開したディレクトリに(2つ上のディレクトリに)移動して、
python Configure.py

これでインストールは終了。

使い方は、Windowsの時と同じく、
Makespec.py hoge.py
Build.py hoge.spec

以下蛇足。

Windows上で作ったスクリプトを持って行って試したのでわかったこと。

PyInstallerのUnix版はソースコードの改行がCR LRだとエラーが出てしまう。

なので、いったんEclipseで読み込んで、ファイルメニューの「Convert Line Delimiters To」。

・・・なんてつぎはぎな。もっといいやり方あるかもしれない。

強くなったガニメデ

2008-07-02 13:39:36 | プログラミング
Eclipse Ganymede、ちょこっと触ってみました。

既存のプロジェクトを読み込ませてみてびっくり。

Europaでは問題なかったのですが、Ganymedeでは、
if (s == null && s.length() == 0) {
となっている部分がエラーだと指摘されました。

そういわれれば、本来「s == null || ・・・」とすべきところ。

やるなあ。

すぐにでも移行したい。