2009年11月20日金曜日

Google Chrome OSを入れてみた

このエントリーをはてなブックマークに追加
[Download]
こちらのサイトからVMの仮想ディスクイメージをダウンロードします.
(DLにはユーザ登録が必要)
http://gdgt.com/google/chrome-os/download/

[Install]
VM PlayerやVM WorkStationで実行します.
vmdkからの展開となるので,少し厄介.
インストールには,下記ページを参照してください.
http://www.forest.impress.co.jp/docs/special/20091120_330552.html

[Screen shot]

・OSが立ち上がった直後のログイン画面.
ここのログインにはGmailのアカウントが必要となります.
また,ネットワークに接続されている必要があります.





・このページを見たところ.
右上にメニューがあります.




 ・メモリーの使用量
26Mbyteほどで動作しているみたいです.
ちなみにOSの最小動作メモリは32Mbyteとなっています.





・ダウンロードしたファイルも,ブラウザ上からアクセスします.




・バージョン情報




まだまだ,実用レベルには達していないと思いますが,今後の開発には注目していきたいです.
[追記]
proxy環境下ではログインすらできないのかな??

2009年11月15日日曜日

reacTIVisionを使ってみた2(volume controller)

このエントリーをはてなブックマークに追加
こんなのを作ってみました。



二つのマーカーを使っていて、
ひとつはボリューム調節用コントローラとして
もうひとつは、写真を表示するためのXY座標を決定するために使用しています。

ボリューム調節用コントローラは時計回転すると(見にくいんですけど)マーカーの下に黒色のゲージがたまっていきます。
逆回転すると下がります。

そして、ボリューム調節用コントローラのボリューム値によって写真を拡大・縮小しています。

2009年11月10日火曜日

reacTIVisionを使ってみた

このエントリーをはてなブックマークに追加
reacTIVision
は,タンジブルユーザインターフェースやフィンガートラッキングを実現するためのオープンソースなフレームワークです.




昨日,研究室の先輩に教えていただき,とりあえずサンプルプログラムをいじって,簡単なプログラムを書いてみた.

どういうことをしているかって言うと,壁の手前にプロジェクターとカメラを用意しています.

壁にマーカーを貼り付けることにより,マーカーの座標を取得し,その座標を基に,描画を行いプロジェクターから出力しています.

とりあえず,作ってみたのは,

二つのマーカーを使用した音楽再生プログラム.
一つのマーカーは音楽プレーヤを表していて,処理として「Play」と「Stop」を持ちます.

もうひとつのマーカーは音楽プレーヤをコントロールするためのマーカーです.
音楽プレーヤマーカーの近くに表示されているPlayとStopの近くにこのコントロールマーカーを持っていくことで,音楽を再生したり止めたりすることができます.

画像認識,処理などの知識なんて全くって言っていい程ないけど,reacTIVisionを使うと簡単にプログラムを書けます.

2009年11月2日月曜日

Google Guiceを使ってみた

このエントリーをはてなブックマークに追加
Google Guice はオープンソースの Java™ 開発用DI (Dependency Injection: 依存性注入)フレームワークです.

DIとは依存性の注入のことで,同じインターフェースを持つ具象クラスを,設定によって入れ替え可能にする方法を指します.このことにより,プログラムの挙動を動的に変更することができます.

[download]
http://code.google.com/p/google-guice/downloads/list

[Main.java]
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;

public class Main {
 public static void main(String[] args) {
  Injector injector = Guice.createInjector(new AbstractModule() {
   @Override
   protected void configure() {
    bind( String.class ).toInstance( "まつたけ" );
    bind( int.class ).toInstance( 5000 );
   }
  });
  injector.getInstance(Item.class).view();
 }
}

[Item.java]
import com.google.inject.Inject;

public class Item {
 @Inject
 private String name;
 @Inject
 private int price;
 
 public void view() {
  System.out.println("商品名" + " : " + name);
  System.out.println("値段" + " : " + price);
 }
}

上記のプログラムでは,次の2行でItemクラスのフィールドに対して値を代入しています.
bind( String.class ).toInstance( "まつたけ" );
bind( int.class ).toInstance( 5000 );

ここでは,Itemクラスのフィールドの型が別なので,自動的にString型がnameへintがpriceに代入されています.

ここで,Itemクラスに商品番号を表すint idというフィールドがあった時,どちらを代入すればよいのかわからないため,例外が飛びます.
bind( int.class ).toInstance( 5000 ); // price?
bind( int.class ).toInstance( 1 );  // id?

そのとうな場合には,下記のようにアノテーションで名前をつけることにより,解決できます.

[Main.java]
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.name.Names;

public class Main {
 public static void main(String[] args) {
  Injector injector = Guice.createInjector(new AbstractModule() {
   @Override
   protected void configure() {
    bind( String.class ).annotatedWith(Names.named( "name" )).toInstance( "まつたけ" );
    bind( int.class ).annotatedWith(Names.named( "price" )).toInstance( 5000 );
    bind( int.class ).annotatedWith(Names.named( "id" )).toInstance( 1 );
   }
  });
  injector.getInstance(Item.class).view();
 }
}

[Item.java]
import com.google.inject.Inject;
import com.google.inject.name.Named;

public class Item {
 @Inject
 @Named("name")
 private String name;
 @Inject
 @Named("price")
 private int price;
 @Inject
 @Named("id")
 private int id;
 
 public void view() {
  System.out.println("商品名" + " : " + name);
  System.out.println("値段" + " : " + price);
  System.out.println("ID" + " " + id);
 }
}


参考:
Guice による依存性注入(IBM Developerworks)
http://www.ibm.com/developerworks/jp/java/library/j-guice.html

GoogleからリリースされたDIフレームワーク(gihyo.jp)
http://gihyo.jp/dev/serial/01/awdp/000101


GoogleのDIフレームワーク"Guice"を使ってみる(マイコミジャーナル)
http://journal.mycom.co.jp/articles/2007/03/14/googleguice/001.html