Java

Wicket 1.5-rc2 リリース!

Wicket 1.5-rc2 がリリースされました。なぜか今回は「RC2」ではなく「rc2」です。お間違えのないようご注意ください(笑)。 これは私にとってとても嬉しいリリースなのです! このリリースにあわせて wicketstuff の 1.5-rc2 がリリースされました。そして…

昨日の Wicket に関するつぶやき

Wicket かわいいよ、Wicket Wicket には BigInteger のコンバータがない。BigDecimal はある。 Doma は BigInteger に対応している。けど、Wicket に BigInteger のコンバータがないし、自分で作るのもめんどい割に報われなさそう(使わなさそう)だから、自…

昨日の Doma に関するつぶやき

最近、Twitter でつぶやいてばかりでぜんぜんここを更新していなかったので、つぶやきをまとめ、補足しておきます。 PostgreSQL の FOR UPDATE(行ロック)の話 Doma 1.13.0 では PostgreSQL の FOR UPDATE NOWAIT 構文が使えない。FOR UPDATE は使える。 Do…

Wicket 1.4.10 リリース

先週 Wicket 1.4.10 がリリースされましたね。新たに Component クラスに onInitialize() メソッドと onConfigure() メソッドが追加されました。onInitialize() は、これまでコンストラクタで行っていたような初期化処理を行うためにオーバーライドして使い…

Wicket でこんな風にプロジェクトをすすめました

ちょっとした成功体験を紹介します。 どんなプロジェクトだったか オフコン系の社内業務支援システムをWebベースに作り変えるプロジェクトでした。まだ全部終わってませんので過去形でいうのは適当ではありませんが。 コンポーネントの登録を省力化した とに…

続・Wicket + Guice + warp-persist + JPA を試す

先日のエントリのやり方では Tomcat 上では動いても Glassfish では動かないことがわかりましたので、訂正します。 インジェクタの初期化を Wicket つまり、フィルタ(Wicket はフィルタとして動作している)で行ってはいけないようなので、リスナで初期化を…

Wicket + Guice + warp-persist + JPA を試す

Wicket と ActiveObjects の組み合わせが良いよ!という記事をかなり前に書きました。ところが、その「良さ」を発揮するための Databinder というプロダクトがなかなか Wicket 1.4.x に対応してくれない! んじゃあ、自分でやるぜ! と思って Databinder の…

続・JInputでキーボードの状態を拾うプログラムをUbuntu上で動かしたら動かない

昨日のエントリのやり方では Ubuntu を再起動するともとにもどってしまうので、udev の設定をいじらないとダメだということが判明しました。 まず、デフォルトの設定ファイルを /etc にコピーします。 sudo cp 50-udev-default.rules /etc/udev/rules.d/ つ…

JInputでキーボードの状態を拾うプログラムをUbuntu上で動かしたら動かない

