2007年 8月 30日 木曜日 |
App Server 9.1エンタープライズ版 English Translation: (Yahoo!) / (Google)
GlassFIsh v2のリリースもあと3週間ほどに迫りましたが、GlassFish v2をベースとしたSunの製品Sun Java System Application Server 9.1 エンタープライズ版の記事を寺田さんが公開され始めてますね。現在GlassFish v2はRC4まで出ていますがStopperのバグが出たとのことでおそらく今夜あたりにはRC5がリリースされると思います。 ちなみに写真はGlassFishのお魚に見えなくもないガラスハゼです。 IdMセミナーより: Identity ManagerをJMXで監視する English Translation: (Yahoo!) / (Google) 本日用賀にてIdMパートナー様向けに「半歩先行く上級 IDM エンジニアのためのモア・アドバンスト・セミナー」を実施させていただきました。この中で岡崎が紹介しました、「JMX による Identity Manager システムの監視」の内容をすこしご紹介しようと思います。スライドは例によってSlideshareにおきました。
さて、この中でもご紹介したのですがちょっと面白いのがコマンドラインから監視をする方法としてJRubyを使った方法のご紹介です。この方法は西ケ谷さんが以前ブログに書かれていた をかなり
#!/usr/bin/env jruby
include Java
include_class 'javax.management.ObjectName'
include_class 'javax.management.remote.JMXConnectorFactory'
include_class 'javax.management.remote.JMXServiceURL'
jmxurl = 'service:jmx:rmi:///jndi/rmi://idm1:8686/jmxrmi'
username, password = 'admin', 'adminadmin'
svcurl = JMXServiceURL.new(jmxurl)
cred = java.lang.String[2].new
cred[0], cred[1] = username, password
env = {'jmx.remote.credentials' => cred}
conn = JMXConnectorFactory.connect(svcurl, env).getMBeanServerConnection
names = conn.query_names(ObjectName.new(
'IDM:type=Cluster,service=Synchronization,component=ActiveSync,*'), nil)
names.each do |name|
cname = name.get_canonical_name
if /name="(.+?)",resType="(.+?)"/ =~ cname
puts "Resource Type: #{$2}, Name: #{$1}, ”
+ “Status: #{conn.get_attribute(name, 'StateString')}"
end
end
こんな感じのスクリプトを実行すると、
Resource Type: FlatFileActiveSync, Name: My FlatFile, Status: down Resource Type: LDAP, Name: SPE End-User Directory, Status: downこういう具合で情報が得られます。 会津ITサマーフォーラム資料 Java Web Start版 English Translation: (Yahoo!) / (Google) 遅くなってしまいましたが先週の会津ITサマーフォーラムの資料、Java Web Start版が出来上がりました。毎度ながらオレオレ証明書で署名していますので信頼できない方は実行しないでください。
なお、今回は文字コードがShift-JIS版のみとさせていただいておりますのでそれ以外のエンコーディング環境でお使いの場合にはお手数ですが文字コードの変換等の処理を行ってください。さて、今回のプレゼンテーション資料は6/27のJavaナイトセミナーで作ったものの改良版ではなく、基本的にはほとんどスクラッチから書き直しました。 改良点1: レイアウトを改良6/27版は急いで作ったこともありレイアウトはほとんど固定でした。レイアウトが固定でもある程度プレゼン資料を作ることはできるのですが、場合によっては読みにくいページが出来上がってしまいました。今回の改良点は主にこのポイントを改善したところにあります。
6/27版ではレイアウトは1レベルのみの箇条書きに固定されていて、画像を貼付ける場合は必ずその最下段に固定されていました。一方今回のバージョンでは2レベルまでの箇条書きに対応し(3レベル以上も簡単に拡張できる)、画像も任意の段に挿入することができるようになりました。 改良点2: キーボードイベントを使う6/27版ではスライドをめくるのにはマウスのクリックイベントを利用していました。実は、6/27版の時もキーボードの左/右キーでスライドを前後に切り替えられるようにしたかったのですがなぜかうまくキーボードイベントが取得できないままでした。今回、ようやくその原因/対策がわかりキーボードでページめくりができるようになりました。気がつけば簡単なことだったんですが、結構時間がかかってしまいました。実は、Canvasを使っているときに
Canvas {
focusable: true
focused: true
//...
onKeyDown: operation(e:KeyEvent) {
if (e.keyStroke == RIGHT:KeyStroke) {
ps.nextPage();
} else if (e.keyStroke == LEFT:KeyStroke) {
ps.prevPage();
}
}
}
のようにfocusableとfocusedを両方trueにしておかないとそのコンポーネントにフォーカスがあたらないので必然的にキーボードにベントもそのコンポーネントに通知されないということでした。わかってみれば単純な話でした・・・。
改良点3: ページ番号とプレゼン時間を表示今回のプレゼンテーションではデモを3つも入れていたので時間内にきっちり終われるかどうかは途中のペース配分がとても大事でした。AppleのKeynoteなんかでは確かマルチモニタ設定で、プロジェクター側にプレゼンテーション、ノートPC側に時計と次のスライド。というような表示ができてペース配分にも配慮されているのですが、今回そこまで作り込むのは大変だったので、Ruby会議2007の時にたしかライトニングトークの際にRabbitというプレゼンテーションソフトを使ってプレゼンされていたのがとても印象深かったので、そのアイデアを拝借しました。Rabbitでは画面下部にうさぎと亀が配置されていて、うさぎがページ番号、亀が時間を表していたと思います。どちらも画面左端から右端に向かって移動し、全ページが終わるとうさぎが右端に到達し、設定時刻になると亀が右端に到達するというシンプルかつ面白い仕組みです。これだと、うさぎが進みすぎていればテンポが早すぎ、亀が進みすぎていればおそ過ぎととても直感的です。今回JavaFXで実装するにあたり、デザインセンスのなさから単なるバーだけにしました。また、進み方向は上から下にしました。
この時間経過を表示する棒ですが、思いのほか実装は簡単で、単に線を一本引いて
timeline = [0..height] dur 40 * 60 * 1000 linear;
というように高さ方向に指定時間(ここでは40分)で高さ方向に一番したまで進むように実装しています。
さて、これ以外にも実はJRubyのデモをするためにJavaFXからJRubyを呼び出すなどちょっと変なこともしていますが、だいぶプレゼンソフトとしては成長してきたと思います。またどこか別の機会で改良していくかもしれません (^^;; |
Today's Page Hits: 1117 |