Java

Dimension2D に Double の実装が存在しない

表題のとおりなのですが、Dimension2D には double 精度での実装が用意されていません。awt パッケージ内に存在している int 精度での、Graphics2D 以前より存在している Dimension クラスしか JDK には用意されていません。 最初は、図形をあらわす Shape …

アノテーションによる DbC

こちらは、探せばたぶん誰かが既にやっている気もするのですが、引数チェック等をアノテーションでやってしまえないかなということです。メソッドの引数が null じゃないことを検査するコードって頻繁に書いていると思いませんか? null 以外でも、特定の範…

nullable キーワード

コーディングをしていて良くおもうのですが、null じゃまくさくないですか? もちろん、無ければ困ることもあるのですがほとんどの場合、変数は何らかのインスタンスを参照している状態ではないかと。 そこで、考えました。変数はデフォルトで必ず「非 null…

CellRendererPane を利用した描画

セルレンダラの機能を実現するときに使用する CellRendererPane というクラスがあります。 自作のコンポーネントにセルレンダラ機能を持たせるときに、セルレンダラを描画するのに使用します。 過去にも何度か使用していたので楽勝と思っていたのですが、昨…

イテレータ

イテレータってありますよね?コレクションの各要素に対して順次アクセスを行なうアレです。これってデザインパターン的なものなので、Java に限ったものではなく C++ 等にもあったりします。*1たしか C++ の場合、リバースイテレータというものがあります。…

Manager クラスのご使用はほどほどに。

