DOS窓うぜぇ。

DOS窓がうざいツールがある。
PC起動時から動作させてずーっと使いたいので

  • ウィンドウを見る必要ないのにうざい
  • 貴重なタスクバー資源を使われる(2段にして使ってても邪魔)
  • 黒い画面は怖がられる

と、ちょっと困りもの。


サービスとかを活用できりゃいいんだけど、普通のツールを
サービスとして登録できるのかなんてまったく知らない。Javaらーなだけに。
# 実はできたりして。


結局、無理やりこんなvbsを作ってみた。


Set objShell = WScript.CreateObject("WScript.Shell")
Call objShell.Run("hoge.bat", 0, True)
3行目のRunの第2引数を0にすることで、非表示で実行できるっぽい。
詳しくはここらへん。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsMthRun.asp


弊害として、hoge.batはどこにも現れないので、
タスクマネージャからプロセスを終了しなければならない。
こんなことしていいのかなぁ。


つーかwscript.exeだけで、6Mもメモリ消費してるぞ・・・。

Apache Derbyメモ

お気軽DBのApache Derbyを、Eclipseプラグイン版でさわってみる。
JDK:1.4.2
Eclipse:3.1.1

準備

1.インストール
derby_core_plugin_10.1.2、derby_ui_plugin_1.1.0.zipをEclipseにインストール。


2.Derby化?
適当にプロジェクトを選択して、右クリ→Apache Derby→Add Apache Derby natureを選択。
パスにDerbyのjarが通される。


3.サーバの起動
プロジェクトを右クリ→Apache Derby→Start Derby Network Serverを選択。


4.コンソールから接続&DB作成
プロジェクトを右クリからijを起動する。ij=Derbyのコンソールらしい。
以下のように打つ。


connect 'jdbc:derby://localhost:1527/testDb;create=true;user=hoge;password=foo';
create=trueとすると、指定した名前のDBがない場合に作成してくれるらしい。
ユーザ、パスは適当。なくても大丈夫っぽい。

さわる

ijからさわる。
create tableでテーブル作成後、いろいろいじった。
select, insert, delete, updateあたりは動く(当たり前)。
truncateはないらしい。


SELECT * FROM SYS.SYSTABLES;
とかで、システム関連の情報が見れる。
SYSスキーマに色々情報があるらしい。

Javaでさわる。

こんな感じ。Utilsはご想像の通り。


public static void main(String[] args) {
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;

try {
Class.forName("org.apache.derby.jdbc.ClientDriver");
conn = DriverManager.getConnection("jdbc:derby://localhost:1527/testDb");

stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT TABLEID, TABLENAME FROM SYS.SYSTABLES");
while (rs.next()) {
int i = 1;
String tableId = rs.getString(i++);
String tableName = rs.getString(i++);
System.out.println(tableId + " : " + tableName);
}

} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
Utils.releaseResultSet(rs);
Utils.releaseStatement(stmt);
Utils.releaseConnection(conn);
}
}
単なるJavaソースだな。
まぁ特に珍しいことをやる気もないし。


んで実行結果


80000010-00d0-fd77-3ed8-000a0a0b1900 : SYSCONGLOMERATES
80000018-00d0-fd77-3ed8-000a0a0b1900 : SYSTABLES
8000001e-00d0-fd77-3ed8-000a0a0b1900 : SYSCOLUMNS
80000022-00d0-fd77-3ed8-000a0a0b1900 : SYSSCHEMAS
8000002f-00d0-fd77-3ed8-000a0a0b1900 : SYSCONSTRAINTS
80000039-00d0-fd77-3ed8-000a0a0b1900 : SYSKEYS
8000003e-00d0-fd77-3ed8-000a0a0b1900 : SYSDEPENDS
c013800d-00d7-ddbd-08ce-000a0a411400 : SYSALIASES
8000004d-00d0-fd77-3ed8-000a0a0b1900 : SYSVIEWS
80000056-00d0-fd77-3ed8-000a0a0b1900 : SYSCHECKS
8000005b-00d0-fd77-3ed8-000a0a0b1900 : SYSFOREIGNKEYS
80000000-00d1-15f7-ab70-000a0a0b1500 : SYSSTATEMENTS
80000000-00d3-e222-873f-000a0a0b1900 : SYSFILES
c013800d-00d7-c025-4809-000a0a411200 : SYSTRIGGERS
f81e0010-00e3-6612-5a96-009e3a3b5e00 : SYSSTATISTICS
c013800d-00f8-5b70-bea3-00000019ed88 : SYSDUMMY1
80220011-010b-1371-2bb2-00000000002e : FIRSTTABLE

おわり

HSQLDBよりしっかりしてるイメージ。XAがあるようだし。
でも、プラグイン版でijを立ち上げた後にいちいちconnectすんのがめんどくさい。
HSQLDBもそうっぽいけど、なんでシーケンスがないんだろー。


どうやら、組み込みで使えるようだ。
プログラム内で、DB起動→DB作成→データ入れまくりとかできちゃうみたい。
使うことあるかなぁ。

    • 追記

うほっ、HSQLDBシーケンスできてやんの。
1.8系からかなぁ。
手元にあったプラグイン版はできねーし・・・。