メモの日々


2008年02月07日(木) [長年日記]

[java] String#matches() は全体一致

Javaの正規表現を誤解していたのでテストをメモ。

import static org.junit.Assert.*;
import java.util.regex.Pattern;
import org.junit.Test;

public class RegexTest {
    @Test
    public void matchesは全体一致() {
        assertFalse("部分一致はダメ", "abc".matches("b"));
        assertTrue(".*を補えばよい", "abc".matches(".*b.*"));

        assertTrue("部分一致はこう書く。もっと簡単に書けるのかなあ。",
                Pattern.compile("b").matcher("abc").find());
    }
}

[life] 引越し手続き (3)

引越しはもうした。手続きはまだまだ残っている。

旧税務署

行ったら申告書を出している人たちがいた。もう確定申告受け付けてくれるのかと思い、それならこっちで申告した後に転出の手続きをしようと何もせず帰る。

が、帰って調べると、申告開始は2/18みたいだった。出していた人たちは皆還付申告だったのかなあ。

で、そもそも旧税務署に何かを届ける必要があるのかを確認しようと税務署へ電話してみたら、本来は出す必要があるが新税務署で手続きすれば税務署間でやりとりするから何もしなくて構わない、というような回答をもらった。なので旧税務署に対しては何もせず。

転出届

旧区役所で転出届けを出す。すると転出証明書なるものを貰った。これを転入先の役所へ出すみたい。

健康保険の保険証は、転入先で新しい保険証を貰えたら古いものを郵送すればいいとのこと。

郵便局

窓口で転送届のハガキを貰い、その場で書いて窓口に出した。それだけ。本人確認の書類が必要。

引越し

捨てれども捨てれども詰めれども詰めれども散らかる一方で片付かない。引越し時間は夕方だったので、当日の頑張りでなんとか間に合った。

ダンボール箱は22個貰って21個使った。それ以外に自前のダンボール箱が4個。衣装ケース7個。引越し屋が持ってきたハンガーBOXなるものもあった。液晶テレビは何もせず置いておいたら引越し屋さんがダンボールで包んで運んでいた。自分でビニールで保護しておいた方がよかったかも。

引越し完了後、その場でアンケート用紙を書かされた。面倒な。疲労困憊。

電話とプロバイダ

引越しの次の日に電話工事。NTTの下請会社の人が来て、主に外でなにやら工事していた。1時間くらいかかった。無事電話開通。

同じ日にプロバイダからADSLモデムが送られてきた。ADSLの開通はその次の日。モデムのウェブの設定画面を表示できず手間取った。モデムの故障を疑ったが、LANケーブルをモデムにグッと押し付けたらめり込みその後画面を表示できたので、ケーブルがちゃんと繋がっていなかったのが原因だったようだ。

これでインターネットに繋がり一安心。

転入届

新区役所で書類を出す。しばらく待ち、新しい健康保険証を貰って帰った。

で、電車の中で保険証を見ていたら、性別が女になっていることに気付いた。こんなことってあるのか。

やること

  • 水道の手続き(新居でハガキを出す。旧居で停止の連絡)
  • 粗大ゴミの券の購入
  • こっちの不動産屋に一報
  • 表札
  • 郵便局へ転居届
  • 旧区役所(旧保険証の送付)
  • 旧税務署
  • A/E/L/M
  • 携帯電話
  • クレジットカード
  • 銀行
  • 国民年金基金
  • プロバイダの手続き(旧モデムの返却)
  • 新区役所(健康保険証の取替え?)
  • 新税務署
  • 免許証
  • 移転のお知らせ
  • 電話番号の葉書出す

待機中

  • 火災保険の申し込み(振込用紙待ち)
  • 電気の手続き(退去時にブレーカーを落とす)
  • 電話の手続き(新居で工事の立会い)

2008年02月12日(火) [長年日記]

[life] 引越し手続き (4)

峠は越えたがまだ色々残っている。

健康保険証

健康保険証の性別が間違えていたので、再度区役所へ赴き交換を申請。窓口の人は一瞬頭を抱えたが、新しい保険証を発行してくれた。

ADSLモデムの返却

プロバイダに古いADSLモデムを返却しなければならない。去年コース変更した際は返却用の箱が送られてきたのだけれど、今回送付されてきたのはゆうパックの送り状だけ。箱はとってあったからいいのだけれど。送料はこちら持ちで800円だった。

新しいモデムはFA11-W3。コースは変わらないのにモデムは変わった。

