木曜日, 3月 12, 2009

名ばかり管理職

ほんとにどうでもいい話だが、

/.JのフィードSEにも「名ばかり管理職」 認定を読んでて思った。

「逆残業代」なんて話題も上がっていたが、

そもそも、何を基準にその日一日の作業量を測れば良いんだ??
元から怪しすぎる見積りでスタートしてるのに第三者的に作業量がわからん限り、
そういったことはできないだろうなぁ~

普段は自分の判断で一日の作業量を決めてやることやって、
さっさと帰るのがスタイルなんですが、
「逆残業代」って考えてがあれば、そんなことも考えなくていいのかなぁ~

っていうか、逆に帰れなくなりそう。。。

月曜日, 3月 09, 2009

jUnitでSystem.exit(int)を無効にしてみる

unitテストを作ろうと思い、作って実行してみると途中で止まる。。。

「なんで?」

結局のところ、unitテストで実行しようとしたクラスにSystem.exit(int)があったのが原因だった。

それならば、System.exit(int)が効かなくなるおまじないはないかな?
と調べてみたら一応あった。

・テストクラス
public class Target {

    public static void main(String[] args) {
      if (args != null) {
        System.exit(0);
      } else {
        System.exit(-1);
      }
    }
}
・テストケース
import java.security.Permission;

import junit.framework.TestCase;

public class TargetTest extends TestCase {

    final SecurityManager sm = System.getSecurityManager();

    protected void setUp() throws Exception {
      super.setUp();
      // JVMを終了させない
      SecurityManager securityManager = new SecurityManager() {
        public void checkPermission(Permission permission) {
          if ("exitVM".equals(permission.getName())) {
            System.out.println("System.exit[exitVM]が呼ばれた");
          }
        }

        public void checkExit(int status) {
          // super.checkExit(status);
          throw new ExitException(status);
        }
      };
      System.setSecurityManager(securityManager);
    }

    protected void tearDown() throws Exception {
      System.setSecurityManager(sm);
      super.tearDown();
    }

    protected class ExitException extends SecurityException {
      public int state = 0;

      public ExitException(int state) {
        this.state = state;
      }
    }

    public void test引数あり() {
      try {
        Target.main(new String[] {});
      } catch (ExitException e) {
        assertEquals(0, e.state);
      }
    }

    public void test引数なし() {
      try {
        Target.main(null);
      } catch (ExitException e) {
        assertEquals(-1, e.state);
      }
    }
}
とりあえず、これでSystem.exit(int)を呼び出した場合に返されるintのassertも可能。

しかし、ある意味間違ってはないと思うんですが、
そもそも、FileとかSWTとかのからみでのポリシー設定でも何とかなるのかもしれない。。。

しかしながら、djUnitならこんなに悩まなくてもよかったのかもしれないが、
さすがに僕が勝手にライブラリーを増やすわけにはいかないので、
このやり方で当面はやりくりしてみよう。

月曜日, 2月 23, 2009

g-client

まだまだ、emacsからbloggerへ投稿できないか?と悩んでいます。。。

g-clientってのを発見はしたんですが、
何やら文字コード周りでうまくいかないというようなのを斜め読みしてしまい、
ちょっと躊躇しています。

何かいいものないかなぁ~。。。

日曜日, 2月 22, 2009

初めての確定申告

今日、確定申告に行ってきた。

意外とあっさり終わった。。。

もっと色んな突っ込みがあるんじゃないかと思っていたのに。。。

しかし、「広域申告センター」ってのは楽なもんだと実感

平日に行くしかないのかと思っていただけに非常に助かった。

ついでにアンケートにも「広域申告センターってどうよ?」的な質問があったが、
非常に助かったので続けてほしいと記入しておいた。

まぁ、何はともあれ無事に終わってよかった。。。
修正申告が発生しませんように。。。

木曜日, 2月 12, 2009

javaDBでコードセットUTF8

DB2と違ってUSING CODESETなんて使えるわけではなく、

そうすりゃいいんだ?と思いながらApache Derbyのサイト内検索でderby.ui.codesetというのを発見した。

しかし、このオプションってij起動時に与える拡張パラメータ -Dhogehoge系のパラメータとして準備してやれば良いらしい。

でもって試してみた。

CLASSPATH周りは省略して
java -cp $CLASSPATH -Dderby.ui.territory=ja_JP -Dderby.ui.codeset=UTF8 -Dij.protocol=jdbc:derby: org.apache.derby.tools.ij
で呼び出せばいいみたい。。。

derby.ui.codesetでUTF8にしたらコンソールが文字化けするなんてのがネットに載っていたがそんなこともなくすんなり動いた。

ただし、これで本当にDBのコードセットがUTF8になっているかは動かしてみないことには何とも言えないなぁ~

一応、Derbyのサイト内での説明では-Dderby.ui.territoryは省略すればローカルのロケールになるとか書いてたと思うが、
如何せん、自分の知らないところで色々設定されると細かいところまでわかんなくなってしまうので、
ちょこちょこ細かいところも見ていこうとおもう。

後はjdbc-odbcを使ってA5:SQL経由で動かすことができるか実験だ!

javaDBのメモ

DerbyではなくJavaDBです。 CentOS上でXサーバ無しで色々しようとしていたので
あくまで自分用のメモレベル

リモート端末上でコマンドラインだけでijを動かしてcreateするまで
  1. DERBY_HOMEを設定する(場所は/opt/sun/javadb)
  2. ijを起動(場所は$DERBY_HOME/bin/ij)
  3. ij>connect 'jdbc:derby:~/test;create=true;';
  4. ij>select current date from sysibm.sysdummy1;(DBができてるか確認)
ij上でDBを作るときにダブルクォートではシングルクォートを使わないと実行できない。

これでDBコネクションでのexecute arround methodなパターンの実験ができそうだ。

日曜日, 2月 08, 2009

groovyの正規表現

忘れないようにメモ
こっそり、勉強しているGroovyなんですが

いきなりハマりました。。。

正規表現のオペレータは
==~
間にスペースを入れてしまうと実行できない。。。

スクリプト言語なんですぐに実行できるですが、
何故か一致しない。。。
// これは動く
println "potatoe" ==~ /potatoe/
// 最初にこう書いてハマった。。。
println "potatoe" == ~ /potatoe/
正直、最初はなんで結果がfalseでかえってくるの?と思ってたんですが、
よくよく読んでみると==~でひとつのオペレータなんだそうだ。

hoge == ~ /hoge/
しかし、動いてしまうってのもちょっと怖いなぁ~
hoge == ~だけで評価されてんじゃないのかな?
そうなると残された
/hoge/
はどうなるんだ??行方不明??
しかし、その行方不明になってるぽいものも省略したり、改行したりしてもコンパイルエラーになるようだった。。。

しっかり評価してくれないのにコンパイルを通ってしまうのなんてありなのかな??

failed to read qemu headerのときのメモ

かなり久々。。。 忘れないようにここに書きこんでおく。 ちょっとした手違いで libvirtでイメージを起動しようとすると failed to read qemu header なんておっしゃられて起動しない。。。 vmwareserverを使って...