G-Cloud創刊


宣伝その2ですw
技術評論社さんから、G-Cloudという雑誌が創刊します。創刊おめでとうございます!
発売は8/6です。


クラウドに特化した雑誌は多分日本発じゃないかと思います。
特集はWebエンジニアのためのAWSガイドということで、Amazon Web Servicesのよさを余すことなく
日本AWSユーザ会が全力で書いた特集がメインになっています。
id:yone098id:c9katayamaJavaから使うプログラマブルAWS側面を特集で書いています。
(ワールドカップ最中で合宿して書き上げた力作ですが、約1名全力で映画とワールドカップだけみてましたね、そういえばwww)


私も末席ながら、HadoopとCassandraの入門を書かせていただきました。
HadoopやCassandraの最初の一歩として参考にしてみてください。



G-CLOUD Magazine
G-CLOUD Magazine
posted with amazlet at 10.08.09

技術評論社
売り上げランキング: 5035



こちらも夏のお供に見ていただければ幸いです。

Javaフレームワーク開発入門


ちょっと宣伝です。

Javaフレームワーク開発入門というきむきむの本のレビューを担当させていただきました。
今振り返ると2年くらいやってたんですね。長かったですが形になってよかったです。
本当におめでとうございます。



内容について

内容についてはid:c9katayamaのブログに書いてあるのですが、幾つか補足しておきます。
この本はフレームワークを使う本ではないです。フレームワークを作る本です。
しかもWebアプリケーションフレームワークに的を絞ってどういう点を考慮しなくてはいけないか、
それを出来るだけわかりやすく、かつ網羅性を高めるというかなり難易度の高いことをしています。


読む人が読めば、きっとこれだけでは足りないと思うことも多いと思います。
しかし、フレームワークを作るにも誰しも最初の一歩というものがあるので、
足りていない点はある程度想定の範囲内におきつつも、最初の段階ではこれくらいはカバーしておけばよいな、
というバランスに注力した書籍です。プログラマとしてはある程度フレームワークを書くケース、
既存フレームワークを拡張するケースというのは避けられないと思っていますが、そういう場面でも
どういう考えの下になりたっているか、またメンバと一緒にどうするべきかを議論する共通用語の確認などにも
使えるでしょう。


最後に


というわけで、書店でみかけたらチェックしてみてください。
そしてそのままレジにGOしてくださいw

クラウドセキュリティ & プライバシー

オライリーさんにクラウドセキュリティ & プライバシーを献本いただきました。
どうもありがとうございます!


この本はクラウドを使う人、クラウドを作る人のどのレイヤの方にもお奨めです。
私が所属する会社のようなSI事業を手がけている方には特にお奨めです。
この本を読んでおくとクラウド環境下におけるセキュリティに対しての概観がかなりつかめるので、
今後クラウドを中心とした事業に注力していく人には大変役にたつと考えます。


セキュリティの本というと技術的なセキュリティ対策だけに目が向きがちですが、
この本ではクラウド環境下におけるセキュリティにフォーカスし、以下のような項目を包括的に網羅しています。

  • クラウドの定義
  • 各セキュリティ対策・観点、プライバシー
  • クラウドにおけるセキュリティ事象とその責任範囲
  • 監査、ガバナンス、コンプライアンス
  • 影響がありそうな米国の法律・グローバルな法律
  • AWSなどのクラウドサービスプロバイダ(CSP)の事例
  • クラウドを中心に今後どうなっていくか


これだけの内容が詰まって300pない程度のボリューム感で内容と比較すると非常にコンパクトになってます。
あまり分厚い本は得意ではない私ですが、職務上必要でもあり、今後しばらくお世話になる一冊です。


というわけで、まだ途中までしか詳細に読んでないがこの続きを読むのを楽しみにしています。
(今はまだ3章の途中です)


クラウド セキュリティ&プライバシー ―リスクとコンプライアンスに対する企業の視点 (THEORY/IN/PRACTICE)

クラウド セキュリティ&プライバシー ―リスクとコンプライアンスに対する企業の視点 (THEORY/IN/PRACTICE)


P.S.セキュリティの本題に入る前段階の2章もクラウドを概観するのにとてもよいです。

P.Sその2.CSA(Cloud Security Alliance)も日本支部が立ち上がったのでこちらもあわせて参加すべきかと思います。

http://www.cloudsecurityalliance.jp/

Cassandra-tools

Cassandra-toolsは、開発時にCassandraの状況を監視するツールです.

どのような設定になっており、どのようなデータが入っているかをURLをコマンドラインや、

ブラウザのアドレスバーに打ち込めば即座に確認できます.


たとえば、

http://localhost:8090/cassandra-tools/show/keyspace/Keyspace1


のように打つと、

{Super1={CompareSubcolumnsWith=org.apache.cassandra.db.marshal.BytesType,
CompareWith=org.apache.cassandra.db.marshal.BytesType, Desc=Keyspace1.Super1
Column Family Type: Super
Columns Sorted By: org.apache.cassandra.db.marshal.BytesType@1532fc, Type=Super},
......
Authors={CompareWith=org.apache.cassandra.db.marshal.BytesType, Desc=Keyspace1.Authors
Column Family Type: Standard
Columns Sorted By: org.apache.cassandra.db.marshal.BytesType@189c12a, Type=Standard}
}


のようにKeyspace1のカラムファミリの情報が取得できたりします.



また、どのようなKeyspaceが現状あるかだけ知りたい場合は、

http://localhost:8090/cassandra-tools/show/keyspaces/


のようにすれば、現状存在するKeyspaceを取得できます.


とりあえずこんな感じの機能をT2でさっくり作って見ました.

