2009-10-01から1ヶ月間の記事一覧

Groovy の SwingBuilder

Swing によるアプリケーションのための SwingBuilder が提供されている。 以下は簡単なサンプル。 import groovy.swing.SwingBuilder import java.awt.BorderLayout as BL def swing = new SwingBuilder() count = 0 def textlabel def frame = swing.frame(…

Javaによるオブジェクトの生成について

文字列の初期化 String s = new String("stringette"); // これをやってはいけない String s = "stringette"; // これが正しい 実行される時に新たなインスタンスを作成せず、同じ文字列リテラルを持つ他のコードが、そのオブジェクトを再利用することが保証…

Boolean のアクセッサーに isXXX は有りか?

Java 5 になってオートボクシングが使えるようになり、以下のようにプリミティブラッパーがプリミティブ型と同じように扱えるようになりました。 Boolean b = true; if (b == true) { System.out.println("true"); } では、Boolean をフィールドとして持つ B…

単体テストを簡単に Unitils 〜データベーステスティング 3 〜

前回の blog1.mammb.com からの続きです。 テスト結果の検証 @ExpectedDataSetアノテーションを利用することで、テストメソッド後で、データベースにあるデータの検証懸賞を行うことができます。多くのレコードに対する assert 文を書くことなく、データベー…

単体テストを簡単に Unitils 〜データベーステスティング 2 〜

前回のblog1.mammb.comからの続きです。 テストケースの作成 Unitilsでデータベーステストを行う場合には、JUnit4の場合は以下のようにRunWithアノテーションにて UnitilsJUnit4TestClassRunner を指定します。 import org.junit.runner.RunWith; import org…

単体テストを簡単に Unitils 〜データベーステスティング 1 〜

前回のblog1.mammb.comでは、Unitils アサーションユーティリティについて見てきました。今回は Unitils のデータベーステストのサポートについて見ていきます。 Unitils のDBサポート環境構築 Spring + Hibernate の環境で、Unitils のDBサポートを見ていき…

数値を判断するShell関数

文字列が数値かどうかを判定する関数。 exprにより数値演算を行い、エラーが発生しないかで数値判断できます。 #!/bin/sh IsNumeric() { # # 名称 IsNumeric - 文字列が数値かどうかを判定する # # 書式 IsNumeric string # # 解説 指定した文字列がすべて数…

英数字を判断するShell関数

入力された文字列が英数字だけかどうかチェックするShellサンプル。 #!/bin/sh validAlphaNum() { # 引数が英数字だけの文字列なら 0 を返し、そうでない場合には 1 を返す. # 英数字以外の文字をすべて削除する. compressed="$(echo $1 | sed -e 's/[^[:a…

単体テストを簡単に Unitils 〜アサーションユーティリティ〜

前回の blog1.mammb.comでは、Unitils の導入とユーティリティである assertReflectionEquals について見てきました。今回はもうすこし詳しくUnitils のユーティリティについて見ていきます。 並び順を許容する LENIENT_ORDER オプション assertReflectionEq…

単体テストを簡単に Unitils 〜導入編〜

Unitilsとは Unitilsとは、Unitテストを容易で保守しやすくするオープンソースのライブラリです。JUnitやTestNG、DbUnitやEasyMockをより使いやすくするライブラリです。主な特徴は以下の通りです。 一般的なテストで利用できるユーティリティを提供 Mockオ…

可変長引数メソッドの利用について

可変長引数メソッドによるリストの初期化 リリース1.5より可変長引数が導入されたことにより、リストの初期化を以下のように行うことが出来るようになった。 List<String> homophones = Arrays.asList("to", "too", "two"); 利用できなくなったイディオム 可変長引数</string>…

The Stable Abstractions Principle (SAP) 安定抽象概念原則

安定抽象概念原則とは パッケージの安定度を最大にするには、抽象度を最大にする必要があり、不安定なパッケージは具象でなければならない。パッケージの抽象はその安定性と比例するべきである。 Packages that are maximally stable should be maximally ab…

The Stable Dependencies Principle (SDP) 安定依存原則

安定依存原則とは パッケージ間の依存関係の設計は、安定性のある方向に向かわなければならない。パッケージはより安定したパッケージに依存すべきだ。 The dependencies between packages in a design should be in the direction of the stability of the …

The Acyclic Dependencies Principle (ADP) 非環式依存原則

非環式依存原則とは パッケージ間の依存構造グラフは無閉路有向グラフでなければならない。つまり依存構造が循環してはならない The dependency structure between packages must be a directed acyclic graph (DAG). That is, there must be no cycles in t…

The Common Reuse Principle (CRP) 共通再利用原則

共通再利用原則 パッケージ内のクラスは同時に再利用される。つまり、パッケージ内の1つのクラスを再利用することは、パッケージに含まれた全てのクラスを再利用することを意味する。 The classes in a package are reused together. If you reuse one of th…

static final 変数の初期化

以下のようにstatic final な変数の初期化に失敗した場合にデフォルト値を代入しようとしても、 変数USER_IDが既に代入されている可能性があるためコンパイルエラーとなる。 public class UnwelcomeGuest { public static final long GUEST_USER_ID = -1; pr…

Commons Beanutils の不思議

Commons Beanutils の PropertyUtils.setSimpleProperty() とか使ってて、おやっ、と不思議だったのでメモ。 謎な現象 以下のようなおかしな命名規則のBeanがあり、setSimpleProperty()にて値を設定した場合、 public class Bean { private String lll; // …

OSGiフレームワーク Apache Felix その5

前回のblog1.mammb.comでは、ServiceListener によるサービスの動的な変更について見てきましたが、このための用途として、ServiceTracker というクラスが提供されています。 ServiceTrackerとは ServiceTracker は、サービスの動的な追従を可能とするクラス…

OSGiフレームワーク Apache Felix その4

前回のblog1.mammb.comでは、クライアントバンドルを作成し、サービスを利用する簡単な例を見てきました。今回は、クライアントバンドルを改良していきます。 前回のクライアントバンドルの問題点 前回作成のクライアントバンドルは、バンドルをスタート時に…

OSGiフレームワーク Apache Felix その3

前回のblog1.mammb.comでは、辞書サービスを作成しました。今回は、このサービスを利用するクライアントバンドルを作成します。 クライアントバンドルの構成 前回までと同じ様に、以下の構成とします。 felix-framework-2.0.0 └─ work ├─ example1 ├─ exampl…

OSGiフレームワーク Apache Felix その2

blog1.mammb.comに引き続き、今回はOSGiのサービスを作成します。 作成するサービス 作成するサービスは辞書サービスで、ある言葉が辞書に存在するかをチェックします。サービスの作成には、サービスのインターフェースを作成します。ファイル構成は以下のよ…

OSGiフレームワーク Apache Felix その1

OSGiとは OSGi(Open Services Gateway initiative)とは、Java のモジュールを管理する実行基盤です。元々はシステムの再起動が難しい組み込みシステムにおいて、再起動なくモジュールの入れ替えなどをネットワーク経由にて行うためのものでしたが、最近では…

改行コード変換シェル dos2Unix.sh

指定ディレクトリ配下のファイルの改行コードをCRLF→LFに変換するシェルです。シェル中のLIST変数にて対象ファイルを指定できます。また、変換時の更新日付を元のまま保持するオプションもあります。 ずいぶん昔に書いたと思われるシェルですが、さらしとき…

Swing Application Framework その6:セッション管理

Swing Application Frameworkによるセッション管理 フレームワークはアプリケーション終了時のセッション保存と、次回起動時のセッションの復元の機能を提供します。ここでのセッション状態は、アプリケーションのグラフィカルウインドウの設定内容で、フレ…

Swing Application Framework その5:タスク管理

GUIアプリケーションにおいて、長時間を要する処理は event dispatch thread (EDT)とは別スレッドで実行する必要がります。フレームワークは、このバックグラウンドスレッド処理の始動、停止、モニタの機能を提供します。 Java SE 6 から提供された SwingWor…

Swing Application Framework その4:アクション管理

アクション管理の機能 通常UIコンポーネントのイベントを扱うには、ActionListener か AbstractAction を使用します。 Swing Application Framework では以下3つのアクション管理を容易にする機能が利用できます。 @Actionアノテーション ActionManagerによ…

Swing Application Framework その3:リソース管理

たいていのアプリケーションはテキストやアイコン、フォント定義などの、共通的なリソースを使用します。フレームワークでは、このリソースファイルの管理を統一的に扱う仕組みが用意されています。リソースファイルは、Applicationのサブクラス名に".proper…

Swing Application Framework その2:ライフサイクル

フレームワーク利用時のアプリケーションのライフサイクルは以下の流れで行われます。 launch -- 起動時に、フレームワーク提供のこのメソッドを呼ぶ。 initialize -- フレームワークからオーバーライドした本メソッドが呼ばれる。 startup -- フレームワー…

Swing Application Framework その1:概要

Swing Application Frameworkとは Swing利用のアプリケーション開発を簡単にするフレームワークで、Java 7に含まれることが予定されていましたが、http://www.infoq.com/jp/news/2009/10/java7_m5によると延期されたとのことです・・。半年ぐらい前にメモし…

プログラミングにおける変数名

etc

久しぶりに CODE COMPLETE をパラパラめくっていて目にとまったとこをメモ・ 問題指向の名前 変数名にどのような名前を付けるべきか?プログラミングにおいて非常に重要な要素の一つです。良い変数名はプログラムを読み易くし、コードの理解を助けます。理解…