なんでか調べてみたら、JInput が読み込もうとしている /dev/input/* が所有者(つまり root)しか読めないパーミッションになっていたからでした。 chmod go+r /dev/input/* これで解決。

教育を通してわかった「Wicketの良さ」

ここのところJavaによるWebアプリケーションの経験が皆無な人にいろいろ教育してみてわかったのですが、教育の観点からするとWicketはとてもいいですね。 つまり、学習コストが低い。 故あってWicketとともにSlim3も学習対象にしているので、Slim3のような「…

Slim3 にタグライブラリがない理由

Slim3 の Online Demo のソースなどを見てみると、input タグなどはナマで使っていることがわかります。代わりに EL 関数が使われています。 なんかごちゃごちゃしてて見にくいなぁと、脊髄反射的に Twitter でボヤいていたら id:higayasuo さんに返信をいた…

やっぱりJavaって層が厚いんだよね

「層が厚い」ってのは自分自身が積み上げたノウハウの厚さってだけで他の言語も厚いのかもしれないけど、とにかく今自分がJavaを中心とした開発でできていることを他の言語でやろうとするととてもじゃないけどやり切れないんですよ。 具体的な話をしますね。…

整数かどうかのチェックは見落としがち

Cubby の定義済みバリデーションクラスに NumberValidator というのがあります。これは、対象の値が少数であっても負の数でも数値と認識できれば OK というバリデータです。なので、正の整数だけ扱いたい場合はこれだけでは不十分だということです。 ところ…

本当に Scala は Java の半分のコーディング量で済むのか?

「Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)」(通称コップ本)の帯の背表紙のところに「コード量はJavaの半分以下」と書いてあります。 マジで? ということで、実験。 実験方法 みんな大好き Cubby の雛形プロジ…

「より良い Java」としての Scala

「関数型言語とかって Java と違うパラダイムなら興味ないから」っていうあなた! そんなあなたも「より良い Java」として Scala を使うというのも良いと思いますよ。なぜなら Java の資産がすべて使える もちろん Java のクラスを継承することもできる Java…

Cubby 2.0 も(今のところ)GAE/J では使えない

悪いのは GAE/J で、バグらしい。 「2009-04-19」が詳しいです。 結構癖ありますねぇ、GAE/J。

GAE/J では Wicket のファイルアップロードは使えないかもしれない

GAE/J ではファイル出力が許されていません。ところが、Wicket では大きなファイルがアップロードされると一時的にファイルに溜め込むんですね。SessionStore みたいにこの辺も差し替えできないか(BigTable に突っ込んでしまうとか)考えてみたんですが、Mu…

Wicket + Maven なアプリを Google App Engine で動かす その2

昨日のエントリがあまりにも「動かすだけ」だったので、もうちょっとまともなアプローチを模索してみました。ポイントは Maven2 に GAE/J SDK 関連の依存性を追加 ロガーは java.util.logger を使いましょう ローカルで動かそう デプロイしよう Wicket のプ…

Wicket + Maven なアプリを Google App Engine で動かす

ミッションは、Wicket の QuickStart で作成した Maven プロジェクトにできるだけ手を加えることなく Google App Engine で動かすことです。 修正または作成しなければならない点は以下の 2 つです。 セッションストアを変更する。 appengine-web.xml を作成…

人によってはほとんど見かけない Java 文法

独断と偏見でランクをつけてみました。 レア度 F : abstract よく IT ゼネコンさんが気にかける「一山なんぼのプログラマ」はほとんど見ることがないし、なんのためにあるのかもわからないでしょう。元 COBOLer でよれよれになりながら Java をやっている古…

Javadoc の書き方

みなさん、Javadoc 書いてますか? Javadoc は「API ドキュメント」と言われることが多いように、主にライブラリ的なプログラムで書いてこそのものだと思っている方もいるかもしれません。しかしながら、仕様書を Word や Excel(笑)で別途作ると、プログラ…

Wicket + Databinder + ActiveObjects が熱い

すごくいい。とってもいい。何がいいって、まず ActiveObjects から褒めてみますね。 使えるようになるまでがあっというま(設定やコード量的に)。DI コンテナとかいらない。設定ファイルももちろんいらない。 エンティティに合わせて CREATE TABLE を発行…

ActiveObjects にログを吐かせる

XML と完全にお別れしたい諸氏にとって(dicon だって XML だ)、Wicket + Guice + ActiveObjects という組み合わせは魅力的です。 しかしながら、そのままでは懇切丁寧なログを吐く S2Dao や S2JDBC に比べて ActiveObjects は物静かで中で何をやっているの…

Javadoc が書きづらい

Cubby で書いた Web アプリケーションの Javadoc 用のコメントを整備してるんですが、DI を使うと必然的に Setter が増えると思うんですよ。public フィールドでもいいんですけど。 それで、public と protected のメソッドとフィールドには必ず Javadoc コ…

Wicket を褒めてみる

ちょっと前から気になっていたもののなかなか試せず、最近になってようやく試し始めている Wicket について書いてみたいと思います。 最近は Cubby を多く使っていた私にとって、どのへんが良いと感じたかというと。 複雑な画面制御をしてもプログラムが追い…

Seasar と Cobertura の組み合わせに注意

この方と同じ現象にあってます。 [Seasar-user:16661] [S2JDBC]Maven2 surefireレポート作成時にArrayIndexOutOfBoundsException この一連の流れを見ると「そんなの仕様上ありえない」と言われただけで、Seasar 側でどうこうするという話はなし。対応しな…

Cubby で Cool Deploy と Hot Deploy の違いに泣いた

下のような Cubby の Action クラスがあったとします。AbstractListAction は Action を継承した抽象クラスです。 @Path("hoge") public class HogeListAction extends AbstractListAction { // 中略 } それで、View の JSP が違うだけで Action が同じ画面…

COBOL ってすべてスレッドセーフじゃないのか?!

OpenCOBOL で C ソースへの変換結果を見てみたら、WORKING-STORAGE が static 変数になってたんですよ。私の少ない他の COBOL 経験から考えても、たしかに WORKING-STORAGE は static 変数だったような……。 と、いうことはです! こいつらを何も考えずに Jav…

さらにブリッジプログラムをマシにする

昨日のエントリのブリッジプログラムは、異常系の処理があまりにもやっつけだったので少し改良したいと思います。具体的には、COBOL モジュールが見つからなかった場合に例外をスローするようにします。 まず、スローする例外は以下のようにします。 package…

もうちょっとマシなブリッジプログラムを作る

つつましい COBOLer 、いや、COBOList の方々に COBOL プログラム作ったらブリッジの C プログラムも作っておいてなんて言ってもたぶん作りたがらないでしょう。なので、動的に COBOL 製モジュールを呼び出すブリッジプログラムを作りましょう。 Java 側の仕…