Deep Learningハンズオン勉強会 に行ってきた

先日、このイベントに行ってきた。

mashupawards.doorkeeper.jp

内容が素晴らしくて、ひとりでやってた時のもやもやが晴れた気がした。
単語の読み方も正しいのが聴けたし(^^)

 
で、そのスライドがもう神。
ホント、そのままやればできちゃうので!
これは前回のスライドみたいです。

次回もぜひ参加したい!


で、本題はここから。
このスライドに沿って、手持ちの画像データを分類してみようと。
すると、lmdbの中身を見る時にエラーが・・

$ python read_lmdb.py

Traceback (most recent call last):
  File "read_lmdb.py", line 13, in <module>
    data = caffe.io.datum_to_array(datum)
  File "/home/ubuntu/caffe/python/caffe/io.py", line 85, in datum_to_array
    datum.channels, datum.height, datum.width)
ValueError: total size of new array must be unchanged

んー
配列の総要素数を変更しようとしてエラーになっているみたいで、 いろいろ試すもダメ。
ソースを見たらここを通らなくても良さそうなので、コメントアウトしたらエラーは出なくなった。

・・が、その次の平均画像作成時にエラーがorz

$ build/tools/compute_image_mean -backend=lmdb examples/hoge/hoge_train_lmdb examples/hoge/mean.binaryproto

F0909 08:59:59.850615 14784 compute_image_mean.cpp:76] Check failed: size_in_datum == data_size (2304 vs. 3072) Incorrect data field size 2304
*** Check failure stack trace: ***
    @     0x7f45f278bdaa  (unknown)
    @     0x7f45f278bce4  (unknown)
    @     0x7f45f278b6e6  (unknown)
    @     0x7f45f278e687  (unknown)
    @           0x4022b1  main
    @     0x7f45f199aec5  (unknown)
    @           0x40243a  (unknown)
    @              (nil)  (unknown)
Aborted (core dumped)

