Li::Feel
ITとか、ガジェットとか、音楽とか、Android開発とか、いろいろ書き殴るブログ。
2016年10月4日火曜日
お引っ越しします。
Markdownの素晴らしさに触れてしまって、はてなブログが良いらしいという話を聞いたので、なにかと編集関係に不満があるBloggerからお引っ越しします。
新しいブログでもよろしくお願いします。
http://li-feel.hatenablog.com/
2016年6月10日金曜日
Haskellのメモ
[備忘録]Trema & Open vSwitch をOpenFlowを使った実験のためにインストールするためのメモ
これなに?
りとるすです。ご無沙汰してます。OpenFlowのテスト環境のメモが発掘されてきたので、いろいろあったことだしメモしておきます。現在もこれで動くのかどうかは確認してませんが、たぶんバージョンが同じなら大丈夫なんじゃないですかね(適当)- Virtualbox
- Ubuntu Server 14.04 LTS
- Trema 0.4.7
- Ruby 2.0.0-p643( with RVM )
- Open vSwitch 2.0.2
TremaとRubyのバージョンについて
Ubuntu Server 14.04にVBoxAdditionのインストール
Ruby(RVM)のインストール
Trema 0.4.7のインストール
仮想環境上にOpenvswitchを設定
ハマるポイント
Host-only networkが動かないとき
OpenVswitchにポートを設定
$ sudo ovs-ofctl show br0
自動化したほうがいいけどやってないこと
ハマるポイント
ちなみに
OpenVswitchがなんかおかしいなと思ったら
2015年2月17日火曜日
夢の国の技術考察:「立体視」、結局どうなってんの?(1)
こんばんは。大学のレポートも落ち着き、ようやく春休みがやってきました。
ブログ始めた当初から「(覚え書き程度でも)書かないとなー」と思ってたネタをそろそろ。
まあ、ディズニーネタですね。これをちゃんと調べたのは2年前くらいになりますが、思い出しながら、もう一度まとめておきたいと思います。(主に自分のために)
(夢壊す要素を取り扱います。苦手な人は引き返して。)
東京ディズニーリゾートには、「ミッキーのフィルハーマジック」や、「マジックランプシアター」、過去には「ミクロアドベンチャー」、「キャプテンEO」などといったように、3D映画を映画館でよく見られるようになる前に3Dシアタータイプのアトラクションを運営していた経歴があります。
最近では、ライドに3D映像を組み合わせたトイストーリー・マニア!や「スターツアーズ:ザ・アドベンチャーズ・コンティニュー」もスタートしました。
とにかく、ディズニーと3D(立体視)はわりと切っても切れない関係にあります。ところで、立体視って結局どうやってやってるかご存じですか?
今回は立体視の手法に焦点を当てて、適当にメモしていきます。
立体視の原理?(ほぼおさらい)
立体視に用いられる手法は様々なものがありますが、基本的に原理はすべて同じです。人間の目は、網膜に映る像を認識するようになっていますが、2つの目でもってようやく3次元の物体を認知することが出来ます。
これはホイートストンのステレオスコープによって実証されていますね。
(実際の生活上には、それは立体であるという認識がすでにあるために、片目を閉じていてもモノが立体物であることを認知できるようです。立体視に使われるスクリーンは平面ですから、意識による奥行き感はないことになります。)
で、2つの目は物理的に数cm離れていますから、図(適当でごめんなさい)のように、網膜に現れる像に差が出ます。これを両眼視差といいます。
両眼視差が奥行き感を作り出している正体です。つまり、両眼視差どうこうの計算はともかく、手法的には、右目と左目で別の像を見せられればOKというわけです。
とりあえずはこんな感じで。今回は手法に焦点を当てるので、原理は別の像を見せられればいいということだけ覚えておいてくれればOKです。
手法にはどんなのがあるの?
今現在、映画館やディズニーリゾートなどで使われている立体視の手法には次のようなものがあります。
アナグリフ方式
一昔前の俗に言う「赤青メガネ」を用いるタイプです。ディスプレイにも、プロジェクターにも使えます。
欠点は、恐ろしく目がちかちかすることと、色がRとBの1色ずつしか各目に出ないので、色の表現が恐ろしく苦手です。
利点は、メガネが色つきプラ板だけでなんとかなるので、超安価だということ。
今では殆ど見なくなりました。
液晶シャッター方式
液晶を用いたメガネを使って、リアルタイムで通信を行うことで立体視させる方式です。XpanDやnvidia 3D visionなど。液晶・プロジェクターを問いません。
利点は、色情報が抜け落ちないので、きれいなままで映像がみれること。また、メガネの透明度が高めなので、基本的にシルバースクリーン(後述)が必要ない点。
また、方式の特性上、どうしてもちらつきやすいという欠点と、メガネに電池が必要だったり、赤外線通信用のエミッタが必要などの欠点があります。
あと、プロジェクタもかなり高速なフレームレートに耐えられるような、高価なものでなければなりません。その代わり、プロジェクタの台数は1台でOKです。
偏光方式
偏光の方向によって更に分類があります。TOHOシネマズのRealD方式(円偏光)や、IMAX 3D方式(直線偏光)などなど。
ある一定方向の波のみ通し、それ以外はシャットアウトする偏光板を用いる方式です。シアター系ではこれが主流です。なお、液晶では使えません。
利点は、メガネが偏光フィルタを用いるだけでつくれるので、比較的安価です。
欠点は、ゴーストと呼ばれる上手く焦点が合わないときに発生する残像が出やすいことです。そのため、映像に下処理をしておく必要があります。
さらに、シルバースクリーン(銀粉を均一に塗布したスクリーン)を用意する必要があります。これは、偏光フィルターを通したときに輝度が落ちるためです。ただし、このシルバースクリーン、通常のスクリーンの数十倍の値段がするそうで。あと、プロジェクターもL・R用に2台必要です。
(これは直線偏光の場合のみですが、頭が動くと立体視効果が薄れやすいようです)
☆ディズニーリゾートでは、「ミッキーのフィルハーマジック」や、「マジックランプシアター」、「トイストーリー・マニア!」「ミクロアドベンチャー|キャプテンEO」(この2つはそもそも同じ建物)で採用されています。
分光方式
特殊なフィルター(フィルターホイール)を用いて色の波長を分解し、分光メガネを用いて左右に別々の像を送ります。こちらも液晶だと使えません。
色の表現がものすごくきれいですが、メガネとフィルターホイールがめちゃくちゃ高いです。しかし、プロジェクタが1台で済むなどの利点もあります。
この方式であれば、シルバースクリーンを用意するのも、赤外線エミッタも不要です。ただフィルターホイールを取り付けて、メガネを用意するだけでOKです。
☆ディズニーリゾートでは、「スターツアーズ:ザ・アドベンチャーズ・コンティニュー」で採用されています。
視差バリア方式
眼鏡がいらない、液晶TVなどに搭載されています。3DSや液晶TVなど。
あんまり詳しくないので書けない…
ぶっちゃけライド系のアトラクションについてではないので、ディズニーの技術っぽくないですが、(2)ではそれぞれの仕組みについてもーちょい書きたいと思います。
(続く)
References
原理端折りまくったので、この辺で補完していただければ。
http://www.kitakyu-u.ac.jp/env/_static/page/env/images/_p17-18.164ad101d6477f0956edc8e6d108389e.pdf
http://kagaku-jiten.com/cognitive-psychology/perception/depth.html
2014年12月23日火曜日
チーム開発とかでSlackを使うといろいろと捗る話
こんばんは。毎日更新してますが、暇って訳じゃないです。
最近は、Slackを使っていろいろとやっています。
Slackは、(ある程度は無料で使える)企業向けのチャットツールです。
Slackの特にすごいところは、「他のツールと連携(Integration)できるところ」ですね。これほんとすごい。
RedmineやBitbucketなど、わりと様々な開発で必要なツールが連携できます。
こういうツールには、AtlassianのHipChatとかもあるんですが、HipChatはチャネルごとに通知設定ができなかったりとわりと不便なところが多い。
最近HipChatは基本料無料化されましたけど、デザインがダサいちょっと受け付けない感じだったので(昔のIRCを想像してもらえるといいと思います)、Slackを導入するに至りました。
僕自身は、大学入ってからというもの、高校の友達数人とCakePHPで開発してみたりしているのですが、そのときにチャットツールにLINEを使用してました。
LINEはやっぱり既読でどれくらい読んでもらえたのかがわかるのがとてもいいところなんですが、如何せん過去ログが追いにくい(最近検索機能とかついたみたいです)、PCとの連携もなんか1台ずつで面倒、さらにはモバイルデバイスは1台のみという明らかに使い勝手が悪い感じで、どうにかならんかなーといった感じでした。
Skypeのボイスチャットも同時に稼働してましたが、やっぱりグループを作るのが面倒って感じでした。
あと、Bitbucketの課題ツールの運用が、ちょっと前に失敗してしまったのです。理由は「見ない」。遠隔地で開発をやってるからこそ起こりそうな問題に直面してました。
そこで、課題ツールの通知もみれたらいいねーという話になって、とても強いIntegrationを持つSlackを導入したわけですね。
Slackですが、残念なことにIntegrationを無料では5つまでしか利用できません。残念。
あと、メインで使い始めたCodebreakなんていう弱小あまり話を聞かないサービスのIntegrationなどあるわけがなく…と思っていたら、Slackの公式で紹介されていた「Hammock」なるツールがあるとのこと。こいつは、一言でいうとオレオレIntegrationを作るためのツールです。なんとピュアなPHPとSmartyという最近はあまり聞かなくなった構成で動きます。
Hammockのプラグインを書くことで、簡単にSlackのIntegrationを作ることができます。あと、こいつはIntegration上限には含まれないので、Integrationの数をけちれます。Webhook飛ばしてくるのはこいつにまとめてしまえばかなり便利です。SlackのAPIのブリッジになっているだけなので、Slackに実装されている「Incoming Webhook」を自前で実装することができます。
まあ、実際にSlackではこんな感じでHookされてきた情報が表示されるわけです。大変便利。
Slackの導入方法とかは、検索すれば山ほど出てきますが、チームメンバーがわかんない!って言ったので、ちょっとマニュアルを作ったのです。今度公開しようと思います。
HammockプラグインでCodebreak Integrationを書いた話も今度。
OpenShiftでRedmineを設置して、Bitbucket連携を完璧にキメるまでの話
さて、先日Redmineを2.6にして、インストールしましたが、次のような問題があります。
- プラグインのGemfileが自動読み込みされなくなった
- GitにOpenShiftからのSSHができなくて困る
- Redmine_Bitbucketを入れたときに、デプロイするごとにリポジトリがすっ飛ぶ
1.プラグインのGemfileが自動読み込みされない
- Rubyプラグインぶち込む
- rm ./Gemfile.lock
- bundle install --no-deploymentでGemfile.lockを作る
- 作られたGemfile.lockをGitリポジトリにぶち込む
2.GitのOpenShiftからのSSHができなくて困る。
- {$OPENSHIFT_DATA_DIR}ssh/git-ssh.sh (モード700で)
- {$OPENSHIFT_DATA_DIR}ssh/id_rsa
- ({$OPENSHIFT_DATA_DIR}ssh/id_rsa.pub)
3.Redmine_Bitbucketを入れたときに、デプロイするごとにリポジトリがすっ飛ぶ
おまけ:/bin/bash^M
総括
2014年12月22日月曜日
Gitのリモートリポジトリ間で単方向の同期をとる
さて、最近はクラウド型のCIツール(Werckerとか、Shippableとか)が何かと流行ってますが、使おうと思ったときにBitbucketやGithubを強制されるんですよね。プライベートな開発で、Bitbucketのコラボレーション制限とかが邪魔をして、ちょっと人数のいる開発とかをやろうとすると、CIツールが使えないという大変残念な結果に。
しょうがないので、他のGitホスティング(あまり評判よくないけどCodebreakとか)と、Bitbucketを同期をとって、CIツールでデプロイするときはBitbucketを参照し、自分たちがプッシュする先はCodebreakにするってことをやってみました。
まあ、とりあえず方法としては、CodebreakにもあるWebhookを利用して、プッシュされたら外部サーバーにHookして、Bitbucketと連携させるスクリプトを書いてみることにしました。
Web言語は何にしようかなーと思ったりとかはしたんですが、サーバーであっさり動くし慣れ親しんでるのでPHPで動かすことにして、シェルスクリプトをたたくだけにしてみました。
肝心のGitとの同期ですが、--mirrorオプションを使ってサクッとクローンして、--mirrorなbareとして動作させています。その方が楽だしね。
あと、スクリプトを置く場所で、SSH秘密鍵を共有したくなかったので、GIT_SSH環境変数を使って、sshコマンドをラップして、任意の秘密鍵を用いるようにしました。秘密鍵の生成はssh-keygenで場所を指定して生成すれば全然問題になりません。
毎度毎度コマンドがりがりのくせに、今回ばかりは成果物ができたので、成果物をGithubに放り込んでみました。もしよければ使ってやってください。あまり検証してないので、セキュリティ的にヤバイかも?
https://github.com/litols0816/git-sync