チェックボックする

Controllerの@RequestParamアノテーションで、チェックボックスのチェック結果を受け取るとき、こんな風に書くとエラーになります。

public String post(@RequestParam("isTrue") boolean isTrue){
  //...
}

チェックしなかった場合「パラメータがない!」と言われます。このときは、こうしたらいいよ。

public String post(@RequestParam(value="isTrue",required=false) Boolean isTrue){
  //...
}

Junitテスト実行時のHeap sizeを増やす方法

すぐ忘れてしまうのでメモ。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <forkMode>pertest</forkMode>
    <argLine>-Xms512m -Xmx512m</argLine>
    <testFailureIgnore>false</testFailureIgnore>
    <skip>false</skip>
  </configuration>
</plugin>

mahoutのJobのUnitテストが結構メモリを食う。。なんででしょう。

関西Java エンジニアの会にいってきた

前回(かな)のUstを結構楽しんだので、今回やりくりして参加してきました。つらつらと感想を。

  • スーツの人が多くてびっくりした。Java = エンタープライズ系 = スーツということらしい
  • Javaは「JSR ..」で語るとかっこいい
  • あいかわらず自分がクライアント技術弱者であることを思い知る。クライアントサイドのパフォーマンスなんて、意識したことなかった。この時代に。もっと勉強しないと。
  • いや、勉強してどうのこうのするのは難しすぎるから、GWTを使おう!という話だったか。
  • でもGWTをつかっても、自分の画面構築のセンスレスさ加減に絶望するよね。ギブミーセンス
  • Jenkins のプラグイン、本当に簡単に作れそうだった。
  • でもプラグイン、思いつかない、、
  • pbcopy/pbpaste
  • Jenkins 使ってよかったときは?(それで会社にサーバをたてる説得したい)という質問があって、自分でも考えてみた
    • レガシー : ビルド方法が整理できる。テストがなくても「ビルドできない」をすぐ検知できる。特にレガシーだとフルビルドにリソースと時間がかかるからあんまり「フルビルドしてからコミット」ってできない(うちだけか)。CIサーバでビルドしてみている間、ローカルマシンで開発続けたりできる。うれしい
    • 新規開発:「CIにのせる」前提でプロジェクトを構成すると、ビルド、デプロイ手順がシンプルになりうれしい。テスト書いてフィードバックがすぐ得られると、やっぱりうれしくてやみつきになる
    • こんなところか
  • Glassfish 、JerseyのUnitTestつくるとうらで立ち上がっていたあのサーバか?
  • といってもミドルウェアを乗り換えるのって勇気がいるよね(すみません)
  • Spring Roo、いまつかっているがデータベース部分もっていないので、使いこなせていない。やっぱりEntityのCRUDをするようなアプリケーションがかーーんたんにできてしまう、というところが売りだから。
  • あと、自動生成ものって、ちょっと編集してしまったらもうあとは自力で開発、、みたいになりがちだが、RooはAspectJを利用して編集箇所と自動生成箇所を分離しているので、やりやすそうですよ(やったことないけど)
  • しかもRoo Shellを起動しておくと、ファイルを編集したり削除したりすると、整合性がとれるように残りの部分をごにょごにょしてくれるので面白い
  • Elastic Beanstalk 。ちょうどAWS Tokyo 発表の2時間くらい前にLTしてた。タイミングいいんだか悪いんだか。
  • そろそろAWSはさわってみたい
  • 懇親会、知ってる人としか話さなくてごめんなさい

次はウェブフレームワーク祭りですか。Play/Lift あたりが希望です(こっそり言ってみる)

準備、セッティング、発表したみなさま、ありがとうございました。楽しかったです。

コンテナの設定のテスト

アノテーションベースでDIの設定をした場合、設定が各ソースファイルに分散されるので、@Autowired設定にしたものの肝心の注入するBeanにアノテートし忘れていたり、ということがあるのです。

このように、applicationContext.xmlでのコンテナの設定が一貫して行われているか、確認したい場合にも、以前紹介したこの設定が有効です。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/META-INF/spring/applicationContext.xml" })

テストクラス起動時にapplicationContext.xmlの設定どおりにコンテナをセットアップするので、設定ミスがあるとテストが起動できなくて失敗します!
Seleniumのような統合テストを設定してればそれで賄えそうですが。

HBaseのデータ構造について考える

http://www.slideshare.net/hmisty/20090713-hbase-schema-design-case-studies

キーが長くなりがちなのですが、マルチテナントの場合分けたテーブルを分けた方がいいのか、キーを長くして保持した方がいいのか、どうなんでしょう。