あれこれ試した結果、
画像を正規化する時のリサイズが縦横比を保持しちゃってて、
32x32になっていなかった・・(;´Д`)

これで強制リサイズ

$ mogrify -geometry 32x32! */*.jpg

リサイズ後に試したらエラーは解消して、学習モデル作成までできたー(゚∀゚)

 

正解率がとっても低いんで、これからゴニョゴニョ調整してみよう。
どうなるのか楽しみだわー

AWS CLIでInvalid JSON: No JSON object could be decoded

PHP7ベータ版でWordPressを動かしてみよう | PRESSMAN*Tech を参考にスポットインスタンスを立ち上げようとしたらこんなエラーが。

Error parsing parameter 'cli-input-json': Invalid JSON: No JSON object could be decoded JSON received: ec2_spot.json

実行したコマンドはコレ。

$ aws ec2 request-spot-instances --cli-input-json ec2_spot.json

 

・・・

そう。
file:// が抜けてたというお話orz
下のように追加したらちゃんと立ち上がった。

$ aws ec2 request-spot-instances --cli-input-json file://ec2_spot.json

YAPC::Asia Tokyo 2015 に行ってきた!

今年でラストということなので、いろんなものを放り投げて行ってきた!

yapcasia.org

Day 1

飛行機の関係で午後から参加。
「ビッグサイトから○○までは○時間!」 | YAPC::Asia Tokyo 2015 のおかげで迷わずに済んだ。
わかりやすくてホント助った〜(^^)

HTTP/2時代のウェブサイト設計

・・から観たかったけど、間に合わずorz

Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜

はてなブログの開発話。
オブジェクト指向やDDDとか、実際にやってきたことを聴けたのがよかった。
コピペの話や定期的に発せられる「最高」がステキだったw
ユビキタス言語のくだりはうちもちゃんとやろうと思った。

Yet Another Perl Cooking

自分が一番楽しかったのがコレ。
Nomikuが届かない、とろ火の定義がわからない、ビニールが焦げるなどなど、おもしろポイント満載だったw
ただ、おもしろ要素だけじゃなく、Nomiku届かないからとRaspberry Piで自作したのは凄いなと。
Chefをリアルワールドにって発想が素晴らしいと思った。

esa.io - 趣味から育てたWebサービスで生きていく

今年の Hackers Champloo に来ていただいていたera.ioさん。
Bug Fixタイムアタックってのは驚いた。
雑なコードにならないのかなぁ・・

Lightning Talks Day 1

まさにお祭りって感じで楽しかった!
障害対応術のLT時に実際の障害通知があったり、LTの準備中だけ喋る人が出てきたりと、息つく間もない60分だったw
で、一番沸いた(と思う)のがコレ。

隣の人達がざわついてたので、修正頑張ってくださいと祈ってました(^^;)

Day 2

ISUCONの勝ち方

ISUCON自体は知らなかったけど、チューニング系が聴けそうだったので参加。
analyze_apache_logsやpt-query-digest、iftopは聴いたこと無かったんで、勉強不足を痛感。
「心にいつもB+Treeを」
楽しそうなので、うちもチームで出てみたいなと。

我々はどのように冗長化を失敗したのか

こういう失敗事例を聴けるのは貴重だなと。
hostsは上からなめて最初のものをすぐに返すってのは知らなかったorz
道具への理解と責任のくだりはホントそうだなと頷くばかり。

ランチセッションの1つ前

ランチセッションB付近で待機。
Day 1の経験から、普通にトークを聞いた後だと入れないと確信。
ま、弁当云々より、位置情報関連技術の話が聴きたくて・・

ランチセッションB

駅メモで使用されている位置情報技術について。
座標のランク関数とかとってもわかりやすかった。
GeoHex便利そうなんで、ぜひ使ってみたい(うちにそんな案件あるのか知らないけど)
お弁当もありがとうございました!(何だかんだで、ちゃっかり頂きましたw)

データ分析基盤を支える技術

用語は聞いたことあるけど・・みたいなデータ分析基盤の話が聴けて勉強になった。
SQLは大事ってのと、データ分析基盤は自前でやるもんじゃないってのはわかりましたww

   

ここでタイムアップ・・
YAPCあるあるの歓声を聞きつつ、泣く泣く空港へ・・・

その他

Network

ちょこちょこ繋がらないこともあったけど、この規模でこの安定性って凄いと思った。
CONBUさん凄すぎる!
おかげで快適に過ごせました。ありがとうございました!
カンファレンスネットワークの作り方 - YAPC::Asia Tokyo 2015 も聴きたかったな・・

移動

ちゃんとスケジューリングしないと部屋に入れもしないw
ネズミの国みたいだなとww

空港

トータルで1時間半遅延orz
YAPCあるあるの直前までいたのになー
同じトラックだったのになー
使用機に雷落ちるとかー

まとめ

YAPC::Asia Tokyo 2015 楽しかった!
ホント、エンジニアのお祭りって感じで居心地がよかった。(特にDay 1のLT大会)
エンジニアとして負けないよう修行せねば。

f:id:tnaototo:20150827224532j:plain

f:id:tnaototo:20150827224855j:plain

f:id:tnaototo:20150827224621j:plain

無限コーヒー
ありがとうございました!
f:id:tnaototo:20150827225011j:plain

f:id:tnaototo:20150827230604j:plain

いいアイデア思いついたら

まさにこれ。
すぐ動く癖があるので、肝に銘じておこう・・

周囲を見渡しても同様のサービスがなく、「これは世界初なんです!」と勢いよく持ち込む前に「なぜそれがなかったのか」「それが欲しいのは自分(似た境遇の人数人)だけではないのか」という自問自答する時間と心の余裕は持ちたいものです。

引用元:2015年Q2に「死亡した」スタートアップ12社の理由 - THE BRIDGE(ザ・ブリッジ)

ERROR:Error: Cannot find module 'jsupm_adxl345'

Edison + 三軸加速度センサーを試そうとしたら、タイトルのエラーが・・・

確かに見当たらない・・

# ls -la /usr/lib/node_modules/ | grep jsupm_adxl345
# 

Fix & Sample for LCD on Edisonに書いてあるとおりにopkg(パッケージマネージャ)をupgradeしたら解消した。

# opkg upgrade
# opkg update

# ls -la /usr/lib/node_modules/ | grep jsupm_adxl345
drwxr-sr-x    2 root     root          4096 Jun 19 11:10 jsupm_adxl345  

解消したが、今度はセンサーの値を正しく取得できてないorz

先は長そうだ・・

Jenkins勉強会に行ってきた

2015.05.30に行われた「Jenkins勉強会 第1回 Jenkins初期構築と運用について」に行ってきた。

jenkins-ug-okinawa.doorkeeper.jp

今更感満載だが、じっくり触れていなかったので
ゴニョゴニョできて良かった。

実際の導入話も聴けたし、(主に懇親会でw)情報交換もできたので、楽しいひと時を過ごせたなと。
次回はSeleniumをがっつり回せるようにしたい。

イベント自体の流れなどは、こちらのエントリの方が詳しいです。

takkuru98.ti-da.net

以下、自分メモ。
途中までしかできてない & ほぼSelenium・・


13:00 〜 とあるプロジェクトにおけるJenkinsの導入実績

  • 精神論より仕組み
    • 週1でレビューしようではなく、JenkinsでOKじゃないとだめという風にする
  • 実際のケース
    • リリース手順が多くて大変
      • リリースに丸二日・・
    • ハインリッヒの法則
      • 1:29:300
    • Jenkins導入後 -> 0.5日に短縮
      • 導入するのはどのぐらいかかったんだろう?
        • ステージングが全く同じ環境があったので、3営業日で検証終了
  • 自動化出来る作業は計算機に委任する
  • Jenkinsをアップデートする動機は?
    • 新しいPluginが対応してないとか
  • Jenkinsのバックアップはディレクトリごとtarで固めてとか、PluginとかでOK
    • グリーとかはJenkins用にリソース結構割いてる
    • Jenkinsが落ちても大丈夫な構成は要検討

オススメ書籍

13:30〜 Jenkins初期構築ハンズオン

cf. 今更始めるJenkins勉強会 チートシート一覧 - Qiita

もくもく

Jenkins + Selenium
cf. CentOS6.4 + Selenium の環境作成 - Qiita
cf. Ruby - CentOS上にてRSpec+Turnip+Capybara+Selenium Webdriver+Headlessでスクリーンショットを撮るまで - Qiita

$ sudo yum install xorg-x11-server-Xvfb
$ sudo yum install ImageMagick
$ sudo yum groupinstall "Japanese Support"

$ curl -L https://get.rvm.io | bash -s stable
$ source /home/vagrant/.rvm/scripts/rvm
$ rvm install 1.9.3

$ mkdir selenium
$ cd selenium
$ bundle init
$ vi Gemfile

Gemfile

# A sample Gemfile
source "https://rubygems.org"

# gem "rails"

gem "headless"
gem "selenium-webdriver"
gem "rspec"

 

$ bundle install
$ vi ~/.bash_profile

# 追加
export DISPLAY=:99

$ source ~/.bash_profile

# テスト
$ Xvfb :99 -screen 0 1024x768x24 &
$ firefox &

Audio関係のエラーがでるけど、使わないので無視
cf. ImageMagickとlibreofficeを使ったOffice->PDF->PNG変換について(コマンドライン編) - Qiita

The XKEYBOARD keymap compiler (xkbcomp) reports:
> Internal error:   Could not resolve keysym XF86AudioMicMute
Errors from xkbcomp are not fatal to the X server

Selenium試す

cf. Linux CUI環境でruby + selenium-webdriver - Qiita

エラー・・

nable to obtain stable firefox connection in 60 seconds (127.0.0.1:7055) (Selenium::WebDriver::Error::WebDriverError)

firefoxバージョンアップ?

$ firefox -v
Mozilla Firefox 38.0.1

$ gem list
selenium-webdriver (2.45.0)

Googleのキャプチャ取ってみる
cf. XvfbとFirefoxを使ってWebサイトのSSを撮る - 私の昆布

$ Xvfb :99 -screen 0 1024x768x24 &
$ firefox http://google.com/ &
$ import -window root test.png
$ ls
test.png

firefoxのたたき方間違ってたorz
cf. Xvfb+Firefoxで"Error: No running window found"となってハマりかけた話 - Qiita

# NG
$ Xvfb :1 &
$ DISPLAY=:1 firefox -remote "openURL(http://www.google.co.jp/)" &

# OK
$ Xvfb :1 &
$ firefox http://google.com/ &

Rubyのエラーorz

$ ruby test.rb
test.rb:33:in `block in <main>': undefined method `pp' for main:Object (NoMethodError)
    from /home/vagrant/.rvm/gems/ruby-1.9.3-p551/gems/nokogiri-1.6.6.2/lib/nokogiri/xml/node_set.rb:187:in `block in each'
    from /home/vagrant/.rvm/gems/ruby-1.9.3-p551/gems/nokogiri-1.6.6.2/lib/nokogiri/xml/node_set.rb:186:in `upto'
    from /home/vagrant/.rvm/gems/ruby-1.9.3-p551/gems/nokogiri-1.6.6.2/lib/nokogiri/xml/node_set.rb:186:in `each'
    from test.rb:32:in `<main>'

ppコマンドが無いみたいなので、pに変更すると・・

$ ruby test.rb
"http://ja.wikipedia.org/wiki/FIFA%E3%83%AF%E3%83%BC%E3%83%AB%E3%83%89%E3%82%AB%E3%83%83%E3%83%97"
"http://www.jfa.jp/nadeshikojapan/worldcup2015/"
"http://www.jfa.jp/nadeshikojapan/worldcup2015/schedule_result/"
"http://members.jcom.home.ne.jp/wcp/"
"http://blog.livedoor.jp/sekaiminzoku/archives/44234655.html"
"http://www.asahi.com/worldcup/"
"http://matome.naver.jp/topic/1LvDt"
"http://www.soccer-king.jp/news/wc"
"http://www.fujitv.co.jp/sports/vabonet/wcv/"

キタワァ・゚゚・:.。..。.:・゚(n‘∀‘)η゚・:.。..。.:・゚゚・ !!!!!

15:30 〜 Jenkins運用についてのブレインストーミング

お題

  • 開発で導入したいこと
  • クラウドでJenkinsを導入するメリット
  • 社内でJenkinsを導入するには
    • 導入障壁って何だろう?
  • 次回以降やっていきたいこと

その他: 雑感

  • インストールは -y オプションあってもいいかな
  • 軽いBGMあってもいいかも
  • Jenkinsで軽いテスト(?)みたいなものをやってもいいかな
    • 放り出された感がしたかなと(^^;)
  • 次回は「#jenkinsug」を事前告知してみよう

作業メモ:Edison + IoT Analytics で Device not found in IoT cloudと出た

背景

23: Intel Edison実践編 (3) 〜 XDKで開発したプログラムからiotkit-agentにデータを送る | Developers.IO を読んで、Edison + IoT Analyticsを試す
 ↓
(・∀・)イイネ!!
 ↓
別の場所に移動してセンシング
 ↓
プロットされない・・orz
 ↓
Edisonでこんなエラーが・・

# systemctl status iotkit-agent -l
~(略)~

May 27 06:40:22 edison1 iotkit-agent[475]: 2015-05-27T06:40:22.106Z - error: Data Submission Error  {"code":1404,"message":"Device not found i
n IoT cloud. Try initializing and activating the device once again."}                                                                              
May 27 06:40:22 dev-tnaototo iotkit-agent[475]: 2015-05-27T06:40:22.108Z - info: Response received:  {"code":1404,"message":"Device not found in Io
T cloud. Try initializing and activating the device once again."}                                                                                  
May 27 06:40:22 edison1 iotkit-agent[475]: 2015-05-27T06:40:22.191Z - error: Data Submission Error  {"code":1404,"message":"Device not found i
n IoT cloud. Try initializing and activating the device once again."}                                                                              
May 27 06:40:22 edison1 iotkit-agent[475]: 2015-05-27T06:40:22.193Z - info: Response received:  {"code":1404,"message":"Device not found in Io
T cloud. Try initializing and activating the device once again."}          

 ↓
Activateし直してもダメ
 ↓
iotkit-admin initialize やればいいの? ← イマココ

Getting Started Guide を参考にInitialize

cf. Intel® Internet of Things (IoT) Developer Kit IoT Cloud-Based Analytics User Guide (PDF)

# iotkit-admin initialize
2015-05-27T07:36:11.813Z - info: Token file: /usr/share/iotkit-agent/certs/token.json
2015-05-27T07:36:11.847Z - info: Using data store: /usr/share/iotkit-agent/data/
2015-05-27T07:36:11.852Z - info: Initialized
# iotkit-admin activate <<device_activation_code>>
2015-05-27T07:36:37.771Z- info: Activating...
2015-05-27T07:36:39.589Z- info: Saving device token...                                                                                              
2015-05-27T07:36:39.602Z- info: Updating metadata...                                                                                                
2015-05-27T07:36:39.611Z- info: Metadata updated.     
# systemctl restart iotkit-agent
# systemctl status iotkit-agent -l
~(略)~
                              
May 27 07:39:32 edison1 systemd[1]: Starting iotkit-agent...                                                                                    
May 27 07:39:32 edison1 systemd[1]: Started iotkit-agent.                                                                                       
May 27 07:39:35 edison1 iotkit-agent[520]: 2015-05-27T07:39:35.406Z - info: Device has already been activated. Updating ...                     
May 27 07:39:35 edison1 iotkit-agent[520]: 2015-05-27T07:39:35.436Z - info: Updating metadata...                                                
May 27 07:39:35 edison1 iotkit-agent[520]: 2015-05-27T07:39:35.477Z - info: Metadata updated.                                                   
May 27 07:39:37 edison1 iotkit-agent[520]: 2015-05-27T07:39:37.169Z - info: Starting listeners...                                               
May 27 07:39:37 edison1 iotkit-agent[520]: 2015-05-27T07:39:37.318Z - info: MQTT listener started on port:  1884                                
May 27 07:39:37 edison1 iotkit-agent[520]: 2015-05-27T07:39:37.322Z - info: TCP listener started on port:   7070                                
May 27 07:39:37 edison1 iotkit-agent[520]: 2015-05-27T07:39:37.329Z - info: UDP listener started on port:  41234

コンポーネント再登録

# iotkit-admin register temp temperature.v1.0
2015-05-27T07:55:40.115Z - info: Starting registration ...                                                                                           
2015-05-27T07:55:40.227Z - info: Device has already been activated. Updating ...                                                                     
2015-05-27T07:55:40.235Z - info: Updating metadata...                                                                                                
2015-05-27T07:55:40.274Z - info: Metadata updated.                                                                                                   
Attributes sent                                   

# iotkit-admin register light light.v1.0
2015-05-27T07:55:40.115Z - info: Starting registration ...                                                                                           
2015-05-27T07:55:40.227Z - info: Device has already been activated. Updating ...                                                                     
2015-05-27T07:55:40.235Z - info: Updating metadata...                                                                                                
2015-05-27T07:55:40.274Z - info: Metadata updated.                                                                                                   
Attributes sent                                   

 ↓
プロットされるようになった(´∀`)

その他

IoT Analytics Dashboardにデバイスが一つ増えたけど、これ何だろう・・(-_-;)