2013年4月26日金曜日

バッチファイル自身のパスを取得する

Windowsでバッチファイル実行時に、バッチファイル自身のパスを取得するには、
バッチファイル内で下記のように記述する
@echo %~d0
@echo %~dp0
@echo %~dpn0
@echo %~dpnx0

上記のバッチファイルを実行した結果は、以下の通り。
D:
D:\bat\
D:\bat\test
D:\bat\test.bat

なお、上記はバッチファイル内のみで有効な記述であり、コマンドプロンプトで直接実行はできない。ちなみに、上記のような記述は、WindowsでRoRのrailsコマンドを起動するバッチファイルに使われてるらしい。

 

関連リンク

2013年4月25日木曜日

コマンドプロンプトでドライブとディレクトリを同時に移動する

コマンドプロンプトでドライブとディレクトリを同時に移動するには、cdコマンドのdオプションを使用する。
具体的には、以下の通り
cd /d d:\tmp

上記のコマンドを実行すると、現在のディレクトリがCドライブであったとしても、Dドライブに移動した上でtmpディレクトリに移動する。

 

関連リンク

2013年4月4日木曜日

Bashのショートカット

Bashで使用できる主要なキーボードショートカットは、下記リンクを参照。


なお、Bashのショートカットはemacsのショートカットがベースになっている模様。

2013年4月3日水曜日

GroovyからKyoto Cabinetを使用する

いわゆるKVS(キーバリューストア)の実装のひとつであるKyoto CabinetをGroovyから使用する手順は、以下の通り。

前提

  • lib/kyotocabinet.jar(Kyoto CabinetのJavaバインディング)をクラスパスに含める
  • Groovyスクリプト(下記参照)の実行ディレクトリにjkyotocabinet.dll(Kyoto CabinetのDLL)が存在する

手順

下記のGroovyスクリプトを用意する。なお、このスクリプトは、Kyoto CabinetのJavaDocにあるサンプルをGroovyスクリプトにしただけのもの。

import kyotocabinet.*;
// create the object
DB db = new DB();
// open the database
if (!db.open("casket.kch", DB.OWRITER | DB.OCREATE)){
System.err.println("open error: " + db.error());
}
// store records
if (!db.set("foo", "hop") ||
!db.set("bar", "step") ||
!db.set("baz", "jump")){
System.err.println("set error: " + db.error());
}
// retrieve records
String value = db.get("foo");
if (value != null){
System.out.println(value);
} else {
System.err.println("set error: " + db.error());
}
// traverse records
Cursor cur = db.cursor();
cur.jump();
String[] rec;
while ((rec = cur.get_str(true)) != null) {
System.out.println(rec[0] + ":" + rec[1]);
}
cur.disable();
if(!db.close()){
System.err.println("close error: " + db.error());
}
view raw KCSample.groovy hosted with ❤ by GitHub

Gradleから下記のGroovyスクリプトを実行するには、下記のbuild.gradleを使用する。
apply plugin: 'groovy'
apply plugin: 'eclipse'
repositories {
flatDir(dirs: file("lib"))
}
dependencies {
groovy localGroovy()
compile ":kyotocabinet:@jar"
}
task execJava (type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = "KCSample"
}
view raw build.gradle hosted with ❤ by GitHub

execJavaタスクを実行すると、上記のGroovyスクリプトが実行される。


 

感想

別途アプリケーションをインストールすることなくKVSを手軽に利用できるのがよい。ただし、作成されるDBのファイルサイズは小さくない(上記サンプルで6MB程度)。