VAIO BX
スティックポインタ付いてるし、4GB載るし、14inchの非ワイドがあるし、なかなかいいなと思ったら、ドライブベイはUSB接続なのか。eSATAでブート可能だったらなぁ。普段はUbuntu、仕事の時だけWindowsのHDDをドライブベイにサクっと差して使えると便利なんだけど。
Java plugin on Ubuntu
Ubuntu上のFirefoxではJavaプラグインが使えなかった。一応アプレットのあるページに行くと、クリックしてダウンロードと出るんだけど、手動インストールとなって、結局JavaSEのダウンロードページに誘導されるだけなんで、調べるのも面倒なんで放っておいた。
で、IBM Lotus Symphonyを試してみようかと思ったら、やはりDownload Director使わないと遅すぎてやってられないんで(これはアプレットを使っている)、しぶしぶ調べてみた。
Googleさんに聞くと、Knoppix−3なしな覚書さんとこにあるよということで見てみたら、う〜むシンボリックリンクを張るだけとはいえ、こんなことを手作業でやらんといかんのか。
と思ったけど、これなら簡単に使いたいJava pluginのバージョンも切り替えられるわけだな。考えようによっては便利なのかもしれない。しかし普通の人には敷居が高すぎ。ってそういう人は、そもそもLinux使いませんか。そうですか。
音楽サーバ変更
今まではCerelon 800MHzのマシンにWindows2000を入れて運用していたのだけど、最近Ubuntuで音楽を聴くようになったらWindowsとの音の違いに愕然としたのと、どうも最近のどれかのWindows Updateの影響か、定期的にシステムが重くなって、そのたびに音楽再生が中断されるようになってしまい、ちょっと使いものにならなくなったので、変更することにした。
このマシンはSocket370のベアボーンなんだけど、UbuntuはどうもCDで立ち上げると、エラーが色々出る。で、最近使用しなくなったThinkpad 390Xを使ってみる。こちらもCD起動だとなんかfirmwareがどうのこうのとエラーが出て7.04は、うまく起動しない。6.10は起動したので、インストールしてから7.04にアップグレードしてみた。firmwareのエラーはlive cdの時にだけ表示されようで、インストールしてしまえば、特に問題なく動いている。
手持ちのバッファローのPCMCIA無線LANカードは、lspciで見ると、BCM4318というチップのようで、ndiswrapperを使用したら、アッサリ動いた。サウンドカードは、CreativeのSDBMULXというのを買ってきた。こちらはUSBオーディオなので、何もしなくても認識される。ここからデジタル出力で外部DACに接続。
音楽ファイルはサーバにあるので、nfsマウントしてみると、マウントにやたらと時間がかかる。この症状はこれまでも6.10のクライントで出ていたんで、今回は7.04にしたんだけど、どうも別の要因らしい。しばらくGoogleをさまよっていたら、どうやらportmapを起動しておかないと遅くなるようだ。Synapticパッケージマネージャからportmapをインストールしたら解決。
あとはnfsのオートマウントの設定をここを見ながら行う。
flac形式の再生にはAudaciousを使用。
ちょっと試してみた感じでは、システムに負荷をかけても音切れしないし、いい感じ。音も良くなった。
Dependent mapping
JPAってPofEAAのDependent mappingに相当する機能は無いんだろうか。取引に対する明細みたいなのは、エンティティとして扱うしか無いのかな。でも、そうすると取引の与り知らないところで明細を削除とかできちゃうよな。明細の合計個数とか金額なんかを、パフォーマンス上の理由とかで、非正規化して取引側でもキャッシュしているような場合、うまい更新タイミングが無い気がする。
ヴァンテアン クルーズ
招待券をもらったので、ヴァンテアン クルーズに行ってきた。招待券は乗船券だけで、食事は別で、結構なお値段。迷ったけど、初めてなんで食事付きにした。

この手の食事は、いまいちなことが多いけれど、普通のホテルのディナーと比べても遜色無し。まぁちょっと高めだけど、景色代と考えればリーズナブルじゃないかと。

