シャボー ストロベリー
昨日の飲み会の二次会のお店は、輸入ビールがいっぱい。サンマルタンもレフブラウンも無かったんで、シャボー ストロベリーというのを頼んでみたら、なかなかおいしかった。ベルビュークリークとかは、すっぱ過ぎて、好きじゃないんだけど、これは甘さもすっぱさも控え目。ニッシンにあるかな。今度探してみよう。
ノートは、みんなワイド液晶だなぁ。
ワイド液晶イヤ。
Core 2 Duo 2GHz以上。
メモリ4GB以上。
トラックポイント。
横幅33cmまで。
だと選択肢0。トラックポイントあきらめれば、DellのD520なんか、安くていい感じだけど。なんで、このモデルだけトラックポイントじゃないんだろう。まだまだT42でいいか...
あーまた、はまった。
Struts2の例外処理で、リソースバンドルに設定したメッセージが表示されない。Struts2は、アクションインスタンスがOGNLスタックに乗り、リソースバンドルを参照すると、アクション経由でリソースバンドルからメッセージを取り出すことができる。しかし、JSP側でOGNLスタックを見ると、アクションインスタンスの姿なく、pushした覚えのないDefaultTextProviderが乗っかっている。で、散々XWorkの中を追い回した結果が、redirect = true。もうアホとしか... 今週の電車内デバッグの時間をほとんど使ってしまった。
DefaultTextProviderがいなければ、惑わされることは無かったかもというのは負け惜しみだが、どうもデフォルトでDefaultTextProviderが積まれるようになっているようだ。
しかしXWorkのソースの書き方は、とても共感を呼ぶ。本業では、こういう書き方は慎しんでいるんだけど、趣味のプログラミングでは、まさに、こういうインナークラスを多用する書き方をするんだよね。他人から見たら分かりにくいかもと思っていたんだけど、XWorkのソースは特に分かりにくいとは思わなかった。
続:Ubuntu上のJavaでキー入力が効かなくなる。
Sunのサポートの人から「なんか起きないんですけど、唯一MToolkitを入れた時だけ起きるみたい」とメールが。
ちゃんとUbuntuでやってるのかなぁと疑問に思いつつ、あぁ、もしかして、
export LANG=C
やっぱり起きなくなった。日本語環境でだけ起きる現象なのか。Input Methodまわりの問題なのかな。とりあえずの回避策にはなりそうだ。
悲愴ソナタ
ベートーベンの悲愴ソナタを入力。
確か初めてベートーベンが表題を付けたピアノソナタだったんじゃないかな。それだけ思い入れがあったんだろうな。良くこの曲でベートーベンのソナタが確立されたみたいに言われるけど、個人的には作品10-1のソナタ5番の方が完成度(というか凝縮されているというか)が高いように思うんだけど。あんまり人気ないね。やはり分かり易い表題が必要なのかなぁ。
難しかったのは、207-218小節目。和声はきれいではあるものの、リズムが単調なんで、なかなかきれいにまとまらない。
カメラ修理
20DとEF50mm f1.4を修理に出してきた。本体は右端のAFセンサが効かなくなり、レンズはピントリングの動きが渋くなったため。以前ピント調整で銀座のサービスセンタに出した時は2週間かかった(実際は1週間でできていた)けど、今回は1週間だった。ボディはAFセンサにゴミが付いていただけらしい。レンズの方は、ピントリングが歪んでいて交換。なぜかボディの方が高くて10k円強。まぁレンズの方が部品を交換したにしては、10k円切っていたんでいいや。

グロキシニアは難しい。なんか色を調整しているうちに、目が眩んで分からなくなってしまう。

