昨日は、RedHatレディ・ビジネスパートナー定例会でした。レッドハットさんは勢いがあって凄いです。私も喋る事になっていたのですが、よく考えたらまだ起業したばかりで特にアピールする点は無いですね。w一応、Seam主体で話しました。懇親会で、色んな方とお話をすることが出来て良かったです。オープンセミナー18日に行ってきました。5.0の話っぽかったので食いついてみたのですが、行って良かったです。5.0で何が変わったのか、結構ちゃんと聞けました。個人的に大きいと感じたのは以下の点。・管理コンソール噂のSeamベースの管理コンソールをようやく生で見ました。・セキュリティ強化Windowsデスクトップとのシングルサインオン?それは是非やりたい。・mod_clusterというロードバランサが追加され、ラウンドロビンでないインテリジェントで負荷分散できるようになったAPのノードによって負荷が違ったり、落ちてたりするのにもホットに対応できるとの事。Serviceを学んでいたときに、GETとかとは違うのかなー、とか思っていたけど、お馬鹿な発想ではなかったということで良かった。wJSR-181よりもシンプルだし、POJOで書けるのは良いなー。Luceneのエンジンを使って、全文検索が可能になるのだとか。デモしていただいたけど、すばらしい。6.0までお預けらしい。2011年てだいぶ先だなー。BRMSの説明もさらりとはあったんだけど、Droolsとの違いが良く分からず。セミナー終了後に、講師の方に色々聞くと、DroolsにGUIが乗っかってる感じらしい。条件自体を変更したりできるということで、棲み分けが理解できた。講師の方が親切に資料を別途送ってくれました。ありがとうございます。セミナー終了後に、M本さんがひょっこり出てきてびっくり。Weld翻訳がんばりましょう。苦笑BRMSも使えそうな印象なので、24日にBRMSクイックスタートセミナーにも行ってこようかと。明日19日はなぜか、RedHatレディ・ビジネスパートナー定例会で時間をいただいて喋る事になってます。話すことも無かったりして・・・・。JBoss2009年11月13日金曜日mobilepoint独り言です。営業の合間によくマックのmobilepointを使うんですが、今日のマックは電波は非常に良いなのに、非常にレスポンスが悪い!!なんなんですかねー。5.0の情報を探しているんですが、日本語情報は皆無ですね。レッドハットの日本語サイトの最新ニュースにも書かれていない模様・・・・。そんなわけで、これ行ってきます。5.0やっとリリースされました。近い人はご存知と思いますが、ワタクシは紙が大っ嫌いです。起業してからというもの、すっかり役所周りの紙で埋もれてしまっています。ペーパーレスと言われて久しいですが、減るどころか世界の紙の需要は増えるばかり。謄本とかオンラインで取得できるんですが、届くのは紙が郵送で送られてきます。登記するときも電子認証できるんですが、結局1部は紙の定款を残すことになります。必要な紙とそうでない紙があると思いますが、特に役所周りでペーパーレス化が進むことを切に望みます。良い内容でごめんなさい。Beansが改名されました。http://www.seamframework.org/Weldで、1.0.0.CR1がリリースされました。名前変わっちゃうと翻訳大変そうです・・・。Weldって溶接とか密着とか。してもSeamじゃ駄目なんだね。お試し前から気になってたので、今更ですが試してみました。小規模ならギリギリ・・・・セーフ?中規模以上ならLarge以上のスペックにしないと厳しい。2m:9s:265msだったので、一応は我慢できるレベル。これもLargeにすれば問題無さそう。他の人も書いてるけど、画像とかを国内サーバーに置けば我慢できるかも?安いのは安いと思うけど、やっぱり「うーん」となってしまう感じ。Sunのクラウドが気になるところ。新しいノートに環境作成をしていて丁度良かったので、今日は、Railsの環境作成について書いてみようかと。自分のためのメモなのであしからず。Installerをダウンロード&インストールする。RubyGemsを一緒に入れるのを忘れないように。1.8.6かぁ・・・・まぁいっか。updateで、構成をバージョンアップしてから、Railsを入れる。1.2.3′として完了。SQLiteのDLLを別途落としてRubyのパスに突っ込んでおきます。Installerには余計なものがたくさん入ってる・・・・まぁいっか。動作確認だけしておこう。script/serverで、Bookmarkプログラムのインストールが完了。最後に、開発環境としてNetBeansを入れます。Ruby版でオーケー。Javaとは違ってWindows上で検証したものが本番環境(Linuxとかの別OSのサーバー)上で同じように動くかどうかは別問題なので、注意。Railsauthenticatorさて、もうひとつ早めに説明しておいた方が良いですかね。苦笑Seam標準のログイン認証機能の説明です。false;}}Seamコンポート名として、authenticatorが宣言されていますので、JSF等からこのインスタンス名でアクセスされます。実行し、戻り値がtrueであればログイン成功だよ、という事です。ツꀀUsernameの値が「admin」だったらログイン成功・・・・なるほど。wまぁ、そんなわけで実際の開発時にはこのauthenticate()をカスタマイズするだけで、DBと普通に認証しても良いし、LDAPと認証しても良いし、ActiveDirectoryと認証しても良いし、という具合になります。Droolsを使ってロールの概念を持たせると権限の概念の定義も可能です。(そこまで書く元気があるのかしら)login.xhtmlやmenu.xhtmlを見るとログインしているかどうかで表示を分けていたりするので、参考にしてください。フレームワークとしてログインしているかどうかというのがちゃんと認識されていますので、特定のメソッドをログインしてなかったら実行できないようにする、というような事がアノテーション一行で定義可能です。これもどこかで説明したいと思います。最後に、恒例(うそ)のアノテーション解説して終わります。ステートレスセッションBeanであることを示します。ちなみに、SeamでステートレスセッションBeanを使うのは一般的にはログイン画面と(層を作りたい場合に)純粋なDAOを作るような場合くらいですかね。通常ステートフルセッションBeanを使うことになります。org.jboss.seam.log.Logのインスタンスを使います。これを書いておくと、Log4Jを使うときの非常に冗長なif文を書かなくてもSeamがよしなにしてくれることになっています。画面からの値をクラスの属性で受け取るのに使います。ログイン画面の例なので最初はしんどいかもしれませんが、logins.xhtmlと見比べれば分かると思います。Seamgenerate-entitiesにより作られたクラス2続いて、C:\Projects\myproject\src\hot\com\mydomain\myproject\action\MyprojectList.javaこれは所謂セッションBeanに相当するものです。MyprojectはエンティティBeanだったので、これに対するビジネスロジックを定義する場所と考えてください。相当するものと書いたのは、EntityQueryを継承してしまうことで、一般的なセッションBeanの書き方とは異なるから。セッションBeanを使う場合は、EntityManagerに関する記述を書いたり、セッションBeanであることを宣言したりすることが必要。myproject;}}ここでもアノテーションが出てくるので、簡単に。これはSeamアノテーションで、Seamコンポート名というのを指定します。書くと分からないのですが、ここで宣言した名前でJSFから直接呼び出せることになっています。要はその時のクラスのインスタンス名を書いてって事なので、普通はクラス名の先頭を小文字にしたのを書いとけば十分です。あれ?SQL変じゃね?って思った人がいるかもしれませんが、これはEJB3.0規格のEJB-QLという独自のSQL文になっています。何でそんなことを・・・と思うかもしれませんが、EJB-QLが間に挟まっているおかげで開発者はその先にあるデータベースの方言について一切意識する必要が無いのです。それは本来開発者の仕事ではなく、フレームワークの仕事だろってのがEJB3.0の思想になるわけです。#{myprojectList.myproject.val}はJSF側の該当パラメータが直接入ります。部分一致検索の条件パラメータが入ります。普段、何層にも層を作って開発をされている方には気持ち悪いですが、本来これくらいシンプルじゃないと。setMaxResults(25);は検索結果の最大件数が25行までですよ、と宣言しています。こんなこともSQLだけでやろうと思うと、あれ?このDBの場合はどうやるんだっけ?って絶対迷うので、EJB-QLの場合そういうのが無いだけで精神衛生上良いです。(EJB-QLでどう書くんだっけ?とはなるわけだけど・・・・それは仕方ない。同様にEntityQueryを継承していますが、こちらは今見てもさっぱり意味が分からないと思うので、スルーしましょう。MyprojectHomeがどのように使われているのかを見ておくと良いです。ものすごくすっきりしてますが、正直何やってるか分かんないというのが実情ではないかと。table)からgenerate-entitiesで出力されたCRUDするためのコードがどのように動いているのか、もう少し上手に説明したいところですが、余り使われてないEntityQueryのせいでちょっと分かりにくくなってしまっているんです。一通り全体が分かるようになったところでもう一度おさらいしてみて下さい。Seam2009年10月6日火曜日generate-entitiesにより作られたクラス1前回の投稿からだいぶ時間が空いてしまいました。誰も観てないからいいか。ここから先は当面ローカルホストで動かすことを前提とします。(ごめんっ)さて、generate-entitiesによりテーブルから自動的にクラスとJSFを作成して貰うことで、前回はプログラムコーディングが1行も無しでCRUDできてしまいました。RailsにしてもSeamにしてもここまでは皆さん喜ぶんですが、当然これでは仕事にはなりません。深みに嵌らないといけませんが、今回はまずgenerate-entitiesで作成されたクラスを見ていきましょう。エンティティBeanというのは、DBのテーブルとのインターフェースに使うマッピングクラスのようなものです。EJB3.0ではエンティティBeanPOJOでなければいけません。EJB3.0の事を知りたくなければこういうのを作るんだ位で読み流してよいでしょう。要はSeamで開発できるようになることが大事。注釈されたクラスがEJB3のエンティティBeanであることを示します。注釈されたエンティティBeanがDB側のテーブルに関連付けられることを示します。ここでは、public.myprojectに対するエンティティBeanであるという宣言。DBのテーブル名」と見なされます。注釈された属性がテーブルの主キーに関連付けられることを示します。基本的にはエンティティBeanに毎に1回しか使えません。エンティティBean毎に必ず一度利用しなければなりません。複数キーに対応する方法はありますが、複雑なので今は割愛します。理由が無ければ単一カラムで主キーを宣言しておいたほうが楽です。属性のゲッターに付与することもできます。注釈された属性がテーブルの項目に関連付けられることを示します。ここでは、属性idとpublic.myproject.idが関連付けられ、idはユニークで、NULLは許容されない、という意味です。テーブルの項目名」と見なされますが、実際には、どのみちnullableを書かないといけないので都度都度宣言が必要です。属性のゲッターに付与することもできます。注釈された属性がNULL許容されないことを示します。これはJPAのアノテーションではないので、Hibernate環境でなければ使えませんが、SeamにはHibernateが同梱されているのでほかの環境に乗り換える予定が無ければ付けておきます。属性のゲッターに付与することもできます。アノテーションを理解すれば何が書かれているかが何となくわかります。自動生成だけあって、いくつか問題があります。・シーケンスに対応されていない。・アノテーションが冗長でメンテしづらい。前者については問題ありありなので、解決しなければなりません。後者については、常にテーブルからエンティティBeanを作るという一方通行なら無視して良いでしょう。逆にエンティティBeanからテーブルを作るという一方通行が好みなら何とかしないと生産性に響きます。僕の場合は後者ですが、話をできるのは少し先。エンティティBeanはシンプルですが、奥が深いので都度都度追加で説明しますが、1つのテーブルにこのようなものを1つ作ることになるんだというのを今回は押さえてください。generate-entities本質的にはあまり関係ないですが、PostgreSQLをリモートから接続できるようにします。restart続いて、myprojectというテーブルを作成します。サンプルですので、カラムは2つしかありません。null);pgAdminIIIなどで、PostgreSQLサーバーに対して接続できる状態であることを確認します。PostgreSQLサーバーがローカルにあるのであれば、それで特に何もしなくて良いでしょう。PostgreSQLサーバーがリモートであれば、ローカルのseamからも見えるようにします。setupの変更場所だけ書くようにします。updateこれで、ローカルのseamでもリモートのseamでも同じPostgreSQLサーバーを見に行きます。(当たり前だけど)続いて、C:\Projects\myproject\resources\META-INF\persistence-dev.xmlの設定がPostgreSQL用になってくれてないので直しておきます。seam-genがやってほしいところ。value="org.hibernate.dialect.PostgreSQLDialect"/>同様に、C:\Projects\myproject\resources\myproject-dev-ds.xmlの設定も甘いので、下記のようになるようにしましょう。<datasources><local-tx-datasource>............(snip)............<metadata><type-mapping>PostgreSQL</type-mapping></metadata></local-tx-datasource></datasources>で、今回は作成したテーブルに対して、自動的にJavaのO/Rマッピングクラスを生成し、CRUD出来るようにします。generate-entitiesこれだけで、myprojectテーブルに対してのCRUDができるようになります。deployして、リモートのJBossにデプロイしましょう。List」を選択します。遷移するとmyprojectテーブルに対しての検索画面が表示されます。簡単にCRUD出来る筈なので試してみてください。次回は、generate-entitiesで作られたクラスを追いかけてみましょう。PostgreSQLJBoss/SeamのデフォルトデータベースのデータソースはHSQLDBというJavaで実装されたものなのですが、PostgreSQLに変えたいのでやっておきます。ローカルにもC:\usr\local\jboss\jboss-5.1.0.GA\server\default\lib\postgresql.jarとして保存しておきます。【seam-genの再実行】HSQLDBからPostgreSQLに向き先を変更します。C:\Projects\myproject\resources\myproject-dev-ds.xmlを削除してからseam-genを実行します。C:\Projects\myproject自体を削除してやり直しても構いません。deploy新しいmyproject.earとmyproject-ds.xmlをLinuxサーバーにデプロイします。再度動作を確認してください。次回は、実際のPostgreSQLのテーブルとORMします。2.2.0.GAがリリースされてしまったので、seam-genやり直し。5.1.0.GAは省略するので、前回に沿って導入してください。2.2.0.GAをダウンロードC:\usr\local\jboss\jboss-seam-2.2.0.GAとして展開します。Seamのセットアップ。コマンドプロンプトを起動して、seam-genを実行。今回は単に動かすだけなので、ほとんど変更しなくて構いませんが、JBossは正しく指定するようにしましょう。typeをearにします。deployとすると、JBossのdeployディレクトリにSeamの空プロジェクトがデプロイされます。JBossが起きていれば、オートデプロイされますし、起きていなければ起こしてやると動作確認可能な状態となります。http://localhost:8080/myprojectブラウザで表示されればオーケーです。5.1.0.GAにdeployします。Linuxサーバー側の以下のディレクトリが一般ユーザで書き込み可能な状態となっていることを確認して、ローカル(C:\usr\local\jboss\jboss-5.1.0.GA\server\default\deploy)からLinux側(/usr/local/jboss/jboss-5.1.0.GA/server/default/deploy)にEARファイル(myproject.ear)とデータソース(myproject-ds.xml)ををコピーします。転送クライアントは何でも良いですが、今回はWinSCPを使いました。JBossが起動していなければ下記のようにして起動します。0.0.0.0以下のアドレスで動作確認できることを確認します。2.2.0.GAがリリースされました。https://jira.jboss.org/jira/secure/ReleaseNote.jspa?version=12312739&styleName=Text&projectId=10071&Create=CreateJBossのデフォルトターゲットが5になりました。Seam2009年7月21日火曜日seam-genなんか、シリーズ化しないと続かない予感がひしひしと・・・なので、とりあえずSeamを最初から動かしてみるってのを書いてみます。目安になりますが、以下くらいのスペックが無いと結構厳しいかと思います。そもそも今書いてるこのノートが動作環境を全く満たしていませんが・・・。ダウンロードhttp://sourceforge.net/projects/jboss/files/JBoss/jboss-5.1.0.GA.zip/downloadhttps://sourceforge.net/projects/jboss/files/JBoss%20Seam/jboss-seam-2.1.2.tar.gz/downloadどこに展開してもよいですが、僕はLinux環境のパスに揃ておくのが好みなので、それぞれC:\usr\local\jboss\jboss-5.1.0.GAC:\usr\local\jboss\jboss-seam-2.1.2として展開します。システム環境変数として、JBOSS_HOME=C:\usr\local\jboss\jboss-5.1.0.GAを登録しておきます。Seamのセットアップ。コマンドプロンプトを起動して、seam-genを実行。今回は単に動かすだけなので、ほとんど変更しなくて構いませんが、JBossは正しく指定するようにしましょう。typeをearにします。explodeとすると、JBossのdeployディレクトリにSeamの空プロジェクトがデプロイされます。JBossが起きていれば、オートデプロイされますし、起きていなければ起こしてやると動作確認可能な状態となります。http://localhost:8080/myprojectただしくブラウザで表示されれば今回はオーケーです。Seam2009年7月12日日曜日AsteriskAsteriskって、思っていたよりも世に普及しているんですね。中にはローカルにあるツꀀAsteriskと連携してくれるSIPトランクサービスなんかもあるという。将来性がある気がしてしまうので、時間を探して追っかけてみたいと思います。トランクサービスが恒常的に提供されるサービスなのか、つまりずっと同じ電話番号を利用できる類のサービスなのかはどこも説明が足りていない気がします。この辺がクリアにならないと安心して利用できないという。3.0リリースされたので早速アップグレードしました。コピペできるようになったのは良いけど、、、、ボタン長押しで、iPodやSafariが終了しなくなってしまいました・・・・・常にメモリ不足な感じで結構重い。http://plusd.itmedia.co.jp/mobile/articles/0906/18/news013.htmlデザリングにかなり期待していたのですが、日本はやっぱりだめ。帯域細いからな・・・。アップルにデザリングに関する記述があるから採用されるのだと思ってた・・・。http://www.apple.com/jp/iphone/softwareupdate/残念ですね。5に一番対応したいのはredhat自身ではないかと思いますが・・・。5.1.0.GAがリリースされてしまっているので、どこにターゲットを据えてるか位は知りたいところですね。5.1.0.GAやばい。5.1.0.GAがリリースされてる。http://www.jboss.org/jbossas/docs/Release_Notes/510GA/readme.htmlhttp://www.jboss.org/jbossas/http://sourceforge.net/project/showfiles.php?group_id=22866&package_id=16942&release_id=684683というか、JBossASじゃなくてJBossなのね・・・。EJB3もいつの間にか永遠のベータ版から脱却した模様。あー、5.0自体余り見てなかったのに。USB超今更、、、というか正直今までは余り関心が無かったのですが、最近の急激なUSBメモリの下落を受けまして、なんとなく8GBのを調達しましたので、ubuntuを突っ込んでみました。やり方は色々あるようですが、まー、とりあえずお試しってことで、一番シンプルな単に編集可能なLiveCD。後述するバグが無ければ以下の方法でオーケーです。USBメモリから起動できないマシンの場合は、CD-ROMから起動して、USBメモリ側を呼ぶ形になります。USBメモリで起動できるマシンであればUSBメモリを持ち歩くだけでどのマシンでも起動させられるスグレモノ。https://wiki.ubuntulinux.jp/UbuntuTips/UsbInstall/CreateUSBStartupDiskただし、9.04の不具合でUSBメモリにインストールした場合に変更が保持されないと言うどうしようもないバグがあるので、下記で対応が必要。http://another.maple4ever.net/archives/859/http://nofx2.txt-nifty.com/it/2009/04/usb-ubuntu-linu.html9.04のディスクイメージを落としてきてCDに焼いてubuntuをブートする普通のやり方の方が楽だと思いますが、CD起動できない?など諸事情のある方はWindowsからインストールする方法もあるようです。http://www.pendrivelinux.com/usb-ubuntu-904-persistent-install-windows/これで普通に使えて、変更した差分が正しく反映されていることは確認できましたが、USBメモリの特性としてHDDに比べると寿命が短い事と、落としたりなくしたりするリスクが高いので、重要なデータは極力含めないようにしたほうが良いですね。その意味では、最初から変更を受け付けないという利用方法もアリなのかもしれません。速度は犠牲にするとして、USBメモリ自体を暗号化した状態で利用できる方法があると良いかもしれませんが、どうでしょうかね。3.0.0.GAJBoss系で一覧新しい情報としては開発環境であるJBossToolsのメジャーバージョンアップですね。http://in.relation.to/Bloggers/JBossTools3IsHere日本語対応版がすでにありますので、こちらを使うのが手っ取り早いです。http://sourceforge.jp/projects/japan-jbug/downloads/38753/InstallerForJBossTools-3.0.0.GA-R200903141626-H5-win32-0.0.16.jarただし、巨大なので要注意。JBossはじめます。なんとなくJBoss主体で暫く書いていきます。根を詰めると飽きるのでぼちぼちやります。今日はWordpressの設置だけ。(26)最初の年末を迎えることが出来ました。PostgreSQL共通項目を追い出そう。@Versionアノテーションテーブルは日本語で、Entityは英語。3.0.0.GAはじめます。Worksというベンチャー企業の代表をやってます。JBoss関連はできるだけ新しい情報を配信したいと思ってますが、なかなか時間は無いもので。趣味はドラムとギターです。最近は、YAMAHAの赤ラベル・グリーンラベル中心にオールドギターの収集癖が止まりません。あとは、バイク弄りとか。オールドMac収集とか。髪も髭も伸び続けてます。