2010年6月29日火曜日

JavaでメモリDBを簡単に構築する

メモリDBをDerbyというオープンソースを利用すれば簡単に利用できる。
あまりの簡単さにびっくりしてしまった。

まずは、ソフトをダウンロード。
http://db.apache.org/derby/

binフォルダにPATHを張り

ijと打つとコマンドラインDBが作成できる。

 java -jar derbyrun.jar ij

ij version 10.5
ij> connect 'jdbc:derby:memory:MyDB;create=true';
ij> create table my_table(x int);
0 rows inserted/updated/deleted
ij> insert into my_table values 1, 2, 3;
3 rows inserted/updated/deleted
ij> exit;

ちなみに
'jdbc:derby:MyDB;create=true';

と書くと普通にファイルのDBができる。

これをJavaプログラムで書くと
下記に書いてあるやつをちょっと変更して
http://db.apache.org/derby/docs/10.6/getstart/getstartderby.pdf

こんな感じ。
String driver = "org.apache.derby.jdbc.EmbeddedDriver";
String dbName="jdbcDemoDB";
String connectionURL = "jdbc:derby:memory:" + dbName + ";create=true";
...
String createString = "CREATE TABLE WISH_LIST "
+ "(WISH_ID INT NOT NULL GENERATED ALWAYS AS IDENTITY "
...
+ " WISH_ITEM VARCHAR(32) NOT NULL) " ;

必要なファイルは、derby.jarのみ。これでJavaプログラム内にのメモリデータベースが
できる感じです。

これは、非常に便利だなと思った。

axis2でWSDLからWebサービスを作る

axis2を使うと簡単にSOAPを利用したWebサービスが構築できる。
よくできてるなと思う。

下記のページを参考にして。
http://ws.apache.org/axis2/1_5_1/userguide-buildingservices.html#deployrun

いろいろ方法はあるが、ここではWSDLファイルからサービスを作成する方法。

axis2のbinフォルダに行き

WSDL2Java -uri file:///C:/apps/axis2/samples/zSample/Axis2UserGuide.wsdl -p org.apache.axis2.axis2userguide -d adb -s -wv 1.1 -ss -sd -ssi

を実行するとソースができる。

これのSkeltonクラスに実装を記述した後、こちらで生成されたたbuild.xmlに対して
antを実行すると、aarファイルが作成されるので、これをaxis2のservceフォルダに
置いてあげてbinフォルダのスタート用バッチをキックしてあげて

http://localhost:8080/axis2/

にアクセスすればサービスが作れている。

なんて簡単にできてしまうんだと思った。

eclipseのショートカットメモ

eclipseでは、いろいろな機能がありすぎて十分使いこなせてないんだけど、
よく忘れてしまうショートカットをメモしておきます。

インデントの修正 Ctrl+I
JavaDocの表示 Shift+F2
インポートの整理 Ctrl+Shift+o
クラスの検索 Ctrl+Shift+r

随時この記事を更新していくことにする。

2010年6月12日土曜日

Content Scriptsにてオプションで保存した設定を使う

オプションの設定サンプルは前回に書いたものの中にある
http://ttimez.blogspot.com/2010/06/google-chrome-extensions.html

基本的には、オプションを保存する耐えのhtmlを書きそこでlocalStrageへ保存することになる。

しかし、このlocalStrageはサーバ毎に保存されるので、Content ScriptsでlocalStrageから
読みび出そうとしても読み出せないということで、ちょっとした工夫が必要になる。

オプションのlocalStorageを読み出すためのサンプルがこちらにあったので、
こちらを参考にして作ってみると確かに作れました。

http://d.hatena.ne.jp/umezo/20091115/1258291572

基本的には、background.html background.jsは汎用的に作ってあるみたいなので
そのまま利用できます。あとは呼び出し元を下記のようにhogehogeと自分の
保存したKeyで呼び出してあげればできました。

chrome.extension.sendRequest( { 
        action : "getValues" , 
        args   : [{ 
            "hogehoge" : ""
        }]
    } , function( response ){
        option = response.values ;

        init();
    }
);

これで、またやれることの幅が少し広がりました。

2010年6月3日木曜日

Google Chrome Extensions通知系のサンプルページ

Google Chrome Extensionsでは、通知系のプラグインもできそうです。

説明ページはこちら、
http://code.google.com/chrome/extensions/notifications.html

サンプルソースはこちら、
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/notifications/

こちらは、オプションページの作り方のサンプルにもなっている。

現在時刻を通知するというサンプルになっていて、下記のような感じで書いてある。

    var notification = webkitNotifications.createNotification(
      '48.png',                      // 画像
      hour + time[2] + ' ' + period, // タイトル文字列
      'Time to make the toast.'      // メッセージ文字列
    );
    notification.show();

ネット上のカレンダーなんかと連携して時間が着たら通知する
なんてやつもできそうですね。

2010年6月2日水曜日

AntでJUnitを動かす

参考にしたサイト。

How do I run JUnit using Ant?
http://junit.sourceforge.net/doc/faq/faq.htm#running_5

プロパティなどの情報
http://www.jajakarta.org/ant/ant-1.5/docs/ant-1.5/j/docs/manual/OptionalTasks/junit.html

複数のテストを実行する際のサンプル
http://www.ki.rim.or.jp/~kuro/Java/JUnit/JUnit-07.html

いろいろantのxmlを自分で書いてみると理解がだいぶ深まってきた。

でテストの結果をxmlで出力して、その後は、JUnitReportでhtmlへと変換する。

JUnitReport
http://www.jajakarta.org/ant/ant-1.5/docs/ant-1.5/j/docs/manual/OptionalTasks/junitreport.html

に書いてあるサンプルどおり下記のように書いてあげれば、
キレイなhtmlが出力できました。

<junitreport todir="./reports">
  <fileset dir="./reports">
    <include name="TEST-*.xml"/>
  </fileset>
  <report format="frames" todir="./report/html"/>
</junitreport>

2010年6月1日火曜日

Javaリフレクションで配列を扱う。

ふとしたことから、リフレクションを利用した場合に配列オブジェクトはどう操作したらいいのか
わかんなかったので試してみた。

import java.lang.reflect.Array
というクラスを利用すHTMLれば操作できるんですね。

下記は、配列のオブジェクトにアクセスするサンプルプログラムです。

import java.lang.reflect.Array;

public class ArrayRefrectionTest {
 public static void main(String[] args)  {
  Object array = new String[]{"aiu","eo","かきく"};
  for (int i=0;i<Array.getLength(array);i++){
   Object obj = Array.get(array, i);
   System.out.println(obj);
  }
 }
}