UbuntuでApple Magic Trackpadの移動速度を最速にする

こんな感じでトラックパッドの速度を変更できます。
Apple Magic Trackpadが、認識されているトラックパッドの名前です。
最後の1が、マウスの速度。大きくすると遅くなります。
xinput –set-prop “Apple Magic Trackpad” “Device Accel Constant Deceleration” 1
これを自動起動するアプリケーションに登録します。

 

しかし、速度1にすると、速くて快適なのですが、シビアになりすぎて、領域選択とか出来ません(笑)
 

家族目線(HVC-C2W)SDKモニター当選したのでまずは開発手順をメモしておきます

家族目線(HVC-C2W)SDKモニターとして本体をお借りしております。早速SDKをダウンロードしてサンプルを動かしてみたいと思います。備忘録として開発までの手順をここにメモしていきます。
モニターの詳細についてはこちら。
http://plus-sensing.omron.co.jp/egg-project/fordeveloper20151113_sdk-monitor/
まずは、環境構築から。Mac環境での説明になります。 “家族目線(HVC-C2W)SDKモニター当選したのでまずは開発手順をメモしておきます” の続きを読む

【ひみつ道具】どこでもドア改めどこでも見えるドアを作ってみた

「せっかくだからラズパイを使ってなんか面白いもの作ってみよう。」
毎週火曜日の業務終了後、数人の男たちが会議室に集まり、近くのスーパーで買ったビール片手におつまみ、寿司などを食べながら話していました。目的はラズパイを使ったハッカソン。いろいろなアイディアが出てきます。
raspi-ideason
「ラズパイを使った楽器などは人目を引くよね」
「レトロなデバイスを使えないかな。昔のテープとか」
「ケーキを当分に切るためのレーザーとかどう?兄弟喧嘩起きない!」
「子供向けに、像にカメラついてて、願い事をすると、何が欲しいかを親の携帯に送る。なんてのはどうでしょう」
新しいアイディアを考え、それに乗っかりながら次のアイディアを考えていく。時には突飛な空想から現実的なアイディアまで様々です。
「ドラえもんのひみつ道具はどうだろう?」
「翻訳こんにゃくとかどう?」
「こんにゃくの中にラズパイを埋め込むのか!」
「・・・使ったこんにゃく、ちゃんと最後は食べてね」
「どこでもドアはどう?実際にどこでも行けるのはむずかしいけど、どこでも(見える)ドアなら可能なんじゃない?」
そろそろ夜も更けてきました。きょうはこのくらいで解散です。続きはFacebookのメッセージで打ち合わせです。
「先週は8/Eに向けてRasp piの案を固めていってました。 ドラえもんの道具的なものができたらいいなぁとおもってます。」
「有力候補は「どこでもドア」です。 明日に決定して、スケジュールを立てられればと。 ご都合いかがでしょうかー?」
「私は参加できます。」
「明日はダメだ。。 忙しすぎて、何にも出来ない。、ら ってかドラえもんすか? 「どこまでもドア」ではなくて?w」
「どこまでもドアw」
「自分は業務の都合次第になると思います 最近なかなか参加出来ておらず申し訳ありません‥‥。」
「Rasp piの件です。 いろいろな案がでたけど、「どこでもドア」に決定しました! あとはスケジュールと何をどんな分担でいくかですね。」
「おっー!ストリートビューについては技術問題特に見当たらなさそうですね!」
「これでどこでもドアを・・」
こんな感じでFacebookメッセージをやりとりしながら、仕様を決めていきます。それぞれ仕事が忙しい中でも自分の時間を作って調査したり、物品を買い集めたり、徐々にサンプル的なコードを作り始めます。
raspi2
「じゃあ、どうやって進める?」
どこでやる?基本、自宅でする人が多いと思う。毎週火曜日に進捗を報告しますか。
「見た目はどこでもドアそっくりでなければ面白く無い
【タスク】
1.ストリートビュー担当
2.カメラ担当
3.音声認識多の津
4.ハード・センサ制御
5.ハード制作・外枠制作
6.購買・管理
7.ラズパイコンテスト応募用資料の作成と応募
8.応募用動画の作成、出演、Youtubeに上げる。
やりたいものがあれば手を挙げてね!」
作りたいものが決まればあとは実行するだけ!なのですが、作ってみるとなかな難しいものです。途中行き詰まったり、代替案を考えたりしながら徐々に形にしていきます。
rasp-door-sekkei「やっぱムズイか・・・」
「対策としては、 1.外部サーバーですべて対応  →顔の傾きや、住所を外部サーバに送信※デメリットとしては、レスポンスが遅くなる感じでしょうか・・ 2.StreetView部分はスマホアプリを利用→Socket通信等を用いて、結果をスマホに送信  ※デメリットは、スマホをつかうのかよ!?って部分ですかね。。3.そもそも地図表示をやめる・・・?  ※デメリットは、時間が無い こんなところでしょうか?」
「うーん。他の案に乗り換えてもギリ間に合う時間だとは思いますが、案1.2で逃げれるなら逃げたいですね。」
「今日中に1か2に決めたいです。 どちらがいいです?」
「案1がいいかなと。根拠はないけど、できるだけスマホは使いたくない気分。」
「フェイストラッキングはどうします??」
「やりたいねー」
「いろいろ検討ありがとうございます。 flickr案もいいですが、今回はストリートビューを使う方向で進めるのもいいですね。
2でいいと思います。 でもflickrは他でも使えそうな感じ。」
全員プログラマーなのでプログラミングはお手のものです。しかし、実際に木材を組み合わせてドアを作るのにはなかなか苦労します。日曜日に集まって作業です。調度よい木材を探したりペンキ塗りをしたりとなれない作業が続きます。
rasp-konan「日曜日にコーナンに行こうと思います。」
「ネットでは難しそうですか?? カットまでしてくれたら、楽かな?って思って。。」
「おはようございます。 今コーナンであれこれ考えてますけど、どこでもドアのようなピンク色がありません。 あの色をだすのは至難で、ペンキもスプレーもないようです…」
「提案ですが、黄色はどうですかね…? てか、木に色を染めることに知見がある方〜?」
「なるほど。あの色は難しいんですね。」
「わたしは黄色でもいいも思います。 みんなどうやろか。 色つけるのは、コーナンの人に聞くのが確実かも。 木材の種類に合わせて選ぶペンキも変わるかもです。」
もう少しで、黄色いどこでもドアになるところです。
「ブレンダー現れました」
raspi-brend
「まさかの混ぜ技w」
「すげー!」
実際のドアを作るのも大変ですが、音声認識APIや、画像認識に苦労します。
そうして完成したのが、こちら。「ひみつ道具 どこでも見えるドア」です!
IMG_1626
説明しましょう。行き先を言ってからドアを開くと、その場所を訪れることが見ることができるのです!
IMG_1599
ドアを開けると・・ あら不思議!その場所の風景が表示されます!! 顔を右に向けると右の風景、左に向けると左の風景 下から上を覗くと上の風景を見る事ができます。
IMG_1617IMG_1616
 
