String.intern メソッドふたたび

Effective Java p.5 項目1 コンストラクタの代りに static ファクトリーメソッドの提供を検討する

static ファクトリーメソッドの長所3つと短所2つが書いてある。
その中の2つめの長所

コンストラクタと異なり、メソッドが呼び出されるごとに新たなオブジェクトを生成する必要がないことです。

不変なクラスに2つの同じインスタンスが存在しないことを保証することが可能になります。つまり a == b の場合だけ a.equals(b) が成り立ちます。もし、クラスがこのことを保証すれば、そのクラスのクライアントは、equals(Object) の代りに == 演算子を使用することができます。その結果、かなりパフォーマンスを向上させることになるでしょう。

この最適化を実装しているのがタイプセーフ enum であり、限定された形式で実装しているのが String.intern メソッド。

マインスイーパ必勝法

エリック・レイモンドの「ジャーゴンファイル」というマインスイーパ攻略本には xyzzy という呪文が載っています。
が、日本語訳注として「訳者が試してみた限り、残念ながらこの裏技は確認できなかった」とある。
しかし、これはマインスイーパの秘密を知られたくない訳者の陰謀に違いない。
呪文を唱える事で魔法が使えるのです。

XPSecrets
Digg.com経由で上記 URI を知ったのですが、どうやら皆知ってる事だった様だ…。


xyzzy

アサーションに失敗しました

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 設定
にある

今後の勉強予定

1.Java をもっと
2.C 言語の復習
3.Ruby
4.Lisp


1.これは当然ですね。というかこのブログは「実践J2EEシステムデザイン」を読むのを中心にやる予定だったんですが…。
2.id:dugout さんが「やれ」と五月蝿いので頑張ります。
3.Ruby といえばマイナー言語…だったのが何時の間にかマーテイン・ファウラーまでも!でも Ruby やるんだったら Python も…。その前に Perl をもう一度…。
4.Lisp のどれをやるべきか…。Scheme かな…。


さて、どういう風に勉強しようか?
よし!Java にします。JavaハノイJava の無名クラス!

文系の為の OO 入門 - 用語について

オブジェクト指向はそれまでの手続き型からの「パラダイムシフト」が必要だとよく言われる。
パラダイム」これはかつてトーマス・クーンが提唱した概念だが、後にクーン自身がその概念を撤回している。
…等と得意気に吹聴してはいけません。
ああ、発想の転換が必要なのか、と厳密に考えない様にする事が肝要です。

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と定められている。

BOM (Byte Order Mark) @IT

エンディアン

バイトオーダーは、バイナリのデータファイルを読み書きするときや、ネットワークなどを通じて通信する場合に問題となる。バイトオーダーの異なるマシンでデータを読み書きすると、データの上位バイトと下位バイトの関係が入れ替わり、まったく異なった数値になるからだ。

バイトオーダー (byte order) @IT

なるほど。ガリヴァー旅行記から…。勉強になりました。