日刊きむきむちゃんねる。 このページをアンテナに追加 RSSフィード

Information

2011年09月27日(火)

[]「Eclipseで学ぶはじめてのサーブレット&JSP」 「Eclipseで学ぶはじめてのサーブレット&JSP」を含むブックマーク

Eclipseで学ぶはじめてのサーブレット&JSP」という本を執筆しました。

Eclipseで学ぶはじめてのサーブレット&JSP

Eclipseで学ぶはじめてのサーブレット&JSP

内容は Servlet3.0 で、プロトコルの説明から入り、最終的に簡易Twitterアプリケーションを作るというものです。

Webということで(?)、T2プロジェクトの id:c9katayama, id:shot6, id:skirnir, id:yone098 にもガチンコのレビューをしてもらいました。

Servlet3.0 は結構良いので、よければお手にとって見てみてください。だって、web.xmlを書かなくて済むんだから。

Amazonなどでは既に予約できます。10/1発売となっていますが、9/28くらいには書店に並ぶと思います。

dd4d4kyddd4d4kyd 2011/12/09 11:22  6章の簡易twitterアプリを作成しているのですが、どうしてもエラーが出ます。
358ページまでのコードを書いたのですが、ユーザー登録ができずエラーになります。一応サポートサイトの6章をダウンロードしてそのままeclipseにコピーしてみたのですが、それでも同じエラーが発生します。
エラー内容

HTTPステータス 500
説明 The server encountered an internal error () that prevented it from fulfilling this request.

例外

java.lang.NullPointerException
chapter6.utils.DBUtil.rollback(DBUtil.java:69)
chapter6.service.UserService.register(UserService.java:33)
chapter6.controller.SignUpServlet.doPost(SignUpServlet.java:46)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
chapter6.filter.EncodingFilter.doFilter(EncodingFilter.java:30)

skimuraskimura 2011/12/09 19:36 DBに接続できない(例えば、HSQLDBが起動されていない)や、
CREATE TABLEしていない可能性などが考えられますが、どうでしょうか?

