メモの日々


2002年08月26日(月) バウチャー券貰った日

会社

  • 8:55 久しぶりに朝食を食べた。ベローチェのサンドイッチだ。
  • 今朝見た夢は大学の試験に遅刻してしまった夢。単位取れなくて焦る。こういう夢はしょっちゅう見る。単位落とすことで違う人生を歩みたかったという願望なのか。
  • 13:30 n年日記を復活させてみたがそこをクリックしても「該当するものはありません。」と表示され機能しないのでまた削除。何故動かんのだ。
  • 14:00〜14:45 賞与の説明会。
  • 19:00〜19:35 目標を確定してみた。SEではなくプログラマな目標にしてみたが受け入れられるかどうか。
  • 19:50 がー、もうこんな時間か。IEの累積パッチをインストールして帰ろう。
  • 20:00 IEのパッチをインストールした。なのに再起動直後に更新の通知プログラムがIEのパッチをダウンロードせよと言ってきた。なんだよ、こいつ馬鹿じゃん。

[mobile] Palmユーザー・インターフェースの設計: 第2回

ここにPalmのUIの設計指針が載っている。palm-mlより。

Iプロジェクト

  • 10:00〜12:00 みんなで打ち合わせ。いつものやつ。15:00からも打ち合わせの予定。
  • 15:00〜16:25 みんなで打ち合わせ2。兒玉くんのPCでデモをした。映像はロッカーの裏に写す。
  • 18:15〜18:50 兒玉くんのデバッグに付き合う。ドキュメントプロパティにタイトルを設定できない。まだ解決していない。謎だ。
  • タイトルにはどうしてもデータを設定できないのでサブタイトルを利用することにした。変なの。

Kプロジェクト

  • 13:45〜16:35 断続的に監視終える。ダミーのウィルスが検出されていたのでその対応をしメイルを書いた。さらにエラーログの内容を障害票に載せようとしており、さらに修正が確認された障害票に確認終了日を入れようとしているところ。面倒だ。
  • 〜18:00 障害票書きテープ交換も終えたとこ。やはり月曜日は仕事にならない。

2003年08月26日(火)

[dev] [XP-jp:04521] ソルトレーク・適当レポートその2

XP-jp MLへの7月の投稿を今更メモ。「アジャイル会議スタイル」だ。

2.会議の開始

会議が開始になったときに、最初に大き目のポストイットが参加者全員に配布されました。そして、ファシリテータは「この紙に、あなたがこの会議に出席する個人ごとの目的を書いてください」というお話をします。ファシリテータさんはそれを集めて、「Personal Objectives」という模造紙にどんどん張っていきます。そして、会議がスタート

5.会議の最後

会議が終わりに近づいて、最初の目的を達成できたら、Parking LotとPersonal Objectivesの処理に移ります。最初に集めたPersonal Objectivesを一枚一枚とりあげて、ファシリテータが参加者に「この目的は達成できましたか?」と聞いていきます。

以前会社で「会議開催の原則 - 会議の品質と生産性向上のためのガイドライン」という資料を読んだときはイライラしたものだ。あの資料とこのレポートの違いは何だろう。

[service] www.DNSreport.com

ウェブからDNSの設定をチェックできるようだ。便利そう。datula.ml-archiveより。

[java] 16進数4桁の出力

Javaで

printf("%04X", a);

に相当する出力を得たい場合はどうすればいいのか。10進数なら java.text.DecimalFormat を使って色々できそうだが16進数の場合にどうしたらいいのか分からない。

分からないので、 Integer.toHexString(a).toUpperCase() で得た文字列に対し自前で先頭に "0" を必要な数だけ付加するようにしたけど、もっとましな方法はないのか。こういう基本的な所が分からなくて色々調べているから情けなくなって落ち込んで寝てしまうのだ。

(追記)

discypus.jpで紹介されているorg.apache.commons.io.HexDumpが使えるのかしら。

(追記2)

そうでした、J2SE 5.0からはStringにformatメソッドが追加されたんでした。もはや何も悩むことはないのですね。

やること

  • 電気カミソリを買う
本日のツッコミ(全1件) [ツッコミを入れる]

