トップ «前の日(01-11) 最新 次の日(01-13)» 追記

おいぬま日報(不定期)

カテゴリ | 技術情報まとめWiki | 検索エンジンから来た人向け | RSS

2003年
1月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31



2003-01-12 今日はXMLマスターの試験

@ [xml] Forrestを使ってみる (3)

ページの左側のメニューは、src/documentation/content/xdocsディレクトリ以下のbook.xmlから生成されている。このディレクトリの下にサブディレクトリがある場合は、そのサブディレクトリ下にもbook.xmlを作ると、メニューが生成される。

@ [xml] Forrestを使ってみる (4)

左上のタブはtab.xmlを作成することによって生成される。これをsrc/documentation/content/xdocsディレクトリ以下に用意しておくと、タブが生成される。

@ [xml] XMLマスター試験

余裕で合格。本番が思ったより簡単だったので、

?

などと図に乗ってみたり。でも、試験勉強することで、今まであいまいにしか理解してなかった部分がちゃんと理解できたから、あながち無駄ではなかったかも。

次はSunのJava資格でも受けようかなぁ...

@ [linux] rpm --replacepkgs

rpm -Uvh だと、インストールしようとしたパッケージがすでにインストールされている場合はエラーになるが、--replacepkgsオプションを使えば、強制的に新しいもので上書きしてくれる。


2005-01-12

@ [java][ruby] JRubyを使ってみる(3)

Rubyで定義したクラスをJava側から使用出来ないか試してみました。JRubyはBSFを実装しているので、スクリプトを評価した結果をJavaで受け取ることが出来ます。まずは下記のclass.rbを作ってみます。

class Foo
  def hello
    return "Hello world!"
  end
end
 
Foo.new

スクリプトの最後でFoo.newしているのは、JavaからBSFManager#evalした時に戻り値を得るためです。これがないとただのクラスの定義になってしまうので、evalの結果がnullになります。

Java側のコードは下記のようになります。examples/jrubyというパッケージの下にRuby2Java.javaとして作成しておきます。

package examples.jruby;
 
import java.io.*;
import org.apache.bsf.BSFManager;
import org.jruby.RubyObject;
import org.jruby.javasupport.JavaUtil;
import org.jruby.runtime.builtin.IRubyObject;
  
/**
 * RubyオブジェクトのメソッドをJavaから呼んでみるテスト。
 */
public class Ruby2Java {
 
    public static void main(String[] args) throws Exception {
        if (args.length == 0) {
            System.out.println("Usage: java examples.jruby.Ruby2Java FILE");
            System.exit(1);
        }
        new Ruby2Java().execute(args[0]);
    }
    
    private void execute(String file) throws Exception {
        BSFManager.registerScriptingEngine(
                "ruby", "org.jruby.javasupport.bsf.JRubyEngine", new String[] { "rb" });
        BSFManager manager = new BSFManager();
        String script = loadScript(file);
        System.out.println("--- script ---");
        System.out.println(script);
        
        Object result = manager.eval("ruby", "(java)", 1, 1, script);
        IRubyObject foo = (IRubyObject)result;
        // Foo#helloを呼ぶ
        IRubyObject ro = foo.callMethod("hello");
        String message = (String)JavaUtil.convertRubyToJava(ro, String.class);
        System.out.println("message = " + message);
    }
    
    private String loadScript(String file) throws IOException {
        BufferedReader r = new BufferedReader(new FileReader(file));
        StringBuffer sb = new StringBuffer();
        for (String line = r.readLine(); line != null; ) {
            sb.append(line);
            sb.append("\n");
            line = r.readLine();
        }
        return sb.toString();
    }
}

実行してみます。

$ java -classpath lib/bsf.jar:lib/jruby.jar examples.jruby.Ruby2Java class.rb
--- script ---
class Foo
  def hello
    return "Hello world!"
  end
end
 
Foo.new
 
message = Hello world!

おお! Fooクラスのインスタンスメソッドhelloをちゃんと呼び出せていますね。

@ [work] 面接

いきなり「今日面接どうですか?」とか言われたので言ってきました。そこの会社的にはもうおっけーだそうで、あとはこっちの返事次第。来週からコーダーとして1週間ぐらい火のついたプロジェクトでヘルプして、その後面白そうなJavaの仕事をやってください、とのこと。うーん、もう1個気になるのがあるんだよな。

本日のツッコミ(全2件) [ツッコミを入れる]

# 前の会社の人 [い、いかん。コーダーがヨーダーと読めてしまった。]

# おいぬめ [そう言われてみれば...病気ですね(笑)]


2006-01-12

@ [web] RFCの翻訳

メモ。


Bookmark: あんてな | ぶっくまーく | 覚え書き | Project Amateras | ExcelPettyCashBook | FreeStyle Wiki

2002|10|11|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|11|12|
2008|01|02|03|04|05|06|07|08|10|11|12|
人気ブログランキング - おいぬま日報(不定期)