Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

2006-01-01から1年間の記事一覧

plaggerブームに乗らなかった理由

Quartz Composer*1で死ぬほど感動した後だったので、それをCUIで見せられても感動がほとんどなかったってのが一番の理由かも。逆に言えば、これくらい画期的なGUIが付いてくれると、plaggerにべた惚れになると思います*2。 *1:OS X Tiger以降を持ってる人は…

S2Containerで遊ぼうとしました

Seasar2(S2.4.0-rc-1)を拾って来て、遊ぼうと思ったんですが。めんどくさいからEmacsでpackage指定なしのサンプルコードをちょちょちょいっと書いたんですが、FileSystemComponentAutoRegisterはカレントディレクトリ以下のクラスを検索するって荒業には対応…

レパード

【WWDC 2006 Vol.4】Mac OS Xの未来を体験! 写真で見るLeopardより。Leopardはあまり気にかけてなかったんですが、Spacesがとてもよさそうです。やってることはVirutueなんでしょうけど、エクスポゼっぽく見れたりウインドウを移動出来たりするのは魅力的。…

デーモンスレッド

スレッドをデーモンスレッドにすると、他のスレッド(ユーザスレッド)が全て終了すると勝手に終了する便利なスレッドになるらしいです。知らんかった。で、 Thread th = new Thread(); th.start(); th.setDaemon(true);としたんですがNG。setDaemon()はstart(…

swingはシングルスレッドモデルらしい

タイトルの通りなのです。swingのリソースにイベントループ以外から触る場合には、SwingUtilities.invokeLater(Runnable run)を使って処理を割り込ませます。後でソース見てみようかな。Cocoaも似たような設計だった気がします。

スレッドとメモリリーク

こちらのページ。Tigerではなおってるそうですが、こういうこともあったんですねえ。。

InterruptedException

こちらの記事を読んでInterruptedExceptionの意味を納得。これは"割り込みが発生したことを知らせてる"ってよりは、"速やかに処理をキャンセルしてreturnして欲しい"ってことを指示してる例外なのですね。で、InterruptedExceptionをもらったメソッドだけが…

string.intern()

もう一つポジペネタです。string.intern()メソッドは、同じ文字列表現に対して一意のオブジェクトを返してくれます。こいつはnativeメソッドです。例えば、htmlの解析で"BR"と言う文字列を何百個も保持する可能性がある場合にはintern()しておくとインスタン…

Stringのコンストラクタ

Java EE勉強会のポジペのネタです。 import java.util.*; class Main{ // 1MBのサイズのStringを作る static String makeHugeString(){ StringBuilder buf = new StringBuilder(); for(int i = 0 ; i < 1000000; i++){ buf.append(i % 10); } return buf.toS…

階層問い合わせ

Oracleのconnect by句の解説です。初めて知った。。。ループに対しては無防備なので、注意が必要です。ループしてると一時表領域を食いつぶします。

jconsole

JDK5.0からのツールですが、jconsoleが便利です。JVMのヒープの使用量などをチェック出来るGUIツールです。 java -cp . -Dcom.sun.management.jmxremote 〜とJVMを起動するとjconsoleからアクセス出来るようになります。別のターミナルからjconsoleと打ってG…

eclipseのコンパイラ(2)

昨日の追記に書いたJDTコンパイラの起動方法ですが、plugins/org.eclipse.jdt.core_3.2.0.v_671.jar に入ってるクラスを起動したら、見事にコンパイラとして動きました♪ゝ(▽`*ゝ)(ノ*´▽)ノ♪ ・・・でも、javacと同じくローカルのExtensionsディレクトリのja…

eclipseのコンパイラ

こちらを拝見する限り、eclipseのコンパイラはjavacじゃなくて内部に持ってるってこと? そうなると、この前の疑問の答えはここにありそうですね。

java.lang.Runtime

Runtime#traceMethodCalls と Runtime#traceInstructions に true を渡して見たんだけど、何もロギングしてくれる気配なし。ググってみると、こんな投稿がありました。 As far as I know that method works in the Sun JVMs if the code has be compiled wit…

今実行中の行番号が欲しい

Throwableのソースを眺めていて、もしかしてprintStackTrace使わなくても実行中の行番号とか得られるのでは!?と思いついたんだが、すでに定石として紹介されてました。これはJDK 1.4で加わったStackTraceElementクラスのおかげでできる技です。JDK 5.0では…

ArrayListとperlの配列の違い 最終夜

perlっぽいListを作ったわけですが、3つほど考えておくべき点があります。 『AbstractListを使ったこと』 AbstractListで楽チン実装してしまいましたが、パフォーマンス的にはあまりよくないかもしれません。PerlLikeListの全てのメソッドはPerlLikeListのge…

RandomAccessインタフェース

JREのソースをうろついていたら、見たことないインタフェースを発見。hyukiさんもクイズに出されていますが、 java.util.Collections.reverse() 辺りを見るとなんのためのインタフェースかがよくわかります。配列とかはget(int)でアクセスした方が早く、双方…

なんでだろう?

Eclipse3.2リリースです。IntelMacでもパッチ当てずに動いて、幸せです。で、全然関係ないことで悩んでるんですが、Macなjava + Eclipseの環境で、 /Library/Java/Extensions/*.jar はEclipseから見えるのに、~/Library/Java/Extensions/*.jar は見えないの…

ArrayListとperlの配列の違い 三夜目

Listインタフェースの実装はめんどかったので辞めます。Eclipseの"Generate Delegate Method"コマンドを使う手もありますが、その後の修正を考えるとやっぱりめんどい。で、代わりにAbstractListを使ってみます。こいつは、オレみたいなめんどくさがり屋のた…

ArrayListとperlの配列の違い 二夜目

では、どうやって実現すればいいか考えてみます。主な操作自体はArrayListにすでに実装されているので、現在例外となっている範囲を超えた値に対する振る舞いだけ追加するのが簡単そうです。ってことで、真っ先に浮かぶのがArrayListを継承。が、せっかくCol…

Generic型と継承

List<String> a1; ArrayList<Object> a2; ArrayList a3;こんな感じでListに関する変数が三つ定義されてるとします。さて、以下でコンパイルエラーになるのはどれ? // 初期化 a1 = new ArrayList<String>(); a2 = new ArrayList<String>(); a3 = new ArrayList<String>(); // メソッド呼び出し a1.add</string></string></string></object></string>…

ArrayListとperlの配列の違い

perlの配列は使いやすいです。以下のコードはなんの疑問もなく直感通りに動きます。 my @data = (1, 2, 3); print $data[4], "\n"; # 範囲を超えて参照してもよい print scalar(@data), "\n"; # 範囲を超えて参照しても大きさはそのまま print $data[-2], "\…

踏み絵

Tigerと言えば、OS X 10.4のことですか? それとも、Java 5.0のことですか?

もう一つの"ArrayList"

可変長引数の例を調べるのにJava SEのコードを漁っていたんですが、java.util.Arraysで以下のようなメソッドに出会いました。 public static <T> List<T> asList(T... a) { return new ArrayList<T>(a); }ところが、java.util.ArrayListのコンストラクタは、Collectio</t></t></t>…

可変長の引数

Java 5.0は引数の可変長もサポートしました。 void hogehoge(Object... o); hogehoge(o1, o2, o3); hogehoge(o1, o2, o3, o4, o5);これは糖衣構文で、以下のように配列とみなされます。 void hogehoge(Object[] o); hogehoge(new Object[] {o1, o2, o3}); ho…

L.L.Ring

チケットゲットしました。最後まで戦い抜く所存です。

import static

すっかり見逃していたのですが、import staticなんて機能が追加されてるみたいです。perlで言うExporterの機能です。import static java.lang.Thread.sleep; って書いてやれば、Thread.sleep(16) って書いていた部分を、sleep(16)と書けるようになります。st…

アノテーションとは?

アノテーションについて調べると宣言してから大分経ちますが、やっと調べました。アノテーションはコードに注釈を付ける機能で、コメントとかjavadocと同等の位置づけです。ただ、その注釈がプログラムから読める書式となってるのがポイントっぽいです。例え…

OS Xのsrc.jarはいずこ?

タイトルの通りなんですが、見つからなくて困ってたわけです。そしたら、ありました。ADC Member SiteのDownloadsのJavaのコーナー*1から、J2SE 5.0 Release 4 Developer Documentationを落としました。この中のJ2SE50Release4Documentation.pkgを実行すると…

WTPのtomcatで共通ライブラリが使えない

WTPでtomcatを実行すると、 javaに-Dcatalina.base="workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0" なんてものを渡してくれます。すると、shared/lib の在処もこれに引きずられてしまうわけです。必要であれば /usr/local/tomcat/shared …