旧居の引渡し

不動産屋へ鍵を返した。事前に掃除をしたのだけれど、埃だらけの我が家であった。新居はこまめに掃除したい。

敷金は今月中に振り込まれる予定。きちんと戻ってくるのか心配。

免許証

更新したばかりなのにまた手続き。警察署へ行き書類を出す。古い免許証の裏に新住所の判を押されておしまい。

この警察署では免許証の更新はできないみたい。更新できる所が近くにはなさそう。まあ先の話だ。

やること

  • 旧区役所(旧保険証の送付)
  • A/L
  • 携帯電話
  • クレジットカード
  • 銀行
  • 国民年金基金
  • プロバイダの手続き(旧モデムの返却)
  • 新区役所(健康保険証の取替え?)
  • 新税務署
  • 免許証
  • 移転のお知らせ
  • 電話番号の葉書出す

待機中

  • 火災保険の申し込み(振込用紙待ち)
  • 電気の手続き(退去時にブレーカーを落とす)
  • E/M(書類待ち)

2008年02月13日(水) [長年日記]

[shell] bashでrehash相当はhash -r

rehashは暗記しているのにhash -rは覚えられない。検索して [linux-users:37588] Re: 'rehash' in bash. で知った。

bashのmanより引用:

hash [-r] [-p filename] [name]

name それぞれに対して、 $PATH 内のディレクトリの検索を行ってコマンドの完全なファイル名を調べ、その結果を記憶します。 -p オプションが指定されると、パス検索は実行されず、 filename がそのコマンドの完全なファイル名として使われます。 -r オプションを与えると、シェルは記憶している位置を全て忘れます。引き数が与えられていない場合は、記憶しているコマンドに関する情報が出力されます。 name が見つからない場合と不正なオプションが与えられた場合を除き、返却ステータスは真となります。

[life] 引越し手続き (5)

今日は年金関連を。国民年金は転入届と同時に処理されているはず。窓口の人がそう言っていたから。でも年金手帳は出してないのでちょっと心配。

国民年金基金

基金は県別で管理されているので県をまたぐ場合はちと面倒。旧基金へ電話すると、変更に必要な書類を送るといわれたが、ウェブから書類はダウンロードしていたので断ってしまった。でも送ってもらう方が何かとよかったと思うのでこれは失敗。もう一度電話するかなあ。とにかく、旧基金には資格喪失届と住民票を送る必要があるみたい。

旧基金で新基金の電話番号を教えてくれたので、そちらにも電話。こっちも書類を送ってくれるとのことなので、住所を教えておしまい。手続きには2〜3ヶ月かかると言われた。のんびりしとるのお。

個人型確定拠出年金

証券会社へ電話。書類を送ってくれるとのことなので住所を教えておしまい。

やること

  • 旧区役所(旧保険証の送付)
  • クレジットカード
  • 銀行
  • 旧国民年金基金
  • 新税務署
  • 移転のお知らせ
  • ダンボール
  • 水道料金

待機中

  • 火災保険の申し込み(振込用紙待ち)
  • E/M(書類待ち)
  • 新国民年金基金(書類待ち)
  • 確定拠出型年金(書類待ち)

2008年02月15日(金) [長年日記]

  • Javaの仕事はもうすぐ終わる。次はC++の予定。
  • だったが、Cの仕事が割り込みそう。Cかー。
  • 国民年金基金は継続する予定だったが、考え直して脱退する予定。引っ越しは数少ない脱退のチャンス!
  • メモしたいことは色々あるが、メモするための時間がない。

[java] EclipseでdjUnitを使う

JUnit実行時のカバレッジを取りたい。検索すると、djUnitが便利そうだった。

djUnitは、JCoverageを利用し、実行されたテストのカバレッジレポートを生成し、Eclipse上で確認できるようにします。

Eclipse 3.3.1.1 に djUnit 0.8.3 をインストールしたが、少し困ったのでメモ。

設定画面が表示されない

説明を読むと設定画面があるみたいなんだけど、[ウィンドウ]->[設定]で出るダイアログに出てこない。

む、説明をよく読むと、プロジェクトのプロパティに出てくるのか。ああ、出てきた。解決。

ディレクトリ単位で実行できない

テストクラスを右クリックして[実行]を選ぶとdjUnitで実行するためのメニューがあるので実行できる。

けれど、テストクラスを含むディレクトリを右クリックして[実行]を選んでも、djUnitで実行するためのメニューが無く実行できない。これではテストをまとめて実行できず困る。

