korechi’s diary

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

ブログを移行しました

korechiです。 先日からこれちのPost-itというブログに移行しました。 URLはこちらです。 korechipostit.hatenablog.com よりAR/VRネタメインの記事を書いていくつもりです。 意図としては、もっと他の人にも読みやすく有益なものを書いていきたいなと。

Karabiner-Elementsを使わないでMacのUSキーボードのキーバインドを変更する

Mac

久しぶりの更新です。実に3ヶ月ぶり そんな久しぶりの記事は、今回新しく購入したMacbookの話をした後、後半でUSキーボードのキーバインドを変更するお話をしたいと思います。 今回購入しましたMacbookPro 13inch 2017モデル がこちら! か、かっこいい。。…

pmxファイル(MMD)をunityにインポートする話(Blenderを使っても良い)

PMDファイルとは、樋口優氏が開発した 3DCG アニメーションソフトの1種である MikuMikuDance で扱われるモデルデータを扱うファイル形式の1つです。 主にニコニコ動画で公開されている 3DCG モデルファイルですが、Unity には標準でサポートされていないた…

gearVR用アプリ内でVRモードとnon-VRモードを切り分けたかったけど無理だった

参考URL forums.oculus.com 要はタイトルのことができなかったというお話です。。 VRモードとnon-VRモードの切り替えは結構需要がありそうなんだけどなぁ。でもそれだと、Oculus sotreでアプリを出せばいいのかそれとも Google play で出せばいいのかややこ…

Realforce キーボード を mac で使う【OS Sierra用】

