X509Certificateはjavax.security.certとjava.security.certのどっちを使えばいいのか問題

APIリファレンスにちゃんと書いてありました。
java.security.cert.X509Certificateを使うべき。

Note: The classes in the package javax.security.cert exist for compatibility with earlier versions of the Java Secure Sockets Extension (JSSE). New applications should instead use the standard Java SE certificate classes located in java.security.cert.

http://docs.oracle.com/javase/8/docs/api/javax/security/cert/X509Certificate.html

Postgresqlで16進数のシリアル番号を10進数に相互変換するファンクションを書いた

X.509証明書のシリアル番号を10進数でDBに保存しようかと思ってたけど、bigintの範囲も超えちゃうのでけっきょく16進数の文字列のまま保存することにした。
いちおう、相互変換できるファンクションは書いたので、もったいないので残しておく。
PL/pgSQLは初めて書いたけど、マニュアルみながらでもけっこう書けるもんなんだね。わりといろいろできて面白い。

PL/pgSQL書いてるときにフムフムと思ったこと

http://www.postgresql.jp/document/9.3/html/plpgsql.html

制御構文はひと通り用意されてる。

SQLの実行結果を変数に入れる場合はEXECUTE sql INTO varが使える。

他には実行結果をRECORD型で受けるLOOPを回してるのもあったけど、1件取るだけなら、EXCUTE使うほうがいいと思った。