takano32 [こんにちは TigerならString.formatが使えますよ.]


2013年08月26日(月)

[java] java.util.logging.Logger でログを出す

java.util.logging.Loggerを使おうとするといつも躓くのでメモ。

getGlobal()で取得できるグローバルロガーを使ってみる。使用したJavaのバージョンは 1.7.0_25。

何も設定しないと何も出力されない

次のプログラムは何も出力しない。

import java.util.logging.Logger;

public class LogTest {
    public static void main(String[] args) {
        Logger.getGlobal().severe("severe");
        Logger.getGlobal().info("info");
        Logger.getGlobal().config("config");
        Logger.getGlobal().finest("finest");
    }
}

setLevel(Level.ALL)を呼んでみる

Loggerオブジェクトに対しsetLevel(Level.ALL)を呼ぶようにする

import java.util.logging.Level;
import java.util.logging.Logger;

public class LogTest {
    public static void main(String[] args) {
        Logger.getGlobal().setLevel(Level.ALL); // <---
        Logger.getGlobal().severe("severe");
        Logger.getGlobal().info("info");
        Logger.getGlobal().config("config");
        Logger.getGlobal().finest("finest");
    }
}

と、INFOレベル以上のログだけが標準エラーに出力されるようになる。

8 26, 2013 7:35:14 午後 LogTest main
SEVERE: severe
8 26, 2013 7:35:14 午後 LogTest main
情報: info

こうなるのは、「デフォルトの構成では、ルートロガーのハンドラの 1 つがコンソールへの出力用として設定」されているからのようだ。

setUseParentHandlers(false) を呼んでみる

Loggerオブジェクトに対しsetUseParentHandlers(false)を呼ぶようにすると、再び何も出力されなくなる。ログがルートロガーへ送られなくなるからだろう。

import java.util.logging.Level;
import java.util.logging.Logger;

public class LogTest {
    public static void main(String[] args) {
        Logger.getGlobal().setUseParentHandlers(false); // <---
        Logger.getGlobal().setLevel(Level.ALL);
        Logger.getGlobal().severe("severe");
        Logger.getGlobal().info("info");
        Logger.getGlobal().config("config");
        Logger.getGlobal().finest("finest");
    }
}

Loggerにハンドラを追加してみる

LoggerオブジェクトのaddHandler()を呼んでハンドラを追加する

import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.StreamHandler;

public class LogTest {
    public static void main(String[] args) {
        Logger.getGlobal().setUseParentHandlers(false);
        Logger.getGlobal().setLevel(Level.ALL);
        Logger.getGlobal().addHandler(new StreamHandler() {{ // <---
            setOutputStream(System.out);
        }});
        Logger.getGlobal().severe("severe");
        Logger.getGlobal().info("info");
        Logger.getGlobal().config("config");
        Logger.getGlobal().finest("finest");
    }
}

と、INFOレベル以上のログだけが(上の例だと標準出力に)出力されるようになる。

8 26, 2013 7:59:46 午後 LogTest main
SEVERE: severe
8 26, 2013 7:59:46 午後 LogTest main
情報: info

ハンドラに対しsetLevel(Level.ALL)を呼んでみる

ハンドラに対してもsetLevel(Level.ALL)を呼ぶようにする

import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.StreamHandler;

public class LogTest {
    public static void main(String[] args) {
        Logger.getGlobal().setUseParentHandlers(false);
        Logger.getGlobal().setLevel(Level.ALL);
        Logger.getGlobal().addHandler(new StreamHandler() {{
            setOutputStream(System.out);
            setLevel(Level.ALL); // <---
        }});
        Logger.getGlobal().severe("severe");
        Logger.getGlobal().info("info");
        Logger.getGlobal().config("config");
        Logger.getGlobal().finest("finest");
    }
}

と、全部のログが出力された。

8 26, 2013 8:05:55 午後 LogTest main
SEVERE: severe
8 26, 2013 8:05:55 午後 LogTest main
情報: info
8 26, 2013 8:05:55 午後 LogTest main
CONFIG: config
8 26, 2013 8:05:55 午後 LogTest main
FINEST: finest