ハードウェアエンジニアの備忘録

電子工学(半導体物性)→応用光学・半導体プロセス→アナログ回路→C/C++→C#/.NETと低レイヤーから順調に(?)キャリアを登ってきているハードウェアエンジニアの備忘録。ブログ開始時点でiOSやサーバーサイドはほぼ素人です。IoTがマイブーム。

レフェルヴェソンスに行ってきた

知人に誘ってもらい超人気店のレフェルヴェソンスに行ってきた。

外観

f:id:tosh419:20160608235224j:plain

f:id:tosh419:20160608235358j:plain

内観

f:id:tosh419:20160608235452j:plain

地下の個室だった。完全個室で、居心地が良い。

コース

f:id:tosh419:20160608235613j:plain

乾杯のシャンパーニュ

f:id:tosh419:20160608235717j:plain

オリーブ

f:id:tosh419:20160608235805j:plain

真鯵、加賀太胡瓜、えんどう豆、ガスパチョ

f:id:tosh419:20160608235938j:plain

アップルパイのように#23~ イノシシ、桜、セロリラブ

f:id:tosh419:20160609000045j:plain

上昇~上り鰹の昆布締め、栄螺と黒にんにくのエミュルション、紫蘇の葉と花、コンブチャで発酵させたセロリと発酵乳

f:id:tosh419:20160609000701j:plain

定点~ 蕪とパセリ、キントアハム、ブリオッシュ

f:id:tosh419:20160609000822j:plain

陽だまり~ 甘鯛のポワレ、月山筍、春キャベツ、木の芽

f:id:tosh419:20160609001037j:plain

とある池~ スッポンと葱の冷たいジュ、蓴菜、枝豆、雲丹、金蓮花

f:id:tosh419:20160609001329j:plain

おばあちゃんの味~ ちいさな茶碗蒸し、鴨とふじつぼのコンソメ、おろし立て山葵

f:id:tosh419:20160609001601j:plain

南から始まる~ 今帰仁アグー豚を薪で、沖縄ヨモギのジュとシャンピニオンのピュレ、金時草アミガサ茸

f:id:tosh419:20160609001917j:plain

西と東と~ チーズたち あるいは お野菜たち

f:id:tosh419:20160609002045j:plain

緑の山~ 空豆のクレームと桑の実のコンフィチュール、トンカ豆のアイスクリーム

f:id:tosh419:20160609002333j:plain

ノスタルジア~ 枇杷の実とその種のブラマンジェ、黒糖のアイスクリームと黒豆、甘酒の泡

f:id:tosh419:20160609002526j:plain

f:id:tosh419:20160609002639j:plain

ミニャルディーズ(4人分)&お薄

メニュー

f:id:tosh419:20160609002826j:plain

まとめ

これで各品にワインを合わせた場合、お会計39k。ワインなしで24k。食事だけとすれば、満足度高いが、ワイン付きだとちょっと高い。まあマリアージュは素晴らしかったけど。

 

 

六本木アカデミーヒルズを見てきた

六本木ヒルズ森タワー49Fにあるアカデミーヒルズの見学会に行ってきた。雰囲気は以下の写真のような感じで、素晴らしい。

f:id:tosh419:20160606225156j:plain 

※画像はhttp://mice.academyhills.com/より引用

アカデミーヒルズの基本サービス 

アカデミーヒルズの基本サービスは大きく以下の通り。

  • 7時から24時までオープンしている施設
  • 無線LAN
  • 開架12000冊の蔵書
  • メンバーズコミュニティ

施設としては以下の写真がわかりやすい。濃く青で塗られているエリアは主に自習室的な場所で、薄い青の場所は共用スペースといったところ。上の写真の場所はライブラリーカフェという場所になる。リーディングルーム3はPCや電卓の打音もダメなど、部屋ごとにルールが決まっている。また、ライブラリーカフェなどがイベントで貸しきりだったり土日でいっぱいになってしまった場合、白いエリアで示される会議室が開放されるようだ。

f:id:tosh419:20160606230222j:plain

ちなみに、カフェはFRESHNESS BURGERが入っており、有料で飲み物や軽食を注文できる。また、ライブラリーカフェエリアは食べ物の持込みや飲食が可能だが、雰囲気的にはムシャムシャ食べられる感じはない。

良い点

悪い点

  • 月会費が日割りにならず、また休会制度がない
  • 少し堅苦しいドレスコード
  • 土日は席の取り合い?

諸外国で都心にこの設備を持ったCo-Working Spaceを探しても、月1万円では無理だろう。そういう意味で、この値段設定は素晴らしい。しかし一方で、入会時に¥5,000が月会費以外に必要で、これは一ヶ月でも会員が途切れると、再び必要になる。つまり休会制度がない。また、月会費が日割りにならない点もイケてない。月末などに入会すると、ほぼその月の月会費は無駄になる。

 

結論

