2011年3月31日木曜日

積み本候補生

買いたい本リストが少しずつ溜まってきています。
(内訳は8割専門書、2割コミックでしょうか?)

その前に積んでいる本を読破したいのですが、
なかなか思う通りにはいかないものです。

まあ専門書は何度も読んでなんぼとは思ってますけど。
ピープルウェアは5週くらい読んだ気がしますし。

人月の神話を2週したくらいでまた買うか考えましょう。

2011年3月30日水曜日

GC攻略戦(戦果)

Rhino→JDK6のjavax.scriptパッケージに変更したら、
Full GCのパフォーマンスが劇的に改善された…

中身はどっちもRhinoなのに…
むしろバージョンダウンしているのに…
コネクタ部分ですごい事をやっているのか!?

ソースを読んでみましたが、
何が功を奏してしるのか調べるには時間がかかりそうです。

この話題は早くも終了ですね…

2011年3月29日火曜日

GC攻略戦

負荷試験にのりこめー^^

わぁい^^

Full GC(10秒)発生 orz

とりあえずセッション(30分→1分)と、
Rhino(Contextの開始と終了を何度もやらなくする)あたりを見直しますか。

それでもだめならヒープ領域でござるな(草は生えない)

2011年3月28日月曜日

カード大会を経て

某トレーディングカードゲームの非公式大会に参加しました。

店員さんに誘われての参加だったため、
持っていたのは完全なファンデッキ…

当たり前ながら完全全敗となってしまいました。

やっぱり大会用ファンデッキが必要なようですね。

2011年3月25日金曜日

火狐4を導入

何かリリースされたらしいのでアップグレードしました。
何かChromeらしくなったような気がします。
何かシンプルで、
何か早いような、
何か丸っこいような…どうでもいいけど。

2011年3月23日水曜日

オブジェクト指向は難しいと言うけれど…

そこら辺の話を持ち込む方々って、
それ以前に構造化プログラミングもろくにできていない気がするのは気のせいでしょうか?
(きっと気のせいです。そうに決まってます。)

これは勉強の順序を間違えているような気がします。
確かにEWD249は難しいかもしれませんが、
オブジェクト指向の前に学ぶべきではないでしょうか?
(ええ、自分もまだ学んでないですとも!…ごめんなさい)

ここら辺はそろそろ良い書籍が欲しいところです。
オブジェクト指向の架け橋的な意味でJavaで説明した方が良いでしょうか?

でも結局グローバル変数厨は消えないような…

2011年3月22日火曜日

努力と成果の因果関係

よく努力すれば何とかなると言いますが、
「努力=成果」
というのは間違いだと思っています。

正確には、
「努力×効率=成果」
とかではないでしょうか。

「こんなに努力したのになんで…!?」
というのはよく聞くようなセリフですけど、
効率を無視していたら当たり前ってわけです。

さぼっているように見えて結果はきちんと出している人は、
とても効率が良い人だと言えます。

成果主義と言っておきながら、
仕事の効率の良い人がひどい目に遭う…(主にプログラマーが)

自分が社長をやるなら、
努力はそこそこでも効率の高い人を雇いたいものです。
(それを本当にやったら某機動戦艦でしょうか?)

…社長をやる気はまったくないですけどね。

2011年3月20日日曜日

頭から離れない言葉

ふと思い出してしまう単語というものがあります。

今日思い出した単語は、
「ピキリエンタ・ポーレス」
です。

はい、作品名ですね。
これがSDガンダム関連だとすぐに分かる人は相当ですね…

2011年3月19日土曜日

ヤッフーヤフー

ついにGoogle以外からの検索に引っかかったと統計に出ました。
無意味に感慨深くなる今日この頃。

で、ヤフーの検索に引っかかったわけですが、
検索ワードはピンポイントで「なんちゃって四字熟語」…

こんな偶然があるのか…?
それとも結構使う言葉なのか?

謎は深まる。(浅くする予定もないけど)

2011年3月18日金曜日

筋肉痛なのか~

歩き過ぎで全身が痛い…
魔法使いを目指す自分としては、
体力の強化は二の次でしたから。

あ、でも何だか歩いているうちに痛みを感じ…いやいやいやそれはまずい。
どこかで休憩だ~

(休憩中)

ふ~む、迂回ルートをもう何種類か増やさないといけないかもしれません。


NGワード:体力を上げればいいじゃない

2011年3月14日月曜日

統計の謎

多少は元気を出して…っと

そういえば、このブログに訪れる人に謎の傾向が…

ひとつはlog4j関連、まあこれはわかります。

もうひとつはマレーシアからの接続、これが分かりません。
よく読めませんが、WordPress関連のサイトらしいです。
何かロボットで調査している機能でもあるのかな?
(それにしては人間くさい履歴なんだよな…はて?)

多くて日に数回しか無いので、
とりあえず無視の方向でいきます。

2011年3月13日日曜日

途方に暮れる

正直、何のやる気も起こらない。(NGワード:いつもだろ)
厨二的な言い方をすると、終末を背後に感じる。

気を奮い起こすには、もう少しかかりそう。

まけるなよ、自分。

2011年3月12日土曜日

某スーパーにて

水と食料(備蓄のレトルトはガスが使えなくて食べにくかった)を買いにスーパーへ
そのスーパーなんだけど…何か違った。

一部の商品棚がごっそりなくなっていた。
ペットボトルの商品とか、冷凍食品とか、乾き物とか…

