Java

リファクタリングワークブック その4

なんか、いろいろあって、月曜朝から火曜夜まで働き詰めになることになりました。死なないようにがんばります。ということで、前回の続き。データの群れからかな。これは、クラスにするか、そのままかの判断が難しい。各項目が非常に強い関連を持っている場…

リファクタリングワークブック その3

なんか連載のようになってしまったんだけど、とりあえず、今日もこの話でつっ走ってみます。クラスのインターフェイス不一致から。今は、一人での開発が多いので、そんなことは起こらないんだけど、誰かのライブラリを使う場合とかはよく起きるね。そういう…

リファクタリングワークブック その2

今日は、巨大なクラスからクラスインターフェイスの不一致あたりまで読み進めました。巨大なクラスはSimpleSVNClientで苦しめられたJTableクラス。データは別クラスが管理しているのにも関わらず、このメソッド量。多すぎます。デザイン系を別クラスにした方…

リファクタリングワークブック その1

さて、今日からリファクタリングワークブックをやり出した。今日は、コメントと長すぎるメソッドをやってみました。以外と難しい。これは勉強会でやればとっても面白いかも。たぶん、人ぞれぞれで違ったリファクタリングが見れるしね。素晴らしい気づきが得…

Chura SuperAgile

今度のプロジェクトをChuraを使って、やってやろうかと思っている。SuperAgileのサクサクした開発とはどんなもんかと思って、ちょっと触ってみたのだが、コンパイルエラーが出ると、tomcatが止まってしまう。これじゃ、今までの開発とそれほど変わらないじゃ…

AjaxFW 0.1.0

http://pluswing.net/download/AjaxFW_v0.1.0.zip完成した。framework.jsのコメントを引用。// 送信処理はdoSubmit()で行います。// 第一引数はthis固定。 第2引数はコールバック関数を指定します。// また、送信処理を行うタグは必ずformタグで囲ってくださ…

Ajax

MaskatはIDEまでついてリッチな画面が作れますが、あそこまでする必要がなく、一部だけAjaxにしたいって要望がほとんどな気がします。自分としても、勉強がてらAjaxFrameworkを作ってみようかなと。簡単なやつですが。とりあえず、formタグ内の情報を自動送…

Design by Contract(7)

ひとまず完成したと思ったら、Contract4Jなんてのを見つけた。見てみると・・・これ、ほとんど同じ(笑)まぁもちろんのこと、Contract4Jのほうが完成度高いけどね。あったんだね。ただ、SeasarとかSpringとかとの連携はできるんだろうか・・・まぁそれは良い…

Design by Contract(6)

SeasarとSpringで使えるようにインターセプターを書いた。テストも同梱してあるので使い方は見ればわかると思う。コアDesignByContract_v0.1.zipSeasar版エクステンションDesignByContract_S2_v0.1.zipSpring版エクステンションDesignByContract_Spring_v0.1…

Design by Contract(5)

