もしこのブログがお役に立ちましたら、次回のAmazonでのお買い物時に こちらのリンクから 購入していただけますと嬉しく思います。

2011年10月8日

リフレクションとアノテーション

java.lang.reflect.Constructor、Field、Method
の親クラスの
java.lang.reflect.AccessibleObject

getAnnotation(Class annotationType)
とか
isAnnotationPresent(Class annotationType)
などというメソッドがあるわけですが、引数に独自アノテーションのクラスを指定しても期待通りの動作をしない場合があります。
そういう場合は、アノテーション定義の直前に一行加えます。
@Retention(RetentionPolicy.RUNTIME)
public @interface OwnAnnotation {
}
この
@Retention(RetentionPolicy.RUNTIME)
を指定すると、プログラム実行時にも独自アノテーションを参照できるようになるというわけです。

2011年9月21日

Velocityのmacroをキャッシュさせない

Apache Velocityのmacro(Velocimacro)をvmファイルやhtmlファイル内にインラインで定義したとします。
設定ファイルvelocity.propertiesが規定値のままだと、一度記述したmacroがキャッシュされて、開発に手間取る場合があります。
手元の環境の場合、velocity.propertiesの項目を以下のように設定することでキャッシュ問題を解消できました。
XXX.resource.loader.cache = false
velocimacro.permissions.allow.inline.to.replace.global = true
これで開発時にmacroを書き換えた場合、すぐに変更が反映されるようになると思います。

2011年9月16日

Bloggerのナビゲーションバーを非表示にする

Bloggerの最上部には普通navbarと呼ばれる領域が表示されます。
この部分、実はCSSを追加して非表示にできます。

管理画面から
テンプレート>カスタマイズ>アドバンス>CSSを追加(一番下)
をたどり、以下の文字列を追加します。
#navbar{
display: none;
}

2011年9月14日

あり得ない価格のコーヒー

仕事はいつも喫茶店でしているのですが、今日は全国展開の迪欧咖啡という高級店へ。
メニューを見ると一番安いブルーマウンテンでも一杯32元(≒390円)。
他の喫茶店だったら20元前後(≒240円)で飲めます。

でも今回は高級店だから仕方ないと思い、とりあえず注文。
少ししてからふと注文表を見ると、なんと72元(≒870円)の文字!
すぐに店員さんを呼んだら、グレードの高いブルーマウンテンだと勘違いしたみたいで大慌てで厨房へ走って行きました。
でも時既に遅し。
もう作り始めていたそうで、取り消しは効かないとのこと。
さらに悪いことに、普通は店が差額を埋め合わせてくれそうなものですが、どうもこの店ではそういう体制にはなっていないとのこと。

店側として残る手段はただ一つ。
客が最初からこのコーヒーを頼んだことにするしかありません。
最初聞いたときには唖然として、何とかならないかと粘りましたが、例の店員さんも半泣き状態。
最後には僕が折れました。

この日は何度も「差額の40元ぼっち少し多く働けば手に入るからいいや」と自分に言い聞かせました。

それにしても中国で40元と言ったら、
・ラーメン6杯分
・缶ビール10本分
・路線バス40回分
なので、この国に住んでいる身としてはやっぱり痛かったです。
あと、女の涙はすごい武器だと実感しました。(笑)

2011年9月13日

Synergyを試す

こちらのエントリーもご覧ください(2012/11/12追記)

WindowsマシンのキーボートとマウスをMacでも共有したい場合、Synergyというソフトを使います。
このソフトですが、手元に液晶モニターがなくてもノートPCが1台以上余っていればデュアルディスプレイ(のような)環境が実現できるという優れものです。
インストール方法や使い方はほかのサイトに任せるとして、はまった点を幾つか挙げます。

1.Windows XPをサーバー、Mac 10.6をクライアントとして使う場合、ともに最新版の1.4.4だと動作しない。
試行錯誤の結果、以下の構成で落ち着く。
Windows=Synergy1.4.4
Mac=QSynergy0.9.0+Synergy1.3.1

2.クライアント側のMacを認識できない場合がある。
試しに、サーバー側で設定するMacのスクリーン名称の末尾に「.local」を加えたらうまくいった。

3.Synergy起動中にEclipseなどのJavaを使うソフトが起動できない場合がある。
その場合はいったんSynergyを止めて当該ソフトを起動後、再度Synergyを起動する。

4.Let's Noteのくるくるホイールパッドのスクロール機能がMac側で効かない。
これは今のところ解決策なし。

5.MacのCommandキーとoptionキーに対応するのはWindowsの何キー?
Command=Alt
option=Windows

6.Macクライアントのコピー・アンド・ペーストのショートカットキーは?
コピー=Alt+C
貼り付け=Alt+V
ちなみにクリップボードは共有されているので、Mac側でコピーしたテキストをWindows側でも使える。
その逆もしかり。
ただし、Windows側では通常通りCtrlキーを使うので、混乱のないように。

とりあえずこんなところでしょうか?