タグ

ブックマーク / kohsuke.hatenadiary.com (5)

  • 非対話的デバッガ YouDebug - 川口耕介のブログ

    バグ修正はプログラマの仕事の一つですが、このうちのかなりの時間は問題を再現することに費やされます。 症状からバグの全容が推察できる時もあるのですが、多くの場合には、手元で問題を再現し、更なるデータを集めることによって始めてバグが理解されるからです。しかし、環境に依存する問題などは再現が難しい場合もあります。どうしたらよいでしょうか。 ロギングというのがよく行われる解決・予防策ですが、「デバッガを走らせて変数xの値を教えてくれればいいのに!」と思った事があるのは私だけではないと思います。ロギングと異なり、デバッガは予めプログラムに障害発生を予期するコードを埋め込んでおく必要はありません。また、呼び出し元のローカル変数をアクセスしたり、任意の式を評価したり、あるいは変数の値を変更することもできてしまいます。当たり前ですが、障害分析ツールとしてはデバッガはずっと強力だからです。 ではなぜユーザー

    非対話的デバッガ YouDebug - 川口耕介のブログ
  • HudsonクラスタをHadoopクラスタに - 川口耕介の日記

    仕事では30-40ノード位のHudsonクラスタを運用しているのですが、常々、このクラスタをもっと多用途に使えたら便利だと思っていました。 HadoopをHadoop推奨の方法でインストールしてもよいのですが、ネットワークの情報等をHudsonとHadoopに別々に教えないといけないのは不便です。そこで、週末を2つ使って、HudsonクラスタにHadoopを展開するためのプラグインを書きました。Hadoopのコードを読むのに少し手間取りましたが、一度肝を掴んでからは比較的簡単でした。 このプラグインをインストールすると、Hudsonのクラスタ全域でHadoopノードが実行され、またネットワークの設定に関する情報が自動的にHudsonからHadoopへ伝えられます。ユーザーは、HadoopプラグインをHudsonにインストールする以外にはやることはなにもありません。いわゆる「zero con

    hagayu
    hagayu 2009/03/16
    HudsonクラスタにHadoopを展開するためのプラグイン
  • JAX-WSを使ったVirtualBoxウェブサービスクライアントライブラリ - 川口耕介のブログ

    JavaOneでの収穫の一つは、VirtualBoxの最新版(1.6.0)にウェブサービスAPIがついているということ。Javaから VirtualBoxをいじったり、別のマシン上のVirtualBoxを操作するのにはこれが一番の方法です。僕のday jobの一つはMetroウェブサービスツールキットなので、その観点からも興味があったし、またHudsonのスレーブを仮想マシンにしたら面白そうだと前々から思っていたので、このAPIでまずは遊んでみることにしました。 さて、実際に VirtualBoxのWSDLをwscompileコンパイラにかけてみたのですが、でてきたコードが使いづらい。というのも、VirtualBoxはオブジェクト指向をSOAP上でエミュレートする独自の方式を編み出していて、当然のことながらツールがこの仕組みを理解できるはずも無いからです。WS-Addressingとかを使

    JAX-WSを使ったVirtualBoxウェブサービスクライアントライブラリ - 川口耕介のブログ
    hagayu
    hagayu 2009/02/25
    JavaからVirtualBoxを操作するライブラリ
  • スライドを公開しました - 川口耕介のブログ

    JJUGでのHudsonの発表と、Sunのホット・トピック・セミナーでしたMetroの発表を以下の場所で公開しました。 Hudson (JJUG CCCにて)View SlideShare presentation or Upload your own. ホット・トピック・セミナー「Metro」View SlideShare presentation or Upload your own. ところどころスライドが崩れているところがありますが、ご了承下さい。

    スライドを公開しました - 川口耕介のブログ
    hagayu
    hagayu 2009/02/15
    JJUG2008でのHudson発表資料
  • 分散Groovy環境 - 川口耕介のブログ

    Hudsonの分散ビルドの実装の肝になっているのは、クロージャをリモートJVMで実行するという仕組み。クラスファイルとかリソースとかも必要に応じてリモートJVMにコピーするので、リモート側にあらかじめプログラムを配備しておく必要がないのがよい点です。 さて、常々Javaのクロージャ(もどき)の文法は冗長だと思っていたので、これにGroovyを組み合わせたらいいんじゃない?、という事で、実験して見たところ意外にうまくいきました。 def pid() { // PIDを取得する。要はどのJVMで動いているかをわかりやすくするだけ return new File("/proc/self").canonicalPath } i=0 (0..<4).each { i++; remote { println "1st from ${pid()} (${i})" remote { println "2n

    分散Groovy環境 - 川口耕介のブログ
  • 1