CREATE FUNCTION from_hex(t text) RETURNS integer AS $$
  DECLARE
    r RECORD;
  BEGIN
    FOR r IN EXECUTE 'SELECT x'''||t||'''::integer AS hex' LOOP
      RETURN r.hex;
    END LOOP;
  END
$$ LANGUAGE plpgsql;

serialnumber_hexのほうはもともとsepの型をcharでやってたんだけど、これだと空白渡すと自動でトリムされて困った。varcharならトリムとかされない。

あと、substrは1オリジンだった。このへんて言語によっていろいろな気がしたりするけど思い込みかも。

sbtでtestを実行したらjava.net.UnknownHostExceptionのエラー吐いた

http://biomedicalontologies.com/2012/11/14/fixing-java-net-local-host-name-unknown-error-on-mac-os-x/

をみるに、hostnameの設定が/etc/hostsに書いてないものになっているとjava.net.UnknownHostExceptionになるみたい。

> test
[info] Generating PROJECT_HOME/target/scala-2.10/resource_managed/main/rebel.xml.
<snip>
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[trace] Stack trace suppressed: run last cert_safe/*:testListeners for the full output.
[error] (PROJECT/*:testListeners) java.net.UnknownHostException: foo01: foo01: nodename nor servname provided, or not known
[error] Total time: 1 s, completed 2014/07/30 16:03:41
> 

hostnameの出力のサーバー名を/etc/hostsに書いて解決。

Time Machineバックアップの信頼性向上云々がでても諦めるな

2015-09-17追記

以下の対処でも全然直らないケースが増えてきたので、諦めてAirMac Extreme買ってそこに付けたUSB HDDでTimeMachineを使うようにしました。白旗。

事象

Macのバックアップが始まったと思ったら、こんなメッセージが。

「Time Machine でのバックアップの検証が完了しました。信頼性を向上させるには、Time Machineによって新しいバックアップが作成される必要があります。」

新規でバックアップsparsebundleを作る以外の選択肢が出てこない。

環境

UbuntuNetatalkを動かして、TimeMachineのバックアップ先にしている。

原因

Opensslのアップデートも兼ねてapt-get updateしたときのサービス再起動中に、Mac側のバックアップが始まったらしく、sparsebundleの不整合が発生したようだ。

2015-09-17追記

サービス再起動とか関係なくバンバン発生する。ツライ

調査

less /var/log/fsck_hfs.log

/dev/rdisk3s2: fsck_hfs started at Fri Apr 11 00:31:00 2014
/dev/rdisk3s2: /dev/rdisk3s2: ** /dev/rdisk3s2 (NO WRITE)
/dev/rdisk3s2:    Executing fsck_hfs (version hfs-226.1.1).
QUICKCHECK ONLY; FILESYSTEM DIRTY
/dev/rdisk3s2: fsck_hfs completed at Fri Apr 11 00:31:04 2014

FILESYSTEM DIRTYやと。

手動でfsck_hfsしてみる

fsck_hfs -drfy /dev/disk3s2

こんな感じのログを残して止まる。

/dev/rdisk3s2: fsck_hfs started at Fri Apr 11 09:00:36 2014
/dev/rdisk3s2: /dev/rdisk3s2: Unable to open block device /dev/disk3s2: Permission denied/dev/rdisk3s2: journal_replay(/dev/disk3s2) returned 13
/dev/rdisk3s2: ** /dev/rdisk3s2 (NO WRITE)
/dev/rdisk3s2:  Using cacheBlockSize=32K cacheTotalBlock=32768 cacheSize=1048576K.
/dev/rdisk3s2:    Executing fsck_hfs (version hfs-226.1.1).
/dev/rdisk3s2: Journal is empty
/dev/rdisk3s2: ** Checking Journaled HFS Plus volume.
/dev/rdisk3s2: ** Detected a case-sensitive volume.
/dev/rdisk3s2:    The volume name is Time Machine バックアップ
/dev/rdisk3s2: ** Checking extents overflow file.
/dev/rdisk3s2: ** Checking catalog file.
/dev/rdisk3s2: ** The volume Time Machine バックアップ was found corrupt and needs to be repaired.
/dev/rdisk3s2:  volume type is pure HFS+ 
/dev/rdisk3s2:  primary MDB is at block 0 0x00 
/dev/rdisk3s2:  alternate MDB is at block 0 0x00 
/dev/rdisk3s2:  primary VHB is at block 2 0x02 
/dev/rdisk3s2:  alternate VHB is at block 2737107966 0xa324f3fe 
/dev/rdisk3s2:  sector size = 512 0x200 
/dev/rdisk3s2:  VolumeObject flags = 0x07 
/dev/rdisk3s2:  total sectors for volume = 2737107968 0xa324f400 
/dev/rdisk3s2:  total sectors for embedded volume = 0 0x00 
/dev/rdisk3s2:  CheckHFS returned 7, fsmodified = 0
/dev/rdisk3s2: fsck_hfs completed at Fri Apr 11 09:00:42 2014

corruptやと。

対策

Time Machineのディスクをマウント

Finderから。

ロックフラグを外す

chflags -R nouchg /Volumes/{name of your network share}/{name of}.sparsebundle

sparsebundleをマウント

hdiutil attach -nomount -readwrite /Volumes/{name of your network share}/{name of}.sparsebundle

fsckでリペア

対象ボリュームはApple_HFSのやつ。

fsck_hfs -rf /dev/disk3s2

実行後のログは以下。 終わるまで3時間くらいか。

** /dev/rdisk3s2
   Executing fsck_hfs (version hfs-226.1.1).
** Checking Journaled HFS Plus volume.
** Detected a case-sensitive volume.
   The volume name is Time Machine バックアップ
** Checking extents overflow file.
** Checking catalog file.
** Rebuilding catalog B-tree.
** Rechecking volume.
** Checking Journaled HFS Plus volume.
** Detected a case-sensitive volume.
   The volume name is Time Machine バックアップ
** Checking extents overflow file.
** Checking catalog file.
** Checking multi-linked files.
** Checking catalog hierarchy.
** Checking extended attributes file.
** Checking multi-linked directories.
** Checking volume bitmap.
** Checking volume information.
   Invalid volume file count
   (It should be 2314545 instead of 2108959)
   Invalid volume directory count
   (It should be 328860 instead of 308933)
   Invalid volume free block count
   (It should be 250732702 instead of 282939599)
   Volume header needs minor repair
(2, 0)
** Repairing volume.
** Rechecking volume.
** Checking Journaled HFS Plus volume.
** Detected a case-sensitive volume.
   The volume name is Time Machine バックアップ
** Checking extents overflow file.
** Checking catalog file.
** Checking multi-linked files.
** Checking catalog hierarchy.
** Checking extended attributes file.
** Checking multi-linked directories.
** Checking volume bitmap.
** Checking volume information.
** The volume Time Machine バックアップ was repaired successfully.

あとからログをみたい場合は以下を参照

less /var/log/fsck_hfs.log

フラグを編集

vim /Volumes/{name of your network share}/{name of}.sparsebundle/com.apple.TimeMachine.MachineID.plist

RecoveryBackupDeclinedDateのエントリ自体を削除と、VerificationStateを0に戻す。

デタッチ

hdiutil detach /dev/disk3s2

以上の対応で、正常に差分バックアップを続けることができるようになった。

参考

H2O Wirelessの月額プランから従量プランへはチャットで変更可能

H2O Wirelessの月額プラン(monthly plan)から従量プラン(minute plan)へ変更したいと思ったけど、webのインタフェースは当然そんな口はない。 なので、とりあえずチャットで訊いてみたら、その場で変更できた。 即時の変更になるので、契約期間が残ってたらもったいないので、なるべく月額契約が切れてからのほうが損がない。

H2O Wirelessの月額プランは自動応答の電話で変更可能

H2O Wirelessの月額プランを契約しているとRechargeには今の月額プランのしか選択肢に出てこない。なので、増減させたいときに困る。実際困った。
なので、とりあえずチャットで訊いてみたら、800.643.4926に電話しろとのこと。
ドキドキしながら電話したら、すべて自動応答で済んでとても助かった。
電話で月額プランを変更したら、ウェブページのRechargeのとこ行くと、変更後の金額が選択肢に出てきてる。
それでRechargeすればOK.

アメリカ入国から運転免許取得までの時系列

2014年1月現在はこんな流れで進みますよ、というのを記録しておきます。わりと滞りなく進んで2週間半という感じ。

時系列

前提としては、Union bankで銀行口座は作成済。アパートは決めてあったので到着した日からアパートへ。

  • 1/3 シアトル到着
  • 1/6 Social Security Administrationへ行って、ソーシャルセキュリティーナンバーを申請
    • 窓口のイタリア系のおっちゃんがスムースに手続きしてくれて、なぜか日本語で少し雑談
  • 1/10 L-2の奥さんのSSNが先に届いた
  • 1/13 L-1の自分のSSNが届いた
  • 1/16 運転免許のためのKnowledge testをパス
  • 1/17 運転免許のためのDriving skill testをパス
    • バックマニューバーと縦列駐車がよくなかったけど、パスできてよかった
  • 1/17 Comcastにインターネットとケーブルテレビの申し込み
  • 1/21 Driver Licensing Officeで免許の申請と紙の免許証を受理

ソーシャルセキュリティーナンバーの申請について

アメリカ内での情報共有に時間がかかるので、SSNの申請まで2週間くらい待ったほうがいいという情報をよく見たけど、I-94が電子化されたのでもっと早く申請してよかろうと考えて、入国から2営業日目で申請に行った。結果としてこれは正解。

行った場所はベルビュー。

持っていったのは

  • 日本のパスポート
  • ビザ
  • I-94を印刷したもの
    • けっきょく見せなくてよかった
  • 婚姻証明

婚姻証明を持っていけば、L-2の奥さんのSSNもスムースに発行してくれる。もちろん、労働許可取得可能なものが。

僕らのケースでは、日本の戸籍謄本を自分で翻訳して公証役場で公証してもらったものを持参。
翻訳書類のフォーマットはアメリカ大使館のサイトで公開している以下のものを使用。

翻訳後に公証役場で公証をしてもらったけど、費用は13000円くらいでけっこう高い。有効な戸籍謄本を持っていけば、シアトル総領事館で15ドルで婚姻証明の英訳を郵送してくれる http://www.seattle.us.emb-japan.go.jp/japanese/info/shoumei_04.htm ので、そちらのほうが良さそうだ。

ちなみに、日本の公証がアメリカで有効なのは、日米ともにハーグ条約に加盟しており、アポスティーユという付箋による証明で、駐日領事の認証があるものと同等のものとみなしてくれるかららしい。

運転免許について

ライセンシングオフィスで試験を受けられることに気づかずに、ドライビングスクールのほうで試験を受けた。なので、余計にナレッジテストで20ドル、スキルテストで40ドルかかってしまった。けど、ライセンシングオフィスだと怖いインストラクターが多いというのをみてたけど、スクールだとすごく和やかにやってくれて助かった。 オフィスで試験をするだけなら、申請費用35ドルと発行費用45ドルの合わせて80ドルだけで済むようだ。

ライセンシングオフィスで日本のパスポートと運転免許証の提示を求められたので、ホントはSSNカードとか持っていったほうがいいのかもしれない。

運転免許の試験について

ワシントン州では外国の免許を持ってるひとも知識テスト、実技テストが必要。 ドライビングガイドは日本語がある http://www.dol.wa.gov/driverslicense/guide.html のでそれを読んで理解して、知識テストはオンラインの模試を7〜8回やったら問題の傾向と答えがつかめるはず。

試験の際は、Pre-applyしてそのときの番号を持ってくのと、パスポートと運転免許証でOK。

スキルテストは普通の街なかの運転と、バックマニューバーと縦列駐車をやるだけ。和やかなおっちゃんで助かった。

インターネット、ケーブルテレビ

Comcastで12ヶ月は月50ドルのプランがあったのでそれで。Verizonはサービス対象外地域だった。 申請時にSSNを訊かれて、クレジットヒストリーが確認されるけど、ヒストリーがないのでリファンダフルデポジットで100ドルとられた。