メモの日々


2008年09月08日(月) [長年日記]

  • 何もやる気にならず週末ずっとゴロゴロしてしまった。これはいかんよ。掃除しないと。
  • 外出したとしても雷ゴロゴロで大変だったけどな。
  • ずっと忙しい。才能なーい。
  • ずっと健康だったが昨日から体調不良気味。最近暑かったり寒かったりするからなあ。

[java][net] JavaでIPv4とIPv6の判別

文字列で与えられたIPアドレスがIPv4なのかIPv6なのかを判別したいとき、Javaではどう書けばいいのか。

InetAddress#getByName()の戻り値をinstanceofでチェックする方法しか思いつかなかった。次のテストは成功したのでメモ。

import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import static org.junit.Assert.*;
import org.junit.Test;

public class InetAddressTest {
    @Test
    public void v4test() throws Exception {
        InetAddress address = InetAddress.getByName("192.0.2.10");
        assertTrue(address instanceof Inet4Address);
    }

    @Test
    public void v6test() throws Exception {
        InetAddress address = InetAddress.getByName("2001:DB8::10");
        assertTrue(address instanceof Inet6Address);
    }
}

2008年09月12日(金) [長年日記]

[java] Calendarを文字列で出力

java.util.Calendarの内容を文字列で出力する方法を覚えられないのでメモしておく。

  • Calendar#toString() ではうまくいかない。
  • java.text.DateFormat を使う必要があるみたい。が、このクラスを使うにはCalendarをDateに変換しないといけない。
  • java.text.SimpleDateFormat を使うと書式を自由に指定できる。
  • (追記)String.format() に日付時刻用の書式文字列を使う方法もあった。これだとCalendarをそのまま引数に与えられる。

以下、サンプルプログラムとその出力。

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class DateTest {
    public static void main(String[] args) {
        DateFormat format1 = DateFormat.getInstance();
        DateFormat format2 = DateFormat.getDateInstance();
        DateFormat format3 = DateFormat.getDateTimeInstance();
        DateFormat format4 = DateFormat.getDateTimeInstance(DateFormat.LONG,
                                                            DateFormat.LONG);
        DateFormat format5 = new SimpleDateFormat("yyyy-MM-dd-H-m-s");

        Calendar now = Calendar.getInstance();
        
        System.out.println("toString(): " + now.toString());
        System.out.println("format1   : " + format1.format(now.getTime()));
        System.out.println("format2   : " + format2.format(now.getTime()));
        System.out.println("format3   : " + format3.format(now.getTime()));
        System.out.println("format4   : " + format4.format(now.getTime()));
        System.out.println("format5   : " + format5.format(now.getTime()));
         // 追記
        System.out.println("%tF %<tT  : " + String.format("%tF %<tT", now));
    }
}
toString(): java.util.GregorianCalendar[time=1221214782327,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Tokyo",offset=32400000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2008,MONTH=8,WEEK_OF_YEAR=37,WEEK_OF_MONTH=2,DAY_OF_MONTH=12,DAY_OF_YEAR=256,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=19,SECOND=42,MILLISECOND=327,ZONE_OFFSET=32400000,DST_OFFSET=0]
format1   : 08/09/12 19:19
format2   : 2008/09/12
format3   : 2008/09/12 19:19:42
format4   : 2008/09/12 19:19:42 JST
format5   : 2008-09-12-19-19-42
%tF %<tT  : 2008-09-12 19:19:42

[windows] バッチファイルでのエスケープ

Windowsのバッチファイルでエスケープをしたい時は「^」を使えばいいみたい。

echo ohayo-^
gozaimasu

のようにして改行をエスケープすると、

ohayo-gozaimasu

と出力された。

[book] 重力ピエロ (伊坂幸太郎)

重力ピエロ(伊坂幸太郎/著) 読んだ。兄である主人公と弟の春が仲良しだという話。事件も起こるけど、ミステリだと思って読んだら面白くないと思う。話が逸れていく所を楽しまないと。3点。

[tdiary] 過去の書影の一部が表示されなくなっていた

過去の日記を見ていたら書影が表示されていないことに気付いた。表示されるものとされないものがある。

キャッシュを消せば直るかと思って試したが直らなかった。が、cacheディレクトリをよく見るとamazonというサブディレクトリがあるじゃないか。このディレクトリを削除したら書影が表示されるようになった。

cacheの下にはmy_sequelというディレクトリもあった。my-sequel.rbがおかしくなったらここを消せばいいんだな。

やること

  • 請求書

2008年09月27日(土) [長年日記]

[book] 果つる底なき (池井戸 潤)

果つる底なき(池井戸潤/著) 読んだ。スマートな銀行員伊木課長代理が事件に巻き込まれる話。銀行内部の業務が描かれている所は面白いが、後半に犯行が雑になるのが気になった。3.2点。