買い物している人たちも何か…違う。
何だろう…買っている量かな?
それとも表情?

帰り道も何かが違う。
空気が…世界が…

泣きそうになった。

2011年3月11日金曜日

地震…か…

会社に缶詰となり、
カンパンの缶詰を食っとります。
氷砂糖うめぇ!

…ではなくて、何とかして家に帰らないと。
家の状態を確認しないと不安でしょうがない。

ああでも、家族が無事と分かってよかったよかった。

必ず家に帰るぞ…!!

2011年3月10日木曜日

なんちゃって四字熟語

厨二病の症状のひとつに、
自分で勝手に言葉を作るっていうのがあります。

自分もそんな経験があり、
存在しない四字熟語でドヤ顔をしたものです。

今でもたま~に存在しないことの確認としてググってみるわけですが、
この前検索に引っかかって衝撃を受けました。

「一矢一殺」

まさか同じことを考える人間が存在したとは…
微妙に知名度があるところで出てきたのがイタイイタイ…

皆さんも造語にはご注意を…って別に何も損得はしてないけどね。

2011年3月9日水曜日

Log4jの書き込みから例外を出させる

だいぶ前からの続きです

とりあえず出来上がったソースを公開しておきます。

まずは色々取得できるように、
例外クラスを新規につくります。


public class Log4jException extends RuntimeException {
    private static final long serialVersionUID = 1L;
    /**
     * エラーコード.
     *  0:一般エラー
     *  1:書き込みエラー
     *  2:Flushエラー
     *  3:クローズエラー
     *  4:ファイルオープンエラー
     *  5:レイアウトが見つからない
     *  6:アドレスパースエラー
     */
    private int errorCodeField = -1;
    private LoggingEvent eventField = null;
    public Log4jException(final String message) {
        super(message);
    }
    public Log4jException(final Throwable e) {
        super(e);
    }
    public Log4jException(final String message, final Throwable e) {
        super(message, e);
    }
    public Log4jException(
            final String message,
            final Throwable e,
            final int errorCode,
            final LoggingEvent event) {
        super(message, e);
        errorCodeField = errorCode;
        eventField = event;
    }
    public int getErrorCode() { return errorCodeField; }
    public LoggingEvent getLoggingEvent() { return eventField; }
}


注意していただきたいのは、
RuntimeExceptionを継承していることです。
後述するインターフェースの仕様で、
通常のExceptionだとスローさせることができません。

そしてエラーハンドラを作成します。
こんな感じでしょうか?

public class Log4jExceptionErrorHandler implements ErrorHandler {
    @Override
    public void error(final String message) {
        error(message, null, 0);
    }
    @Override
    public void error(
            final String message,
            final Exception e,
            final int errorCode) {
        error(message, e, errorCode, null);
    }
    @Override
    public void error(
            final String message,
            final Exception e,
            final int errorCode,
            final LoggingEvent event) {
        if (e instanceof InterruptedIOException
                || e instanceof InterruptedException) {
            Thread.currentThread().interrupt();
        }
        LogLog.error(message, e);
        throw new Log4jException(message, e, errorCode, event);
    }
    @Override
    public void activateOptions() { }
    @Override
    public void setAppender(final Appender appender) { }
    @Override
    public void setBackupAppender(final Appender appender) { }
    @Override
    public void setLogger(final Logger logger) { }
}

あとはlog4j.xmlのerrorHandlerタグのclass属性にて、
作成したエラーハンドラをパッケージ名も含めて記述しておけばOKです。

ログを出力する際には、
作成した例外クラスをキャッチするようにしてください。

(何の役に立つかはイミフですが、)
これでログのエラーキャッチができると思います。

2011年3月8日火曜日

分けた方がいいこと

ある時ソースを読んでいると、
意味がないとしか思えない数字がそこかしこに転がっていました。
特にリソースが圧迫されている訳でもないのに、
状態に番号を振って管理していたのです。
そしてswitch文による分岐…
Javaなのにポリモーフィズムはどこにいったのやら。

ため息をつきながら自分のソースを見ます。
そこには番号こそ見られませんが、
何かがおかしいです。
あらゆるリテラルが外へ逃がされていたのです。
0チェックに始まり、nullすら許されていません。
お客様のご要望なのですが、
未だに正気を疑っているのは内緒の話です。

…どうやらハンガリアン記法が2種類に分割されたように、
マジックナンバーも2種類に分類できるようです。
自分は仮にこう名付けることにしました。

「Senseless Magic Number」… 意味のないマジックナンバー
「Senseful Magic Number」 … 意味のあるマジックナンバー

そして、意味のないマジックナンバーは*抹消*すべき対象です。
*逃がす*ではないことにご注意ください。
意味のあるマジックナンバーについては、
そのまま放置で構わないでしょうか?

人気のブロガーはここで具体例を出すのかもしれませんが、
眠いのでここまでです。

さいなら、さいなら

2011年3月3日木曜日

知人に公開するということ

同期が会社を去ることになり、
「このブログを通知するか~」
ということになりました。

本当はいぶし銀のように成長するところを見たかった気持ちもありますが、
リアル世界の方が大事ですしね。

まあ、
一部の人にしか分からないネタばかりなので、
イミフになって見なくなるシナリオは容易に想定できます。

ちなみに最近のネタ先は某wiki経由でしょうかね?