Phates CLA
2013-02-07
2012-11 今月の参考資料
Spring Data - Modern Data Access for Enterprise Java
Mark Pollack, Oliver Gierke, Thomas Risberg, Jon Brisbin, Michael Hunger
O'Reilly Media, Oct 2012
Print ISBN:978-1-4493-2395-0
Ebook ISBN:978-1-4493-2394-3
[O'Reilly] [Amazon]
これまで読んだSpring Dataに関する資料の中で、最もわかりやすく、役に立った。説明と例だけでなく、英語の文章もわかりやすい。網羅的で、Spring Dataの一般論から、JPA, MongoDB, Neo4j, Redisなどの個別のデータストアまで広く説明している。中でも、Querydslについて1章を割いて丁寧に説明している点は、他に例のない資料といえる。
2012-11-06
XML datetime and Java Date
XML Schema datetime 型の値を Java プログラムで扱う場合、どうすればよいか?
例えば、"2012-09-25T18:55:00.753-04:00" という文字列である。
すぐに思いつくのは、java.text.SimpleDateFormat クラスだ。 このクラスは、フォーマット文字列を使って日時文字列のパターンを指定できる。 例えば、次のような具合だ。
問題は、XML Schema datetime 型(xs:datetime と表記する)と Java SimpleDateFormat ではタイムゾーンの表記が異なることである。"-04:00" と "-0400" で ':' の有無が異なり、SimpleDateFormat オブジェクトでは xs:datetime の値をパースできない。
先達の方法を検索してみると、パース前に ':' を削除する、という方法があった。さらに調べると、Java 1.5 で導入された XMLGregorianCalendar クラスがあるではないか!
以下のように、アブストラクトファクトリを使ってインスタンスを生成する。妥当な xs:datetime 型の値であれば、タイムゾーンのない短い表記でも問題なくパースできる。
さて、速度とメモリ使用量はどうだろうか?
リソース:
すぐに思いつくのは、java.text.SimpleDateFormat クラスだ。 このクラスは、フォーマット文字列を使って日時文字列のパターンを指定できる。 例えば、次のような具合だ。
問題は、XML Schema datetime 型(xs:datetime と表記する)と Java SimpleDateFormat ではタイムゾーンの表記が異なることである。"-04:00" と "-0400" で ':' の有無が異なり、SimpleDateFormat オブジェクトでは xs:datetime の値をパースできない。
先達の方法を検索してみると、パース前に ':' を削除する、という方法があった。さらに調べると、Java 1.5 で導入された XMLGregorianCalendar クラスがあるではないか!
以下のように、アブストラクトファクトリを使ってインスタンスを生成する。妥当な xs:datetime 型の値であれば、タイムゾーンのない短い表記でも問題なくパースできる。
さて、速度とメモリ使用量はどうだろうか?
リソース:
- javax.xml.datatype.XMLGregorianCalendar - http://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/datatype/XMLGregorianCalendar.html
- java.text.SimpleDateFormat - http://docs.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html
- XML Schema Part 2: Datatypes Second Edition, W3C Recommendation 28 October 2004, 3.2.7 dateTime, http://www.w3.org/TR/xmlschema-2/#dateTime
2012-09-25
Maven and Google Code
Maven を使い始めた。Ant と違い、依存関係を宣言的に記述するだけで、簡単にビルドできてしまう。すばらしい。必要なプラグインを正しく設定できれば。
Google Code にプロジェクトをホスティングしているが、自分の作ったアーティファクトもこのサイトにデプロイしたい。そうすれば、ちょっとした POM の記述で成果物を配布できるし、依存関係も Maven が解決してくれる。リポジトリは Subversion を使っている。
さて、先達も同様のことをやっているのを目にしているので簡単なことだと思っていたが、そうはいかなかった。Google Code のいくつかのプロジェクトの POM を参考にしたり、Google で検索してみたら、いくつかの方法が見つかった。
サンプルの数が多かったので、まず2番目を試した。
mvn deploy を実行すると、メタデータの XML ファイルをダウンロードし始めたきり、先に進まない。Maven のサイトから Wagon を手繰り JIRA をチェックしたり、POM の記述をいろいろと変えてみたが、一向に解決しない。
続いて、1番目の方法を試す。
mvn deploy したら、以下の例外がスローされた。
この確認方法は、間違っている。なぜならば、ここで要求されるパスワードは Google アカウントのパスワードではないからだ。正しくは、Google Code のセッティングページに表示されるパスワードを使わねばならない。
さて、settings.xml でパスワードを正しく設定したら、問題なくメタデータや JAR ファイルをアップロードして、BUILD SUCCESS!
pom.xml (snippet):
setting.xml (snippet):
リソース:
Google Code にプロジェクトをホスティングしているが、自分の作ったアーティファクトもこのサイトにデプロイしたい。そうすれば、ちょっとした POM の記述で成果物を配布できるし、依存関係も Maven が解決してくれる。リポジトリは Subversion を使っている。
さて、先達も同様のことをやっているのを目にしているので簡単なことだと思っていたが、そうはいかなかった。Google Code のいくつかのプロジェクトの POM を参考にしたり、Google で検索してみたら、いくつかの方法が見つかった。
- com.google.code.maven-svn-wagon:maven-svn-wagon
- org.jvnet.wagon-svn:wagon-svn
- org.apache.maven.wagon:wagon-webdav
サンプルの数が多かったので、まず2番目を試した。
- 例 2010-02-23, Google Code as Maven Repository - http://themagicofscience.blogspot.jp/2010/02/google-code-as-maven-repository.html
mvn deploy を実行すると、メタデータの XML ファイルをダウンロードし始めたきり、先に進まない。Maven のサイトから Wagon を手繰り JIRA をチェックしたり、POM の記述をいろいろと変えてみたが、一向に解決しない。
続いて、1番目の方法を試す。
- 例 2012-07-14, Alexey Grigorev's answer to "Deploy maven generated site on Google Code svn?" - http://stackoverflow.com/questions/2943875/deploy-maven-generated-site-on-google-code-svn
mvn deploy したら、以下の例外がスローされた。
認証失敗。settings.xml に指定したユーザ名とパスワードで間違いなく Google にログインできることは確認した。Caused by: org.apache.maven.wagon.authorization.AuthorizationException: svn: Authentication required for '<https://xxx.googlecode.com:443> Google Code Subversion Repository'
この確認方法は、間違っている。なぜならば、ここで要求されるパスワードは Google アカウントのパスワードではないからだ。正しくは、Google Code のセッティングページに表示されるパスワードを使わねばならない。
さて、settings.xml でパスワードを正しく設定したら、問題なくメタデータや JAR ファイルをアップロードして、BUILD SUCCESS!
pom.xml (snippet):
setting.xml (snippet):
リソース:
- com.google.code.maven-svn-wagon:maven-svn-wagon - http://search.maven.org/#browse%7C1276728072
- org.jvnet.wagon-svn:wagon-svn - http://search.maven.org/#browse%7C1127655411
ラベル:
Maven
2012-09-22
Chrome での SyntaxHighlighter の行番号表示
最近、Blogger (Blogspot) での SyntaxHighlighter の表示がおかしいことに気付いた。行番号が二桁以上の場合におかしくなる。どのようにおかしくなるかは、下のリンクを参照されたい。IE と Chrome とを併用しているが、IE の表示には問題がない。
下の先達の手法を取り入れて解決した。感謝。
参考:
下の先達の手法を取り入れて解決した。感謝。
参考:
- 2012-08-22, SyntaxHighlighter 行番号折り返し問題 - http://ywafield.blogspot.jp/2012/08/syntaxhighlighter.html
- 2012-08-07, Bloggerで急にSyntaxHighlighterの挙動がおかしくなったので調べてみた - http://selection9.blogspot.jp/2012/08/bloggersyntaxhighlighter.html
ラベル:
Chrome
2012-09-19
Maven in Eclipse
これまで Java プログラムの開発は Eclipse と Ant を使ってきた。Ant はすばらしいツールだが、依存するライブラリ、つまり JAR ファイルの管理が面倒だ。ビルドツールを今時の Maven に乗り換えることにした。
まずは、Maven をインストールして、Eclipse から使えるようにする。その前に、Eclipse を 3.7 Indigo から 4.2 Juno にアップグレードした。
さて、Maven 用のプラグイン m2eclipse (m2e) を以下の URL からインストールする。
Eclipse を再起動すると、以下のワーニングが...
The Maven Integration requires that Eclipse be running in a JDK,
because a number of Maven core plugins are using jars from the JDK.
Please make sure the -vm option in eclipse.ini is pointing to a JDK and
verify that Installed JREs are also using JDK installs.
eclipse.ini の -vm オプションで JDK を指定せよとのこと。
-vm は -vmargs よりも前に指定すること、改行に注意すること。
これだけではまだ不足、Preference で Installed JREs の設定が必要である。JRE ではなく、JDK を指定すること。
次に Maven をインストールする。ZIP ファイルを解凍し、コマンドパスに bin ディレクトリを追加する。この時点での最新バージョンは 3.0.4 であった。
最後に、m2e から使う Maven を指定する。デフォルトでは Eclipse 組み込みの Maven を使うようになっている。Eclipse のメニュー Window - Preference - Maven - Installations から、インストールした Maven のパスを追加し、これを選択する。
さて、Maven の使い方をマスターしなければ。
リソース:
まずは、Maven をインストールして、Eclipse から使えるようにする。その前に、Eclipse を 3.7 Indigo から 4.2 Juno にアップグレードした。
さて、Maven 用のプラグイン m2eclipse (m2e) を以下の URL からインストールする。
Eclipse を再起動すると、以下のワーニングが...
The Maven Integration requires that Eclipse be running in a JDK,
because a number of Maven core plugins are using jars from the JDK.
Please make sure the -vm option in eclipse.ini is pointing to a JDK and
verify that Installed JREs are also using JDK installs.
eclipse.ini の -vm オプションで JDK を指定せよとのこと。
-vm は -vmargs よりも前に指定すること、改行に注意すること。
これだけではまだ不足、Preference で Installed JREs の設定が必要である。JRE ではなく、JDK を指定すること。
次に Maven をインストールする。ZIP ファイルを解凍し、コマンドパスに bin ディレクトリを追加する。この時点での最新バージョンは 3.0.4 であった。
最後に、m2e から使う Maven を指定する。デフォルトでは Eclipse 組み込みの Maven を使うようになっている。Eclipse のメニュー Window - Preference - Maven - Installations から、インストールした Maven のパスを追加し、これを選択する。
さて、Maven の使い方をマスターしなければ。
リソース:
- m2eclipse - http://m2eclipse.sonatype.org/sites/m2e
- Eclipse - http://www.eclipse.org/
- Apache Maven - http://maven.apache.org/
2012-08-30
MongoDB 2.2 released
2012-08-29 付けで MongoDB 2.2 がリリースされた。
リリースノートの変更点を見ると、Aggregation Framework と TTL Collections が新機能として加わった。前者は、MapReduce を使わずに、SQL の group by に相当する演算を行う機能。後者は、時間制約の付いたコレクション。Capped Collections は要素の数に制約を付けているが、TTL では生存時間に制限をかけられる。
認証を使っている場合はアップグレードに注意が必要とのこと。
Windows XP はサポートされなくなった。
リリースノートの変更点を見ると、Aggregation Framework と TTL Collections が新機能として加わった。前者は、MapReduce を使わずに、SQL の group by に相当する演算を行う機能。後者は、時間制約の付いたコレクション。Capped Collections は要素の数に制約を付けているが、TTL では生存時間に制限をかけられる。
認証を使っている場合はアップグレードに注意が必要とのこと。
Windows XP はサポートされなくなった。
- Downloads - MongoDB - http://www.mongodb.org/downloads
- Release Notes for MongoDB 2.2 - http://docs.mongodb.org/manual/release-notes/2.2/
ラベル:
MongoDB
2012-06-22
MongoDB Java Driver 2.8.0 released
2012-06-18 付けでリリースされた。
- Java Driver 2.8.0 (June 18, 2012), Release Notes - https://github.com/mongodb/mongo-java-driver/wiki/Release-Notes
ローカルホストの mongod にアクセスする場合に、ホスト名 "localhost" を使えなかった問題 (JAVA-249) が解決している。この解決以前は、"127.0.0.1" を使わねばならなかった。
登録:
投稿 (Atom)