どういった仕組みになっているかというと、
ディスプレイにドアを取り付けています。
IMG_1621IMG_1612
ドアノブに静電センサー、ドアにリードセンサーを取り付けています。
IMG_1622
 
ドアノブを触ると、音声入力を開始します
ドアが開いた時点で、音声入力を終了し、音声を解析します。 ※音声の解析は、Juliusを使用しています。
解析された情報をサーバーへ送信し、対象となる地域のストリートビューを表示します。
顔認識は、OpenCVを使用しています。 認識した顔の位置より、角度を算出した角度情報を外部のサーバーに送信します。
認識した情報は、サーバに送信されブラウザに表示されているストリートビューの角度が変わります。 一定時間以上顔が認識されなかった場合は、初期の位置に戻します。
まだまだ、改良点も多いのでラズパイコンテストへの応募後もどんどん機能改善、機能拡張を行っていきたいと思っています!
 
 
 

ODB2(ODBII)は常時通電なのでアクセサリ電源に変更してバッテリー上がりを防止して常用する

Amazonで注文していたODB2が届きました!
IMG_0307
ODB2についてはwikipediaがよくまとまっていてわかりやすいです。
ではさっそく開けてみます。
IMG_0310
シールを剥がすと、上の写真のように4箇所でねじ止めされているのがわかります。ネジを外してしまいます。
IMG_0326 1IMG_0327 1IMG_0329 1
こんな小さなチップで処理してるんですね。Bluetoothはどれだんだろう?多分小さい銀色のチップがBluetoothですね、基板上にアンテナのパターンが見えます。
ODB2コネクタでは16番ピンに電源が繋がっています。ODB2コネクタの16番は常時電源なので、ODB2を車に取り付けている間じゅう通電してしまいます。常時電源のままだとちょっと気持ちが悪いのでアクセサリ電源に変更してしまいましょう。
IMG_0328 1
まずは工具を準備。
アクセサリ電源を取得するには、エーモンの平形ヒューズ電源がオススメ。定番です。
IMG_0333 1
これは、ヒューズボックスに刺さっている平形ヒューズと交換するだけで、常時電源またはACC(アクセサリ)電源を取り出せるという優れもの。手軽に電源を得ることができます。次の写真はデミオのヒューズボックスに取り付けた状態。ケーブルは裏側に回しています。
IMG_0338
この「平形ヒューズ電源」をアクセサリ電源のヒューズと交換すれば、エンジンがONの時にのみバッテリーから電源をもらうことができるというわけです。
ヒューズの形状には「平形ヒューズ」と「ミニ平形ヒューズ」があるので注意します。デミオは「ミニ平形ヒューズ」でした。
では、ODB2の16番ピンに繋がっているケーブルを切断し、「平形ヒューズ電源」から電源供給できるように改造しましょう。
必要なアイテムはまずは配線コード。0.75ぐらいが丁度いいです。
IMG_0335
 
