Wicketのそこそこ美しいと思われる使い方
Mapインターフェイス+PropertyModelを使うといい感じに入力値を受け取れる。
そのクラスへメソッドを実装すれば、パラメータがセットされた状態で実行できるため、きれいに見える。
CalcPage.java
public class CalcPage extends WebPage { private Form<ICalc> form = new CalcForm(); protected void onInitialize() { super.add(form); } private static class CalcForm extends Form<ICalc> { @Inject ICalc calc; private final TextField<Integer> arg1 = new TextField<Integer>("arg1", Integer.class); private final TextField<Integer> arg2 = new TextField<Integer>("arg2", Integer.class); private final TextField<Integer> result = new TextField<Integer>("result", Integer.class); private CalcForm() { super("form"); } protected void onInitialize() { this.arg1.setModel(new PropertyModel<Integer>(this.calc, "arg1"); this.arg2.setModel(new PropertyModel<Integer>(this.calc, "arg2"); this.result.setModel(new PropertyModel<Integer>(this.calc, "result"); super.add(this.arg1, this.arg2, this.result); } protected void onSubmit() { this.calc.calculate(); } private static final long serialVersionUID = 1L; } private static final long serialVersionUID = 1L; }
ICalc.java
public interface ICalc extends Map<String, Object> { void calculate(); }
CalcImpl.java
public class CalcImpl extends HashMap<String, Object> implements ICalc { public void calculate() { Integer arg1 = (Integer) super.get("arg1"); Integer arg2 = (Integer) super.get("arg2"); super.put("result", arg1 + arg2); } }
■
Eclipseと格闘しながら
急に更新されなくなるのでタチが悪い。TDDのサイクルを快適に回していたのが急に止まってしまう。解決方法も、Project->Cleanをやってみたり、mvn cleanをやってみたりと、はっきりしない。そいでもEclipseは便利やけど。 http://oshiete1.watch.impress.co.jp/qa3375505.html
■
寝る前にぼんやりしながら(1)
変数名にしろ、メソッド名にしろ、うまく名前をつけられるとプログラムがぐんと読みやすくなる。Javaを勉強し始めた時は、is○○メソッドを見て「おお!」と感激したのを覚えている。この感動はオブジェクト指向言語でないと得られないんだよなあ。 http://d.hatena.ne.jp/shunsuk/20110926/1317033011
寝る前にぼんやりしながら(2)
マネジメントもそれはそれで立派なスキルだとは思うのですが、「プログラムなんか書いてちゃいけない」などとプログラマの前で発言し、やる気を削ぐようなマネージャーはどうなのかと。進捗管理のために作業を妨害するようなプロマネはどうなのかと。っへ。 http://www.class.co.jp/column/20110726.html
■
寝る前にぼんやりしながら(1)
すすめられてLibreOfficeを使ってみたものの、使いこなせずに挫折。どこで挫折したかというと、図形の線の太さを指定するところ。Webで画面を作るときはいつもpxで指定するけど、cmでしか指定できなさそうだった。紙で下書きをしてからDrawを使うなら、cmのほうが便利なんかな
Inkscapeのほかの用途としては、旅行に行く時にパンフレット(チラシ)を作ったりしてます。けっこうおもしろいよ。
寝る前にぼんやりしながら(2)
今日はDatabaseTesterの日。FlatXmlDatasetを量産した。テストメソッド一件につき1ファイルで臨んでいるが、果たしてこれはまっとうな使い方なのだろうか。問題があったとしても、Greenをキープしておけばテストケース側をリファクタリングすればよい。NPNP!!
テストケースと本番コードが互いに補完するという話。すばらしい。