Hatena::ブログ(Diary)

shutdown -r now このページをアンテナに追加 RSSフィード Twitter

2012-04-05

Movement tracker + WebRTC

WebRTCを使うとブラウザからJavaScriptを使って、ビデオやマイクのストリーミングデータを取得することができます。

他にもP2P接続ができるようですが、まだまだ仕様が決まっていないらしく、まだ実用段階ではないようです。

現状では、ChromeのDevチャンネル版で使用できるので、それをインストールしてWebカメラを自分のコンピュータにぶっさして、これを見て欲しい。

動かすには、ビデオのアクセスを許可して、画面の左下にあるgoボタンを押してね。

ブラウザだけで、ビデオのモーションキャプチャができます。深度データは取れないので、kinectとまではいかないけれど、ちょっと近い感じにはなっているかも。

このソフトの元ネタは、

Movement trackerというMozilla社が作成したHTML5によるビデオのモーションキャプチャをぱくってみました。

Movement trackerは、JavaScript1.8を使って実装されているため、Chromeでは動かない。

そのため、letをvarに変える等の不毛な作業をして、Chromeで動くように微調整した。

その上でwebkitGetUserMediaを使って、Webカメラにアクセスして、モーションキャプチャするようにしてみた。

ソースは、githubに置いています。

※ChromeのDevチャンネル版のインストールは、ここが詳しい。

2012-04-02

Hadoop on LXC

「カーネル/VM勉強会@関西 其の参」に行ってきました。知らないことだらけで、大変面白かったです。

初参加のくせに、無謀にもLTをやろうかと直前になって思い、付け焼刃でLXC上にHadoopを入れてみた。

結局、時間の都合でLTはできなかったのですが、他の発表者とレベルが違いすぎて、恥さらしにならずによかった。。

資料はSlideShareに上げたので、貼っておきます。

2012-03-31 このエントリーを含むブックマーク このエントリーのブックマークコメント

そういえば、明日は、Anonymousがネットワークをダウンさせるのだろうか。。

そんなことを思いながら、この小説を読んだ。

The S.O.U.P. (角川文庫)

The S.O.U.P. (角川文庫)

この小説にもインターネットをダウンさせる話がでてくる。

MMO、ネットワーク・セキュリティ、AIを題材とした小説である。

何度読んでも面白い。

2012-03-06

貧乏人のための仮想環境

貧乏性の私は、どうもVMWare等の完全仮想化のソフトウェアはリソースがもったいなくて、積極的には使う気になれない。あくまでテスト環境として使う程度だ。100ノードぐらいのhadoopクラスタをKVM上に構築したいという野望もあるけれど、100ノードも立ち上げるだけのハードウェアがない。そういう時の、Amazon EC2かも知れないが。。

時間単位でちまちま金を払うのは、貧乏臭くていやだ!

「金がないなら知恵を出せ。知恵がないなら汗をかけ。」

ということで、冷汗をかきながら、LXCを使って、コンテナ型の仮想環境を構築したいと思う。コンテナ型の仮想環境の説明は、ここが詳しい。

いきなり実環境で、LXCを試すのは、怖かったので、Ubuntu 11.04上のVirtualBoxにUbuntu Server 11.04 を構築して、その上で試してみた。しばらく使ってみて、慣れてきたら、ホストOS上で直接、LXCのコンテナを10ぐらい立ち上げてHadoopやCloudFoundryの環境を構築したいと思う。

以下、LXCの構築手順の備忘録。

基本的には、ここの手順を参考にした。

LXCのインストール

・面倒なので、まずrootになってしまう

$ sudo -i

・インストール

# apt-get update && apt-get install lxc debootstrap bridge-utils dnsmasq

・cgroupの作成

# mkdir /cgroup
# mount -t cgroup none /cgroup
# echo "none /cgroup cgroup defaults 0 0" >> /etc/fstab

・ネットワーク設定

