Hatena::Groupsubtech

生きている乳酸菌 このページをアンテナに追加 RSSフィード

2008-03-28

katapult 19:14  katapult - 生きている乳酸菌 を含むブックマーク はてなブックマーク -  katapult - 生きている乳酸菌  katapult - 生きている乳酸菌 のブックマークコメント


どうも、肉と炭水化物とコーラで生活しつつ33年目の健康的な誕生日を迎えそうなヨシオリです。

みなさん元気にしてますか?

無駄に健康に気をつかって逆に精神的に苦痛になっていませんか?

はした金で贅沢かどうか悩んだりしてませんか?

心配で夜も眠れないのでモンハンしてます。


で、

最近、Mac でやっと QuickSilver が使えるようになってきますた。

今までターミナルから起動してたのにこれで僕も一人前のマカーです。

そうなると仕事のメインマシンもあわせたくなるので

Ubuntu にも QuickSilver っぽいのを入れてみました。


Katapult

http://katapult.kde.org/

KDE のランチャですが GNOMEUbuntu でも

普通に使えます!!

yoshiori@yoshiori-ubuntu $ sudo aptitude install katapult

Screenshot

すごく「っぽい」ですね!!

でも、apt 以外で入れたアプリケーションをどうやって登録するのか

わかりません

2008-03-25

さっそくサブテクの洗礼を受けました。 18:18  さっそくサブテクの洗礼を受けました。 - 生きている乳酸菌 を含むブックマーク はてなブックマーク -  さっそくサブテクの洗礼を受けました。 - 生きている乳酸菌  さっそくサブテクの洗礼を受けました。 - 生きている乳酸菌 のブックマークコメント

勃起集団

2008-03-24

[] serialVersionUID に思うこと 03:31  serialVersionUID に思うこと - 生きている乳酸菌 を含むブックマーク はてなブックマーク -  serialVersionUID に思うこと - 生きている乳酸菌  serialVersionUID に思うこと - 生きている乳酸菌 のブックマークコメント

Serializable な class には必要で、明示的に書かないと

勝手に付加されるんだけど、

具体的にどう変わるのか Eclipse に付けさせると

public class Test implements Serializable{
	
	private static final long serialVersionUID = -1448955393835693558L;

	public void hoge(){}
}

public class Test implements Serializable{
	
	private static final long serialVersionUID = 4474455390528181028L;

	public String hoge(){
		return null;
	}
}

メソッドの戻り値が変っても変る(当たり前)


public class Test implements Serializable{

	private static final long serialVersionUID = -1448955393835693558L;

	public void hoge(){}
	
	private void foo(){}
}

private なメソッド追加しても変らない。


public class Test implements Serializable{

	private static final long serialVersionUID = -7412852881129554812L;

	String foo;
	
	public void hoge(){}
}

修飾子無しのフィールド追加しても変る。


この辺まではOK


で、

ドキュメントみると

直列化可能クラスが明示的に serialVersionUID を宣言しない場合、直列化ランタイムは、『Java(TM) Object Serialization Specification』に記述されているように、さまざまな局面に基づいて、そのクラスのデフォルトの serialVersionUID 値を計算します。しかし、デフォルトの serialVersionUID の計算は、クラスの詳細情報に大きく左右され、このクラスの詳細情報はさらに、コンパイラの実装状況に依存しているので、直列化復元時に予期しない InvalidClassException が発生する可能性があります。このような問題を防ぐためにも、すべての直列化可能クラスが serialVersionUID 値を明示的に宣言するように設定することを強くお勧めします。Java コンパイラ実装が異なっていても、常に一定の serialVersionUID 値を得るには、直列化可能クラスが明示的な serialVersionUID 値を宣言する必要があります。また、この宣言では、できるかぎり private 修飾子を使用することをお勧めします。なぜなら、この宣言は直近の宣言クラスにしか適用されず、serialVersionUID フィールドは継承メンバとして使用できないからです。

Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle

って書いてあるので、

今迄、ちゃんとつけてた。

だって

すべての直列化可能クラスが serialVersionUID 値を明示的に宣言するように設定することを強くお勧めします。

強くお勧めされちゃってるから……


何がいいたいかというと

この前、飲み会で JBoss の中の人こと nekop に

「ほんとうにクラスの詳細情報が違ってコンパイラも違うときに直列化ができなきゃいけないのか? serialVersionUID を書くって事はそう宣言していることになる」

って言われて、なるほどなと思った。


とりあえず

しばらくは

@SuppressWarnings("serial")

で、すごしてみる。


でも結局

やっぱり何となくしっくりしないなぁ