korechi’s diary

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

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 …

CentOSの初期設定

カーネルをいじくりまわしていたらthriftの挙動がおかしくなり、回復しそうにないのでPCを変更した。 簡単な初期設定に必要なあれこれをまとめておく。 sudoの追加 # su # visudo ここで ## The COMMANDS section may have other options added to it. ## ##…

CentOSからgitを使う

使い方 基本はいつも通りに $ git init $ git add . $ git commit -m "コミットメッセージ" $ git remote add origin <リモートリポジトリのURL> でリポジトリは作成できる。しかしpushを行うと Gtk-WARNING **: cannot open display: とエラーになる時があ…

サーバーの再起動

サーバーを再起動することはどうしてもある。 そこで、再起動したあとの設定をまとめておく。(今までの記事と被る部分があるが結構昔に書いたものもあるので) ネットワークまわり sudo service iptables stop sudo service ip6tables stop sudo service Ne…

リバースポートフォワーディングまわり

ssh

参考記事 DHCPクライアントとして起動するマシンはIPアドレスが変動するため、IPアドレスを確認してからでないとSSHログインができない。 そこでSSH接続用ゲートウェイマシンを用意して、DHCPクライアントとして起動するマシンからSSHリバースポートフォワー…

NICの使い方

NIC

PCにNICをさす。(本研究ではMellanox 10Gを使用) ドライバがうまくインストールされれば使えるようになり、 $ ifconfig して、em1というのが表示されていれば良い。この状態ではまだIPアドレスが与えられていない。 表示されていないなら、insmodをする必…

HBase Installation (再)

magentaにてHbaseをインストールをしたさいのメモ hbase-1.0.2が筋が良かったので、そっちをインストール。ただ、src/exampleが入っていないので必要なら他の例えば0.94.27とかからとってくる必要あるかも 今回は、Hbaseは1.0.2で起動させて今まで作ったファ…

デバドラまわり

最初はドライバインストールは危険なので、magenta 内で行う。 現在動作している Linux kernel に含まれている Mellanox 10GbE NIC device driver (mlx4_core.ko と mlx4_en.ko)を再コンパイルする方法は、 http://www.arc.ics.keio.ac.jp/local/index.php…

チームでのgit管理(基本)

git branch <ブランチ名> でブランチを作る git checkout <ブランチ名> でそのブランチにうつり作業を行う。 git add . git commit -m "" git push origin <ブランチ名> で、リモートにブランチを作りレビューしてもらう git diff で自分の変更が全て分かる …

C++からMongoDBを扱う

詳しくは、 C++ から MongoDB を扱えるようにしたメモhotolab.net を参照。 自分はaji内の cd Workspace/mongo で作業した。 そして cd mongo-cxx-driver-v2.4/src/mongo/client/examples 内のtutorial.cppをいじるのだが、g++がうまくいかず先に進めない

実際の操作(Hbase編)

・初期起動は前回と同じようにやる cd Workspace/deamon make ・サーバー側 ./DeamonServer 11111(ポート番号) ・クライアント側 例1 ./UDPEchoClient localhost 11111 1,get,row1 例2 ./UDPEchoClient localhost 11111 1,put,row1,col1,val1 と送る。 初…