2009年12月25日金曜日

WordPress 2.9 (2)

バージョンアップちゃんとすんなり出来ました。でも、2.9.1が出るみたい・・・。
善し悪しありますが、WordPressのバージョンアップは頻度が多すぎます。バグ対応だけのリリースとかないのはどうかと。

2009年12月24日木曜日

RichFaces 3,3,3,BETA1

まだベータ版ですが、RichFacesにJSF 2のサポートが入ったようです。
http://www.jboss.org/feeds/post/richfaces_3_3_3_beta1_released_with_jsf_2_support

WordPress 2.9

日本語版がリリースされたようです。
弊社のHPも、このブログもWordPressなので、バージョンアップしなきゃ。テーマに不都合があると泣いてしまいますが。

しかし、年末ってのは何でかわかりませねんが、忙しくなりますですね。

2009年12月21日月曜日

Google Apps

すっかり時代遅れになっている感じですが、Google Appsで50ユーザーまで無料で独自ドメインのメールがGMailで利用できるんですねっ!
http://www.google.com/apps/intl/en/group/index.html

Google Email UploaderってのでOutlookやThunderbirdからGMailへのインポートは出来るみたいですね。

そこらの安いサーバー使うくらいならよっぽど良いに違いないですね。
登録だけしましたが、、、、MXいきなり変える訳にも行かず。苦笑

2009年12月17日木曜日

SeamTest on PostgreSQL

SeamTestでのDB操作はHSQLとMySQLしかサポートされていません。
PostgreSQLで使いたいところ。ざっと調べると実装は無さそうなので仕方ないからつくろうかな。
フリーな実装をご存知の方がいらっしゃったらお知らせ戴けると。

2009年12月15日火曜日

共通項目を追い出そう。

・作成日
・更新日
・論理削除フラグ

の類というのは、基本的にどのテーブルにも追加していたりしませんか?
こういった場合は、何度も書くのはプログラマとしてアレなので、一箇所に追いやりたいところ。

○追い出したクラス(エンティティではない)
@Embeddable
public class Basis implements Serializable
{
@Column(nullable = false)
@NotNull
private Date entry = new Date();

@Column(nullable = false)
@NotNull
private Date modify = new Date();

@Column(nullable = false)
@NotNull
private Boolean del = false;
}

○呼び出すエンティティ側
@Embedded
private Basis basis = new Basis();

継承するんじゃなくて@EmbeddedアノテーションでDIするというのが、肝ですね。

@Versionアノテーション

なんだこれ?って思っている方も多いかと思うのですが、更新しつつ、テーブルの生データを眺めていると、更新ごとにインクリメントされているのが分かります。
楽観的ロックの能力を付与するためにあるようです。
手で操作する類のものではないので、セッターはprivateにするか取ってしまうのが良いでしょう。
@Version
private Integer version_no;

テーブルは日本語で、Entityは英語。

なんてことをしたい人が世にどれだけ居るのかは存じ上げませんが、EJB3ではそんなこともできます。
以下のようにしてあげれば、
User(Entity)=> ユーザ(テーブル名称)
name(Entity)=> ユーザ名称(カラム名称)

のように翻訳可能です。
あくまでもアクション側からはエンティティ名称で操作するので、日本語が混ざってしまうのは、エンティティだけに抑えるという役目も果たしています。
@Entity
@Table(name="ユーザ")
public class User implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "ユーザ名称", nullable = false)
@NotNull
@Length(max = 20)
private String name;

@Column(name = "パスワード", nullable = false)
@NotNull
@Length(max = 10)
private String passwd;
}

2009年12月14日月曜日

@OneToMany, @ManyToOne

今日2稿目です。
親子関係にある、外部キーを持ったテーブルをEJB3のEntity Beanで表現するために、@OneToMany, @ManyToOneというアノテーションを使います。
決まり文句に近いものなので、押さえておきましょう。
A(1) -------------------> B(*)

○親テーブルA
@Entity
public class A implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Version
private Integer version;

@OneToMany(mappedBy = "a", cascade = CascadeType.REMOVE)
private Set<B> bs;
}

○子テーブルB
@Entity
public class B implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Version
private Integer version;

