スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

J2EE 勉強会 第21回

またまたJ2EE勉強会に参加してきた。

Pro EJB 3の読書会を始めるということで、前のWithoutEJBの読書会の形式に戻った模様(残念ながらその頃はその会のことを知らず、議事録だけを読んで勉強していた)。

読書会に入る前にポジションペーパーで、「こんなMethodあります」を各人が紹介。準備するのも忘れ、その場で何かあろうかと自分の頭の中を検索しようとしたが、最近Javaのソースを何も書いていないので、何も思い浮かばない。他の人のを聞いて、へえという感じだったが、 TigerやGroovyのメソッドの紹介もあり、ちょっと時代にキャッチアップしていない自分を感じた。

ついで、ひがさんの、「How to start up open source project」。ネパールのITカンファレンスで発表した内容のようで、オープンソースの意義についていろいろ知ることができてよかった。オープンソースで一番利益になるのはそのオープンソースを書く人だ、と聞いてなるほどと思った。そして、Open Source 2.0の概念(巷で流行の何でも"2.0"のもじり?)もなかなかいい。結構芯がしっかりしているんだなと感心。日本発のOpen Source、おそらく最大規模と言っていい、Seasarファンデーションにはぜひ頑張って欲しいと思う。三菱東京UFJで採用されるなどしているので、日本のスタンダードになっていくのもそう遠くないのではと思う。

続いて、Pro EJB 3の読書会。今日は最初のIntroductionとGetting startedの章。

ORマッピングは、大変興味があり、少し前まで自分の研究テーマにしていたもので、ブログにもあれこれ書いていたのだが、ここ最近簿記や経済の勉強ばかりしていたせいか、あと6月はワールドカップに熱中していたせいもあって、自分が何を問題にしていたのかがちょっと忘却気味になってしまっている。

今回は、
・JDBCからEJB, EJB2, JDO, ORM, そしてJPAへの流れ。
・理想的なORM
・JPAの利点
・実際の使用方法(Entity, EntityManager, Selectや更新, トランザクション)
といった内容。

Detached Entityについてkoichikさんに質問したのだが、EntityをPresentation層で使うのはよくないからとのこと。後で見たら、koichikさんがすでに日記に書いていた。この部分は、かねがね疑問に思っていたことなので、もう少し検討してまた聞いてみたい。

本の中身はなかなか面白そう。この読書会を充実させるにはやはりあらかじめ予習してくることが必要だ。

私はあまりペーパーが好きじゃないので、この本のpdf版(しかもせこいことにフリーの奴を探そうとする)はないだろうかと探して、Chapter2はあった。URLの2を3に変えたらChapter3もあるだろうかと思ったが、NotFoundでOracleのページに行った。なんでOracleなんだろうと思ったら、この著者、Oracleの人なのね。
とりあえずペーパーを買うことにしよう。

スポンサーサイト

Web更新チェック、DynamicDNC

定期的に更新されているWebページにあるキーワードが現れたらNoticeを送るようにするrubyスクリプトを作った。Googleアラートとかあるが、これはあくまでもGoogleの検索に現れたものが対象。携帯のメールに送れば、リアルタイムに知ることができ、またメッセージを短くしてNotifだけで済むようにすれば受信料は無料になる。このスクリプトは、そのページにあわせて必要情報をピックアウトするようにしているので、汎用性はない。他のページのときは、またそれに合わせてスクリプトを書き換える必要がある。

はじめWindows上で作り、ついで自宅サーバのLinux上においてcron実行させようとした。Windowsは使わないときは休止状態にしているので常時稼動しているマシン上で実行する必要がある。

ところが、これWindows上でうまくいくものがLinux上でうまくいかない。
まずは単純なミス。スクリプトの改行コードがCRLFとなっていたため、頭の
#!/usr/bin/env ruby
でNo such file or directoryと怒られてしまった。
次はこれ。

http = Net::HTTP.start(FQDN, 80)
response = http.get(PATH)

ここでhttpがnilになってしまう。ステータスがすぐにCLOSE_WAITになってしまう。rubyのバージョンを調べると、1.6。これが原因しているのかと思い、バージョンアップしたいと思ったが、apt-get updateをしても、1.6系だ。rpmから1.8をインストールしようとしたが、依存関係が多くて中断。

いろいろ変えてみて、

Net::HTTP.start(FQDN, 80) {|http|
response = http.get(PATH)
}
とするとうまくいった。不可解。

これがそのスクリプト。

あと、ついでにDynamicDNSの更新スクリプトもrubyで作成した。自宅サーバでは、安直にDynamicDNSを使っている。フリー版なのでIPアドレスが変わったタイミングで自分で提供先サーバに行って変えないといけない。またずっと変わらないからといって更新を行わないと、Expireとなってしまう。かといって、頻繁に更新を行うと、これまた無効にされてしまう。

なので適切なタイミングで、更新を行う必要がある。
もともとこれについては、dicedを使っていた。Windows版はちゃんと動くのだが、Linux版はベータ版ということもあってか動作がおかしく、デーモンを起動していてもきちんと更新が行われない。そのため、定期的にExpireの警告のメールが飛んできてその都度、手動でdicedを動かして、更新していた。何か設定が間違っているのだろうかと思っていたがよくわからなかった。バイナリなのでどういう動作をしているのかもわからない。
あるとき、dyndns.orgのサイトを見ると、httpのGETで簡単に更新が行えることがわかった。この程度なら自分で作れる、と思い、いつかやろうと思い、ずいぶんと時間がたった。そうしているうちに、フリーのclientも出てきたのだが、その使い方を覚えるのも面倒だし、問題があったら時間がとられるので自作することにした。

ここでまた、バージョン1.6の問題が出た。1.6ではfileutilsが入っていない。さすがにこの機能を自分で書くのは面倒なので結局インストールすることにした。ソースをダウンロードして、インストール実行。/usr/local/binに作られてしまったので、/usr/binの方にシンボリックリンクを作成。checkinstallを使って、rpm管理にしたかったが、なぜかmakeのターゲットにinstallがないと言われてしまい、うまくいかない。????

とりあえず作ったスクリプトはこれ。更新を行ったときは、メールで通知するようにする。
不親切で何の説明もないので、知りたい方がいた場合は当方まで連絡を。

プロフィール

dayan

Author:dayan
小職は、SE(システムエンジニア)を専門としておりますが、技術的な情報を中心に、それ以外に経済関連の日記、たわいもない日記も載せていきます。
[公式HPもよろしく!]

天気予報

-天気予報コム- -FC2-
リンク
ブロとも申請フォーム

この人とブロともになる

カテゴリー
最近の記事
ブログ内検索
最近のコメント
最近のトラックバック
RSSフィード
月別アーカイブ


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。