2009年3月アーカイブ

javaでログを吐き出す時ってみんなどうやっているのだろう?log4jとか言うライブラリをよく目にするが、実際に使ったことはないしなぁ...。

てな感じで最近のjava界隈におけるロギングについて気になったので調べてみることにした。


そもそもjava.util.loggingなんていうソレっぽいパッケージがちゃんとあるじゃん。と思ってこいつについて調べてたらlog4jにフルボッコされていた。(例 JSR47 vs. log4j
(JSRってのはJavaの標準化機関であるJCP:Java Community Processが提案している仕様のこと。java.util.loggingはJSR47の実装。)

調べてみるとJakarta Commons Logging(ログ出力のための汎用インタフェース) + log4jという組み合わせが多い。
Jakarta Commons Loggingはインタフェースの提供が主であり、インタフェースの実装をJakarta Commons Loggingがデフォルトで持っているSimpleLogとlog4jに切り替えできる。(参考:Commons-Loggingをいじる

んじゃさわるならJakarta Commons Logging + log4jかなと思っていたら、最近ちょっと変わったようでslf4j+Logbackという組み合わせに切り替わりつつあるようだ。

先の組み合わせで言うと、slf4jはJakarta Commons Logging。Logbackはlog4jにそれぞれ対応する。
なんか名前から考えると逆じゃねと思うが、slf4jはあくまでインタフェース。
Jakarta Commons Loggingと同様に実装の切り替えができるが、設定ファイル不要でクラスパスの設定だけすればおkってのがすげぇ。よく考えたなこれ。(参考元:slf4jのロガー実装切替えメカニズム)

結論としてはslf4j+Logback、面白そう。
logbackメモとかに使い方がよくまとまってるのでちょっと触っていこうかと思う。

#この調子でフレームワークも...と思ったが、20の頃にStrutsに触れて以来、あまりJavaのフレームワークを追ってなかったので最近のフレームワークの充実っぷりに困惑気味。Javaフレームワークの比較検討資料公開 - 矢野勉のはてな日記を参考にして気が向いたら調べる。

やらかす

| コメント(0) | トラックバック(0)

4月1日になったら「平日に寝過ごして遅刻することもなく、一年過ごせました」とか書こうと思っていたのだが、無理だった。
まさか酒もはいっていないのに電車の中で本格的に寝てしまうとはなぁ...。
6駅分超過。朝っぱらから長い旅であった。

会社に着くなり、課長からドコまで行ったかニヤニヤされながら尋ねられた。
社会人になってからの遅刻はばつが悪いものだなぁ。

明日からは座れても寝ないようにしよう。やっぱ本とか読んでないと駄目だぁ。

部屋が片づいたらまたプラモで作るかなーと思ってるんだけど、なかなか片づかない。とりあえず作成候補決め。

そろそろ小学生時代のお年玉で買ったTigerIを作るときが来たか
tiger_I_20090322.jpg
と思ったが、流石に数年のブランクを経ていきなり重戦車は無理無理。

んで選んだのが3号N型。
PzKpfw_III_ausf_N_20090322.jpg
対ソ連戦車用に、今まで火力支援用だった短砲身4号戦車の長砲身化を進めた結果、逆に火力支援車輌が足りねーよ!ってことで余った短砲身を3号に載せたのがN型らしい。主力戦車と支援戦車の逆転現象だね。
先のTigerIの数不足を補う形でも活躍。

近くのプラモ屋で買ったけど、店長曰く、最近出戻りモデラーが増えてるようだ。不景気なので自宅に引きこもって趣味に没頭していた方が安上がりって事らしいですよ。
--
おまけ

かなりやりこんでたゲームだ。非常に懐かしい。私はこれで装甲厚を覚えました。

昨日の夜は動いていたのに今朝動かしたら何故かプログラムがコケた。んなバカナーと思ってコード漁ったら
↓コイツが原因だった。
Format(Now, "yyyy/mm/dd hh:mm:ss")

.NETで月を指定する場合、MMにしなければならない。
ログも漁ってみたら、昨日の最後に動かしたのは21時12分。
なんという偶然か。あと一分遅く動かしてたら、昨日の時点でおかしいことに気づいたのに。

逆にVB6はなんでこんなんで動いてたんだ?と思い調べたら
VB6のFormat関数はmmの付近にhhやssがあるかないかで分かどうか判断するという無駄に賢い仕様のようだ。余計なお世話だい。

[2009/05/10 追記]
時刻がhhだと12時間表記なので24時間表記にしたければHHにしなければならない。
#リファレンス開いて一回は確認しないと駄目だな....。

引っ越しで一時中断していたが、一人読書会シリーズ再開。

復習と言うことでまた最初から読み始めてます。
ところどころ初版と異なる部分があったので、今回は気づいた点のみを挙げていこうかなぁと思う。

2章
・項目1 static factory method
ジェネリックス導入によるメリット追加。
Map m = new HashMap();
のように型パラメータを2回指定するのはメンドイよねと言う話。

static factory method命名例を大幅追記
valueOf()じゃなく最近じゃof()にする傾向らしい。短くてcool

・項目2 テレスコーピング及びJavaBeansパターンの代替案
第2版で追加された項目だ。可読性及び整合性を保つ
Builderパターン+staticなメンバークラス+メソッドチェーンという組み合わせの提示。
なるほど、いいセンスだ。

・項目3 singleton
enumを使った新しい実装例。
static finalなフィールドに自身のインスタンスを持たせ、コンストラクタをprivateにする従来の方法より圧倒的に楽そうだ。

・項目5 不要なオブジェクト生成
autoboxingの罠に気を付けましょうという話が追記。

・項目6 メモリリーク
メモリリークの原因例の追記。リスナーやコールバックの登録実装時は注意する。
まぁこれも独自のメモリ管理に入りますよって事ね。

3章
・項目8 hashCode()実装のガイドライン
step2.bの乗数が変更されてる。
奇数の素数として37ではなく、第2版では31が挙げられている。
31*i == (i<<5)-i
最近のJVM実装では高速なシフト演算に置き換えられる物は勝手に最適化してくれるらしい。技術の進歩は素晴らしいですね。

・項目11 clone()実装のガイドライン
共変戻り値型導入により、clone()はObjectではなく、cloneを実装しているクラスに変更できるようになった。キャストしなくて良いのでちょっと便利。

共変戻り値なんて言葉は初めて見たけど、要はオーバーライドしたメソッドは、オーバーライドされるメソッドの戻り値のサブクラスを戻すことが可能になったってこと(1.4までは完全一致がオーバライド時の条件)。コレ、あまり意識してなかったなぁ。

・項目12 comparableの実装
以前書いたComparatorの実装と似ているけど、インタフェース実装時に比較する型を指定できるようになったのでちょっと楽に。

4章
・項目15 可変性を最小限に
特に追記はないみたいだけど、前回のよく分からなかった部分が理解できた気がする。


---
とりあえず初版の復習と言うことでここまではすんなり読めた。

すのぼ

| コメント(0) | トラックバック(0)

一週間前になっちゃうけど、会社の同期で上越国際にすべりにいってきた。
流石にこの時期になると、雪質は頂上付近でもよろしくなく、シャーベット状のところでボードを付けようとすると尻に水が染みて冷たい(´¬`;
20090307_0.jpg
初ナイター。雪がライト色に染まって非常に綺麗だった。

やっぱりターンが出来ず。半ターンぐらいならなんとかなるのだが...。重心移動が難しい。
次回こそはターンが出来るようになりたい。


おまけ
20090307_nuko.jpg
バス停留所にいたぬこ。(*´Д`)

再びVBに戻る日々。
↓のようなソースに出くわしたが、どーゆう意味をもつ構文か分からなかったので調べた。
カギ括弧(大括弧)でくくると変数名、又は関数名として予約語も使えるようになるらしい。

そもそも予約語で命名なんかそうそうせんだろうと思ったが
634 - VB.NET - 予約語一覧
frameworkを作ろうとしたらいくつか使いたいようなものもあるな...。

---
#記号表記による文法定義ってすげー調べづらいよなぁ。

フットサル

| コメント(1) | トラックバック(0)

土曜
社内でフットサル大会があり、配属部署2チーム編成で出場しました。
うちの課長、副部長だったのかー。

7分間で数試合と聞き、45分試合の練習に耐えた(ウソ)んだし、今回もなんとか耐えれそうだなと思ったが、無理だった。7分でもしんどいもんはしんどい。課のほとんどの方に大丈夫か?と心配される有様です。むー(´¬`

計3試合を消化し、その後昼食へ。疲れ切っておりました。
そのまま帰宅し、本を片づけようとするもやっぱりなかなか捗らず。19:00か20:00という良い子すぎる時間で就寝。

このアーカイブについて

このページには、2009年3月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2009年2月です。

次のアーカイブは2009年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

OpenID対応しています OpenIDについて
Powered by Movable Type 7.9.3