# vi /etc/network/interfaces
auto br0
iface br0 inet static
    address 192.168.5.1
    netmask 255.255.255.0
    network 192.168.5.255
    post-up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    post-up sysctl -w net.ipv4.ip_forward=1
    pre-down iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    pre-down sysctl -w net.ipv4.ip_forward=0
    
    bridge_ports none
    bridge_stp off

参考にしたページでは、192.168.3.*のネットワークを使っていたが、たまたま、192.168.3.*のネットワークは使っていたので、192.168.5.*を使うことにした。

また、再起動しても設定が消えないようにした。

・コンテナが使うDHCPとDNSの設定

# vi /etc/dnsmasq.conf
domain-needed
bogus-priv
interface = br0
listen-address = 127.0.0.1
listen-address = 192.168.5.1
expand-hosts
domain = containers
dhcp-range = 192.168.5.50,192.168.5.200,1h

# vi /etc/dhcp3/dhclient.conf
prepend domain-name-servers 127.0.0.1;
prepend domain-search "containers.";

# dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp3/dhclient.eth0.leases eth0

# service dnsmasq restart

・/etc/dhcp/dhclient.confの修正

ホストOSがDHCPクライアントの場合、resolv.confを書き換えるため、/etc/dhcp/dhclient.confに以下の設定を追加する。

prepend domain-name-servers 192.168.5.1;

以下のようになる

# cat /etc/resolv.conf 
nameserver 192.168.5.1
nameserver 192.168.3.1

・lxc-ubuntuの取得

# wget -O lxc-ubuntu http://bit.ly/ec2ubuntulxc
# chmod +x lxc-ubuntu

元ページからスクリプトを拝借

・新規コンテナの作成

# ./lxc-ubuntu -p /mnt/vm0 -n vm0

結構時間がかかる。いろいろダウンロードしている模様。

・コンテナの起動

# lxc-start -n vm0 -d

・コンテナへ接続

# ssh root@vm0

デフォルトのrootパスワードは、root

2012-02-29

GitHubメモ

GitHubを使うときにやった事の備忘録。

1. とりあえずgitインストール

$ sudo apt-get install git-core
$ git config --global user.name "Your Name"
$ git config --global user.email hoge@foo.com

GitHubは、gitを使うのでこれがないと何もはじまらない。

gitの初期設定で、名前とメールアドレスを設定しておく。

2. 公開鍵の設定

$ ssh-keygen -C "your@email.com" -t dsa

GitHubにgitからアップロードする時の認証に使用する鍵を生成する

3. GitHubにアカウントを作成

GitHub ? Social Codingから、アカウントを作成する。

4. GitHubに鍵を登録

SSH Keysから、先ほど作成した公開鍵を張り付ける。

5. GitHubにリポジトリを作成

Create a New Repositoryから、リポジトリを作成する。

6. 登録するディレクトリに移動して、gitのローカルリポジトリに登録する。

$ cd /home/hoge/work/foo
$ git init
$ git add *
$ $git commit -m 'first commit'

7. GitHubをリモートリポジトリとして、登録

$ git remote add origin git@github.com:[githubのユーザ名]/[リポジトリ名].git

8. 変更を適用

$ git push origin master

git push時に、以下のようなエラーが発生した場合、「~/.ssh/config」の設定を確認する。

$ git push origin master
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

「~/.ssh/config」に以下を設定する。

Host github.com
  User git
  Port 22
  Hostname github.com
  IdentityFile ~/.ssh/id_dsa
  TCPKeepAlive yes
  IdentitiesOnly yes

よく使う、gitコマンド

git init
git add *
git commit -m 'message'
git clone git://github.com/[アカウント]/[リポジトリ名].git
git pull git://github.com/[アカウント]/[リポジトリ名].git
git pull origin master

コミット済みのファイルを、リポジトリから消して.gitignoreで除外する

$ git rm --cached foo.txt
$ echo 'foo.txt' > .gitignore
$ git add .gitignore
$ git commit -m 'delete and add .gitignore'

※参考リンク

WOMO :: github を使うためのメモ。 :: 2010/03/04

git addの取り消しと、コミット済みのファイルを除外する方法 - kanonjiの日記

lllnorikolll@online ? githubでPermission denied (publickey).