とりあえず、入会は保留した。ジムと同じで、入会しても行かないと意味が無い。今月はあいにく予定も埋まっており、あまりアカデミーヒルズにも行かれそうにない。また、8月、9月にはそれぞれ1〜2週間程度海外に出かける予定もある。そう考えると、フル活用は難しい。やはり、休会制度がほしい…。ちなみに、ゲスト利用もあるが、カフェスペースで¥2,000/1日、自習室スペースで¥1,000/1日という価格設定だ。自習スペースだけという利用はできないので、自習室で1日ガッツリ勉強しようとするゲストは¥3,000が必要になる。

 

お得情報①

ちなみに、リンク先にある見学特典だが、六本木ヒルズ森美術館でやっている展示の招待券だった。個人的にステッカーを期待していたのだが、残念w

お得情報②

 ダイナースクラブカードを持っている人は次の月の月会費が無料になるキャンペーンがある。ぜひご利用を。ヒルズカードも同様の特待があるようだ。

お得情報③

六本木ヒルズのポイントカード対象なので、カードを持っている人は忘れないように。

www.academyhills.com

 

 

追記

入会しないと言っていたが、その後入会した。とりあえず、7月、8月の2ヶ月頑張ってみる。

 

XilinxのJTAGケーブルが届いた

f:id:tosh419:20160605074744j:plain

Xilinx社製のFPGAにファイルを書き込む場合、USB接続のJTAGケーブルを使うことになる。しかしながら、Xilinx社公式のJTAGケーブルは高い。例えば、プラットフォームケーブルUSBⅡはXilinx公式HPで$225する!

 

これで、他社製のFPGAにも使えればまあしょうがないかな、という感じもするのだが、AlteraやLatticeのFPGAには使用できない。

 

こんな状況も手伝い、Googleで「Xilinx JTAG」とうつと、関連ワードに「自作」などと出てくる。

 

しかし、iMPACTで認識しないなどのトラブルを抱えているとの話も聞く。うーん、と悩んでいるときに、eBayでJTAGケーブルが出品されているのを見つけた。発送元は、中国のシリコンバレーと名高い?深センである。そしてそのお値段、$29.53(約\3,000)、激安

 

f:id:tosh419:20160605085145j:plain

↑こんな感じで、複数のJTAGの間口に対応する。「上」という漢字はこういう意味だった。ちなみに、使用方法に対する説明書などは一切なく、試行錯誤しこういう使用法だと言うことに気付いたw。

 

ちゃんと使えるのか、、?今後レポしていく予定。

Socket.IOを使ってクライアントからRaspberry Pi 3のストリーム配信を開始する

ここに従う形で、クライアントPCからSocket.IO通信を使って、Raspberry Pi 3に通信しストリーミング配信を開始することを試みる。

 

Raspberry Pi 3 (サーバー)側の準備

まずは適当なディレクトリに移動し、git cloneする。済んだらcdで移動しておく。

$ git clone https://github.com/irisSchaffer/rpi-socket-streaming.git
$ cd rpi-socket-streaming

次に、Node.jsのパッケージ関係をそろえる。

$ npm install

また、Githubのリンク先には記述されていないが、忘れずにstreamディレクトリをrpi-socket-streamingの下に作成しておく。

$ mkdir stream

各自の環境に合わせて、IPアドレスやPort番号を変更する。まずは、config.json内の赤い部分を修正する。クライアントサイドのIPアドレスなので、WindowsPCで見るのであれば、cmd.exe→ipconfigを打ったときに表示されるアドレスが該当のアドレスだ。Macであればifconfigをターミナルで打ったときに表示されるアドレスを入れれば良い。

{
  "port": 9999,
  "client-host": "192.168.10.100",
  "client-port": 80,
  "capture-rate": 200,
  "capture-time": 100,
  "image-path": "stream",
  "image-name": "image.jpg",
  "image-width": 640,
  "image-height": 480
}

 

Windows PC (クライアント)側の準備

次にクライアント側の準備だが、Githubのリンク先に置いてあるclient.htmlをダウンロードし、54行目と56行目の赤字になっている部分を自分のRaspberry PiのIPアドレスに変更する。

<script src="http://192.168.0.102:9999/socket.io/socket.io.js"></script>
var socket = io.connect('http://192.168.0.102:9999');

これで、晴れて準備は終わり。

いざ、試す

まず、Raspberry Pi 3のターミナルからnodeコマンド。

$ node index.js
listening on *:9999

次に、Chromeなどでclient.htmlを開いて、Start Streamボタンを押す。

… 何も写らない

ChromeのConsoleを見ると、

f:id:tosh419:20160504183435p:plain

socket.ioが400 Bad Requestになっている。解決策はここに書いてあった。client.htmlを以下のように変更する。

// 古いやつ
// var socket = io.connect('http://192.168.10.102:9999');

// 新しいやつ
var socket = io.connect('http://192.168.10.102:9999',{transports:['websocket']});

polling→websocketにしてやるということでした。これで自分の場合はうまくいった。

 

 

Node.jsを使ってshellコマンドを叩く

Raspberry Piに入れたNode.jsを使って、シェルを叩く方法のメモ。

参考にしたのは、以下のブログ。

Node.jsでshellコマンドを叩く - PolyPeaceLight