いつも読ませて頂いている RadiumSoftwareDevelopment に、私にとって耳の痛いエントリがありました。 SomethingManager私の作ったクラスには、Manager や Handler という接尾語がよく登場している気がします(汗

実証実験

1年程前から作ろうと思って、作っていない WebFW (http://d.hatena.ne.jp/NetPenguin/20050309) についてですが、考えている方法で本当に実現可能なのかと思い、実験してみました。実験用なので、動くだけのコードで手っ取り早く試しました。 下記のコードを…

前にみた藁えるコード

こんなコードを見ました・・・ 変数名やなんかは変えてありますが、意図は伝わるかと。 List workScheduleDataList = dao.findWorkScheduleDataList(...); List workResultDataList = dao.findWorkResultDataList(...); int count = 0; for (WorkScheduleDat…

HttpServletRequestWrapper にてはまる

ServletAPI に HttpServletRequestWrapper という、HttpServletRequest インタフェースを実装したラッパークラス(の元になるクラス)がありますよね? 私は、長らくアレはただの便利クラスだと思っていました。 ・・・が、どうやらAPIとして用意されているこ…

モックとスタブ

前から、常々 EasyMock によるモックオブジェクトを利用したテストを行なっていて、不満だった点があります。 それは、複数種類の入力(引数)に対する動作(戻り値or例外送出)を設定できないことです。 例えば、引数の値が A である場合は X を戻り値として返…

今日のイカれイケてるコード

本日はこんなのを見つけました。 Struts + JSP です。 <c:set var="action2"><c:url value="/xxxx/ShowFoo"/>.do</c:set> <html:button ... onclick="func(${action2})">実行</html:button> JavaScript のコード内からGETリクエストを行なうため、ShowFoo アクションの URL を取得している JSP です。 普通に Struts の <html:rewrite> タグを使用すれば問題ないのですが、おそらくコレを書いた人は</html:rewrite>…

今日の笑えるコード

今日はこんなコードを見た。昨日ほど笑撃はないですが、これもなかなか秀逸です。(藁 List xxxxList = new ArrayList(); for (int i=0; i; i++) { XXXX xxxx = new XXXX(); xxxx.setHoge(""); xxxxList.add(xxxx); } (;゜д゜) (つд⊂)ゴシゴシ (;゜ Д゜) …

笑えるコード

仕事でこんなコードを見つけた。 List list = dao.findHogeList(xxxx); int count = 0; while(list.isEmpty()) { ++count; xxxx = dao.findXXXX(...); list = dao.findHogeList(xxxx); // 無限ループ防止(100回は越えないものと想定) if (count>100) return …

Sandbox 破られる!?

http://itpro.nikkeibp.co.jp/article/NEWS/20060113/227244/サンドボックスがあるからといって安心していられません。サンドボックスのチェック機構自体を回避されてしまったらもともこもないんで。(汗セキュリティホール自体は去年の11月に発見されていて…

Generics - 複数のインタフェースを実装していることを示す

Generics では型パラメータに extends を使用することで、指定可能な型に制約を課すことが出来ます。 例えば以下の例だと、Sample#invokeFoo メソッドで宣言されている型パラメータ T には、 IFoo インタフェースを実装したクラスのみを指定できます。 // IF…

テストのためのリファクタリング

最近、テスティング野郎*1になりつつあります。もともと単体テストはそれなりに好きだったのですが、ここ1年ぐらいは、テストを簡単に行なえるように、テストのために本体のクラスを書き換えることが多くなった気がします。たとえば、テストコードを書く前…

JSP2.0とカスタムタグ

JSP2.0になってから、JSPファイルを記述するように手軽にカスタムタグを作れるようになりました。また、それにあわせて、TagやBodyTagの系列とは別に SimpleTag なるものも増えています。SimpleTagを使用した場合、従来はdoStartTagメソッドやdoEndTagメソッ…

Struts - 入力エラー項目の見た目を変える方法

入力エラーとなった入力項目の文字色や背景色、ボーダー色を変更するには、html:text カスタムタグなどに用意されている errorStyle 等を指定します。 入力エラーがあった場合、エラーメッセージは入力項目名をプロパティ名として ActionMessages のオブジェ…

最近つかったGenerics技

こんなコードを書きました。 public interface BaseProxySettable { public void setProxy(T proxy); } public interface ChildProxy extends BaseProxy { (省略) } public interface ChildProxySettable extends BaseProxySettable { } メソッドのオーバー…

Struts で一つのフォームに複数のボタンがある場合

Struts を使用していて、一つのフォームに複数のボタンがある場合、通常は LookupDispatchAction を使用して、処理の分岐をおこなうことと思います。 しかし、LookupDispatchAction を使用すると、JSP を見ただけでは、どのアクションが実行されるかが分かり…

EasyMock

EasyMock がいつのまにかに 5.0 対応してました。 ジェネリクスが使われているため、getMock したあとにキャストをする必要がなくてらくちんです。あと、可変引数に対する動作も追加されている模様です。 細かい部分はちゃんと見ていないのでわからないです…

Struts のフォームと入力バリデーション、型変換

上のエントリで、長々と DynaActionForm と LazyDynaBean について記述しているのは、そもそも Struts のフォーム周りの動作が気に入らないからだったりします。 Struts はユーザの入力をフォームに格納しバリデーションを行なう場合、まずユーザの入力値を…

Struts の DynaActionForm で、複数の項目によるプロパティを扱うには

表題だけでは何のことか分からないと思いますが、画面上では複数の入力項目であるが、フォームのプロパティとしては一つである場合のようなパターンです。たとえば、Web アプリで画面上の入力項目として、下記の例のように、郵便番号を配達局番号と町域番号…

多重継承、Mix-in、テンプレート(*´д`*)ハァハァハァアハァ

Struts の Action を拡張して機能を追加していく上で、悩ましい問題が発生しました。 一口に機能の追加といっても、今回のプロジェクトでは二つのカテゴリについて機能の追加を行なうことになりました。 FWの機能的な面での機能追加 業務の共通的な処理の機…

Webアプリのモーダルダイアログ内での画面遷移

Webアプリ、というかHTMLとJavaScriptなのですが。技術情報というよりも、私自身のためのメモです。以下のようなJavaScriptによりモーダルダイアログを表示した場合に、モーダルダイアログ内でサブミット処理を行なうと別ウィンドウが新たに開いてしまいます…

ジェネリクスを利用してキャストを減らす

ひが氏のブログを読んでいたら、 AnnotationとGenerics に以下のような記述があった。 Component component = Foo.class.getAnnotation(Component.class); はOKだけど。 Class clazz = Foo.class; Component component = clazz.getAnnotation(Component.clas…

Struts を使用しての IE [戻る] ボタン制御 with PRGパターン

業務用 Web アプリを作る上で、ほぼ必ず出てくる問題としてブラウザの[戻る] ボタンの扱いがあります。業務アプリの場合、ブラウザの [戻る] ボタンを無効にして良い or 欲しいということがあるのですが、普通に実現するには JavaScript を多用したりと結構…

Struts Flow

http://struts.apache.org/flow/index.htmlあー、私の脳内フレームワーク(http://d.hatena.ne.jp/NetPenguin/20050309#1110388436)の特徴の一つと同じっぽい・・・ function login() { userManager = struts.applicationScope["userManager"]; error = ""; w…

私の考えるAjaxの使いどころ

急速に広まっているAjaxですが、一般業務に組み込む場合はあまり欲張らず、使いどころを押さえて適用した方がよいと私は思ってます。 GoogleMapsやMapionラボのようなAjaxはもちろんかっこよく、使い勝手もすばらしいのですが、いかんせん作業量が多すぎます…

Wicket

ちょっとまえに、現場のお客さんから Wicket なるウェブ用フレームワークを教えてもらいました。 http://wicket.sourceforge.net/JSPじゃなく、HTMLでビューをかけたり、 <html> <body> <span wicket:id="message">Message goes here</span> </body> </html> Javaのオブジェクトを操作することで、画面に値を出力できたり…