この後、写真撮るの忘れた。確かスープ、魚、肉、デザートのフルコースだったと思う。

ちょうど窓側の席だったので、眺めは良かった。


コンテナ用クレーンがキリンのよう。

キリンせいぞろい。

羽田のそばを通るので、飛行機も見える。

食事も終わったので、甲板に出てみる。

レインボーブリッジと東京タワー。

お台場。

レインボーブリッジが近づいてくる。

そして...

下から見上げるレインボーブリッジは、初めて。

結構なスピードなので、あっとういう間の出来事。

こちらは永代橋

子供といっしょなら、甲板で軽食だけっていうのも、いいかも。夕日に飛行機にキリンにレインボーブリッジと、飽きないんじゃないかな。でも、夏は暑そう。
[備忘録] Subversionのバイナリ誤認識を修正。
バイナリ => テキスト
svn propdel svn:mime-type foo.utf8
テキスト => バイナリ
svn propset svn:mime-type application/octet-stream foo.pdf
JettyとDerby
Jetty-6.1.5ってDerbyを含んでいるんだ(lib/ext/derby/derby-10.1.2.1.jar)。CLASSPATHに指定した覚えが無いのに、Derbyが使えるので、びっくりしたよ。
Rubyの-Kオプション。
Rakefile(中に日本語を含む)を、Windows(デフォルト:Shift_JIS)とUbuntu(デフォルト:UTF-8)で共用したいとする。
スクリプトをUTF-8でエンコードして、-Kuで動かすと、LinuxではokだけどWindowsではメッセージが文字化けする。-KuだとスクリプトをUTF-8で読むだけでなく、出力もUTF-8になるようだ。出力をリダイレクトしてファイルに落としてからnotepadで開くとちゃんと読める。
スクリプトの読み込みエンコーディングと、putsとかの出力のエンコーディングって、別々に指定できないのかな。どうやってRakefileの可搬性を維持するのが良いんだろう。
「告別」ソナタ
ベートーベン ピアノソナタ 第26番「告別」 第一楽章
Beethoven Piano Sonata No26 'Das Lebewohl' Movement 1
どうも「告別」って「告別式」を思い浮かべてしまって、いただけない感じ。
プログラマの生産性
生産性が人により1桁、2桁違うというのは、その通りだと思う。でも最後のコード行数の件は、ちょっと違うと思う。ある程度の規模の全く同じ機能を実装する場合、デキるヤツのコード量は1/10、パフォーマンスは50-100倍、メモリー使用量は1/10というのが実感かな。でも、実際に全く同じ機能を実装するなんてことは、あり得ないから、管理者層には評価ができてないというのが定説。で、下手をすると、この記事のように行数で生産性を評価されちゃうしね。じゃぁ、なんで上のような数字が言えるかというと、これが実感できる場面があるからだ。それはチューニング。経験的に、何も考えずに作られたアプリケーションなら、デキるやつが、ちょっと手を入れれば、すぐに1桁はパフォーマンスが改善する。ちょっと気合い入れれば2桁も珍しくない。メモリ使用量も1/5くらいは、割とすぐに可能じゃないかな。コードは、通例コピペの嵐だからね、コード量もリファクタリングですぐに1/5くらいになる。ただ実際には、この変更は目に見えた効果に乏しいし、外部から手を入れちゃうと、瑕疵責任とかがやっかいになるから、管理者層からokでない。でまぁ、優秀なエンジニアを見つけたかったら、チューニングさせてみれば良いと思うわけだ。少くとも自分だったら、チューニングの腕で評価するね。
FD
いやぁ、懐しいね。確かにやたらと流行っていたように思う。でも自分では使わなかったな。なぜかは良く分からない。結局コマンドラインだったように思う。今でも基本的にはそうだし。でもたまに日和ってdiredは使うな。というか最近gifファイルとか、diredから開けるのを知って驚いたり。
オートボクシング
もしやと思って試してみる。
class Test {
int i;
void foo() {
synchronized (i) {
}
}
}
$ javac Test.java
Test.java:5: 予期しない型
検出値 : int
期待値 : 参照
synchronized (i) {
^
エラー 1 個
ほっと胸をなでおろす。synchornizedの引数はオートボクシング対象外なのね。期待値のところに、Objectではなく「参照(英語ロカールだとreferenceと表示された)」と書かれているな。オートボクシングを行いたくないところには、文法上、この「参照」というのが使用されているんだろうか。
日比谷公園
すっかり涼しくなったので、日比谷公園を散歩

ユッカが花盛り。

茶トラ発見。

しゃがんで写真撮ってたら、近くまで寄ってきた。

何もくれないの?


薔薇は、いまひとつ元気が無い感じ。しかし赤は、すぐ飽和してしまうなぁ。


あれ? さっきの子? かと思ったら、耳の端が切れてないので、違う子のよう。

サルスベリ。


ヒマワリも、すっかり元気を失なっている。




何の実だろう。なんだかカラフルなので撮ってみた。

お昼は、銀座の方まで歩いて、稲庭うどん屋さんを目指す。

ハイビスカスも、最近は普通に庭に植わってるけど、品種改良の賜物なのか、温暖化のせいなのか。

稲庭うどんは、つやつやで、おいしかった。

Ubuntu上のJavaでキー入力ができなくなる件。
Open JDKのソースをもとに、ちょっと追っかけてみた。
sun.awt.X11.XToolkit.java (line:576)
if (XlibWrapper.XFilterEvent(ev.getPData(), w)) {
continue;
}
キーが効かなくなっている時は、XFilterEvent()がtrueを返し続けている模様。これってXIMがイベントを処理中の時にtrueを返すんだよね(XlibWrapper.XFilterEvent()はnativeメソッドで、XのXFilterEvent()を呼び出しているだけ)。どうも問題はJavaの外側にある感じがする。
OpenJDK
話のタネにビルドしてみた。(Ubuntu 6.10と7.04で確認)
openjdkのサイトに行って、openjdk-7-ea-src-b19-30_aug_2007.zipを取ってくる。展開するとopenjdkディレクトリができる。
JDKをビルドするには、JDKが必要になるんで、バイナリも必要になる。JDK7のサイトに行って、Latest JDK 7 binary snapshotsを取ってくる。Linux用のjdk-7-ea-bin-b19-linux-i586-30_aug_2007.binを取得。以下で普通にインストール。
chmod +x jdk-7-ea-bin-b19-linux-i586-30_aug_2007.bin ./jdk-7-ea-bin-b19-linux-i586-30_aug_2007.bin
openjdkは、一部、まだソースが公開されていないのがあって、それはbinary plugsという名前でビルド用に限ってということで、提供されている。これはJDK 7のサイトにあるので、取ってくる。jdk-7-ea-plug-b19-linux-i586-30_aug_2007.jar。以下で任意の場所にインストール。
java -jar jdk-7-ea-plug-b19-linux-i586-30_aug_2007.jar
環境変数を設定。
export LANG=C export ALT_BOOTDIR=[[JDK 1.7.0のディレクトリ]] export ALT_JDK_IMPORT_PATH=[[JDK 1.7.0のディレクトリ]] export ALT_BINARY_PLUGS_PATH=[[Binary Plugのインストール場所]] export JAVA_HOME=
Synapticパッケージマネージャで以下をインストール。依存するパッケージを導入するか聞かれたら、それもインストール。あ、デフォルトだとgccとかmakeとかも入ってないかもしれないんで、gcc回りも入れる必要があるかも。
m4 gawk lesstif2-dev libasound2-dev libcupsys2-dev libxtst-dev libxi-dev libstdc++6-4.1-dev
あとはopenjdk/j2se/makeの下に行って、make。うちのマシンだと5分ほどで、j2se/build/linux-i586の下にできあがり。
なんかgccの動作中って、デュアルコアCPU使い切るね。マルチスレッド対応してるのかな。javacもマルチコア対応してくれたら、クアッドコア買うんだけど。









