XMLDB Apache Xindice のコマンド

XMLDBの一つに、Apache Xindice(アパッチ ジンディーチェ)があります。ちょっと動きを試してみました。

アプリケーション自体は、warをtomcatに放り込むだけで起動しました。

で、コレクション(スキーマみたいなもの)を作ろうとしてコマンドを発行

$ xindice add_collection -c /db -n test

trying to register database
XMLDB Exception 0: Cannot communicate with the server: http://127.0.0.1:8888/xindice/

接続できません。っていうか、tomcatのリッスンポートは8888ではないのですが。

どっかにconfigファイルでもあるのかと思って探したのですが見当たりません。

スタンドアロンのサーバだったときのコマンドのまま更新してないのかな??

コマンドのUsageをいくら見ても、ホストとかポートの指定方法が書いてありませんので、「こりゃダメだ、Xindiceってイケてないプロジェクトだったのかなあ・・・」と思ってのですが、

Wiki: How to change Xindice Command Line tool port number? に書いてありました。

$ xindice add_collection -c xmldb:xindice://localhost:8080/db -n test

trying to register database
Created : xmldb:xindice://localhost:8080/db/test

接続できました。-cオプションにはDSNを渡すということだったようですね。

ページ内アンカーでスムーズにスクロールする

jQueryを使って、ページ内アンカーをクリックしたときにスムーズに目標箇所までスクロールするためのスクリプト。

僕はよくやるのですが、コードを書く前に、どういうことをすればいいのかを具体的に言葉で表現してみると、

Documentのロードが終わったときに、href属性が”#”で始まるアンカーを探し、クリックイベントとしてそのhref属性(からハッシュを除いた値)をidとして持つ要素のオフセットを取得して、そこまで滑らかにスクロールする処理を設定する。

となります。

で、それをコードにしたのがこちら。

jQuery(function($){
	$('a[href^="#"]').click(function(){
		$('html, body').animate(
			{ scrollTop : $($(this).attr('href')).offset().top }
		);
		return false;
	});
});

蛇足ながら解説します。

jQuery( callback($) )
$(document).ready()の短縮形。コールバック関数の引数として$を与えるのが吉です。($がコンフリクトするのを防ぎます)
属性セレクタ [name ^= value]
name属性の値がvalueで始まる要素を選択します。
animate( properties, options )
propertiesに指定されたstyleを、現在値から設定値まで滑らかに変化させます。optionsには変化量関数、アニメーション時間の指定などが可能です。今回はoptionsを指定していません。

アニメーションさせる要素をhtmlとbodyにしているのは、クロスブラウザのためです。(ここが一番重要だったり・・・)

例外処理を考える(1)

プログラマにとって例外処理は避けて通れない厄介な問題です。今回はJavaでの例外処理について考えてみたいと思います。

はじめに、Javaの例外処理のための仕組みを整理しましょう。

try〜catch〜finally節

例外を発生させるコード(メソッド・コンストラクタ・もしくは自分で発生させる)を使う部分をtry節で括り、その例外への対処をcatch節に、例外の有無に関わらず行う処理をfinally節に書きます。

try {

    // 例外を発生させるコード

} catch (SomeException1 e) {

    // SomeException1が発生した場合の処理

} catch (SomeException2 e) {

    // SomeException2が発生した場合の処理

} finally {

    // 例外の有無に関わらず行う処理

}

異なる例外を処理するcatch節は複数並べて書くことができますが、発生した例外に対応するcatch節かどうかは上から順に判定されることになっているため、ある例外を処理するcatch節の次にそのサブクラスに当たる例外を処理するcatch節を書くことはできません。(到達不能コードとなります)

この複数書ける、というところが重要です。つまり対処する例外とその対処方法を選択できるということですね。 続きを読む 例外処理を考える(1)

Javascriptで0パディング

Javascriptで0パディングしたいことがあって、つい「Javascript format」で調べたのですが全然出てきませんでした。

それも当然。formatなどという関数自体が存在しないんですね。

とはいえ手動でやるなんて、とてもイヤな感じです。

var param = "1";
while (param.length < 5) {
	param = "0" + param;
}
console.debug(param);

続きを読む Javascriptで0パディング