USBメモリが壊れた。
というか初期不良だったっぽい。トランセンドのUSB 4GB。
なんか変な気はしていた。1週間くらい使った後だったか、ルートにFOUND.000が出来ていた。その時は何かの間違い(<どんな間違いだよ)程度にしか思っていなかった。
その後、入れておいたファイルのファイル名がグチャグチャに文字化け。アクセスしようとしてもエラーでアクセスできず。フォーマットし直して、チェックディスク。問題無し。
入れておいたzipファイルが、"corrupted"でエラー。展開できず。
いよいよ、これはおかしいと思い。200MBのファイルをコピーして、コンペア。問題なし。そのまま数日放置してから、アクセス。壊れてる...
まさか、こんなバックアップ電池の壊れたSRAMみたいなデータの壊れかたをするなんて、予想していなかったから、発見が遅れた。まぁ、これじゃ出荷時の検査も通ってしまうだろうな。
レシートを見たら、3/10購入。お店に電話したら半年間は代理店の保証があるとのこと。ぎりぎりだった。てっきり新品交換かと思ったら修理扱い。1-2週間かかるとのことなんで、その間不便だし。今度はGreen Houseのを買ってみた。って、直って帰ってきたら、2つになって無駄じゃん。しかしちょっとイヤな予感もする。
- 問答無用で交換対応。
- 「現象確認できませんでした」で、そのまま返される。
- サービスセンタから電話で事情聴取。
(2) だったら今後トランセンド製品は買わないだろう。さて、どうなることやら。しかしホント最近、やたらとモノが壊れまくるな。
P.S. 結局(1)だった。木曜日に持っていって次の週の月曜日には交換品到着。
スパ三日月龍宮城
残り、フルに休めるのは、今日だけだったので木更津の方に出掛けてみた。
初めてのアクアライン。

はるか遠くに石油コンビナートが見える。

結構急な登り下り。

なぞの風の塔。通気口らしい。うちでは、タウンポータルと呼ばれている(笑)。

アクアラインって、思ったより短かいんだねぇ。なんか時間的には、お台場に行くのと大して変わらない感覚。高速料金が全然違うけど。スパ三日月龍宮城は、温泉ありプールありの宿泊施設。日帰りなら2.5k円ほどで、温泉もプールも入れるので、子供連れにはいいんじゃないだろうか。Yahooのクーポン持ってけば500円引きになる。で、帰りは、さっさと引き上げて羽田で食事。

