雑記帳 2010年 1月第4週

2010/01/17 Sun.

HP Pavilion Notebook PC dm3i」のベンチマークを色々と載せてみました。興味がある方は「ベンチマーク結果メモ」でも。

2010/01/18 Mon.

import java.net.ServerSocket;
import java.net.Socket;

public class ServerTest {
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        try {
            Socket socket = null;
            serverSocket = new ServerSocket(6666);
            while ((socket = serverSocket.accept()) != null) {
                ServerThreadTest serverThread = new ServerThreadTest(socket);
                // スレッドに処理をディスパッチ
                serverThread.run();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
import java.net.Socket;

public class ServerThreadTest implements Runnable {
    private Socket socket = null;

    public ServerThreadTest(Socket socket) {
        this.socket = socket;
    }

    public void run() {
        // do something
        System.out.println(this.socket.toString());
    }
}

待ち受けしているポートに、短時間で大量接続があるという前提。……これは新手の冗談なのか?手の込んだ嫌がらせか?

2015/12/27 追記
そういやあったなあ、こんなコード。Threadなりに食わせないと、何のためのRunnableなのか意味わからないよね、コレ……。

2010/01/19 Tue.

今日で結構な数のタスクタグが取れた。作業してるんだかしてないんだか微妙なトコだけど、一応順調に進んでる模様。
明日はログファイル関連の修正と単体試験の準備といったところか。一つだけ仕様未確定の怪しいのがあるのが怖いとこだ。

2010/01/20 Wed.

import java.util.HashMap;
import java.util.Map;

public class BinaryRestoration {
    private static final Map<String, Integer> HEX_CONVERTER_MAP =
            new HashMap<String, Integer>();

    static {
        for (int i = 0; i < 16; i++) {
            HEX_CONVERTER_MAP.put(Integer.toHexString(i).toUpperCase(), i);
        }
    }

    public static void main(String[] args) {
        //  !"#$%&'
        // ()*+,-./
        // 01234567
        // 89:;<=>?
        // @ABCDEFG
        // HIJKLMNO
        // PQRSTUVW
        // XYZ[\]^_
        // `abcdefg
        // hijklmno
        // pqrstuvw
        // xyz{|}~ 
        // 先頭と末尾に半角スペース有り
        String[] dump = new String[]{
                "20", "21", "22", "23", "24", "25", "26", "27",
                "28", "29", "2A", "2B", "2C", "2D", "2E", "2F",
                "30", "31", "32", "33", "34", "35", "36", "37",
                "38", "39", "3A", "3B", "3C", "3D", "3E", "3F",
                "40", "41", "42", "43", "44", "45", "46", "47",
                "48", "49", "4A", "4B", "4C", "4D", "4E", "4F",
                "50", "51", "52", "53", "54", "55", "56", "57",
                "58", "59", "5A", "5B", "5C", "5D", "5E", "5F",
                "60", "61", "62", "63", "64", "65", "66", "67",
                "68", "69", "6A", "6B", "6C", "6D", "6E", "6F",
                "70", "71", "72", "73", "74", "75", "76", "77",
                "78", "79", "7A", "7B", "7C", "7D", "7E", "20"};
        for (String value : dump) {
            byte b = hexStringToByte(value);
            String hex = Integer.toHexString(b);
            System.out.println(b + " : " + hex.toUpperCase());
        }
    }

    private static byte hexStringToByte(String arg) {
        int result = 0;
        int times = 0;
        int length = arg.length();
        for (int i = length; i > 0; i--) {
            String temp = arg.substring(i - 1, i);
            result += ((((times * 16) == 0) ? ++times : (times * 16))
                    * HEX_CONVERTER_MAP.get(temp.toUpperCase()));
        }
        return (byte)result;
    }
}

バイナリのダンプを復元したいんだけど、何か良い方法あるの?手動で書くと、思っていたよりメンドくさいんだけど。

2010/01/21 Thu.

試験用データの生成ツールを作成。まあこれで多少は楽になるだろう。バイナリ情報を扱うのは何かとメンドいな。

2010/01/22 Fri.

試験用のDBのマスタ作成。本当に細かく作るとシャレにならんので、適当なところで妥協を挟みながら作業をしまくる。
午後になって仕様未確定部分の詳細が来たけど、取り込むかどうかは時期的に微妙だな。年度が変わってからにしません?

2010/01/23 Sat.

今日は特にやることもなかったけど、夕食は家族で外食。その前に堀之内のショッピングモールに寄って、こんなのを発見。

時間の都合で入ることはできなかったけど、いつかは攻めてみないと。普通のサイゼリヤとは随分違うんだな。
先にカウンターで注文をしてから商品を受け取って席に移動するタイプか?ファーストフード店みたいな感じだ。
見えるメニューは意外に安そうな気が。がっつり食うような場所じゃなくて、軽食を取るような場所なんだろう。