korechi’s diary

とあるVR/ARエンジニアのブログ

OSをSierraにしたらsshがpermission deniedになった時の解決法

Sierraにしたらsshでサーバーに接続しようとしたらpermission deniedに!
パーミッションとかは大丈夫そう。調べてみたら、どうもOpenSSHのバージョンがSierraにアップデートした時に自動的にあがってるのが原因みたい

$ ssh -V
OpenSSH_7.2p2, LibreSSL 2.4.1

sshで接続する時に、id_dsa鍵を使ってるとだめっぽい
なのでconfigファイルに以下を追加して解決

# sudo vim ~/.ssh/config
PubkeyAcceptedKeyTypes=+ssh-dss

CentOS6.6 にNeo4jをインストールする

環境構築

Javaのアップデート

まずJava(TM) 8 にアップデートするためにここからLinux X64用のrpmファイルをダウンロードします
その後ターミナルを使ってインストール

$ sudo yum localinstall jdk-8u40-linux-x64.rpm 

Javaのバージョンは以下のコマンドで確認可

$ java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

また、Javaのバージョンを変えたい場合は

# sudo alternatives --config java
3 プログラムがあり 'java' を提供します。

  選択       コマンド
-----------------------------------------------
   1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
   2           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
*+ 3           /usr/java/jdk1.8.0_111/jre/bin/java

で変更できる
しかし、JAVA_HOMEの設定が過去のバージョンのままの場合もあるので

# vim /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/java/default
$ source /etc/profile.d/jdk.sh

をしてちゃんとパスが通るようにしておく(PCを再起動したらまたsourceしなおす)

Neo4jのインストール

Neo4jのサイトLinux用のtarファイルをダウンロードし、適当な場所に解凍

Neo4jの起動

cd Neo4jのホーム
# bin/neo4j start
Starting Neo4j.
Started neo4j (pid 5034). By default, it is available at http://localhost:7474/
There may be a short delay until the server is ready.
See /home/Tamura/Workspace/neo4j-community-3.0.6/logs/neo4j.log for current status.

Neo4jの終了

$ bin/neo4j stop

Neo4jのテスト

ブラウザから、

localhost:7474

に接続し、username: neo4j, password: neo4j/neo4j としてサーバーにログインします
接続できない場合は、

$ sudo vim conf/neo4j.conf

で、以下を追記(コメントアウトを外す)するとちゃんと接続できた

dbms.connector.http.address=0.0.0.0:7474
dbms.connector.https.address=localhost:7473
dbms.logs.http.enabled=true
bms.security.auth_enabled=false

logの確認

$ vim logs/neo4j.log

Photonを使ってUnityで簡単なMMOアプリを作ってみる(下準備編)

サーバーとかほとんど触ったことない自分ですが、Unityで軽いMMO的なアプリを作りたくなったので挑戦したいと思います!
自分が自由に使えるサーバーは研究室にある1台のPC(CentOS)のみなので、流行りのクラウドサーバーを使ってみます

Photonに登録

まず、Photonとはさまざまなゲーム開発環境で使えるネットワークエンジンです
何より驚くべきは、基本料金が無料のところ
Photon realtimeなら同時接続可能なユーザー数が20人までならずっと無料で使えちゃう!!いったいどうなってるんだ。。

それではここからPhotonの公式サイトにとんで、メールアドレスを登録し届いたメールからパスワードを設定しましょう

Unityの設定

Photon Unity Networking Free のインポート

[AssetStore]→[Photonと検索]→[Photon Unity Networking Freeをインポート]
f:id:korechi:20161101173532j:plain
有料版ではなく無償版を選択しましょう

設定

[Window]→[Photon Unity Networking]→[PUN Wizard] を選択 f:id:korechi:20161101174235j:plain
そして[Setup Project]を選択し、AppIDに、photonのサイトのダッシュボードにあるアプリケーションIDを登録します
続いて[Setting]でregionを"jp"に変更

検証

[Photon Unity Networking]→[Demos]→[DemoBoxes]→[DemoBoxes-Scene]をダブルクリック
f:id:korechi:20161101175432j:plain
するとデモシーンが開くのでUnity上で実行します
f:id:korechi:20161101175644j:plain
上のようなゲーム画面が出力され、クリックしたらボックスが落ちてくればPhotonへの接続ができています!
非常に簡単!すげー!
実行環境のPCにアプリをビルドして複数同時接続が可能なことを確認するのだけでも楽しい。笑

