2012年3月27日火曜日

ホストOS以外からVMWare Fusionの仮想マシンへ接続する

ゲストOSを固定IPアドレスにして、ホストOS以外から接続を受け付ける場合の設定方法がわかったのでメモ。
VMWare Fusionのバージョンは4.1.1

設定ファイルが/Library/Preferences/VMware\ Fusion/networkingにあるのでこれを編集。
このファイルにしたがってVMWare起動時に追加されるvmnet1,vmnet8のIPアドレスとかがが決まる。

以下の設定をnetworkingに追記して、仮想インターフェースを追加する。
VNET_2_VIRTUAL_ADAPTER_ADDRはゲストOSで設定した固定IPと合わせる。
VNET_2_HOSTONLY_NETMASK, VNET_2_HOSTONLY_SUBNETはHOSTONLYモード用!?だから不要かと思ったけど記述しないとVMNET_2を認識してくれないので、VNET_1のをとりあえずコピー。
VNET_3_xxxxxxxとかもOKだからVNET_4、VNET_5とかもいけそう。


設定が終わったらOSを再起動。なんか他の方法もありそうだけど、VMWareの再起動だけだとダメ。
再度VMWareを起動後、ifconfigの結果にvmnet2が追加されていればOK。


次にゲストOSでどの仮想インターフェースを使用するか設定。
仮想マシンのイメージ内にある拡張子が*.vmxのファイルを開いて以下を追記する。
vmnet*はifconfigで追加されたインターフェース名にする


なんかこの辺の設定方法とかどこかにまとまってるのかな、、、。
Tip #3: Adding additional networks to VMware Fusion 4を見つけてようやくできた。

メンドイからGUIから設定させて欲しいな。

2012年3月24日土曜日

Digest認証エリアをcapybara-webkitでキャプチャする

Digest認証が設定しているサイトでスクリーンショットを撮りたい。
capybara-webkitでwebページのスクリーンショットを撮る」を見つけたのでこれを使うことにした。

ヘッダーを操作メソッドがあるので、Digest認証もなんとかなるかと思ったけどダメだった。
cnonceの生成にリクエストするuriが含まれるので、CSSや画像を取得する際に401 Not Authorizeになっちゃう。

GET /auth/area/index.html HTTP/1.1
-> 200 OK

GET /auth/area/style.css HTTP/1.1
-> 401 Unauthorized

GET /auth/area/header.jpg HTTP/1.1
-> 401 Unauthorized

ってな具合。リクエスト毎に変えなくちゃだめって事だな。

capybara-webkiのissuseで認証はどうするの?的な話があったけど、
ヘッダーの設定で対応できるでしょってことでクローズされてる。

capybara-webkitのrubyソースいじってもどうにもならなそうなので、QTWebKitを調べると、
authenticationRequiredというシグナルがあり認証が必要な場合をハンドリングできそう。
で、認証をハンドリングできたのでAuthorizeコマンドとして実装してみた。

ソースはこちら。cloneしてextconf.rbを実行すればOK.
https://github.com/beatspace9/capybara-webkit/tree/digest-auth
上記を

利用方法。
5行目はgitでcloneしたリポジトリを利用するようパスを書き換える必要ある。
22行目でユーザー名とパスワードの設定

2011年7月2日土曜日

rubyで使えるtwitterライブラリ (tweetstream編)

Streaming APIが使えそうなtweetstreamを見てみる。
どうやらtwitter-streamをラップしたものっぽい。
とりあえずEventMachine::runとか書かなくていいのと、デーモン化できる。
ただし、公開ストリームだけでusersteramは使えないっぽい。

rubyで使えるtwitterライブラリ (twitter-stream編)

とりあえずメジャーっぽいのを調査。
http://ruby-toolbox.com/のAPIカテゴリからtwitter関連を拾って試してみる
まずはtwitter-stream

eventmachineのEventMachine::Connectionを継承した作りになってる。
on_itemにブロックを渡すと、ツイートを読み込むたびに、コールバックしてくれる。
そのた、on_error, on_reconnectなどがあり。

サンプルでuserstreamが使えるようオプションを調べてみた結果、
デフォルトが公開ストリームを見に行くようになっていた。
そのため、host, path, port, sslとoauthオプションを変更すればOK

2011年1月19日水曜日

XcodeでOpenCV2.2を使用するまで

1. OpenCV-2.2.0.tar.bz2をダウンロードして解凍する。

2. CMakeを起動して「Browse Source...」から展開したディレクトリを指定し、
「Browse build..」でビルドするディレクトリを指定する。


3. 「Configure」ボタンをおして「Unix Makefiles」を選択して「Done」

4. 実行が終わったら、インストール先を変更したいのでCMAKE_INSTALL_PREFIXを/usr/local/opencvに修正

5. 再度「Configure」ボタンを押して、実行が終わると「Generate」ボタンが押せるようになるので「Generate」を押す。

6. Terminalで/usr/local/src/OpenCV-2.2.0/buildへ移動してmakeする。

7. sudo make installで/usr/local/opencv以下へインストールする。

8. XCodeで「Command Line Tools」テンプレートでプロジェクトを作成。(opencv2.2_sampleというプロジェクト名にした)

9. プロジェクトの設定画面でターゲットのアーキテクチャを指定

10. OpenCVのヘッダをインクルードパスに追加


11. プロジェクトを右クリック、「追加」-> 「新規グループ」でOpenCVというグループを作成し、プロジェクトを右クリック、「追加」-> 「既存ファイル」から/usr/local/opencv/lib以下にある、libopencv_highgui.dylibとlibopencv_core.dylibを追加する。


12. main.cppを修正
コマンドライン引数で指定したファイルの幅、高さを表示するプログラム。

#include <iostream>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;
using namespace std;

int main(int argc, char* argv[])
{
 Mat img = imread(argv[1]);
 cout << "width:" << img.cols << endl;
 cout << "height:" << img.rows << endl;
}

13. ビルド 14. コマンドライン引数を指定する。

15. 実行して画像の幅、高さが表示されるか確認