つぎにギボシ端子。平形ヒューズ電源と接続するために必要です。
IMG_0334 1
圧着接続端子です。切断した16番の代わりに配線コードを接続します。
IMG_0331 1
電工ペンチです。圧着接続端子とギボシ端子をかしめるのに使います。
IMG_0337電工ペンチ
 
ドリルで電源ケーブルのための穴を開けておきます。
image
 
はい、こんな感じで完成です。
image
では早速車にに接続。ケーブルがアクセル操作を妨げないように結束バンドで固定したら完成です。
テスト。Torque Proを使ってデータが取得できていることを確認できました。
IMG_0316 1
今日はここまでです。次回よりデータの取り出しとwebサーバへの保存を行ってみることにします。

XCode6でSubversionリポジトリへ初回コミット

スクリーンショット 2014-11-27 4.17.54

巷ではGitが流行っているようですが、個人でバックアップの目的がメインでソースコードを管理している分にはSubversionで十分です。いつもリポジトリの作成とXCode上でのコミット方法を忘れてしまうので、メモしておきます。

リポジトリの作成

まずはサーバ上でリポジトリを作成します。

既にSubversionの環境は整っているとします。以下のコマンドでサーバ上にリポジトリを作成します。

svnadmin create /var/www/svn/リポジトリ名
chown -R apache:apache /var/www/svn/リポジトリ名

リポジトリの削除

間違えて作成した時に削除する方法もメモしておきましょう。

rm -rf /var/www/svn/リポジトリ名

Xcode プロジェクトを SVN リポジトリに初コミットする

リポジトリの登録とチェックアウト

先ほど作成したリポジトリをチェックアウトします。メニュー>Source Control>Check Out…を選択します。次のCheck Outウィンドウが開きます。
スクリーンショット 2014-11-27 4.26.42
 
Or enter a repository location:に先ほど作成したリポジトリを入力してNext。
スクリーンショット 2014-11-27 4.27.03
 
 
Type:にSubversionを選択してUser Name、Passwordを入力。Next。
チェックアウト場所を聞いてくるので任意の場所にチェックアウト。

ポジトリ上で Xcode プロジェクトディレクトリをおく予定の場所に、空のディレクトリをコミット

チェックアウト場所へ移動して空の基本ディレクトリを作成します。

mkdir branches
mkdri tags

XCodeで作成済みで、まだSCM管理下にないプロジェクトを、チェックアウト場所に移動、名前をtrunkに変更します。

バージョン管理するファイルを選択してコミット

コマンドラインからsvn管理下に追加してコミットします。その際XCodeの使用するユーザーデータはコミットする必要ないので、ignoreに追加してコミットしないように設定しておきましょう。

svn add --force .
svn revert trunk/<XCodeプロジェクト名>.xcodeproj/xcuserdata --depth infinity
svn revert trunk/<XCodeプロジェクト名>.xcodeproj/project.xcworkspace/xcuserdata --depth infinity
export SVN_EDITOR=vi
svn propedit svn:ignore trunk/<XCodeプロジェクト名>.xcodeproj/
    xcuserdata
svn propedit svn:ignore trunk/<XCodeプロジェクト名>.xcodeproj/project.xcworkspace/
    xcuserdata