これで設定完了です
次回は、実際にゲームを作っていきましょう!


参考記事はこちら

忘れがちで便利なコマンド(grepやlogの出力)

grep

ファイル名を指定して指定したフォルダ以下すべてを検索する

$ grep -e ファイル名 ./

make

makeでerrorになってしまう時にlogへ出力する

$ make 2>&1 | tee make.log

makeしたときにどんなコマンドが叩かれているか出す

$ make -n

install オプションをつけるとどこにinstallされるかもわかる

$ make -n install

Macで5ボタンマウスを使って”進む””戻る”をかんたんにやる

Windowsだとすんなり”進む戻る”ボタンが適応されるんだけど、なぜかMacだとすんなりいかない。。
そこで調べたらKarabinerを使えば解決しました!
Karabinerほんと使えるなー。これでますますOS Sierraにできなくなっちゃった 笑
1. Karabinerをインストール
2. Preferences -> Misc & Uninstall -> Open private.xml を選択
f:id:korechi:20161020133207p:plain 3. private.xml をなんかのエディタで開いて下のコードを上書き

<?xml version="1.0"?>
<root>
    <list>
        <item>
            <name>MouseButton 4 and 5</name>
            <identifier>remap.mouse_button4_5</identifier>
            <autogen>
                --PointingButtonToKey-- PointingButton::BUTTON4,
                KeyCode::JIS_BRACKET_LEFT, ModifierFlag::COMMAND_L
            </autogen>
                <autogen>
                    --PointingButtonToKey-- PointingButton::BUTTON5,
                    KeyCode::JIS_BRACKET_RIGHT, ModifierFlag::COMMAND_L
                </autogen>
        </item>
    </list>
</root>

もとに書いてある3行程度のコードを消して挿入するように
4. Change Key -> Reload XML を選択
5. Change Key -> MouseButton 4 and 5 にチェックを入れる
f:id:korechi:20161020133359p:plain

Daydreamまとめ(新規VR開発者向けに他VRと比較)

日本時間で2016年10月5日の朝1時頃にGoogle I/O 2016がありました
僕はDaydreamが目玉かと思ってたんですが、意外にもGoogleHomeやら別の製品の発表が多くてびっくり!
でも僕はやっぱりDaydreamが一番興味があるので僕なりにまとめていきます。今後の開発も見据えて

Daydreamとは

そもそもDaydreamってなんだろう?
意外と答えづらいですよね。多少語弊があるかもしれませんが簡単に説明します
DaydreamはGoogleが提供するVR向けのプラットフォームです
ここで言うプラットフォームとは → ヘッドセット、コントローラ、開発環境、VRホーム画面など(コンテンツは他の会社も作る)
つまり、「Daydreamを試したい!」って人は、
1. Daydreamが要求する水準を満たす高性能Android端末(現在はPixelのみ。あとはまだ未発売のPHAB2 ProとかGalaxy Note 7あたりも要求を満たすと思われる)
2. Daydream View(ヘッドセット)
3. Daydream用コントローラ
の3つを揃える必要があります

ハードウェア

まずはヘッドセットとコントローラ
こんな見た目らしい
f:id:korechi:20161005103346j:plain
使うときはスマートフォンを挟んで使う(画像ではPixel)
f:id:korechi:20161005103913j:plain
そしてコントローラ
f:id:korechi:20161005110044j:plain
このコントローラが割と優れもので、いろいろ値がとれるっぽい(多分ジャイロかな?さすがにヘッドセットからの相対座標は出せないかと) それにちゃんとボタンとタッチパッドもついてるし、収納できるの割と便利
f:id:korechi:20161005110501j:plain
ヘッドセットの値段は79ドル(8,000円ちょっと)。11月発売らしい

ソフトウェア

これはまだ謎が多い。僕の想像によりますが、おそらく新しいAndroidOSにVRモード(アプリかもしれない)が追加されるて、それを使うとVR用のホーム画面がスマートフォーンに表示されるんじゃないかな
そしてアプリはGooglePlayでダウンロードして遊ぶ
多分こんな感じになると予想。GearVRと同じ感じかね

他VRと比較(新規開発者向け)