Node.jsからSlackに投稿するPythonスクリプトを動かしてみる。

まずは、適当なディレクトリに移動し、jsファイルを作る。

$ vi shelltest.js

 以下のサンプルコードを書く。

var exec = require('child_process').exec;
var child;

child = exec("python slacktest.py", function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null {
console.log('exec error: ' + error);
}
});

ちなみに、slacktest.pyは以下のようなコードになっている。

#Slack Post Test
from slacker import Slacker
token = "Your Token 自分のトークンに変えてね"
slacker = Slacker(token)
channel_name = "#" + "general"
message = "API test by Script"
slacker.chat.post_message(channel_name, message, username='test')

これをターミナルから

$ node shelltest.js

とうつと、

f:id:tosh419:20160430080824j:plain

投稿できることが確認できた。

Node.jsからRaspberry Pi 3のカメラを動かしてみる。

お次はもう少し複雑なスクリプトを動かすことに挑戦する。参考にしたのはこのサイト。

Raspberry Pi, Camera and Node.js - Live Streaming with Websockets #IoT | The Jackal of Javascript

適当なファイル名のjsファイルを作る。

$ vi raspistilltest.js

 以下のようなコードを書いた

var spawn = require('child_process').spawn;
var proc;

var args = ["-w","640","-h","480","-o","/home/pi/Pictures/image_stream.jpg"]
proc = spawn('raspistill',args);

raspistillコマンドを実行するだけのファイルになる。/home/pi/Picutres/image_stream.jpgができていれば成功になる。

$ node raspistilltest.js

 実行すると、、

f:id:tosh419:20160430100503p:plain

できた!image_stream.jpgが確認できる。

raspistillで撮影→それが何かをCloud Visionで識別する

これらを組み合わせることで、Node.jsを用いて、raspistillで撮影を行い、その画像をGoogle Cloud Visionで判別するプログラムを作った。

まず、cloudvisionのディレクトリに移動し、適当な名前のjsファイルを作る。

$ cd /home/pi/projects/cloudvision
$ vi cameratest.js

次にコードを書いていく。内容としては、上記raspistillの項で説明したコードと、CloudVisionの記事で紹介したコードの組み合わせだ。

var spawn = require('child_process').spawn;
var proc;

var args = ["-w", "640", "-h", "480","-o","/home/pi/Pictures/image_stream.jpg"]
proc = spawn('raspistill', args);

'use strict'
const vision = require('node-cloud-vision-api')

// init with auth
vision.init({auth: 'Your API Key'})

// construct parameters
const req = new vision.Request({
  image: new vision.Image('/home/pi/Pictures/image_stream.jpg'),
  features: [
    //new vision.Feature('FACE_DETECTION', 4),
    new vision.Feature('LABEL_DETECTION', 10),
  ]
})

// send single request
vision.annotate(req).then((res) => {
  // handling response for each request
  console.log(JSON.stringify(res.responses))
}, (e) => {
  console.log('Error: ', e)
})

これを保存し、

$ node cameratest.js

として実行すると、下のような写真が撮影され、

f:id:tosh419:20160430110207j:plain

コンソールには以下が出力される。

f:id:tosh419:20160430110343p:plain

見にくいので、いくつか結果を書き出してみると、

  • meal (ご飯)
  • breakfast (朝食)
  • furniture (家具)

などの結果が確認できる。ただ、

  • sink (シンク)
  • plumbing fixture (配管の部品)
  • swimming pool (スイミングプール)

との結果も出ている。

しかし、この写真まずそうに撮れている笑

 

 

 

Apple Developers Program登録方法

XCode7.0からは無料で実機ビルドができるようになった!やった!とか言っていたのも過去の話。APNs(Apple Push Notification service)のAPIキーを取得するためには、結局Apple Developers Programへの登録が必要という、、

 

という事で、今回はApple Developers Programへの登録方法の備忘録。

(無料のアカウントだと何もできないよ↓)

f:id:tosh419:20160424190304j:plain

Enrollします!↓

f:id:tosh419:20160424190502j:plain

次に、Entity Typeを選択する。自分の場合はIndividualにあたる。

f:id:tosh419:20160424190835j:plainちなみにPlease note以下をざっと訳すと、

App Storeで販売者としてリストされるために、あなたの会社はあなたの国で法的な組織体でなければいけませんよ。個人事業主や、社員が一人しかいなくて国 によって法的な組織体と認められない場合、登録した人個人の法的な名前で登録され、App Storeで表示されますよ

って感じ。

個人情報を入れていって、最後に、、\12,744支払いでおしまい。

f:id:tosh419:20160424192238j:plain

この時点でアカウントはペンディング状態。48時間以内にAppleから連絡が来て正式に承認となる。

登録したのは日曜日だったが、火曜日に以下のメールが来た。

f:id:tosh419:20160429195809j:plain

Apple Developers Programにログインした画面は以下のような感じ。

f:id:tosh419:20160429200737j:plain

MembershipやCertificates, IDs & Profilesなど無料アカウントの時にはなかった項目が確認できる。