svn stasuで、コミットするファイルを確認出来ます。このコマンドでは除外されたファイルは表示されません。ので、 svn status –no-ignore で除外されたファイルを表示して確認します。

svn status
svn status --no-ignore

問題なければコミットしましょう。

svn commit -m "New Xcode project"

以上でプロジェクトの初回コミットが完了です。

GIMPでCould not save image. エラーでPNGが保存できない時

GIMPで作成したファイルをPNGファイルにexportしようとしたら、Could not save image.というエラーが表示された。macだけの問題なのかな?
スクリーンショット 2014-07-19 10.27.43
検索したら解決方法が載ってたので以下にメモしておく。
スクリーンショット 2014-07-19 10.23.16
Image > Mode > Convert to Color Profile… を選択
スクリーンショット 2014-07-19 10.23.36
RGB workspace (sRGB built-in)を選択して、Convertを行う。
その後にpngにエクスポートを行うと、今度は正しくエクスポート出来ました。

VagrantでParallelsの仮想マシンを一瞬で作成しよう

Vagrantって?


Vagrantはすばらしい開発環境構築ツールです。完全で過般的な開発環境の構築・管理のためのフレームワークです。
 

Parallelsとは?


Macで定番の仮想PC構築ツールだ。VirtualBoxやらVMWareとか色々使ってみたけどMacではParallelsが一番いい。

Vagrantのインストール

まずはVagrantをダウンロード&インストールします。
Vagrant-download
 
Downloadボタンを押し、Mac OS X用をダウンロード。
Vagrant-mac
 
vagrant_1.5.1.dmgを保存します。dmgを開いてマウントします。
Vagrant.apkをクリックしてインストール。
install1
install2
install3
インストール確認。
[shell]
* vagrant –version
Vagrant 1.5.1
[/shell]
次に、Vagrant用のParallelsプロバイダVagrant Parallels Providerを導入します。
Vagrant Parallels Providerは
Parallels Desktop 8 と 9 に対応しています。Vagrant v1.5以上に対応します。
基本的なVagrantの機能に対応していますが、Forwarded ports 設定は使えないようです。
Vagrant Parallels Providerのインストールです。まずParalells DesktopとVagrantをインストールします。最新版をインストールする事をお勧めします。次にプロバイダのインストールですがこれは簡単で、次のコマンドを実行するだけです。
[shell]
* vagrant plugin install vagrant-parallels
Installing the ‘vagrant-parallels’ plugin. This can take a few minutes…
Installed the plugin ‘vagrant-parallels (1.0.6)’!
[/shell]
Vagrant Parallels Providerの使い方はこちらにドキュメントがあります。
デフォルトプロバイダをparallelsにします。
[shell]export VAGRANT_DEFAULT_PROVIDER=parallels[/shell]
上記を~/.bashrcに追記しておきましょう。

Vagrant Parallels Providerの使い方

新しいプロジェクト用ディレクトリを作成してVagrantプロジェクトを作成します。
[shell]
* mkdir Vagrant
* cd Vagrant/
* mkdir centos6.5_project
* cd centos6.5_project/
* vagrant init parallels/centos-6.5
[/shell]
[text]
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
[/text]
[shell]
* vagrant up –provider=parallels
[/shell]
[text]
Bringing machine ‘default’ up with ‘parallels’ provider…
==> default: Box ‘parallels/centos-6.5’ could not be found. Attempting to find and install…
default: Box Provider: parallels
default: Box Version: >= 0
==> default: Loading metadata for box ‘parallels/centos-6.5’
default: URL: https://vagrantcloud.com/parallels/centos-6.5
==> default: Adding box ‘parallels/centos-6.5’ (v0.1.0) for provider: parallels
default: Downloading: https://vagrantcloud.com/parallels/centos-6.5/version/1/provider/parallels.box
==> default: Successfully added box ‘parallels/centos-6.5’ (v0.1.0) for ‘parallels’!
==> default: Importing base box ‘parallels/centos-6.5’…
==> default: Checking if box ‘parallels/centos-6.5’ is up to date…
==> default: Setting the name of the VM: centos65_project_default_1395845391717_93498
==> default: Preparing network interfaces based on configuration…
default: Adapter 0: shared
==> default: Clearing any previously set network interfaces…
==> default: Booting VM…
==> default: Waiting for machine to boot. This may take a few minutes…
default: SSH address: 10.211.55.6:22
default: SSH username: vagrant
default: SSH auth method: private key
default: Error: Connection refused. Retrying…
default: Error: Connection refused. Retrying…
==> default: Machine booted and ready!
==> default: Checking for Parallels Tools installed on the VM…
==> default: The Parallels Tools on this VM do not match the installed version of
==> default: Parallels Desktop! In most cases this is fine, but in rare cases it can
==> default: cause things such as shared folders to not work properly. If you see
==> default: shared folder errors, please update the Parallels Tools within the
==> default: virtual machine and reload your VM.
==> default:
==> default: Parallels Tools Version: 9.0.24215.978862
==> default: Parallels Desktop Version: 9.0.24172.951362
==> default: Mounting shared folders…
default: /vagrant => /Users/hiroaki/Vagrant/centos6.5_project
[/text]
Vagrantは自動的にboxと新しい仮想マシンをダウンロードしてインポートします。仮想マシンが設定&開始されます。
createvirtualmachine
ここで警告が出ています。訳すと次のようになります。