Struts2のバリデーション。
元々はXMLで指定するものだったけど、最近アノテーションでも指定できるようになった。これからはアノテーションかなとも思うけど、まだ機能的にこなれていない感じ。アクションにユーザクラスを持って、そのフィールドにバリデーションルールを複数書く、なんてことができない(XML指定だとできる)。まだまだ発展途上な感じだ。
FIrefoxとマウスホイール。
なんか急にホイールでのスクロールが遅くなる。Windows版だけの現象で、Ubuntuでは今のところ起きていない。でもFirefoxじゃなくてマウスドライバが原因なのかもしれない。
Scott Ambler氏と会談
曰く
「XPは死んだ」とか。「DOA? Dead Or Aliveのことか?」とか。
なかなか過激というか、ダメなものはダメとハッキリ言うので、刺激的で面白かった。もちろんXPのプラクティス全部がダメということではなくて「あのプラクティス全部を実行なんて、普通しない」ということであり、DOAがダメというわけではなくて、所詮はシステムのビューからみたら、ひとつの側面でしかないのに、みんなちやほやし過ぎってことなんだけど、つかみとしては、うまい。
PIP
NIKKEI BPNetの広告に最近「“PIP”ってなに? という人が読む本」なるタイトルが出て、今頃CP/Mとは、温故知新というやつですか、とか思ったら中身は全然関係無かった。
しかしあのファイルコピーがPIPという名前ってのは、ずっと謎で、Peripheral-Interchange-Programの略だというのを知ったのは、大分経ってからだった。ファイルコピーより、もっと汎用的で、機器間でデータの転送をするプログラムという意味を持っていたのだね。
左右の音を合わせるのにペア?
「こだわりのオーディオアンプを作る場合は、左右でギリギリまで値を揃えたいもの」
左右で増幅率を揃えるため? そんな需要があるの? 普通はプッシュプルとか差動増幅で特性の揃った石が必要だからという理由だと思うんだけど。少なくとも写真に写ってるPNPとNPNのペアは「左右で増幅率を揃える」という目的には使えないはず...
鎌倉
毎年、6月には創立記念日があるので、紫陽花を見に行くのだけど、今年は日曜に重なってしまっているので、今日休みをとって行ってきた。
もちろん、まずは浄妙寺。

今年もいました。

すっかりくつろいでいます。

真っ赤な紫陽花。

ほたるぶくろ。


この顎紫陽花もきれい。


これは白くて巨大。ちょっと緑っぽい。

この子は、道のどまんなかで堂々と寝てた。車が来ると、けだるそうに端のベンチに移動するんだけど、車が去ると、またどまんなかに来て爆睡。お寺の中の私道なので、安全なんだけどね。

次は長谷寺へ。土日だと1時間待ちとかになるんだろうな。

辺り一面の紫陽花。






紙細工のよう。

こういう派手なのもいいけど、

こういうのもまた風情が。

様々な色がまざりあってる。


紫陽花に囲まれて。




あやめ? かきつばた?

もう桔梗が咲いていた。


寄ってみた。

ここにも、ほたるぶくろ

帰りは羽田空港で、軽食。ミニチュアは失敗。

広々した待合室。

連符処理
連符処理を考えてみる。

全てが同じ長さなら簡単。


これはどうか? こんなのはエラーにするという考えもあるけど、今のところ、これは5連符にすることにした。

その方が便利な気がしているから。実際はそんなことないかもしれないけど。なんで5連符になるかというと、符点四分音符と、四分音符の長さの最大公約数は8分音符になる。で、8分音符の長さでカウントすると全長は8分音符5個になるので、5連符にすれば丁度3:2に割り振れるというわけだ。

こんな時は...