次のようにやればいいみたい。テストクラスを含むディレクトリを右クリックして[実行]->[実行ダイアログを開く]を選び、実行ダイアログを開く。左のツリーをよく見るとdjUnitがあるじゃん。それを選択し、上にある「新規の起動構成」をクリックする。すると、右のペインで「選択されたプロジェクト、パッケージ、またはソース・フォルダー内のすべてのテストを実行」が選択されているからこのまま「実行」ボタンをクリックしちゃえばOK。djUnitというよりEclipseの使い方の問題だ。

使ってみた

ら、カバレッジ率80%くらいになった。意外とカバーできてるな。ほんとかいな。

[life] 「国民健康保険料過誤納金還付通知書」が来た

引越し前の自治体から送られてきた。おお、いくら戻ってくるのかと中を見ると、還付金は140円だそうな。えー。

んで、なぜ過誤納金となったのかはどこにも書いておらず分からない。引越しと関係あるのかな?

やること

  • クレジットカード
  • 銀行
  • 新税務署
  • 移転のお知らせ
  • ダンボール
  • 水道料金
  • 確定拠出型年金(郵送)
  • M(郵送)

待機中

  • 火災保険の申し込み(振込用紙待ち)
  • E(書類待ち)
  • 新国民年金基金(書類待ち)
  • 旧国民年金基金(書類待ち)

2008年02月29日(金) [長年日記]

  • まだ引っ越しの片付け終わってない。
  • CではなくC++で作っていいみたい。よかった。今日からちゃんと作る。
  • 今日の行数:179。全然進んどらん。

[c++] boost/program_options の positional_options がうまく動かない

以前にboostのprogram_optionsを使った際は、

command --opt value

のような形式のオプションの扱い方は分かったが

command param

のような形式のオプションの扱い方は分からなかった。今日チュートリアルを見ていたら、positional_options_description というクラスを使えばできそうなことが書いてあったので試した。

が、うまく動かない。boostのバージョンにより挙動が異なる。プログラムが間違えているのかなあ。boostのバージョンが1.34でないと動かないのだろうか。試したプログラムをメモ。

#include <iostream>
#include <stdexcept>
#include <string>
#include <vector>
#include <boost/program_options.hpp>

namespace po = boost::program_options;
using std::cerr;
using std::cout;
using std::exception;
using std::string;
using std::vector;

int main(int argc, char* argv[]) {
    po::options_description options("Allowed options");
    options.add_options()
        ("aaaa,a", po::value<string>())
        ("help,h", "help");
    po::positional_options_description xxxx;
    xxxx.add("XXXX", -1);
    po::variables_map vm;
    try {
        po::store(
                po::command_line_parser(argc, argv)
                .options(options)
                .positional(xxxx)
                .run(),
                vm);
        po::notify(vm);

        if (vm.count("help")) {
            cout << options;
            exit(0);
        }
        if (!vm.count("XXXX")) {
            cerr << "XXXX is required.\n";
//            exit(2);
        }

        cout << "XXXX is " << vm["XXXX"].as<vector<string> >()[0];
    } catch (exception& e) {
        cerr << e.what() << "\n" << options;
        exit(2);
    }
}

手元のSUSE Linuxだと

$ ./a.out param
unknown option XXXX
Allowed options:
  -a [ --aaaa ] arg
  -h [ --help ]         help
$
$ rpm -qi boost | grep Version
Version     : 1.33.1                            Vendor: SUSE LINUX Products GmbH, Nuernberg, Germany

CentOSだと

$ ./a.out param
XXXX is required.
boost::bad_any_cast: failed conversion using boost::any_cast
Allowed options:
  -a [ --aaaa ] arg
  -h [ --help ]          : help
$
$ rpm -qi boost | grep Version
Version     : 1.32.0                            Vendor: CentOS

SUSEは「po::store(」の所で例外が投げられてしまう。CentOSは「vm.count("XXXX")」の所でパラメータの存在を確認できないのと、「vm["XXXX"]」で取得できるオブジェクトの型が合わないのがおかしい。

やること

  • クレジットカード
  • 銀行
  • 新税務署
  • 移転のお知らせ
  • ダンボール
  • 水道料金
  • 確定拠出型年金(郵送)
  • M(郵送)

待機中

  • 火災保険の申し込み(振込用紙待ち)
  • E(書類待ち)
  • 新国民年金基金(書類待ち)
  • 旧国民年金基金(書類待ち)