<< 10月 2010 | Home | 12月 2010 >>
PR: 転職    お墓    エコ    通販    結婚相談所    シルバー    質屋    葬式    漫画    エステサロン   

mp3: ベートーベン ピアノソナタ 28番

ベートーベン ピアノソナタ 第28番
Beethoven Piano Sonata No 28

Ivory IIのItalian Grandで入力してみた。ハーフペダルが使えるのは、いいんだけど、ペダルを踏み込んだ時、ホール全体のリバーブも一緒に強化されてしまう感じで、どうもダンパーペダルのシミュレーションは、いまいちな感じ。127まで踏まない方がいいのかなぁ。慣れるまで、もう少し時間かかりそう。

Ivory IIがやってきた。

Italian Grandもまとめて、2.0にアップグレードしてみた。

これまでは、8GBのSDHC3枚を、ファイルレベルのジャンクションを使って、無理矢理1つのディレクトリに見せかけた、なんちゃってSSDだったけど、今回は、普通のSATAの128GB SSDに換装。ギリギリ4台分の全てのピアノの音源が入りきった。

さすがに、速い速い。前は起動に1分以上かかっていたけど、ものの数秒で上がるし、音色の変更も1-2秒で終わる。せっかくなので、色んな音色を使って演奏させてみた

せっかくなんで、ダンパーペダルは、ハーフペダリングしている。1.xでは、1か0かの2値しかなかったが、2.xからは、0から127まで指定できる。127まで踏み込むと、かなり強めに効くようだ。

German Dは、メロウな感じで、これはこれで、曲を選ぶといいかもしれない。Italian Grandは、1.xの時のは、破綻することが多かったけど、今回は好感触。もっと試してみないと何ともいえないけど。Yamaha Studio 7ftは、D4の音が狂っているね〜。メール出しておくか。Bosendorferは相変らず安定している、が、Italian Grandの質が上がってきたんで、どっちを使うか迷うことになりそう。

P.S. 早速回答があって、2.0.1を当ててねってことなので、パッチを当てて解決。こうして聞くと、YAMAHAもいい感じだな。

本門寺菊展

本門寺の菊展に行ってきた。































ここまでは今月頭に撮った写真で、この時は、いつもの、まんまるの花が無かったんで、今日、もう一度行ってみたんだけど、店じまいになってた。残念。



戻り値の型パラメータにワイルドカードを使う意味はあるのか?

矢野さんのところで、戻り値の型パラメータにワイルドカードを使う意味はあるのか? というエントリがあったので、ちょっと考えてみた。

例えば、元々、こんな組み合わせがあって、

interface FooBase {
// ...
}

class BarBase {
public List<FooBase> getFooTable() {
return null;
}
}

その後、拡張して、こんな風にすると、

interface Foo extends FooBase {
// ...
}

class Bar extends BarBase {
@Override public List<Foo> getFooTable() {
return null;
}
}

コンパイルエラーになる。List<FooBase>とList<Foo>には互換性が無いから。

Test.java:18: メソッドはスーパータイプのメソッドをオーバーライドまたは実装しません
@Override public List<Foo> getFooTable() {
^
エラー 2 個

でも、ワイルドカードを使っておけば、互換性があるのでokになる。

class BarBase {
public List<? extends FooBase> getFooTable() {
return null;
}
}

class Bar extends BarBase {
@Override public List<? extends Foo> getFooTable() {
return null;
}
}

Java5から、継承クラスでメソッドをオーバーライドする時の戻り値の型は、互換性のある型であればokになったんで、親で型パラメータをワイルドカードにしておけば、子側では、もっとspecificな型パラメータにできる。ダウンキャストするなり、ビジターパターンを使うなりして、子側の型に辿り着ければ、要素をキャスト無しで扱えるので、これはこれで便利かもしれない。これからは継承を前提としたベースクラスで、コレクションを返す時は、型パラメータにワイルドカードを使うようにしよう。

POIで、名前定義の入ったカラムから値を取得。

検索で見つかる方法は、古いPOIでの方法ばかりで、今のPOI APIに対応したものが無くて難儀する。

とりあえず、1つのセル(範囲ではない)に名前定義が付いている場合に、そのセルを取得するコードは、以下で良いようだ。

Name name = workbook.getName("名前定義の名前");
CellReference cellRef = new CellReference(name.getRefersToFormula());
Row row = sheet.getRow(cellRef.getRow());
Cell cell = sheet.getCell(cellRef.getCol());

ただ、名前定義って範囲にも付けられるはずなんだけど、その場合どうなるのかは、必要にせまられていないので、未調査。

VoltDBで、サロゲートキー生成。

現在のVoltDBには、オートインクリメントカラムが無いんで、自分で実装してみた。

このサイトの掲載内容は私自身の見解であり、必ずしもIBMの立場、戦略、意見を代表するものではありません。
日本アイ・ビー・エム 花井 志生 Since 1997.6.8