原因がつかめないようでしたら、下記のようにコードを変更してみてください。

} catch (RuntimeException e) {
e.printStackTrace(); // この行を追加
rollback(connection);
throw e;

2011年02月10日(木)

[]お薦め 「Javaルールブック 〜読みやすく効率的なコードの原則」 お薦め 「Javaルールブック 〜読みやすく効率的なコードの原則」を含むブックマーク

献本ありがとうございます。

Javaルールブック 〜読みやすく効率的なコードの原則
大谷 晋平 米林 正明 片山 暁雄 横田 健彦
技術評論社
売り上げランキング: 96170

執筆はT2メンバーでおなじみの大谷 晋平さん、米林 正明さん、片山 暁雄さん、横田 健彦さん、監修はISIDです。

今回、私はレビュアーとして参加しました。


Java1.4以前のベースがあるために、Java5以降の構文などを後ろの方で付録的に扱っている書籍やコーディング規約もありますが、

そうではなく、今の現状に合わせた内容としてJava5以降の事柄も当たり前としてきちんと記述されています。


「プログラマが知るべきの97のこと」という書籍がありますが、このJavaルールブックに関しては、知っておくだけではなく、実際にコーディング出来ておいて当たり前のことが非常に多く書かれています。別のタイトルをつけるなら「Javaプログラマが出来ておくべき○○のこと」でもOKだと思います。

出来るためには、先に知っておく必要がありますよね。なので、是非読んでください。


もちろん、プロジェクトごとに異なるルールもありますよね。そういう場合でも大丈夫です。

書籍の中で、ルールにはランク付け(★★★★★ほぼ無条件で適用〜★このようなやり方もあるという紹介まで)

がされているので、この★の数を見ることでカスタマイズするときの指針にも使えます。


それから、付録によく使う「Eclipseのショートカットの一覧」が載っているのも非常にうれしいです。


お勧めしたい方

 仕事でJavaを使う人全員


それから、全国発売は2/15からですが、2/7から下記の書店で先行販売しているそうです。

・紀伊国屋 新宿本店

・紀伊国屋 新宿南店

書泉ブックタワー

・三省堂神田神保町本店

有隣堂ヨドバシAKIBA店

ジュンク堂 池袋本店

・丸善丸の内本店


というわけで、書店でみかけたらチェックしてみてください。

そしてそのままレジにGOしてくださいw

2011年01月18日(火)

[][]samurai-aop-interceptors-V1.0.1リリース samurai-aop-interceptors-V1.0.1リリースを含むブックマーク

http://code.google.com/p/samurai-aop/


リリースしました。


・Bug

 なし

・Improvement

 なし

・New Feature

 AsyncInterceptorを追加しました。


# samurai-aop-coreは、1.0.0のままで変更はありません。


某金融機関で使ってるという実績ができた。

[][]『Eclipseで学ぶはじめてのJava 第2版』の在庫が252冊 『Eclipseで学ぶはじめてのJava 第2版』の在庫が252冊を含むブックマーク

在庫が252冊と連絡がきました。

ご購入はお早めに。

http://www.amazon.co.jp/dp/479735903X/

2011年01月12日(水) 11インチ = 27.94 センチメートルらしい このエントリーを含むブックマーク

2010年12月22日(水) 『参加した』

[]logger.isDebugEnabled()とか logger.isDebugEnabled()とかを含むブックマーク

http://d.hatena.ne.jp/wkoichi/20101128/p1


ログ出力が単純な文字列だけならあまり気になりませんが、

文字列連結をしているような場合や

logger.debug("BEGIN ["+ hoge + "]");

メソッド呼び出しを行っている場合や

logger.debug("BEGIN ["+ hoge.getClass().getSimpleName() + "]");


文字列だけしか出力しないログでfor文の中で大量にログ出力する場合なんかでも、

ログにコードの行数を出力する設定をしていると、Log4Jの中で例外をスローしまくり(GCしまくり)なので効果があります。



入門書とかで触れといた方がいいのか?

wkoichiwkoichi 2010/12/23 00:02 if文でいくら分岐しようがdebugレベルのログを取得したい時には結局ロギングしますよね?
その際には例外をスローしまくるというように読めましたが、その理解は間違ってないですか?
それとも、僕が読み取れてない前提条件がありますか?

フレームワークのような使われ方が想定しきれいないコードを書いたことがないので、こういう問題に突き当たったことがないのです。
そもそも、プロダクトコードをJavaで書いたこともないですが。

skimuraskimura 2010/12/23 13:12 > if文でいくら分岐しようがdebugレベルのログを取得したい時には結局ロギングしますよね?
> その際には例外をスローしまくるというように読めましたが、その理解は間違ってないですか?
> それとも、僕が読み取れてない前提条件がありますか?

常にdebugレベルなら、if文を書く意味は無いです。
前提としてはINFO以上にしたときに効果があるということです。

> フレームワークのような使われ方が想定しきれいないコードを書いたことがないので、こういう問題に突き当たったことがないのです。
> そもそも、プロダクトコードをJavaで書いたこともないですが。

ロギングの話は、フレームワークに限った話ではないですね。
プロダクトコードでも同じです。
あと、Javaに限った話でもないです。例えばRubyには「isDebugEnabled()」に相当する「debug?」というのがあります。

wkoichiwkoichi 2010/12/26 01:38 いやいや、debugレベルでログを取ることを想定しているから、logger.debug()とコードするけれども、普段はdebugレベルログを出力しないようにしているので、パフォーマンスが劣化しないようにif文を書きましょうという主張ですよね。それは、分かってるんですよ。

ただ、Log4Jの中で例外をスローしまくりなんて書いてあったので、結局debugレベルのログが欲しいときには例外をスローしまくるんですか?という質問だったのです。趣旨から外れた質問だったので、誤解させてしまったようですが。Javaで書いたことがないのでって書いたのは、Log4J特有の問題なんかは知らないよというアピールのつもりだったのですが、わかりにくかったですね。

しつこいですけど、個人的な経験ではログメッセージを組み立てる位のオーバーヘッドは、問題になったことがないんですよね。だから、パフォーマンスと可読性(ノイズは一行たりともコードに持ち込みたくない)を天秤にかけて、if文はやっぱり書かないですね。もし、問題になったら、その時に考えますよ。

skimuraskimura 2010/12/30 02:07 ログレベルに関係なく、ログ情報として「行数を出力する時」は例外がスローされます。これは特有の問題です。
最初からパフォーマンスを意識するよりは、キレイなコードを書いた方が良いとは思いますが、
よく利用されるライブラリや〜Utilのようなクラスはその辺を意識した方がエコですね。

2010年11月05日(金)

[][]samurai-reloadable V1.0.1リリース samurai-reloadable V1.0.1リリースを含むブックマーク

しました。

http://code.google.com/p/samurai-reloadable/


■変更点

V1.0.0からの変更点は次の通りです。

●Bug修正

Issue 1 Servletの場合load-on-startupを付けないとNullPointerExceptionが発生する

2010年07月28日(水)

[]@higayasuoの推薦文掲載 @higayasuoの推薦文掲載を含むブックマーク

 「フレームワークの作り方の本を書いたので推薦の言葉を書いてもらえませんか?」と頼まれたとき、なんてニッチな本を書くんだろうと思いました。しかし実際に原稿を読んでみて思ったのは、この本は、アーキテクトを目指している人にとっての「はじめの一歩」にちょうどよい、ということです。

 この本の中では、ハーベスト君とよばれる「アーキテクト見習い」が出てきて、先輩に導かれながら、アーキテクトとして知らなければならない知識を学んでいきます。その知識は、アーキテクトを目指すあなたにとっても役に立つはずです。

 アーキテクトになるためには、これこれこれの本を読んだら終りということはありません。勉強に終わりはなく、勉強したことをつねに実戦で磨きあげていく必要があります。

 間違った道に進まないための「はじめの一歩」として、本書はあなたの役に立つでしょう。

2010年6月 ひが やすを

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

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

newtanewta 2010/08/02 15:17 Amazonでポチりました!

skimuraskimura 2010/12/23 13:46 thanks!