とりあえずVR系のアプリを作ってみたいけど、どれ向けに作れば良いか分からない!
という方多いんじゃないでしょうか?かくいう僕もその一人です
なんたって今は、GearVRDaydreamCardboard向けPC向け(Oculus、Viveなど)と選択肢は様々です
なのでまずはこれらを比較するために、それぞれの特徴を簡単に表にまとめてみました!
(注)僕の予想がかなり入ってます

機種 体験しやすさ VRの品質 コントローラ アプリ数 価格 これからの普及
(予想)
GearVR
Daydream
(予想)
◯ー
Cardboard向け
PC向け

ここでどれを選ぶか考えるためにいままでの技術を振り返ってみます
ガラケーの時代から日常生活では、多機能で仕事ができる端末+携帯できる端末、この2つが広く利用されています。VRが出てきたからといってこの形はしばらく変わらないと思います
もちろんタブレットやスマートウォッチなども最近見ますが、PC→タブレット、携帯端末→スマートウォッチと姿を変えようとしているだけで必要とされるのは本質的には上の2つです
これをVRに当てはめれば、多機能なPC向けVR携帯しやすく普及が見込めるVR、この2つが今後のVR界で重要な役割を担っていくのではないかと思います
じゃあ、携帯しやすく普及が見込めるVRって何?
これはDaydreamかGearVRが今のところ濃厚です。ただ、GearVRはGalaxyにしか対応していないです。特化している分性能は高いのですが、普及という意味では×
それに対して、メーカーを選ばないDaydreamはより普及しやすいです
VR品質に関しても時間の問題で、スマートフォンのトラッキング技術の向上や、アプリの最適化が進められれば進められるほどGearVRとDaydreamの性能差は埋まっていくでしょう
また、Daydreamにはコントローラがあるという点も非常に大きいです。ゲームをする上でコントローラはかかせません
(僕は足用コントローラも欲しいですが、それはしばらく待ちましょう)

結論

なので、今からVR用アプリを作りたい方には、
1. Daydream向け
2. PC向け (OculusやVive) このどちらかで開発することをおすすめします!!
今後の記事ではDaydream用アプリの作成方法を紹介していくつもりです

参考

gigazine.net

Mellanox純正ドライバをリビルドしてinsmodする手順

CentOS 6.6の環境でテストしています
Redhat系かDebian, Ubuntu系かでちょっと変わるので注意してください

ドライバのダウンロード

ここから自分の環境にあったものをダウンロード

中身を解凍

ダウンロードしたところにmlnx-en*.tgzがあると思うのでそれを解凍します

$ tar -zxvf mlnx-en-*.tgz

すると同じディレクトリに同じ名前のフォルダができます

RPMSを解凍

$ cd mlnx-en*
$ cd SRPMS
$ rpm -ivh mlnx-en*.src.rpm

これでrpmファイルが解凍されます
解凍されたものはホームディレクトリの下のrpmbuildディレクトリ下にあります
どこに展開されるかは

$ rpm --showrc | grep _topdir

で確認できます

ドライバのリビルド

まずはじめに*.koファイルがどこにできるかを調べます(そこらへんで作業すれば良い)

$ cd BUILD
$ find . * | grep .ko
/mlnx-en-3.3/obj/default/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko

つまりmlx4のドライバをいじりたいなら

$ cd mlnx-en-3.3/obj/default/drivers/net/ethernet/mellanox/mlx4/

でいろいろした後に

$ cd ../../../../../
$ make

makeすれば良い

ドライバのinsmod

これは下のようなinstall.shを自分は作った

#!/bin/sh
MODULE=mlx4_en
DEVICE=mlx4
insmod mlx4_core.ko
insmod -f ./${MODULE}.ko
MAJOR=`cat /proc/devices | awk "\\$2==\"${DEVICE}\" {print \\$1}"`
rm -f /dev/${DEVICE}
mknod /dev/${DEVICE} c ${MAJOR} 0

uninstall.shももちろん用意しておくと便利

#!/bin/sh
MODULE=mlx4_en
DEVICE=mlx4
rmmod ${MODULE}
rm -f /dev/${DEVICE}
rmmod mlx4_core.ko

あとはこれらをまわせば良い

追記

install.shとuninstall.shがいけてなかったので、

$ sudo insmod mlx4_en.ko
$ sudo rammed mlx4_en.ko

を使うことにした