2009年8月1日土曜日

JavaでRubyを実行する

Rubyというスクリプト言語をJava上で実行する方法をご紹介します。

まず、RubyのJava実装環境である、「JRuby」をインストールします。JRubyは以下からダウンロードしてください。

http://dist.codehaus.org/jruby/

上記のリンク先から最新のバージョンをダウンロードしてください。ここでは、「jruby-bin-1.1.5.zip」をダウンロードしました。

 JRubyのインストール

ダウンロードしたファイルを適当なところに解凍して、環境変数を設定します。


JRUBY_HOME=C:\ruby\jruby-1.1.5
PATH=%PATH%;%JRUBY_HOME%\bin

それでは、JRubyが適切に動作するかを確認する為に以下のをコマンドプロンプトにて実行します。

jruby -version

これで、JRubyのバージョンの情報が表示されればインストール完了です。

JRubyのインストールはこれで終わりなのですが、JavaからRubyを実行するにはいくつかのパッケージが必要になりますので、CLASSPASHに指定してください。

  • jruby-engine.jar
  • bsf.jar
  • profile.jar

jruby-engien.jarはスクリプトを動かす為のライブラリです。Java 6 では、「Java Script」はスクリプトエンジンが実装されているのですが、Rubyはまだ実装されていません。そこで、このライブラリが必要になります。ココから「jsr223-engines.zip」をダウンロードして、適当なところに解凍してください。

下の2つは「%JRUBY_HOME%\lib」にあります。

これで準備は整いました。それでは、実際に動くか試してみましょう。

import javax.script.*;

public class Test {
 private static ScriptEngine ruby = new ScriptEngineManager().getEngineByName("ruby");
 
 public static void main(String[] args) throws Exception {
  String program = "def hello(n)\n puts \"Hello \" + n\n end";
  ruby.eval(new java.io.StringReader(program));
  ruby.put("s", "JRuby");
  ruby.eval("hello($s)");
 }
}

実行結果

Hello JRuby

と、表示されれば成功です。java.lang.NullPointerException(がっ!!)と表示される場合は、環境変数を見直しましょう。

2009年7月15日水曜日

【SQL】文字列文字列・数値混在データソート

SQL Serverにおいて、数字とアルファベットが混在している列を単にソートすると以下のようになります。

  1. SELECT * FROM sample  
  2. ORDER BY ID  


結果 (SQL Server 2005 検証環境)
ID
1
2
20
2A
3
3123
4
A1
AA1


2、の次に20、3と続いてる。これでは適切なソートとはいい難い。

そこで、先ほどのSQL文に一工夫。

  1. SELECT * FROM sample  
  2. ORDER BY  
  3. CASE WHEN ISNUMERIC(ID) = 1 THEN  
  4. REPLICATE('0', 10 - LEN(ID)) + ID  
  5. ELSE  
  6. ID  
  7. END  


結果 (SQL Server 2005 検証環境)
ID
1
2
3
4
20
3123
2A
A1
AA1


と、思った通りにソートされました。めでたしめでたし。


最後に今回使用した関数を簡単に説明します。
ISNUMERIC(): 引数の値を数値に変換可能かを返します。
       1:数値変換可能 0:それ以外
REPLICATE(,): 文字を指定された回数繰り返します。
       第1引数に繰り返したい文字、第2引数に繰り返し回数を指定します。

2009年7月11日土曜日

Javaソース ハイライト化に対応しました

JavaソースをBloggerに公開するに当たって、「ソースをハイライト化したら見やすいのでは」ってことで調べてみたらありました。


以前、「pukiwiki」にインストールしたことがある「Syntax Highlighter」を使用するします。ここでは、「Syntax Highlighter」のBlogger版「Blogger Syntax Highlighter」を使用します。


FaziBear’s Blogger Widgets


上のリンクにアクセスして、「+ Add to Blogger」をクリックすると、事前にBloggerにログインしていると勝手にガジェットが追加されいつでも使えるようになります。


それでは使用例です。


<pre name='code' class='java'>
public class Test {
public static void main(String[] args){
System.out.println("Hello World");
}
}
</pre>

以上のように、投稿の編集画面で記述してください。ここで気をつけないといけないのは"<"などを、"&lt;"と変換しなければいけません。



で、これを投稿するとこんな感じ。

  1. public class Test {  
  2.  public static void main(String[] args){  
  3.   System.out.println("Hello World");  
  4.  }  
  5. }  

おお、ちゃんと表示されました。
ちなみに、「Syntax Highlighter」はJava以外にも、HTMLなどもハイライト化してくれますが、そこら辺の詳細は、「Syntax Highlighter」本家で調べるか、私が参考にしたサイトにも対応表が載っているので参考にしてみて下さい。

参考サイト: 医者を志す妻を応援する夫の日記

2009年7月7日火曜日

とりあえず PC環境の紹介

(本当は、外出先で自分のPCのスペックを確認するためなんだけどね)

まずはメインで使用しているPCから

【CPU】 : Intel Core i7 920  2.79 GHz

【マザーボード】 : [GIGABYTE] GA-EX58-UD4P

【メモリ】 : [UMAX] Cetus TCDDR3-6GB-1333

【グラフィックカード】 : [GIGABYTE] GV-N96TSL-512I

【電源ユニット】 : [Tagan] BZ900

【PCケース】 : [Thermaltake] ElementS VK60001W2Z

【ディスプレー】 : [MISUBISHI] RDT231WM

【プリンター】 : [CANON] PIXUS MP630

【OS】 : Windows Vista Home Premium  32bit版

【OS】 : Windows 7 Ultimate 64bit


続いて前まで使用していた。Fedoraをインストールする予定のPCです。

【本体】 : [TOSHIBA] dynabook SS MX/2E

【CPU】 : Intel Pentium M 1.2 GHz

【メモリ】 : 735Mバイト

数年前にバッタ専門学校指定で購入したPCです。

2009年7月6日月曜日

初ブログ

はじめまして。 sorumaです。

プログラミングやLinuxの知識をどこかに書いておきたいなってことで、主にメモとして利用します。

私と同じところで躓いた人のいい手掛かりになればいいなと思っております。

ではでは、よろしくお願いします。