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
と出力された。
■ [tdiary] 過去の書影の一部が表示されなくなっていた
過去の日記を見ていたら書影が表示されていないことに気付いた。表示されるものとされないものがある。
キャッシュを消せば直るかと思って試したが直らなかった。が、cacheディレクトリをよく見るとamazonというサブディレクトリがあるじゃないか。このディレクトリを削除したら書影が表示されるようになった。
cacheの下にはmy_sequelというディレクトリもあった。my-sequel.rbがおかしくなったらここを消せばいいんだな。
■ やること
- 請求書