@ManyToOne(optional = false)
@NotNull
private A a;
}

吐き出されるDDLは以下のようになります。
CREATE TABLE A
(
id bigserial NOT NULL,
"version" integer,
CONSTRAINT a_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);

CREATE TABLE B
(
id bigserial NOT NULL,
"version" integer,
a_id bigint NOT NULL,
CONSTRAINT b_pkey PRIMARY KEY (id),
CONSTRAINT fk26f4fb2dbc3ce1 FOREIGN KEY (a_id)
REFERENCES a (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);

外部キーは自動的に a_id(親テーブル名_id) となります。

EJB3.0 Entityの自動連番とPostgreSQLのserial/bigserial型

意外と書かれていなかったりするので記録を残してみます。普通は主キーにすると思うので、@Idもセットで書きましょう。

・bigserial型として宣言
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

・serial型として宣言
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

ピンとこないかもしれませんが、GenerationType.IDENTITYが肝です。他のDBでも同様と思います。

一昔前はもっとごにょごにょしなきゃいけなかったんですが、今はこれだけで大丈夫でした。

2009年12月12日土曜日

Weldのライセンス

全く気づいてませんでしたが、SeamのLGPLとは違い、APL 2.0なのか。
http://seamframework.org/Download

よくよく見ると、Web Beans 1.0.0.PREVIEW1の時のライセンスはAPL(2.0かどうかは明記されていない)

2009年12月10日木曜日

Thunderbird 3.0

早く寝ろ、という感じですが。苦笑

Thunderbird 3.0がリリースされていたのでバージョンアップしてみました。

が、イマイチ何故にタブがあると嬉しいのかが分かりません。
ブラウザーとは違うと思うんですが・・・。

JBoss事例

海外事例ですが、なかなか面白い読み物です。
http://www.jp.redhat.com/solutions/successstories/Union-bank_1201.pdf
http://www.jp.redhat.com/solutions/successstories/AVIS_Europe_1201.pdf
http://www.jp.redhat.com/solutions/successstories/Daiwa_CS_1201.pdf

JBoss EAP 5.0 日本語マニュアル

リリースノート
インストールガイド
スタートガイド

がリリースされてます。

つまらないところですが、意外と便利?
http://www.redhat.com/docs/ja-JP/JBoss_Enterprise_Application_Platform/5.0/html/Getting_Started_Guide/creating_a_jdbc_client.html

2009年12月8日火曜日

WiMAX....

WiMAXは抱き合わせ販売はしないという方針だそうですが、それは仕方ないとしてビル内で繋がらないと言う情報もあったりして利用を躊躇しますね。
期待しているので、頑張って欲しいところです。

http://www.uqwimax.jp/

2009年12月4日金曜日

Bean Validation: validation everywhere EE 6 edition

JBoss AS6 M1で試せるそうです。先取りしたい人はどうぞ。
Bean Validation: validation everywhere EE 6 edition


Bean ValidationのほかにもJBoss AS6には色々入ってきそうです。

http://www.jboss.org/feeds/post/introducing_jboss_as_6_0_0_m1

EE6 has been approved

良いニュースかな。
EE6 has been approved, yet…

感動!



人身事故にあうと良いことがある?(笑)
夕方、大した用も無くナッツウェルさんにお邪魔してしまったんですが、入口にこんな貼り紙が!

いや~、ありがとうございます。
物を戴いたりするよりもこういう心尽しの方が全然嬉しいですし、こんな事をしていただけたのは初めてでビックリです。

アイディア次第でローコストで出来ることって色々あるんだな、と非常に勉強になりました!

JBoss追いきれない・・・

本日は、中央線の人身事故で1時間弱、電車に缶詰にされ、萎えてしまいましたので弱音を吐いてみます。w

http://www.jboss.org/projects/matrix

をみると、全く追いきれる気がしませんね。増えたものの概要すら分からないもの多数。苦笑
できるだけ追いかけて生きたいのですが、やっぱり人間なので関心のある方に意識は向きますし、もはや単一のプロジェクトの範疇を大きく超えてしまっています。

もう少しすっきり纏めて貰えると嬉しいですね。