今まで HHKB Type-S(JIS) を使っていたのですが、今回 Realforce 91UBK を買いました。そこで、持ってる MacBookAir11 に繋げようとしたら特定のキーが反応しなかったりといろいろ大変でした。(JISキーを買ったけど、mac にはUSキーだと認識されているのが…

UnityでgearVR用アプリを作成しビルドする方法

かなり大雑把に書いちゃいます 1. Oculus Utilities for Unity を公式からダウンロードし、Unityにインポート 昔はOculus Mobile SDK に入ってたらしいがいまはUtilitiesにまとめられてる 2. OVR/Prefabs/OVRCameraRigをhierarchyに設置 Main Cameraはじゃま…

CentOS に Redis をインストールして C 言語で使う方法

参考記事 Redis のインストール $ wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm $ wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm $ rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm $ yum --en…

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

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

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

環境構築 Javaのアップデート まずJava(TM) 8 にアップデートするためにここからLinux X64用のrpmファイルをダウンロードします その後ターミナルを使ってインストール $ sudo yum localinstall jdk-8u40-linux-x64.rpm Javaのバージョンは以下のコマンドで…

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

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

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

grep ファイル名を指定して指定したフォルダ以下すべてを検索する $ grep -e ファイル名 ./ make makeでerrorになってしまう時にlogへ出力する $ make 2>&1 | tee make.log makeしたときにどんなコマンドが叩かれているか出す $ make -n install オプション…

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

Windowsだとすんなり”進む戻る”ボタンが適応されるんだけど、なぜかMacだとすんなりいかない。。 そこで調べたらKarabinerを使えば解決しました! Karabinerほんと使えるなー。これでますますOS Sierraにできなくなっちゃった 笑 1. Karabinerをインストール…

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

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

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

CentOS 6.6の環境でテストしています Redhat系かDebian, Ubuntu系かでちょっと変わるので注意してください ドライバのダウンロード ここから自分の環境にあったものをダウンロード 中身を解凍 ダウンロードしたところにmlnx-en*.tgzがあると思うのでそれを解…

Mellanox NICで"ethtool --set-priv-flags"ができないのはドライバに原因があった

Mellanox connectx-3 pro を使ってパケットのやりとりをしているんですが、なぜかCPU割り込みが特定のCPUに偏る問題に直面しました こんな感じ CPU8とCPU11あたりに偏っているのが分かりますよね そこでRSSのハッシュ関数が悪いのかと思い、ここの3.7.1にあ…

1つのNICに複数のIPアドレスを割り当てる方法

ip addコマンドを使います 意外と簡単だった 設定例 # ip addr add 192.168.20.2 dev eth0 確認方法 $ ip addr

リバースポートフォワーディングのあれこれ

なぜかしょっちゅう接続がきれててあーってなってました その対策方法をようやく見つけて基本的にここに答えらしきものが書いてあった 要はkeychainを使えばうまくいくとのことで、まずはkeychainを入れます。 sudo apt-get install keychain そして、以下の…

ターミナルやvimで忘れがちなコマンド

vimでのコピーペースト alice345.hatenablog.com vimでコピーペーストするときに横にダーってなる対処 :set paste vimでのredo ctrl+r

VisualStudio2015で画像ビューアを作る [3]

前回の記事 korechi.hatenablog.comの続きです。 フォームへダイアログの追加 Toolbox > Dialog > OpenFileDialogとColorDialogをダブルクリック フォームデザイナーの下にopenFileDialog1というアイテムを確認できるはずです。 openFileDialogを選択し、Fil…

VisualStudio2015で画像ビューアを作る [2]

前回の記事korechi.hatenablog.comの続きです。 フォームにコントロール(ピクチャBox)を追加 Toolbox > Common Controls内のPictureBoxをダブルクリック この時、前記事でTableLayoutPanelがフォームをfillするよう設定されているので、自動的にPanel内にP…

VisualStudio2015で画像ビューアを作る [1]

はじめてVisualStudioを使って1からアプリケーションを作ります! このチュートリアル(Tutorial 1: Create a Picture Viewer)にそって進めていきます。 まずは簡単な画像ビューアを作成します。 Windows Form Applicationの作成 File > New Project を選択…

Google Daydream for Unityの開発環境を整える

VR

Google DaydreamはAndroidとiOS(主にAndroid)向けのVRプラットフォームです。(2016年秋に公開予定) Daydream開発のためにGoogleは ①ヘッドセット ②コントローラ ③アプリ の3つの開発に取り組んでいるらしい。すげーな 特にコントローラが統一されるのは開…

GIMPプラグイン作成

GIMPのプラグイン導入方法 ヘルプ → プラグインブラウザー を選択 サンプルプラグイン作成 作ったプログラムは以下に保存する $ cd ~/.gimp-*.*/plug-ins $ vim helloworld.py Python を使用して GIMP 用のプラグインを作成するが非常に参考になった 要はpyt…

proxy配下でgitを使ったinstallコマンドがつかえない時の解決法

まず、最も簡単な解決法としては、 $ vim ~/.gitconfig とgitconfigを開き [http] proxy = http://proxy.example.com:8080 [https] proxy = http://proxy.example.com:8080 こう書いて保存する。 これでcloneはできるはず。 $ git config --list で設定を確…

Windowsのあれこれメモ

個人的な都合でWindowsを触る機会が増えたのでいろいろメモっておく PATHの設定 スタート→コンピュータ→(右クリック)→プロパティ→システムの詳細設定→環境変数→PATHに追加 ";"を追加し忘れないよう注意する コマンドプロンプトから別のドライブへ移動 コマ…

CentOS6.6にMongoDBをインストールしてテストしてみた

CentOS6.5にMongoDBをインストールする - Qiitaを参考にしました。 環境確認 まずは、CentOSのバージョンを確認する。(CentOS6も7にもMongoは対応してるっぽいけど一応) $ cat /etc/redhat-release -> CentOS release 6.6 (Final) のように確認できた。ま…

Macの同アプリ内でのウインドウ切り替え

Mac

例えばターミナルを二つ立ち上げている時、もう片方のウインドウに操作を切り替えたいとする。その時のショートカットの設定は、 キーボード -> ショートカット -> キーボード -> 次のウインドウを操作対象にする を選んで好きなショートカットを割り当てる…

Uniduinoを使ったUnityとArduinoの通信

大きく分けて2つの方法がある。一つはSerialPortを使う方法、もう一つはUniduinoを使う方法。 Uniduinoは20$必要ですが、その分非常に使いやすく手間も省けるので自分はUniduinoを使います。SerialPortを使った方法については SerialPort または Uniduino …

Activity(端末)とExtension(グラス)間の通知

まず、ActivityとControlExtenstionとのやりとりはExtensionServiceを介して行われます ControlExtenstionはExtensionService内でつくられるので問題ないのですが、Activity側はExtensionServiceを持っていないので持ってこなきゃダメ Activity -> ControlEx…

SmartEyeGlassに画像を表示する方法

初期設定 まずARイベント用ハンドラーであるSmartEyeglassEventListenerの登録を行う private final SmartEyeglassEventListener listener = new SmartEyeglassEventListener() { @Override public void onARRegistrationResult( final int result, final in…

SmartEyeGlassでセンサーを使う方法

センサーの値を取得するには 1. SensorManager のオブジェクトを取得する 2. SensorManager オブジェクトにセンサーのリスナーを登録する 3. センサーの値を取得する を行う必要がある。具体的には sensorManagerを取得し、そこからセンサーを取得 private A…

Visual Studio Codeをインストールしてみた

SONYのインターンに参加してた時に社員さんにAtomを使ってると言ったら"Visual Studio Codeも使ってみなよー"と言われたのでとりあえずインストール。 軽く触ってみた感じなかなか便利そう。 今までMacではxamarin studioを使ってたんだけどMacでしか使えな…

Android Studio のショートカット

Android Studioを使った開発の効率が上がりそうなショートカットたち ショートカットキー 記号 キー ^ control ⌘ command ⌥ alt/option ⇧ shift 使えそうなショートカット 組み合わせ 意味 ⌥ + Enter クイックフィックス ⌘ + b 選択されたクラスの定義に移動…

Androidアプリ開発メモ

スレッド処理 AndroidのUIに関する部分はシングルスレッドで動作することしか許されていないため、UIはシングルスレッドで動作させなければいけない。 それに違反すると CalledFromWrongThreadException: Only the original thread that created a view hier…

ターミナルの忘れがちな便利コマンド

USBの場所 cd /Volumes/<USB名> ファイル容量を調べる du</usb名>

Android Studioでの開発

BackspaceキーをCtl+hで ここを読めば解決する。 takatoshiono.hatenablog.com コールバック関数とは 呼び出し先の関数に対してコールバック関数(の)引数として送ることで、呼び出し先から任意のコールバック関数を実行させてコールバック関数に実行制御を…

Androidアプリ制作の際に出てくる謎のワードたち

Context アプリケーションの環境情報等をAndroidSystem間で受け渡す際のインターフェース。 アクティビティの起動やブロードキャスト、インテントの受け取りといった他のアプリからの応答を行え、アンドロイド特有のリソース・クラスにアクセス可。 つまり、…

JavaとC#の違い

自分はメインでC#を使っているのですが、とある理由でJavaもやらないといけなくなったのでまず両者の違いを知る意味も含めて簡単にまとめてみます。(適切ではないかもしれない) C#とは オブジェクト指向言語で、マイクロソフトの提唱する.NET Frameworkと…

SmartEyeGlass用アプリを1から作る

Android Studioで適当な名前のプロジェクトを作成 Target DeviceをGlassにする あとはNextを選択してFinishでサンプルプロジェクトが立ち上がる Android Manifestをインクルード AndroidManifest.xmlをプロジェクトにインクルードする。 すでにAndroidManife…

SmartEyeGlass開発記 〜サンプルapkをビルド〜

久しぶりの更新です。 英語の論文を書いていたり、就活となかなかコードを書かない日が続いていました。 それらがひと段落つき(つつあり)、ちょうど新しいおもちゃである SonyのSmartEyeGlass を手に入れたので、それのアプリでも作ろうかと思います。 ま…

pngからepsへの変換(Mac)

久しぶりの更新 macでepsの画像を作るには convert コマンドを使えば良い。 $ brew install imagemagick $ convert *.png *.eps これで出来てしまう。 ただ、サイズが10倍以上になるので注意が必要

Macbookの中の容量を整理

フォルダの容量を調べる ルート直下から深さ1のもののファイルの大きさを調べるコマンドがある。 sudo du -hxd 1 / これを深さ5までとして一括検索するコマンドは sudo du -gxd 5 / | awk '$1 >= 5{print}' であり、単位はGBで出てくる。 あとは、いらなそ…

条件分岐のいろいろ

フォークスルー 例えばswitch文はC, C++で使われているがC#では禁止されているらしい。 case内でのbreakのし忘れが頻繁におこったためだとか goto goto文はifやswitchと違い、無条件に処理の流れを変える命令。そのため、あまり推奨されない。以下の2つの場…

Linuxで接続待ち(中)のポートを切る方法

netstat -a | grep localhost とコマンドを打つと、接続がきれたsshを終了させるか待ち状態になっていることがある。 そのポートを閉じたいときは-pオプションをつけるとプロセスIDが左に表示されるので kill <PID> で閉じることができる</pid>

時間計測(C,C++)

時間計測を行うサンプルコードをのせる。 単位はmsであることと、<sys/time.h>をインクルードすることに注意 struct timeval start_timeval, end_timeval; double sec_timeofday; gettimeofday( &start_timeval, NULL ); /* do something */ gettimeofday( &end_timeval,</sys/time.h>…

マルチスレッド処理(C++)

マルチスレッド処理をC++で行う場合のコード例をのせる。 ソースコード #include <iostream> #include <thread> #include <exception> using namespace std; void do_worker1 (int a, int b) { // do something } int main (int argc, char *argv[]) { try { // スレッドを分けて処理 std:</exception></thread></iostream>…

Macでwindowsキーボードを使う時のあれこれ

結構簡単にできる。特にmacは簡単に 1. CapsLock, Control, Option, Commandキーを変更 「環境設定」=>「キーボード」=>「Modify Keys」 ・Caps Lock =>Control ・Control => Control ・Option => Command Key ・Command key(WinKey) => Option 2. 変換…

ドライバ内でのパケット作成

sk_buff 基本的には、sk_buffを使う。使い方は以下に例をのせる。 #include <linux/skbuff.h> #include <linux/if_ether.h> #include <linux/ip.h> #include <linux/udp.h> struct sk_buff *skb; skb = alloc_skb( sizeof( struct ethhdr ) + sizeof(struct iphdr) + sizeof( struct tcphdr ) + LL_MAX_HEADER, GFP_ATOMI</linux/udp.h></linux/ip.h></linux/if_ether.h></linux/skbuff.h>…

デバイスドライバ作成の注意

とにかくkmallocしたらkfreeをする まじでこれ。PCがフリーズしたらまずこれを疑ったほうが良い。 どこかでkfreeをし忘れていないかどうか念入りにチェック。 ありえんポインターを参照していないか kmallocもしていないところを参照していないか。それをし…

USBメモリをコマンドから使用する(CentOS)

簡単そうに見えて意外とできない、コマンドラインからUSBデバイスを使用する方法をまとめました。 コマンドは3つだけ。 1. dmesgでデバイス名を確認 USBをさしてから $ dmesg をして、 usb-storage: device found at 4 usb-storage: waiting for device to …