2014-09-30 (火)
眠い...
寿司食べた.あえて回転寿司にしてみたのだけど,回ってなかった...
この日記はフィクションです.登場する人名・団体名・地名・職業などはぜんぶ架空のものです. なので実際のものとは何も関係がありません. それから,写真のように見える画像はCGもしくは念写によるものです.
仕事をする日.
朝早めに起きて出かける.眠い.
中学の同窓会に行ってきた.高校時代ならともかく,中学時代の友達とは一切連絡とってなかったのだけど,Facebookでたまたまつながってた人がいたので同窓会の連絡受け取ることが出来た.
集合場所と会場は秩父神社.あまり友達が多かった覚えも無いし,今日誰が行くのか全く知らない状態だったのだけど,向かう途中で見知った人間に声かけられて安心.
というわけで15年ぶりに合う人が多い,高校も一緒だったやつとも12年ぶり.思い出してみれば成人式も行ってなかった.
色々思い出して懐かしいし,色々変わったような,変わりないような.
みんな社会人として活躍してるんだなとか.自分もかなりまともな人間になった気がするのだけど,どう見られたかは怪しい.
終わった後,M崎京染店へ.そういえば家上がったの初めてだな.ワンス・アポン・ア・タイム(?)という謎カードゲームやった.
夕方には帰る気でいたけど,なし崩し的に二次会へ.
本屋行ったり,掃除したり,bashをアップデートしたりする日.
メモ:
昨日のやつ.
WebGLでplyファイルをプロット.
https://github.com/binzume/plyplot
WebGLでELEMENT_ARRAY_BUFFERに32ビット値を使いたい場合は,OES_element_index_uint使えば良いらしい.
http://www.khronos.org/registry/webgl/extensions/OES_element_index_uint/
とりあえずは,分割して描画すれば良いのであとで考える.
右手系とか左手系は軸の向きだけしか気にせず使ってたけど,数学的定義あるのか.数学が右手系なのはここから来るのか.
そろそろ日付の感覚が無い.
寝たり起きたりしつつ,SfMで遊んでいた.
SfMは,視点の異なる複数の画像から立体を復元する手法です.
よく使われているSfMのライブラリには,OpenMVG と Bundlerがあるようです.
どちらの実装も,GitHub上で公開されています.
とりあえずOpenMVGのほうがビルドが楽そうだったので,今回はOpenMVG.Bundlerもあとで試す.
OpenMVG とか Buldler使う前にこのあたりも読むと良さそう. http://www.ite.or.jp/data/journal/passed_issues/tool1104/
環境.
ソースをGitHubからcloneしてきたら,cmakeを使ってVisual Studioのソリューションを作る.
デバッグビルドだと実行速度遅いし,途中でアサーションダイアログ出てきたりして面倒なので,とりあえずリリースビルドにしておくのが良いです.
なぜか,リンク時にlibを参照しているのに各プロジェクトがDLLを生成してたりするので,スタティックリンクライブラリを生成するようにプロジェクトの設定を直す.(もしかしたら,cmakeのオプション何か必要なのかも?)
ビルドしてたら,なぜかmake_pairでfloatからfloat&&に変換できないとか言われるので,適当になおす.
Focalをピクセル単位で渡す必要がある.OpenMVGに含まれるcameraGenerated.txtにカメラあるセンサの情報や,自分で計算しても求められるけど,2000~4000くらいで適当に何度かやってよさ気なやつを選んだ.
setlocal set IMG_DIR=%1 set FOCAL=%2 openMVG_main_CreateList -f %FOCAL% -d cameraGenerated.txt -i %IMG_DIR% -o match%FOCAL% openMVG_main_computeMatches -i %IMG_DIR% -o match%FOCAL% openMVG_main_IncrementalSfM -i %IMG_DIR% -m match%FOCAL% -o out%FOCAL% -p 1 -c 1 Win64-VS2010\pmvs2.exe out%FOCAL%/PMVS/ pmvs_options.txt
こんな感じのバッチファイル書いて実行.
途中,最初にどの画像から処理するか聞かれるので適当に2つ選ぶ.
OpenMVGは特徴点の三次元情報と画像ごとに推定したカメラの姿勢とかを出力する.plyに特徴点が出力されているが,特徴点はSIFTに使ったやつっぽいので少ない.
カメラの姿勢データと画像から,立体を復元してくれるツールはいくつかありますが,ぐぐったら http://www.di.ens.fr/cmvs/ が簡単に使えそうだったので,最終的なplyファイルを生成.
この記事を参考にしました.http://cflat-inc.hatenablog.com/entry/2013/10/21/214859
出力されるplyファイルは,点の座標が並んでるだけのテキストファイルなので,WebGLでレンダリングするjsとかもついでに書く.
座標系は,原点がカメラのうちの1つ.Z軸が視線方向.
Land of Lispと Oculus Rift DK2.こんな感じの写真を何枚か撮ってOpenMVGに食わせる.
3Dなデータが出てくるので,グリグリ回せる.DK2はのっぺりしていて上手く特徴点がとれていない.
WebGLは頂点配列が16ビット固定なので,頂点数65536超える一回でレンダリング出来ないのか.
複数枚の写真から,3D情報を復元してみたくて,いろいろ調べ中.
3ヶ月前の,カメラのフォーカスを使って立体情報を取得するやつの続きやるか悩んだけど,真っ当な方法を考えることにした.
http://imagine.enpc.fr/~moulonp/openMVG/
http://www.cs.cornell.edu/~snavely/bundler/
ちょっと頑張れば,スマートフォンでリアルタイムに処理出来るくらいの計算量になるかなあ.まだ良くわからない.
今週は夏休みにしました.
メモ:
Java8だとSSL接続できるのに,Java7だと接続できない問題に嵌ったのでメモ.
最初は証明書周りを疑ったけど,-Djavax.net.debug=sslして眺めてると,どうやら違うっぽい.
SSLContext.getInstance("SSL") した場合,Java8だとTLS1.2,Java7だとTLS1.0が使われる.もちろん,Java7もTLS1.2をサポートしてるので,SSLContext.getInstance("TLSv1.2") すると解決する.もしくは,Javaのシステムプロパティにセットして置いても良いっぽい.
これを少しいじったり. https://github.com/binzume/mizuhodirect-ruby
もう何度目になるか分からないけど,Unity触ってみようとする.
Unityの開発環境,チェックボックスとかボタンとかたくさんありすぎて,設定項目探したり,アセットストア眺めたりとかに時間取られすぎな気がする.
好みの問題なのだろうけど,やっぱテキストエディタがメインの開発環境が良いなあ.
眠い...
明日から夏休み.
とても眠い.
https://github.com/binzume/mizuhodirect-ruby
登録済み口座への振込周りも直しておく.
銀行とかどこも基本機能は同じなのだから,早く共通APIが出来るべきだよなあ.
https://github.com/binzume/mizuhodirect-ruby
先月から動かなくなっていたので残高取得と直近の履歴だけ取得できるように.
振込とか動いてないけど,他の銀行を使うようにしとこう.
先月のシステムリプレースで様変わりしている.ログイン時に,haraidashi.ib.mizuhobank.co.jpに公開鍵で暗号化したパラメータを送って何かのCookieを発行してもらっている.
ぱっと見だけど,なんとなくRSA+SHA1っぽい.メッセージのパディングとかもよく見かける何か.きっとPKCS的なやつ.
試しに少し前に書いたコードコピペしつつやってみたら同じ文字列作れたので合ってそう.
暗号とか素人なのでよくわからないけど,MGFのマスク長の計算なんか変.でもそれっぽく動いてる.
rsa.jsはRSA暗号とは関係なさげ.
読んでるぶんには興味深いけど,これ何を意図してるんだろ.なんらかの攻撃に対して有効なのか考えてみたけど,特に強くなってない気もする.ブラウザではなくて,何かのクライアントから接続することを意図してるのかも.
出かける.
本買う.
dk2で遊ぶ.
なんか今週ずっと頭痛い...
前に書いた,WebGLで動画再生してごにょごにょするやつも,Oculus Rift DK2用の修正入れた.色収差が気になって,補正入れたけどテクスチャの読み出しが3倍になったので無駄に重くなった気がする.
みずほの口座のお金を管理してるプログラムが最近まともに動いてなくて不味いので直さないと.確かに,ATMからお金下ろすときに残高変だったり,給与振込の通知が来てなかった.
仕方なくブラウザでアクセスすると,見た目は同じだけど中身は別物になっていた.作りなおしたのか.haraidashi.ib.mizuhobank.co.jpというホストとやりとりして謎文字列作ってる.js見るといかにもRSAの公開鍵ですみたいなのが書かれている.これで署名して送れってことか.面倒だな.
浜町.
頭が痛い...そういえばと思って体温測ったら微熱.良く考えてみると土曜日くらいから喉も痛い.
とても眠い.
注文するのが遅かったせいで,周りの人たちより1ヶ月以上遅れましたがやっと届きました.
まだあまり遊んでないですが,印象を.
いまのところかなり良さげ.
トラッキング用のカメラ,Oculusを2つ用意した上でOculus Riftの上に載せて,互いの相対位置を取って対戦ゲームとか誰か作ってたりしないかな.
Oculus発送されてるはずなので,来週中には届くかな...
LTやったりする日.
そのあと,3Dプリンタとか.
3Dプリンタ試してみたかったので,Omegamega邸に行ってその場でモデリングしてプリントしてもらったテレビちゃん.
サポート材を慎重に剥がす.アンテナ折れるかと思ったけど大丈夫だった.
深く考えずに,メタセコイアで作ったけど,ちょっと苦労したので3Dプリント用のモデリングソフトは別途考えなおしたほうが良さそうだ.
積層方向の強度はやっぱりそんなに高くないらしいので,強度必要な場合は方向気をつけるか,穴を開けた状態でプリントして別途何かを入れるかだろうな.その辺りも3Dプリンタでやりたいところだけどノズルの形状上難しいか.
疲れているのか,とても体がダルい...
朝から会社に行く.眠い.
ゲストOSのネットワークやファイヤーウォールの設定をいじったりするときに,SSHログインだけだと不安です.最悪 vSphere Clientからコンソールにアクセス出来ますが,vSphere Clientがすぐ使えない場合(Windowsマシンが無いとか)もあるので可能なら避けたいところ.
というわけでゲストOSのシリアルコンソールにアクセスしたいわけですが,無償版ESXiはネットワークを介したリモートシリアルポートが使えないです.設定はできるので,使えるものとばかり思って試行錯誤したのですが,起動時のログをよく見ると,ライセンスが必要ですとメッセージが出ていました.
解決策を探したところ,仮想マシン間でブリッジはできるという記述が.
http://qiita.com/albatross/items/aa94951f70557b5c677e
これで解決ですが,ゲスト間での接続だと作業用のVMを起動しなければいけないので,ちょっと面倒.
そこで,名前付きパイプはどこに作られるのか探したら,
/var/run/vmware 以下に作られているのを見つけました.
最初は,mkfifoで名前付きパイプが作成されるものだと思ってファイルをfindしていたのですが,unix domain socketでした.
シリアルコンソールを使うためには上記サイトにある通り,ゲストのOSのinittabか,gurubとかの設定でカーネルオプションを追加する必要があります.
あとは,vmxファイルを修正するなり,vShpere Clientとかで色々してシリアルポートを追加してください.名前付きパイプをサーバとして作る必要があります.
vmxだと以下の様な感じ.
serial0.present = "TRUE" serial0.yieldOnMsrRead = "TRUE" serial0.fileType = "pipe" serial0.fileName = "vm01-console" serial0.tryNoRxLoss = "FALSE"
たとえば,vm01-consoleという名前でゲストにシリアルポートデバイスを追加しておき,ESXiのシェル上から,
nc -U /var/run/vmware/vm01-console
で接続できます.
名前付きパイプを作れるディレクトリは設定で制限されてるので「/hoge」とかは怒られます.ただし,/vmfs/volumes/とかは大丈夫なので,フルパスで,/vmfs/volumes/datastore1/vm01/console とかにするのもアリかもしれません.
これでネットワーク設定もvSphere Client不要になりました.
余談ですが,名前付きパイプどこに作られるのかネットで探してもなかなか出てこなかったので,試しに proxysvc/service_list すると,他のサービスが/var/run/vmwareにパイプ作ってる感じだったので,なんとなく試したら当たりでした.netstatで探そうとしたら,ESXiにはnetstat無いんですね...
そもそもncコマンドがあるなら,
mkfifo /tmp/vm01fifo nc -U vm01-console < /tmp/vm01fifo | nc -l 10001 > /tmp/vm01fifo
とかしてしまうと良いことあるかも?
少し更新.会社のESXi使ってる環境でもこっそり使ってみよう.
https://github.com/binzume/esxi-monitor
VMの削除と複製を実装し始めた.必要なAPIは生やしたので,ブラウザのコンソールからdelete_vm(vmid)やcopy_vm(vmid,name,macaddr)を呼ぶと動くかもしれない.手元の単純なVMでは使えてるけど,色々駄目そう.
http://qiita.com/albatross/items/aa94951f70557b5c677e 前に少し調べてよくわからなかったけど,無償版だとシリアルポートをネットワークに割り当てられないのか.ゲスト間で繋がるなら,ネットワーク周りの設定壊してしまったとき,仕方なくWindowsのvSphere Clientで繋ぐということをしなくて良くなる.
vShpereのライセンス,どのライセンスだと何が出来るのかあんまりまとまって無い気がする.特に無償版ライセンスだと何が使えないのか良くわからない.
1年前に手を付けて放置してたのだけど,やっぱブラウザからポチポチやってVM再起動したいことがあるので,動くようにして公開.とてもいい加減な実装.
https://github.com/binzume/esxi-monitor
スレッドセーフですらなくて,連打したりすると内部的に持ってるSSHのコネクションが壊れるのはあとで直そう.