ひとまず完成した。DesignByContract_v0.1.zipclass Foo { @Invariant(enableds={true, true}) @PreCondition(exps={"$1.doubleValue() == 10", "$2.intValue() > 0"}) @PostCondition(exps={"$1.doubleValue() == 10", "$2.intValue() > 0"}) int invaliant…

Design by Contract(4)

ほぼ完成しました。前回紹介したのとほぼ変わってませんが・・・こんな感じで書けます。@Invariant(enableds={true, true})@PreCondition(exps={"$1.doubleValue() == 10", "$2.intValue() > 0"})@PostCondition(exps={"$1.doubleValue() == 10", "$2.intVal…

Design by Contract(3)

さて、前回の実装とはだいぶ違ってきました。まず、DoubleやLongはImmutableなクラスなので、不変表明ができないことに気づく。 (遅い・・・)+基本的に、そういうのってクラス内オブジェクトにアクセスできないとほとんど使えねーじゃんってことにも気づく…

Design by Contract(2)

@Invariant(exps={Exp.EQUAL}, values={"10.0"})public int invaliantMethod(double d, int x) {・・・}とこんな感じで書くと、CGLIBでうまいことチェックを入れるようにしてみた。とりあえず、うまくいってるけど、どうしても、String型と他の型の比較にな…

Design by Contract(1)

Design by Contract をご存知だろうか?契約による設計と言うやつで、不変表明・事前条件・事後条件で構成される。Eiffelという言語では言語レベルでサポートされているが、Javaでは対応されていない。(assertがそれにあたるのか?)とりあえず、本当に対応し…

JUnitでみるデザインパターン活用術 (2)

今回は、Testインターフェイスとその派生クラスについて見てみることにする。 クラス図で示したとおり、Testインターフェイスを実装しているクラスは2つある。 TestCaseクラスとTestSuiteクラスだ。 TestSuiteクラスはTestインターフェイスインスタンスをVec…

subversionを簡単に扱う

さて、またバグフィックスをしたので、ここに紹介。SimpleSVNClient_v0.2.3.zip今回の修正はヒストリー。月がよくよく見たら1月ずれていたのを修正した。さて、動作しているところをキャプったのでそれも公開。subversionをインストールして、リポジトリさえ…

Junitで見るデザインパターン活用術

前にmixiで書いてたのを公開。書くことないときに、これ載せます(笑)さて第一回。↑保存すると大きくなるよjunit.frameworkパッケージを見てみよう。 ざっと説明すると、 AssertionFailedErrorから連なる3つのクラスはどうやらテストの結果エラーになったもの…

Swing

さて、先に紹介したSimpleSVNClientだが、もちSwingで作った。Appletは何度か触ったことがあったが、Swingは初めて。 私はJをつければそれでいいと思っていたが、はっきり言ってそんなあまちゃんじゃなかった(そりゃそうだ)まず、各コンポーネントは拡張性が…

SimpleSVNClient_V0.2.2.zip

SimpleSVNClient_V0.2.2.zipさっそくバージョンアップ。簡素だがスプラッシュウインドウを表示するようにした。あと、ヒストリの日付がグリニッジ標準時になっていたので、日本時間になるように修正した。とりあえずこんなところ。こんな機能があったらいい…

SimpleSVNClinet_v0.2.0.zip

さて、先に書いた極秘(?)プロジェクトの片方が完成した。まだまだ発展途上で、ソースはぐちゃぐちゃだが、取り合えず公開。SimpleSVNClinet_v0.2.0.zipさて、このツール、言ってしまえばSubversionのクライアントなんだけど、こういうバージョン管理ソフトは…

hibernate 同一テーブルの多対多構造 訂正

さて、昨日の日記で、同一テーブルの多対多構造について書いたが、どうにもこうにもいかなくなったので、リンクテーブルを通常のテーブルの扱いにし、ごにょっとやることにしました。どうにもこうにも、Collectionで持っているやつらは、remove addしたとき…

hibernate 同一テーブルの多対多構造

さて、mixiマイミクのような、同一テーブルの多対多構造を持つ場合、hibernateを使うと何かと問題が出やすい。特に、insert、delete。これがスタンダードなやり方かわからないが、一応うまくいっているので、紹介する。まず、DBの構造。ユーザは割愛するとし…

('A`) hibernate

なんとなく昨日の現象が分かった。どうやら、各Action毎にsessionキャッシュが利いているらしく、(Struts使ってます)すべてのActionでsession#clear()をやったら、うまくいった。 これでいいのか?本当にこれでいいのか?わからん・・・

hibernate

さて、今hibernateでハマってます。どうも、キャッシュが悪さしているのか、AテーブルとBテーブルのリンクテーブルCがあり、Aテーブルのマッピングには当然のことながらsetタグでBのコレクションを持つように書いてるわけです。Bのコレクションのうち一つをr…

BeanShell

mixiのとあるコミュでの話題でちょっと調べていたら面白いのに行き着いたので紹介。BeanShellというものだ。これは面白い。クラス名の解決をどのようにやっているかをちと見てみたのだがやはり泥臭いことをしなきゃいかん。やってることはいたって簡単。jar…

eclipseプラグイン開発の覚え書き

Maskat-JavaEE-supportプラグイン開発は至難を極めた。なんといっても、資料が見つからない。いろいろなサイトを見まくって、デバックをしまくって、ほかのプラグインのソースを見まくってなんとか完成にこぎつけた。最初のうちはさっぱり分からんかったがな…

プラグイン開発中・・・

eclipseプラグイン開発中です。リファクタリングみたく、右クリックメニューから新たなウインドウを開いて処理を選択して・・・っていうので苦戦中。

mixiにて

Study OSSというコミュの中でJUnitで見るデザインパターン活用術というトピックを立てちょっと書き込んだりしてます。最近停滞気味ですが。他人が書いたすばらしいソースを見ると勉強になりますね。次は何を書こうかな・・・

プロファイラ

NetBeansのプロファイラはすばらしく使いやすい。tomcatのプロファイルもウィザードをやればすぐできる。しかも、プロファイル中もサクサクだ。Eclipse+TPTPで頑張ってた2日間はなんだったんだ・・・と思わざるをえない・・・

アノテーション

昨日、Java5の新機能であるアノテーションをちょっとだけやってみた。やってみたといっても、JUnit4を触っただけだけど・・・どうも私はアノテーションとかいうのは好きになれない。確かに便利なのは分かるけど・・・見たサイトが悪かったのかもしれないが、…