@Page("/show")
public class ShowPage {

	public ShowPage() {
	}

        //for HTTP GET with /cassandra-tools/show/clusterName
	@GET
	@ActionPath
	public Navigation clusterName(@In CassandraClient client) {
		String clusterName = client.describeClusterName();
		return SimpleText.out(clusterName);
	}

        //for HTTP GET with /cassandra-tools/keyspace/*the keyspace you want to know here*
	@GET
	@ActionPath("/keyspace/{keyspace}")
	public Navigation keyspace(@Var("keyspace") String keyspace,
			@In CassandraClient client) {
		Map<String, Map<String, String>> keyspaces = client
				.describeKeyspace(keyspace);

		// TODO iterate and format each.
		return SimpleText.out(keyspaces.toString());
	}

        //for HTTP GET with /cassandra-tools/keyspaces/
	@GET
	@ActionPath
	public Navigation keyspaces(@In CassandraClient client) {
		Set<String> set = client.describeKeyspaces();
		// TODO iterate and format each.
		return SimpleText.out(set.toString());
	}

        //ring information
        //for HTTP GET with /cassandra-tools/ring/*the keyspace you want to know here*
	@GET
	@ActionPath("/ring/{keyspace}")
	public Navigation ring(@Var("keyspace") String keyspace,
			@In CassandraClient client) {
		List<TokenRange> rings = client.describeRing(keyspace);

		// TODO iterate and format each.
		return SimpleText.out(rings.toString());
	}

}


プラグインで補助機能を実装していますが、こんな感じでさっくり書いてます.表示部分は手抜きですが今後ということで.

CassandraClientはthriftのシンプルなラッパーです.今後もうちょい機能は足します.

あ、@Inはt2 0.7で入る簡易インジェクト機能です.

というわけでもうちょっと機能を追加して、githubにでもあげようかと思います.

Cassandraを見てみる


最近Hadoop関連のサポートが充実してきたCassandraを見てみる。

Topプロジェクトにもあがったことだし。

コードは比較的シンプル(けど理論の理解は必要ぽい)だし、今なら読みやすい。

依存jarも実行時にはそんなに多くない。コアになるのはThriftっぽい。

Hadoop関連とのインテグレーションも出来つつある。特にMapReduce、ZooKeeper、Avro。でもAvroはまだ限定的なサポートっぽい。

とりあえず0.6.0-beta3で見てみることにします。

T2 0.6.3-gaをリリースしました


T2 0.6.3-gaをリリースしました。

新機能

  1. 初期化パフォーマンス向上対策

初期化パフォーマンス向上は全てのアプリケーションで恩恵にあずかれます。
新機能の詳細については以下のWikiをご覧ください。

http://code.google.com/p/t-2/wiki/Tools

尚、残念ながらこの機能はGAE/Jでのspin-upにはそれほど効果が無いことが判明したので
現状ではGAE/Jで使うときにはディレクトリトラバーサルしてPageを登録するデフォルト挙動のほうが有効です。
今後もGAE/J上でのT2の改善は引き続き行っていきます。

改善点ポイント

  1. @Var/@RequestParam/@SessionParamで型変換をサポートしてほしい。
  2. @Formで使われるDTOをContainer管理化に出来ない
  3. t2.componentsで登録したコンポーネントがクラス名など間違っていてもエラーにならない
  4. PagePropertiesGeneratorのエラーメッセージ改善

1の改善点は主に型変換とFormの扱いについてです。
型変換についてはポリシとの兼ね合いで迷いましたが、基本的な型変換は許容することにしました。
@Formで使うDTOの対応で、既存DIコンテナやJSR299 CDI(Contexts and Dependency
Injection)などでコンテナ管理できるようになります。
詳細は以下をご覧ください。

バグ修正

  1. Formの日付変換がロケールが違うと正しく機能しない
  2. プラグインのafterActionInvokeメソッドが呼ばれない

注意事項

1.FormResolver#resolveのAPIの引数が変更になりました.

拡張ポイントであるFormResolverのAPIが以下のように変更になりました。
Before:
void resolve(Form form, WebContext context, Object target,
ErrorInfo errorInfo);

After:
void resolve(Form form, WebContext context, BeanDesc target,
ErrorInfo errorInfo);


2.Plugin#afterActionInvokeの引数が一つ増えて、Navigationを取得できるようにしました

Plugin#afterActionInvokeの互換性が、残念ながら維持できなかったため、
すいませんが修正が必要な方はお願いします。

フィードバックくださった、id:nanjakkunさんありがとうございました。

http://d.hatena.ne.jp/nanjakkun/20100215/1266228111#c

ダウンロード

サイトからダウンロード

http://t-2.googlecode.com/files/t2-0.6.3-ga.zip


何かありましたらML、またはブログやTwitter(#t2frameworkでお願いします)などで連絡ください。
宜しくお願いします。

Hadoop Hack Night開催


2010年3月はHadoopの月と言ってよいくらいHadoopづいてますね。良いことだと思います。
さて、Yahooさんと技術評論社さん主宰でHadoop Hack Nightが開催されます。

Owen氏の来日に合わせ,弊社およびYahoo! JAPANさんとの共催による,
「"Open TechTalk" Hadoop Hack Night」を開催することになりました.
http://gihyo.jp/event/2010/hadoophn

日程 3月8日(月)
時間 19:00〜21:00頃(※変更の場合があります。)
場所 ヤフー株式会社
[アクセス:東京ミッドタウン六本木駅直結,乃木坂駅徒歩10分)]


というわけで参加ぽちっとな。
Hadoopに興味ある方はぜひぜひお早めにどうぞ。