Life Hacker
そういえば、この本も、以前、献本いただいていて、読む時間がなくて、そのまま忘れていた。
備忘録は、似たようなシステムを自分の家でも動かしている。JSPとJavaMailを使って、備忘録が更新されると内容がケータイのメールでも飛ぶようにしてある。ケータイだと、Web見るのメンドイし。
この本は「ライフハッカー」だけど「ライフハック」だと、他にも何冊か出ている模様。ちょっとした、はやりなんだろうか。
Visual C# 2005によるWebプログラミング入門
こちらはartonさんの本。
しかしサーバ系の部署に移ってから、AIXかホストばかりで、Windowsでのプログラミングを全くしなくなってしまったなぁ。.Netが出たばかりくらいの頃から、知識が更新されていない...
Windowsプログラミングの極意
献本いただきました。ありがとうございます。
「歴史から学ぶ実践的Windowsプログラミング」とか「Windowsのなぜ?が、今明かされる」という副題から、プログラミングの話かと思ったら「シャットダウンを実行するのに[スタート]ボタンをクリックするのはなぜか」とか始まっていたりして、これは面白そう。
テンペスト
ベートーベン ピアノソナタ 第17番 「テンペスト」 (Beethoven Piano Sonata No 17 Tempest)
不思議な雰囲気と緊張感を持った曲。これも昔、発表会でやった記憶が。音がやたら飛ぶので気が抜けない。
ハブ故障
前回の無線LAN故障に引き続き、なんだかネットワークが遅い。最初はプロバイダが遅いんだろうかと思っていた。でもLAN内のファイル転送も遅い。で、クライアント間でも遅い。というわけでハブ交換してみることにした。コジマに行って8ポートみたら、8k円もする! ってギガビット対応品だった。まだ、家の環境だと恩恵無いけど、買ったら長いし。ギガビット対応品に交換してみた。予想通り、ネットワークの問題はバブ交換で直った。このところネットワーク製品が良く壊れるなぁ。そういえばAX300のHDDも壊れたんだっけ。一通り壊れた感じだ。
Ubuntu VMWare上のWindows
なぜかアンダースコア(_)が入力できないことに、今日気が付いた。他の記号は大丈夫だ。なぜだろう。とりあえずALT押しながら95で入力できるから、困らないけど(この入力方法使ったの久しぶりだ)。
squat on Ubuntu Linux
VMWareでWindowsを立ち上げ、squatを導入、ロカールを英語モードにしてみる。あれ、リソースバンドルを用意してやれば、ちゃんと動くな。ということは、どうやら文字コードとかじゃないかもしれないな。
ログがvarの下にあったので見てみると、エラーが記録されていた。
org.seasar.framework.exception.ResourceNotFoundRuntimeException: [ESSR0055]Resource(drill/prepare/Products.xls) not found
で、言われた通りdata/drill/prepareの下を見てみると。あぁなるほど。大文字と小文字が違いますな。だからWindowsでは動くわけか。というわけで、この下のファイルを以下のように大文字、小文字正しく変更してやれば、動くようになった。
BelongTo.xls Categories.xls CustomerClasses.xls Customers.xls Departments.xls Employees.xls Prefecturals.xls Products.xls Salary.xls Sales.xls
まとめると、
- classesというディレクトリを作って、squat.jarをその下に展開。
- jp/towersquest/squat/gettext/gettext_ja.propertiesをgettext.propertiesにコピー。
- 以下の内容のstartup.shを用意
export LANG=C java -cp data:classes jp.towersquest.squat.Main
- data/drill/prepareの下のファイルを以下の通りにリネーム
BelongTo.xls Categories.xls CustomerClasses.xls Customers.xls Departments.xls Employees.xls Prefecturals.xls Products.xls Salary.xls Sales.xls
で、ok。起動は./startup.sh(あ、当然chmod +x startup.shが必要)。なかなか楽しめました。もう元を取った気分(<だから違)
SQL書き方ドリル
というわけで夏休みの宿題で、ずっと前に買っておいたSQL書き方ドリルを読み始める。SQUATはJavaみたいなんでUbuntuでも動くかなと。
java -cp data:squat.jar jp.towersquest.squat.Main
例によってsetLookAndFeel()でぬるぽ。英語環境に切り替え。
export LANG=C
なにやらリソースバンドルが無いとのエラー。
Caused by: java.util.MissingResourceException: Can't find bundle for base name jp.towersquest.squat.gettext.gettext, locale en_US
Jarを展開して、jp/towersquest/squat/gettext/gettext_ja.propertiesをgettext.propertiesにもコピーしてやる。
おぉ、立ち上がった。しかし最初の問題でつまずく。いや、そんなはずは。正解の結果と、自分の入力での結果を比べると、全く同じ。あ、そうか。多分結果が別ファイルになっていて、それを読み込む時にデフォルトエンコーディングになっていて、Shift_JISが仮定されているんだろう。ということは正解ファイルをUTF-8にしてやれば行けるかも。結果ファイルはdata/drill/expectedにあった。しかしExcel...
いやでも、正解の読み込みでエンコーディングがおかしいなら、squat上の正解結果表示が文字化けしていないのは変だな。結果との比較ロジックで何か問題が起きているんだろうか。そろそろソースがないと、つらくなってきた。なかなか手強い宿題だ(<違)
Ubuntu + Javaでキー入力できなくなる件。
再現できずでクローズされてしまった。こうなるとLinux日本語環境での、デスクトップJavaは絶望的な状況だな。
P.S. その後IMをuimに変更したとろこ問題なくなった。やはりSCIMの問題のようだ。
40D実写画像
Impressに掲載されたけど、β機だからなんだろうか。ISO200でさえ、空にあり得ない量のノイズが乗ってる。やっぱりAPS-Cサイズで1000万画素以上は無理があるんだろうか。ちょっと様子見だな。Nikonも出たから5D後継機が安く出るかもしれないし。
Windowsで、現在ディレクトリを、環境変数に設定。
正直、最初は無理かなと思ったんだけど、以下の方法でできた。環境変数CWDに、現在ディレクトリが設定される。
cd >_tmp for /f %%i in (_tmp) do set CWD=%%i del _tmp
Eclipseチューニング
marsさんとこに、IDEA7をVMパラーエタでチューニングする方法が載っていたので、試しにEclipseにも指定してみた。うん。なんだかEclipseにも効いているようで、キビキビ動くようになった気がするね。まだ使い始めだから、気のせいかもしれないけど。
で、普段より、ちょっと使い込んだりしてみたり。あのタブの部分をダブルクリックして最大化する技、あれは家の30inchだと、全く使う必要が無いんだけど、フツーのノートPCでは頻繁に使うわけで。で、いちいちマウスでというのは、はなはだ効率が悪い。調べてみたらEmacsバインディングだとC-x 1にアサインされていた。なるほど。というか笑ってしまった。元のサイズに戻すのも、なぜかC-x 1だ。まぁ、元に戻すなんて考えがEmacs側には無いしな。
なんで自分がIDE嫌いか、原因が1つ分かったような気がする。基本的にフルスクリーン使用なんだよね。自分の場合。さすがに30inchを使う時はオーバーラップさせて使うけど、フツーのサイズの画面だとウィンドウを最大化して、紙芝居的に重ねて、ALT-TABで切り替えて使用するのだ。だから、あのIDEの細切れ画面がイヤなんだろうと思う。各機能画面を最大化した状態で、ショートカットーキで高速に切り替えられたら、意外と使うかもしれないな。Next View(C-F7)で切り替えて使えばいいのか、いやだめだ。なぜかプロジェクトエクスプローラでは、上下がC-N, Pでできない。中途半端なんだよなEclipseのEmacsバインディング。
援軍あり
以前書いた、Struts2の例外処理の問題、MLに投げてみたんだけど「Viewから例外投げるな」とか「そういうもの」。とか言われて、あきらめかけていたり。アプリケーション例外じゃないんだから、別に例外を投げたくて投げてるわけじゃないんだけどね、システム例外とか、プログラムバグが原因の例外だってあるでしょって。それを飲み込んで無かったことにしちゃうのって、あり得ないじゃん。でも分かってくれないのよ。
でもようやく、同じ問題で困っているという人が一人、加わってくれた。最悪、オープンソースだから自分で直してカストマイズバージョン作ればいいんで、クローズドソース製品のサポートの時のように、トンチンカンなこと言われてうんざりするのに比べれば、はるかに楽ではあるわけだけど。
40D
多分買うな。
ちょっと驚いたのが、ワイヤレストランスミッタWFT-E3。サーバモードを持っていてhttpで画像を取り出せるらしい。前、ユーザアンケートで、こういうのが欲しいって書いたんだよね。製品開発されたってことは、自分以外にも結構欲しいって人、いるんだな。しかしちょっと高過ぎ。定価6万実売4万切るくらいで、お願いしますよ。
ベートーベンのアンダンテを入力
この曲は、もともとはワルトシュタインソナタの第二楽章として、作曲されたもの。しかし全体が長大になり過ぎるとの批判を友人から受けて、お蔵入りとなったらしい。ちょっと聴いた限りは、かわいらしい曲だけど、特に後半部はオクターブが多用されており、技巧的には非常にやっかいな曲。
Struts2例外処理
どうもうまくいかないケースがあるなと思ったら、OGNL => アクションのゲッタに来た時に、ぬるぽとか投げると、OgnlValueStackの中のfindValue(String, Class)で飲み込まれてしまうことが分かった。
} catch (Exception e) {
logLookupFailure(expr, e);
return findInContext(expr);
} finally {
ここで飲まれちゃうと、exception handlerに渡らないから、例外処理ハンドラが起動しないし、open session in viewパターンを使いたい時に上位側で例外を監視してcommit/rollbackなんかしていると、例外が来ないもんだから、間違ってcommitしちゃって、えらいことになる。まぁ良くあるExceptionのcatchバグパターンだから、RuntimeExceptionのcatch節を追加してみたのだけど、
} catch (RuntimeException e) {
logLookupFailure(expr, e);
throw e;
} catch (Exception e) {
logLookupFailure(expr, e);
return findInContext(expr);
} finally {
まぁ確かに、これで上位層に例外が渡るようになって、うまくいくんだけど、どうもリザルトが二度実行されることになるのが、まずいようで、ブラウザにStream closedというメッセージと共にスタックトレースが表示される。ぬるぽなのに「Stream closed」じゃ、わけ分からんよなぁ。一応Struts2のMLに投げてみた。
映画の影響で、物理法則を誤解する。
スラドから。いや映画を信じちゃダメだろう。といいつつ、自分にも経験が。
たしかダイハードだったと思うんだけど、主人公が最後に、敵が乗ったジェット機に穴をあけ、そこから燃料を滴らせ、離陸したところでライターで火をつけて、誘爆してドカンってのがあって、あれを見てジェット燃料ってやつは、きっとエチルエーテルみたいに、ものすごく沸点が低い、引火性の高い物質なんだろうと勘違いしていたことがある。実際は灯油と同程度の燃料だから、あんな芸当は不可能なんだけどね。
そういえばダイハード(Die Hard)といえば、最初は「派手に死ぬ」という意味だと思っていたなぁ。実際は「なかなか死なない」=>「しぶといやつ」という意味で、全然違うわけだけど。
「接続中」
リナザウは、通信カードで接続が完了すると「接続中」と表示される。で、良く「まだか、まだか」といらいらしてしまう。いいかげん覚えろって感じなんだけど、やっぱ変だよね。「接続中」だと接続相手とネゴシエーション中みたいじゃないか。「接続済」とか「オンライン中」とかにして欲しいな。
SoftReferenceでキャッシュ
SoftReferenceでキャッシュって、どう実装するのがベストなんだろう。あまり考える時間が無かったんで、HashMapのバリューをSoftReferenceにして、折りを見てReferenceQueue.poll()を呼んで、GCされたのを、HashMapから落とすようにしたんだけど、これだとMap.Entryとか、キーは、結構長いこと残り続けるよね。
WeakHashMapを見ると、EntryをWeakReferenceにしている。なるほど。これならGCでEntryが落ちるからキーもいっしょに参照が切れる。折りをみてpoll()でという戦略は、いっしょだった。
GCされるとSoftReference.clear()が呼ばれるみたいなので、それをトリガに、HashMapから落とすこともできるなと思ったけど、そんな余計な仕事をGCのスレッドにやらせたら、ただでさえ長いStop the worldの時間が余計にかかってしまうから、やっぱりpoll()するのが正解なんだろうな。
今週で解放か。
先々週からトラブルプロジェクトのヘルプ。今週いっぱいで解放になりそう。でも、あと1歩速くしたいらしい。うむむ。幸い参照系だし、久しぶりにWeakReferenceでキャッシュを組むか...
歯医者に行ってきた。
詰め物が取れたんで、歯医者に行って来た。これまでは会社の1Fの歯医者に行っていたんだけど、最近全く会社に行かなくなったんで、土曜日に自宅近所の歯医者に行くことにした。というか会社の1Fのは、担当の先生が変わってしまって、どうにも信頼できなくなってしまったからというのもあるんだけど。
幸い取れた詰め物を、持っていったので、そのまま詰め直して、おしまい。全く削らずに済んだ。良かった良かった。ちゃんと取っておくもんだ。で、いつも詰め物が取れて歯医者に行くと、新たに虫歯を発見されて、しばらく通うハメになるんだけど、なんと今回は虫歯無し。歳をとると歯が硬くなって虫歯になりにくくなるというのは本当なんだな。ただ前歯の下に磨き残しありとのこと。歯並び悪いからなぁ。今回と次回とで歯石を取って終わりの予定。
JLabel
う、コンストラクタから、自分のメソッド(オーバーライド可能な)を呼び出しているのか。
public JLabel(String text, Icon icon, int horizontalAlignment) {
setText(text);
setIcon(icon);
setHorizontalAlignment(horizontalAlignment);
updateUI();
setAlignmentX(LEFT_ALIGNMENT);
}
継承して、これらのメソッドをオーバーライドすると、はまる...
try-catchが少ないと、悪いコード?
なんかソースの中のtry-catchの数をカウントして、少ないと例外処理が少ないから良くないとか言われことがある。こんな世迷い事が広まった原因は何なんだろう。例外処理なんて少ない方が良いのは自明だと思うんだが... いちいちアプリケーションでシステムレベルの例外(SQLExceptionとか)の対処を書かなければならないなら、それはフレームワークの設計が腐っている証拠なわけで、むしろtry-catchが多い方が問題だろう。xxの個数を数えて統計的に判断ってやつは、概して有害なものが多いな。コメント比率とか。バグ発生率とか。
オーバークロックできるようになった。
GA-965P-DS4 rev 1.0がオーバークロックできない件。PCI-ExpressのクロックをManualにして、120MHzにしたら、安定するようになった。これより低くても高くてもだめだ。なぜなんだろう。というわけでE6420を2.96GHz駆動。さすがに1.5倍近く上がると速度差が体感できる。
OracleのJDBCドライバ
なんかResultSet.setFetchSize()するとIndexOutOfBoundsになるんですが。と思ったら、Statenent.setFetchSize()なら大丈夫のようだ。ResultSet.setFetchSize()呼び出した時点でIllegalStateExceptionでも投げて教えて欲しいもんだ。
システム エラー 1385
システム エラー 1385 が発生しました。 ログオン失敗: 要求された種類のログオンは、このコンピュータではユーザーに許可されていません。
アクセス先のコンピュータで管理ツールを開き、ローカルセキュリティポリシーから、ユーザ管理の割り当てを選ぶ。「ネットワーク経由でコンピュータヘアクセス」に、ユーザかグループを設定。「ネットワーク経由でコンピュータへアクセスを拒否する(<=なんか日本語変だよな)」に、アクセスしたいユーザ、グループがあったら削除。








