2008-02-01から1ヶ月間の記事一覧

GoogleとYahoo

Googleの競合であるYahooについて、「ネットを書籍でたとえると、目次を作ったのがYahooで、索引をつくったのがGoogle。あくまでインデックスをつくることに徹し、情報そのものを所有も占有もしない」と比較する。 なるほど。分かりやすい説明だ。

DB2逆引きwiki

http://db2watch.com/wiki/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8今、仕事でDB2を使っているので、とりあえずメモ。

MS主要製品のキーボードショットカット一覧

http://www.microsoft.com/japan/enable/products/keyboard/default.mspx

よりスマートな画面遷移?

先日、社内のRailsな人にSAStrutsのことを軽く説明する機会がありました。 以前のエントリーに書いた『画面に表示するデータを準備する』メソッドの 名前は遷移先のjspファイル名にあわせる、という非公式の私のお作法を説明した後に、 以下のようなコードを…

WEB+DB PRESS Vol.43

ETC

「WEB+DB PRESS Vol.43」の献本を頂きました。 ありがとうございます! > 技術評論社のウェブDBプレス編集部の方々 ササッ、と感想を書いてみる。 入門Scala オブジェクト指向と関数型言語をJava VM上で融合した次世代高速スクリプト言語 Vol.43において個…

実行メソッドのネーミングルールを検討してみる

従来のStrutsであれば、「通常のアクション」が XxxActionだとすると、 「画面初期化用のアクション」は InitXxxAction とするのが慣習でした。 SAStrutsでは従来のStrutsと異なり1つのアクションが 複数の実行メソッドを持つことができます。 このアーキテ…

SAStrutsとStrutsのアクションのスコープの違い

SAStrutsとStrutsはアクションのコンポーネントの スコープが異なっているので注意しなければならない。 アクションのスコープの違い Struts singleton SAStruts request 生Strutsのアクションが持つフィールド 複数のスレッド間で共有される一方、 冗長化構…

『データ型を1桁増やす』をなめんな!

業務であるデータ型を1桁増やす対応をしていた。 これがまたえらいハマってしまった。 普段はほとんど使わないDB2なんですが、 DECIMAL型 はVARCHAR型と違ってALTER TABLEを使って データタイプの変更は出来ないことが判明。(ナニー) 意味不明なエラーメ…

ResourceSynchronizerスゲー

SAStrutsのチュートリアルの「リッチなエラーページ」と 「ResourceSynchronizer」の組み合わせはマジですごい! どんな感じでスゲーのかはを順を追ってみてみましょう。 1.Exception発生時に表示されるページ 初期表示はスタックトレースですが、左側のツ…

「カスタムタグ」と「EL式」の使い分け

JSPファイル内の記述方針についてですが、 「カスタムタグ」と「EL式」の使い分けに悩みそうだ。 足し算フォーム(タグリブベース) <s:form action="/add"> <html:text property="arg1"/> + <html:text property="arg2"/> = <c:out value="${result}"/> <html:submit property="submit" value="サブミット" /> </s:form> 足し算フォーム(EL式ベース)

入力値を受け取るためのプロパティ

入力値を受け取るためのプロパティは、バリデーションエラーになっても値を格納できるように プロパティの型をStringあるいはbooleanで定義してください。 SAStrutsはかなりいい感じだと思っています。 ただ、上記の仕様はおそらくStruts本体の制約とはいえ…

Source アーカイブファイルを閲覧したら文字化け

EclipseでSource Attachment Configrationで指定したjar等に含まれるソースコードを閲覧しようとした時に文字化けしたという経験はないでしょうか? Open Type(ショートカット:Ctrl + Shift + t)やOpen Declaration(ショートカット:F3)などを使ってフ…

LogoutAction

public class LogoutAction { public HttpSession session; @Execute(validator = false) public String index() { session.invalidate(); return "logout.jsp"; } } Super Agile Strutsチュートリアル(※)にあったLogoutAction のクラス。 いいですねぇ。 …

オレオレAjaxアノテーションで超簡単Ajax

チュートリアルのダウンロードのソース見てたら「あれ?これパクれば Ajax できるんじゃね?」と思ってさっそくやってみた。クラス名とか気にしないで・・・。 すぱいだー日記さんにインスピレーションを受けて SAStrutsで自前AjaxアノテーションとAOPを使っ…

JdbcManagerのwhereでnullと一致を条件にしたい

> 現状のJdbcManagerでwhereにnullのプロパティを指定すると、 > NullPointerExceptionになるようなのですが、回避策はありますでしょうか。 SimpleWhere を使ってはいかがでしょうか. SimpleWhere なら,パラメータの値が null の場合は 条件に加えられま…

あるアクションから別アクションへのフォワード

あるアクションから以下のようにHogeActionのfugaメソッドを リダイレクトで呼ぶことは可能でした。 return "/hoge/fuga?redirect=true"; しかし、以下のようにあるアクションから以下のように HogeActionのfugaメソッドをフォーワードで呼び出そうとすると …

svn.exe のダウンロード先URL

WindowsのSubversionコマンド(svn.exe)のダウンロード先URL http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 いつも忘れて、探してしまうのでメモっておく。

javaのプロパティファイルでへたこいたー

お客さんの社名変更に伴い社名の文言修正していました。 native2ascii されているjavaのプロパティファイルに 社名が記載してあったのを気づかずに納品してしまったー。 (Eclipseで文字列検索しても引っ掛からない。) 皆さんも、私と同じ過ちを犯さないよう…

どのクラスに処理を記述すべきか? 〜 Part2

SAStrutsのアーキテクチャにおいて、それぞれの処理をどのクラスに 記述するのが良いかの検討を引き続き行う。 下図はブラッシュアップした現時点での判断チャート。 順を追って説明してみる。 ユーティリィティ的な処理か? 何を持ってユーティリィティ的な…

どのクラスに処理を記述すべきか?

1つユースケースに閉じていることは、すべてActionに記述し、複数のユースケースで使われるものをLogicに分割するのがシンプルでわかりやすいのではないかと、そう思ったわけです。 <<中略>> 追記2:コメントへの回答ですが、ユーティリティは、staticメ…

FEST-Assert 0.9:Javaのテストに「流れるようなインタフェース」を

Java向けテスト補助ライブラリ「FEST-Assert 0.9」を利用すると、「流れるようなインタフェース」でテストを記述することが可能になる。 FEST-Assert http://fest.easytesting.org/assert/ これ良さそうですねぇ。 サンプルコードも以下のようになるらしい。…

S2JDBCでジェネレーション ギャップ パターン

エンティティは @MappedSuperclass が指定されたクラスを継承できます。@MappedSuperclass には、エンティティと同じように永続プロパティを定義できます。 定義された永続プロパティは、サブクラスの永続プロパティとみなされます。 スーパークラスとサブク…

Doltengでこんなことができるといいなぁ

Doltengで以前からこんなことができるといいなぁと 感じていたものをフィードバックとして書いてみる。 複数プロジェクト対応 フロントや管理用といったEntityパッケージ等の 共通パッケージを持たないwebアプリプロジェクト、 そして、複数のwebアプリから…

DateConversionUtil

DateConversionUtilというのは、Seasar2(org.seasar.framework.util) に入っているユーティリティで、XxxConversionUtilが いろいろ用意されています。 Javaの標準の日付関連APIは結構しょぼいので、 こういったユーティリティは便利ですねぇ。 使用例: Str…