和音になっている時は、短かい方の音だけで計算して、こうする。この方が便利なのは、恐らく間違いない。こういうパターンは多いし。
悲愴ソナタ
4小節目、最後に128分音符の9連符があるが(少なくとも手持ちの全音の楽譜ではそうなってる)、これは変だ。前からカウントしていくと、この9連符合わせて16分音符の長さにならないといけない。n分音符のm連符がm個集るとn/2分音符の長さになるはずだから、ここは32分音符の9連符でないと話が合わないと思うんだが。
こんなの普通に弾いていたら気付かないな。
ブックマークを整理
日常的に使うもの以外は整理する方向で。どの道「ブックマークしたかも」という程度の記憶しかなくて、膨大な量のブックマークから探し出すことができず、結局サーチエンジンに頼るはめになるわけで。
Google Notebookにメモしておくというのも、いいかも、URLといっしょにメモを付けておけば、あとからノートブックの中身をGoogle検索できるし。
Eclipseでユーザライブラリが消える件。
-cleanとか-refreshとか-initializeとか、色々試したけど無効。で、ようやくちょっと分かってきたかも。ワークスペースディレクトリにある、.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefsの中にユーザーライブラリが保管されるんだけど、これプロパティファイルでありながら、XMLがハイブリッドに保管されるという、なかなかアバンギャルドな構造になってて、
org.eclipse.jdt.core.userLibrary.ruimoutil=<?xml version\="1.0" encoding\="UTF-8"?>\n<userlibrary systemlibrary\="false" version\="1">\n\t<archive path\="/home/shanai/java/ruimoutil/ruimoutil/ruimoutil.jar"/>\n</userlibrary>\n
ユーザライブラリが消えてしまう状況の時は、この中の改行が\nではなくて\r\nになっていたりするようだ(確証は無いけど、どうも状況からして、関連が認められる)。なので、\rを消すか、このuserLibraryの行をさくっと消して、もう一度設定し直せば元に戻るようだ。でも、またいつ消えるか分からないので、Exportボタンを押して、別ファイルに保存しておくのが吉。
WriterとかFile.pathSeparatorとか使わずにプログラムの中で"\r\n"をハードコードしているバグが、どこかにあるんじゃないだろうか。Windowsでは起きないのかもしれない。
Ubuntu + Javaでキー入力できなくなる件。
バグと認められた模様。Bug ID = 6568693。Bug Parade上で見えるようになるには、あと数日かかるみたい。というわけで清き一票をお願いします。
というか、UbuntuでNetBeans使ってると、やっぱりひんぱんにキー入力ができなくなるんだけど、同じ原因だよね。うちの環境だけ特に起き易いんだろうか。今まで報告されていないのが不思議だ。みんなgcjで使ってたりするの?
Ubuntu上のJavaでキー入力が効かなくなる。
JDK 6 Update 1 + Ubuntu 7.04
スペースキーを叩き続けると、ダイアログが表示が繰り返されるけど、キーを押しっぱなしにしてリピートさせると、その後キー入力が入らなくなってしまう。家のはSunのサイトから手でインストールしたけど、そういえばSynapticでインストールしたらどうなのかな。それでだめならバグ報告してもいいよね。
public class Test {
public static void main(String[] args) throws Exception {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
final JFrame frm = new JFrame();
frm .setSize(400, 400);
JButton button = new JButton("Push!");
frm.getContentPane().add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
JOptionPane.showConfirmDialog(frm, "Hello");
}
});
frm.setVisible(true);
}
});
}
}
ドットピッチの違う画面でデュアルディスプレイ
う〜む、ちょっと使いづらいかもしれないな。ウィンドウを画面間で移動すると大きさ(見た目の)が変わってしまう。ドットピッチが違うんだから当たり前だけど。ブラウザとかのフォントサイズも、一方に合わせると、もう一方では不自由なサイズになるし。
あと、2つの画面を合わせた描画面には当然、描画されない領域が出来るけどウィンドウマネージャ側は、2つの画面を包含する長方形だと思っているようで(Ubuntuの場合。WindowsXPは未確認)、ウィンドウからはみ出すような描画の場合(長いブックマークリストとか)、画面から完全にはみ出してしまって見えなくなってしまうのも不便だ(通常ならば、折り返したり描画位置を移動したりして、ウィンドウ内に入るように調整してくれる)。
0と最大公約数
任意の数と0との最大公約数って定義されるんだろうか。BigInteger.gcd()は、片方が0の場合、0じゃない方を返すようになっている(API仕様書には書かれていない)。最大公約数の計算では、本来0は対象外のように思うんだけど、そうじゃないのかな。でも今の動作の方が、3つ以上の数の最大公約数を算出したい場合には都合がいいように思われる。
int gcd = 0;
for (int val:nums) {
gcd = calcGCD(gcd, val);
}
return gcd;
みたいにコードできるし。
メモ:FontMetrics
こんな感じかな。Graphics.drawString()に渡す座標は、Originの座標。文字列の幅は、FontMetrics.stringWidth(String)で取得できる。ただ、getAscent()/getDescent()と、getMaxAscent()/getMaxDescent()の違いが分からない。getAscent(String)とかなら分かるんだけど...
VMWare Server on Ubuntu
最近また動かなくなっていて、そういえばKernelがアップデートされたから、そのせいかなと思っていたら、知らないうちにSynapticに登録されていて、簡単にインストールできるようになっていたので早速インストールしてみた。Kernelコンパイルが必要だった頃がうそのようだ。
前は音が途切れがちだったけど、まともに鳴るようになっている。あとSilkypixでダブルクリックがうまくいかないことが多かったのも、良くなっている。
DELL 3007WFP-HC
なんか14万切っていたので、買ってしまった。
輝度が落ちたという話だったけど、背景が白で使うには、まだちょっとまぶしい感じがする。BIOS画面は普通に全画面で映るし、いざという時は半分の解像度の1280 x 800が使用できるので、特に不自由は無い。
Windows XPは、付属のCDからディスプレイプロファイルを入れてやれば、普通に認識された。ディスプレイカードはELSAの776GS。
Ubuntu (7.04)は、XF86Configをいじらないとだめかなと思ったら、何もしなくても自動認識で2560x1600になった。いつもながらUbuntuのハードウェア認識の賢さには驚かされる。
19inchとデュアルディスプレイで使用していると、19inchが、まるで13inchくらいのディスプレイに見えてくる。
Eclipseを立ち上げると、真ん中のエディタ部分が広いこと。普段はデバッグとかリファクタリングでしか使用しないけど、これなら進んで使ってみようかという気になったり。ところで両側のOutlineとかのフォントは大きくできないんだろうか...
なぜかOverclockが一切できなくなった。関係があるとは思えないんだけど... 試しにPCI-Expressのクロックを固定してみたけど、変わらず。まぁいいや。
メモ:createFont()
createFont()しただけだと、サイズが0になる模様。サイズを指定してやらないと、表示されない。
public static void main(String[] args) throws Exception {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frm = new JFrame();
frm .setSize(400, 400);
JLabel label = new JLabel("Hello 漢字");
Font f;
try {
File file = new File("/usr/share/fonts/truetype/ipamona/ipag-mona.ttf");
// File file = new File("c:\\WINDOWS\\Fonts\\arial.ttf");
if (file.exists()) System.err.println("File exists!");
f = Font.createFont(Font.TRUETYPE_FONT, file);
} catch (FontFormatException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
label.setFont(new Font(f.getName(), f.getStyle(), 20));
frm.getContentPane().add(label);
frm.setVisible(true);
}
});
}
Javaで最大公約数
ん〜、あれだけ巨大なクラスライブラリを擁していながら、最大公約数は無いのか。commonsにも無いな(ちょっと見た限りでは)。STLは偉大だ。
どうもJavaのクラスライブラリって、アルゴリズム系に弱い気がする。
P.S. と思ったらBigInteger.gcd()で計算できるという情報をコメントでいただいた。とはいえ、そのためにBigIntegerを使うというのもなぁ。中はMutableBigIntegerを使用して、1ワードの場合は特別扱いするなど、それなりに効率化はしているけれど、2つのintで実装したものに比べたら、やはり遥かに遅そう。
ThinkPad T42 故障
昨日の夜、パームレストが異様に熱いのに気づく。で、気のせいかと思ったんだけど、今日も熱いので、ファンのところに耳を近づけてみると、
まわってない...
探してみたらここでファンアセンブリを売っていたので、注文。
ファンを直せば、まだ数年は使えそうだけど、そろそろ誰かにゆずって買い替えかなぁ。いくらぐらいで売れるだろう。デルの企業向けノートが気になる今日このごろ。
なんか自分が買ったファンアセンブリ、「売れてます」とか書かれているな。複雑な心境だよ...
思い込み
選択状態のオブジェクトを赤く表示するため、以前、色々と試したことがある。

