Javaで3次元幾何形状を扱うためのライブラリ『jgeom』
『jgeom』は、Javaで3次元幾何形状をあつかうためのライブラリです。
幾何形状の論理演算ができるライブラリを探していたときに見つけました。
「さすがJava、何でもございますなぁ」と関心するばかりです。
実行スピードではC/C++やFortranに及びませんが、ライブラリがこれだけ豊富なJavaでは開発スピードがピカイチという強みがありますね。
『jgeom』は、Javaで3次元幾何形状をあつかうためのライブラリです。
幾何形状の論理演算ができるライブラリを探していたときに見つけました。
「さすがJava、何でもございますなぁ」と関心するばかりです。
実行スピードではC/C++やFortranに及びませんが、ライブラリがこれだけ豊富なJavaでは開発スピードがピカイチという強みがありますね。
情報(データ)を視覚化するためのライブラリ『prefuse』と『flare』の紹介です。
与えられた情報は膨大だ。
そこからほしいデータをスムーズに取り出したい・・・
さぁ、どうする?
与えられた情報をうまく視覚化する事が一つの解法ではないかと思います。
情報をうまく視覚化することで、情報全体を俯瞰できるようになります。
俯瞰することによって、情報のどの集合のなかに、目的の情報がありそうか見当がつけやすくなるからです。
また、データをいろいろいじっているうちに、新しい発見があるかもしれませんね。
このデータ構造とこのデータ構造は似てるなぁとか、局所的には違うように見えるデータ構造でも、大局的見てみると似ているデータ構造があるぞ・・・なんてかんじで。
前置きが長くなりました。
『prefuse』は、Java用のライブラリです。
ActionScript3用のライブラリとして『flare』が提供されています。
ライセンス形態は、「BSD license」です。
まずは、「visualization gallery」や「demonstration video」で、そのおもしろさを体験してみてください。
p.s.
あー、じっくりプログラミングしたいかも・・・
いろんなことが、Javaだけで簡潔できそうな雰囲気。
やってみないとわからないけどね(笑)
「Google Calendar」をスケジュール管理につかっている方も多いと思います。
携帯からも使えると、ちょっとしたスケジュールの管理や、メモがわりにも使えて便利かも。。。と考えて、
「Google Calendar」を自作メールアプリケーションに組み込むべく、「Google Calender Data API」に挑戦してみました。
今回、試してみたのは、次の5項目です。
○カレンダーリストの取得
○カレンダー内のイベント取得
○カレンダー内のイベント検索
○イベントの追加
○イベントの削除
これらの機能をJavaで実装する方法を紹介します。
メールを送ってユーザ登録をするメールアプリケーションを作成します。
これから開発するメールアプリケーションは、「rigster@loclhost」にメールを送信すると、送信者のメールアドレスがデータベースに登録されるといものです。
実際の作業は、次の3つです。
(1)データベース利用するmailetのスーパークラス(抽象クラス)「DBMailet」を実装する
(2)ユーザ登録を行うクラス「Registration」を実装する
(3)「JAMES」に「Registration」クラスをmailetとして登録する
では、それぞれの内容を順を追って紹介します。
「JAMES」でメールアプリケーションを作成するときに、データベースが利用できるとなにかと便利です。
データベースのデータを利用することで、各ユーザさんに特化したサービスを提供できますしね。
そこで、「JAMES」でデータベースを利用する方法について、説明したいと思います。
まずは、データベースを利用するための設定を紹介したいと思います。
今回利用するのは、「MySQL」です。
では、設定を方法を順に説明していきます。
「JAMES」で"matcher"と"mailet"を実装したサンプルを紹介します。
「JAMES」ってなんぞや?というかたは、これまでの記事をご覧ください。
ここで紹介するサンプルは、ユーザ名"kazuhiro"宛てのを受信したら、「メッセージネーム」と「メールの本文」を表示するというものです。
メールの本文は、マイムタイプが"text/plain"であるとします。
実装するのは、次の二つのクラスです。
○「MyMatcher.java」
受信したメールのあて先がユーザ名"kazuhiro"かどうか判断するためのクラス
○「MyMailet.java」
「メッセージネーム」と「メールの本文」を表示するためのクラス
では、実装したコードを示します。
メールひとつで、ブログにエントリーを投稿したり、画像をアップロードできたりと、いろいろなことができますよね。
また、アイディアややらなければならない仕事、ちょっとしたメモにして自分にメールをすることで、備忘録として利用するなんて使い方もあります。
本来のメッセージを誰かに送るという目的以外にも、工夫するといろいろなことに役立ちそうです。
なんといっても、さっと書いてどこからでも送れるという、お手軽感がいいですよね。
そんなお手軽なメールを利用したサービス/アプリケーションの作成って、おもしろそうじゃないですか?
そのためには、
○メールを受け取る
○メールの内容によって処理を振り分ける
○メールを処理する
といった仕組みが必要です。
で、上に上げたような要求を満たすフレームワークのようなものがないか探してみました。
情報収集にフィードリーダを使っているという方が、多いのではないでしょうか。
フィードリーダを利用すると、それぞれのサイトを回る手間を省ける、
情報が更新されたことを通知してくれるといったメリットありますね。
情報を配信する側にとってもフィードを提供することは、
不可欠な要素となってきているのではないでしょうか。
そんな便利なフィードですが、さまざまなフォーマットが乱立している状態です。
フィードを利用して新しいサービスを提供しようとする人にとっては、悩みのたねです。
そんななか、Google は
「Google AJAX Feed API」の提供を始めました。これによって、JavaScriptから簡単に
フィード情報を取得することができるようになりました。
「Google AJAX Feed API」の使い方については、「「Google AJAX Feed API」で一段上の情報収集を目指そう!(簡単チュートリアル編)」を参考にしてください。
今日は、Javaからフィードを扱うためのライブラリ「ROME」を紹介します。
「ROME」を利用すると「Google AJAX Feed API」が提供している、あるフィードを統一フォーマットで取得するといるという機能も、簡単に実装できそうです。
では、さっそく「ROME」を使ってみましょう。
久々にJavaの話題です。
Googleから提供されているDI(Dependency Injection)コンテナ「Guice」をつかったプログラミングについて、説明します。
DI自体については、あまり詳しくないので(^^;、プログラムを作りながら勉強していくつもりです。
まずは、「Guice」のインストールからです。
「Guice」は、こちらのサイトからダウンロードします。
ダウンロードしたら、ファイルを解凍して、ライブラリをパスの通ったディレクトリに配置してください。
以上でインストールは完了です。
Jakarta Regexp 1.5がリリースされました。
「Jakarta Regexp」は、Apache Jakarta Projectで開発されているJavaの正規表現ライブラリです。
全バージョンからの変更点は、こちら。
バグの修正とパフォーマンス最適化が行われているようです。
「Java SE 6」には、Javaプログラムからスクリプト言語を実行するための機能(JSR 223)があります。
一番面白そうなこの機能に、これまで触れていませんでしたので、今回は満を持してJavaからスクリプト言語を実行してみたいと思います。
実行するスクリプト言語として、「Ruby」を選んでみました。
「Lucene」を使って、日本語を検索する方法を紹介します。
「Lucene」は、Javaで実装された全文検索エンジンですが、デフォルトで用意されているアナライザー「StandardAnalyzer」では、日本語を正確にうまく扱うことができません。
そこで、"アナライザー”として「JapaneseAnalyzer」を利用します。
「JapaneseAnalyzer」では、「Sen」と呼ばれる形態素解析プログラムと日本語辞書を利用して、「Lucene」で日本語を扱うことを"ある程度"可能にしています。
(注)
ここで、あえて"ある程度"と表記したのは、日本語辞書にない日本語は、
扱えないという制限があるからです。
以下、順を追って説明していきます。
「Nutch」でウェブサイトをクローリングする方法を説明します。
クローリングとは、簡単にいえば「ウェブサイトの情報を集めるてくれる仕組み」でしょうか。
(注)
nutchを利用するには、unixがお勧めです。
私は、「CentOS 4」をOSとし用いました。
最初はwindowsでがんばろうと試行錯誤しましたが
多くの無駄な時間をつかってしまうという結果に終わりました(TT)。
「Nutch」利用したクローリングの方法には、
(A)ある特定のネットワーク(intranet)をクローリングする方法
(B)ウェブ全体(whole-web)をクローリングする方法
の2つがあります。
今回は、このblogサイト「http://kazuhiro.ty.land.to/blog/」を起点にして
(A)の方法でクローリングする方法を紹介します。
<キャッシュカードについて>
「生体認証機能付きキャッシュカード」のエントリーで紹介したとおり、キャッシュカードの生体認証がうまくいません。
そこで、いろいろ確認してもらおうと思い、銀行の窓口に行ってきました。
いきなり結果ですが、「カードの再発行」になりました(TT)。
一度登録した情報は、書き換えたり、調査したりすることができないとのことでした。
セキュリティ上の仕様なんだと思います。SuicaなどのICカードでは、何度でも書き換えたりできるのでICカードの仕様ではないと勝手に判断しました。
日々、膨大に提供される情報のなかから、できるだけ多くの情報を見比べて、経験や勘でよさそうなものをピックアップして読むといったことを繰り返していると思います。
この作業、さすがに疲れます。
そこで、ピックアップ作業を任せられる自分コピー、あるいは秘書プログラムをつくるべく活動を開始しました(笑)。
「Quick JUnit Plugin」は、「JUnit」の起動やテストコードと実装コード間の切り替えを簡単に行うための「eclipse」のプラグインです。
「Quick JUnit Plugin」を利用すると、「JUnit」を利用したプログラミングを効率良く行うことができるようになります。
ついに、「Java SE 6」の正式版がリリースされました。当初の予定では、11月上旬にリリースとされていましたが、約1ヶ月遅れのリリースとなりました。
”Sun”からすこし早めのクリスマスプレゼントといったところでしょうか?
Downloadサイトより、「JDK 6」を入手して、インストールしました。
Javaの例外処理というと、まずtry、catch、finallyブロックが頭に浮かぶとおもいます。
よくみかけるのは、下のようなコードではないでしょうか?
catch( Exception e ) { e.printStackTrace(); }
これは、例外処理をプログラムのデバッグに利用した、例外の使い方の一側面にすぎません。
つくづく、例外の種類や利用の仕方(たとえば、どこで、どのような例外を発生させ、どこで発生した捕まえて適切に処理するかという点)についてはあまり深く考えてないことに気づかされました。また、アプリケーションとシステムをつくる場合で例外の扱い方が違うとか・・・?(未確認情報)深いぞ例外、とことん浅いぞオレTT。
そこで、検索エンジンと「プログラミング言語Java」第3版、そしてJavaのソースコードを片手に一から例外について勉強です。
参考URL:
http://www.nextindex.net/java/error.html
http://www-06.ibm.com/jp/developerworks/java/020802/j_j-ejbexcept.html
p.s.
良い情報源をご存知の方がいらっしゃいましたら、コメントをよろしくおねがいします。
JUnit 4.0 公開のNewsをPCWEBで発見し、早速JUnitのホームページへ。
なかなかJUnit4.0にたどり着けません。
そこで、
JUnit Yahoo Group→JUnit 4.0 is available →http://sourceforge.net/projects/junit/→Download JUnit
とたどって、なんとかJUnit4.0の入手に成功しました。
たどり着くだけでつかれ果ててしまってのは私だけ?w。
いま、気づいたんですが、
JUnitのホームページ→Overviewの項目のSorceForge
ですぐ入手できるようですTT。
早速、ためしてみたいと思います。
注)JUnitは、Javaで書かれたプログラムに対して単体テストを実施するためのフレームワークです。