このVMにParallels Toolsは、Parallels Desktopのインストールされているバージョンと一致していません!ほとんどの場合、これは問題ありませんが、まれに、それは、共有フォルダなどのものは正常に動作しない場合があります。共有フォルダのエラーが表示された場合は、仮想マシン内のParallels Toolsをアップデートして、仮想マシンを再ロードしてください。

「ほとんどの場合問題ない」とあるので、とりあえず放置します。問題が発生したら対応を考える事としましょう。
Parallelsの仮想マシンリストを見ると、仮想マシンが増えている事が確認できます。
virtualmachinelist
仮想マシンが起動したら、SSHでログインします。
[shell]
* vagrant ssh
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$
[/shell]
以上でVagrantとVagrant Parallels Providerの導入は完了です。
さて、先ほどの警告に対処しましょう。作成されたVMにParalells Toolsをアップデートして、さらに再利用できるようにboxファイルを作成しておきます。
まず、Toolsを手動インストールします。
http://kb.parallels.com/jp/112609
次に、今起動しているVMから新しいBoxを作成します。
vagrant package
すると、pakage.boxができているので、
[shell]
vagrant box add parallels-centos-6.5-Build9.0.24217/ Users/USER_NAME/Vagrant/centos6.5_project/package.box
[/shell]
という感じにbox add コマンドでboxを追加します。
次回からは
vagrant init parallels-centos-6.5-Build9.0.24217
とすればOKです。

Eclipse IDE for Java Developers Indigo Suvbersin対応

Eclipse IDE for Java Developers SVN Indigo
標準ではSVNが見当たらない。ので、subversiveをインストール必要があります。
【ヘルプ】→【新規ソフトウェアのインストール】
作業対象:をプルダウンから「Indigo – http://download.eclipse.org/releases/indigo」を選択。
コラボレーション→Subversion SVN チーム/プロバイダ(インキュベーション) にチェックを入れて「次へ」をクリック。「次へ」をクリック。「使用条件の条項に同意します」にチェック。「完了」をクリック。「今すく再始動」をクリック。
Eclipse を再起動すると、インストールする SVN コネクターの選択画面が表示されます。

バージョンにあったものにチェックを入れればよさそう。バージョンの確認はサーバーにて下記コマンドを打ちます。
%svnadmin –version
svnadmin, version 1.6.15 (r1038135)
compiled Jan 17 2012, 04:03:28

%svnadmin –versionsvnadmin, version 1.6.15 (r1038135)   compiled Jan 17 2012, 04:03:28
上記よりバージョンは1.6.15と分かったので、それにあわせて、SVN Kit 1.3.5 (SVN/1.6.15 SVNKit/1.3.5)を選択。「完了」をクリック。「次へ」をクリック。「次へ」をクリック。「完了」をクリック。
インストール中はセキュリティ警告が表示されるので「OK」をクリック。「今すく再始動」をクリック。
以上。

GoFのデザインパターンのうちStateパターンについて調査した

電卓の状態遷移を表す為に、ステートパターンを調査してみる。状態遷移なんて久しぶりすぎて忘れている。
調べたサイトへのリンク
http://japan.internet.com/column/developer/20081224/26.html
http://blogs.wankuma.com/nagise/archive/2008/06/05/141783.aspx
http://www002.upp.so-net.ne.jp/ys_oota/mdp/State/index.htm
http://www5.plala.or.jp/igjhmc/calc/spec.html