元のオブジェクトをモノクロで透過GIFで作っておいて、選択状態(赤)は、それを元にRGBImageFilterを使って変換すればできるはず、と思ったのだけど、散々試してダメだったので、あきらめて赤いオブジェクトを別のgifで用意していた。
で、今日、ちょっと試してみたら、あっさりできた。何が悪かったかと言うと、以前はJLabelを継承してpaintComponentをオーバーライドしてdrawImage()して実験していたんだけど、これだとなぜかRGBImageFilterを使った時だけちゃんと表示されないんだよね(原因不明)。で、ふとJPanelに変えてみたら、あっさりとうまくいった。ずっとRGBImageFilterの使い方の方が悪いと思い込んでいた。こういう思い込みって、歳をとってから大分減った気がするんだけど、なくならないなぁ。
思い込みが払拭された瞬間は格別だ。
public class Test extends JPanel {
Image img;
public Test() {
try {
img = ImageIO.read(new File("test.gif"));
}
catch (IOException ex) {
ex.printStackTrace();
}
SelectedImageFilter sif = new SelectedImageFilter();
img= createImage(new FilteredImageSource(img.getSource(), sif));
}
@Override protected void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, this);
}
public static void main(String[] args) {
JFrame frm = new JFrame();
frm.setLayout(null);
Test test = new Test();
test.setSize(50, 50);
frm.getContentPane().add(test);
frm.setBounds(0, 0, 100, 100);
frm.setVisible(true);
}
private static class SelectedImageFilter extends RGBImageFilter {
public SelectedImageFilter() {
canFilterIndexColorModel = true;
}
@Override public int filterRGB(int x, int y, int argb) {
return (argb | 0x0000FF00);
}
}
}
このコード、最初を
public class Test extends JLabel {
とすると、何も表示されなくなる。でも、そのままRGBImageFilterによる変換もやめると、変換前のビットマップならば、ちゃんと表示される。
// img= createImage(new FilteredImageSource(img.getSource(), sif));
Struts2 エンコーディング
フィルタ使ってsetCharacterEncoding()やっても効かない(なんか、うまくいったりいかなかったり。タイミングに依存する)。で、ソースを追っていったら、
org/apache/struts2/default.properties struts.i18n.encoding=UTF-8
というわけか。struts.xmlに設定してやれば、変更できるようだ(こっちの方が優先度が高い)。
... <struts> <constant name="struts.i18n.encoding" value="Windows-31J"/> ...








