String.intern メソッドふたたび
Effective Java p.5 項目1 コンストラクタの代りに static ファクトリーメソッドの提供を検討する
static ファクトリーメソッドの長所3つと短所2つが書いてある。
その中の2つめの長所
コンストラクタと異なり、メソッドが呼び出されるごとに新たなオブジェクトを生成する必要がないことです。
不変なクラスに2つの同じインスタンスが存在しないことを保証することが可能になります。つまり a == b の場合だけ a.equals(b) が成り立ちます。もし、クラスがこのことを保証すれば、そのクラスのクライアントは、equals(Object) の代りに == 演算子を使用することができます。その結果、かなりパフォーマンスを向上させることになるでしょう。
この最適化を実装しているのがタイプセーフ enum であり、限定された形式で実装しているのが String.intern メソッド。
アサーションに失敗しました
Windows Adobe Photoshop 7.x で 「Web 用に保存」を実行時に出るエラー。
解決策
1.Photoshop.exe (またはショートカット)を右クリック「別のユーザーとして実行する」を選択して Admin 権限の別アカウントで起動
2.Photoshop problem - assertion failed?
Using "Regedit" find the following key and delete it
"HKEY_CURRENT_USER\Software\Adobe\Save For Web 3.0"
レジストリ エディタで上記キーを削除
1の方法は毎回上記方法で起動する必要がある。
ちなみに設定ファイルはC:\Documents and Settings\<ユーザー名>\Application Data\Adobe\Photoshop\7.0\Adobe Photoshop 7.0 設定
にある
UTF-8 と BOM
Flash の ActionScriptEditor はしょぼいので皆さん適当なテキストエディタでカリカリ書いてる事と思いますが、BOM 付き UTF-8 でないと何かと問題が起こります。(MX2004 の場合。8は不明)
ところで BOM って何?
Unicode関連のエンコード方式ですが、UTF-16等とは容易に区別がつくのですが、UTF-8とUTF-8Nは少し厄介です。unicodeのストリームのビッグエンディアンかリトルエンディアンを表示するために、Byte Order Markというのが決まっています。
UTF-8NとUTF-8とBOM Windows 2000上でのUTF-8のページの作り方
BOMは、必ずテキストの先頭に付加される。テキストの中間に置かれることはない。BOMの値は、U+ffefと定められている。
…エンディアン?
バイトオーダーは、バイナリのデータファイルを読み書きするときや、ネットワークなどを通じて通信する場合に問題となる。バイトオーダーの異なるマシンでデータを読み書きすると、データの上位バイトと下位バイトの関係が入れ替わり、まったく異なった数値になるからだ。
なるほど。ガリヴァー旅行記から…。勉強になりました。