depthjsを使いkinect経由でchromeを動かすメモ

depthjsという物出たので入れてみる事にする。

git clone git://github.com/doug/depthjs.git

BACKEND: Kinect ====(libfreekinect)====> OpenFramework+OpenCV =====(0MQ)====> Tornado

FRONTEND: Torando <====(WebSocket)==== DepthJS extension ====(Javascript+DOM events)====> Any web page

となっているみたいなの必要なツールをまず入れる。

opencv2.1インストール
参考URL
http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.1/
http://d.hatena.ne.jp/pirosikick/20100116/1263660823

OpenFrameworksも必要なので落とす
git clone git://github.com/openframeworks/openFrameworks.git

ZeroMQというツールも必要なのでインストール
http://www.zeromq.org/local--files/area:download/zeromq-2.0.10.tar.gz

python用のpyzmqインストール
https://github.com/ellisonbg/pyzmq

zeromqのも有るがこれは上手く動かなかった
https://github.com/zeromq/pyzmq

Xcode設定
参考URL
http://d.hatena.ne.jp/afeq/20101022/1287708595
http://www11.atwiki.jp/projectwiki/pages/24.html
http://bucato.jp/weblog/?p=29
http://openframeworks.jp/forum/topic.php?id=7

ヘッダーパス設定

dylibインクルード

depthjsの中に有る実行ファイルをソースファイルに追加する

  • bg_fg_blobs.cpp
  • bg_fg_blobs.h
  • ocv_freenect.cpp
  • ocv_freenect.h
  • zhelpers.hpp


xcodeのビルドと実行をクリックする

pyzmqサーバの実行
depthjsのbackendフォルダ配下に有るbackend.pyを実行  

chrome extensionインストール
chromeを起動
拡張機能⇒パッケージ化されていない拡張機能を読み込みますをクリック
depthjsフォルダ配下に有るchrome-extensionを選択

chromeツールバー横にdというマークが表示されるのでクリックする
Connect to Kinectと出るのでクリック
下にDepthonse Mode,Panner Mode,Selector Modeのどれかを選択する
chromeにポインタが出てkinect経由で動く!


pythonのバージョンは2.6で行った
osはsnow leopard

rails plugin insatall

rspecをインストールした

gem install rspec
gem install rspec-rails

railsアプリケーションのGemfileに下記を記述

group :development, :test do
gem "rspec-rails", ">= 2.1.0"
end

bundle install


Using rspec-core (2.1.0)
Using rspec-expectations (2.1.0)
Using rspec-mocks (2.1.0)
Using rspec (2.1.0)
Using rspec-rails (2.1.0)


./script/rails g rspec:install

create .rspec
create spec
create spec/spec_helper.rb
create autotest
create autotest/discover.rb

初心者がruby覚えるまで掛かった日数は大体2ヶ月と元初心者に聞いた

ubuntu10.10にrubyとrvmとrails3を入れた
参考URL
http://d.hatena.ne.jp/hrsth/20100425/1272202894
http://web7s.com/blog/175
http://d.hatena.ne.jp/f_world21/20101004/1286206031

rvm install 1.9.2のコマンドを入れた時に
no acceptable C compiler found in $PATHで怒られたので
sudo apt-get install build-essentialでおk



gemコマンドを使おうと思ったらエラーで怒られた。

gem list
ERROR: Loading command: list (LoadError)
no such file to load -- zlib
ERROR: While executing gem ... (NameError)
uninitialized constant Gem::Commands::ListCommand

zlibインストール
sudo apt-get install zlib1g-dev


cd ~/.rvm/src/ruby-1.9.2-p0/ext/zlib
$ ruby extconf.rb
$ make
$ make install

mkdir test

rails new testと入力したらエラー
Could not find gem 'sqlite3-ruby (>= 0, runtime)' in any of the gem sources listed in your Gemfile.


sudo apt-get install libsqlite3-dev
gem install sqlite3-ruby

ERROR: Could not find a valid gem 'sqlite3-ruby' (>= 0) in any repository
見つからないと言われたので直接ダウンロード
http://rubygems.org/downloads/sqlite3-ruby-1.3.2.gem

gem install ./sqlite3-ruby-1.3.2.gem

rails server
=> Booting WEBrick
=> Rails 3.0.3 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server

起動した

effective java今更読みはじめた

2章の内容

コンストラクタの代わりにstaticファクトリーメソッドを検討する

  • staticファクトリーメソッドの1つ目の長所は、コンストラクタと異なり、名前を持つ事です。
  • staticファクトリーメソッドの2つ目の長所は、コンストラクタと異なり、メソッドが呼びされるごとに新たなオブジェクトを生成する必要が無い。
  • staticファクトリーメソッドの3つ目の長所は、コンストラクタと異なり、メソッドの戻り値型の任意のサブタイプのオブジェクトでも返す事が出来る
  • staticファクトリーメソッドの4つ目の長所は、パラメータ化された型のインスタンス生成の面倒さを低減する事。
  • staticファクトリーメソッドの主な短所は、publicあるいはprotectedのコンストラクタを持たないクラスのサブクラスを作れない。
  • staticファクトリーメソッドの2つ目の短所は、それらが容易に他のstaticメソッドと区別がつかない。

数多くのコンストラクタパラメータに直面した場合にはビルダーを検討する

privateのコンストラクタかenum型でシングルトンを強制する

privateのコンストラクタでインスタンスか不可能を強制する

不必要なオブジェクトの生成を避ける

廃れたオブジェクト参照を取り除く

ファイナライザを避ける