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にデバイスが一つ増えたけど、これ何だろう・・(-_-;)

DeepLearningに先立つ機械学習講習会 に行ってきた

いろんなものを放置調整して、機械学習の勉強会に行ってきた。 machinelearningstudy.doorkeeper.jp

こちらのエントリの方がきれいにまとまっています。 www.itbook.info

以下、感想 f:id:tnaototo:20150524114826j:plain

ただでさえも遅刻なのに飛行機が遅延するというorz
着いた時には環境構築やってて、遅れを取り戻せるか不安だったが、
vagrantのboxが提供されていたので助かった・・
vagrantやdockerイメージがあるとハマらなくて済むなと(^^)
 

環境構築後は実習
Pythonの使い方で1時間、機械学習で1時間
全てiPythonのnotebook(?)でやったけど、コードが補完されるので書きやすかった。
 

機械学習は日本語でコードの説明が聴けたのが一番の収穫だったなと。
scikit-learnのチュートリアル含め、英語の情報がほとんどなので・・
ま、英語を勉強し(ry  

実習時の資料やコードを持って帰れたので、
帰ったら今一度パラメータいじって試してみよう。
 

今回は「教師なし学習」のみだったので、次回以降も参加したい。
 

以下、メモ


20150523 DeepLearningに先立つ機械学習講習会

機械学習とは

機械に「問題を解くためのの規則性」を見つけさせる

用語

  • 「正解」となる値 = Target(目的変数)
  • 「予測のもと」となる値 = Feature(特徴量)

教師あり学習

  • 分類
  • 回帰

教師なし学習

  • 正解のないデータから規則性を見つける

一番いい手法なんて無い

  • No Free Lunch Theorem
  • 人の手による試行錯誤
    • Under-FittingとOver-Fitting(過学習)
      • 「ちょうどいい」複雑さを探す
  • LinkPlaza Demo

  • Featureの重要性

    • 肌感覚
      • 手法の改良
        • 改善しても数%..
      • 良いFeature
        • 最低15%の改善は見込める
        • 学習しないとわからない

Deep Learningの強み

  • 自動的に「有用な」Featureの抽出
    • 化学知らなくても化合物の活性予測で優勝(Featureの選択してない)
  • Featureの自動抽出が「革命的」

Deep Learningの黒魔術

  • 学習時のパラメータが多すぎる
    • 通常10個 <-> Deep Learningは100以上
  • パラメータ調整に独特なコツ

Python

読み方

  • pandas - パンダス
  • numpy - ナムパイ
  • scikit - サイキット

書き方

  • [3:5] -> 3番目と4番目のデータのみを取り出す
    • 5番目は入らないので注意
years_list = [2010, 2011, 2012, 2013, 2014, 2015]
print years_list[3:5]
[2013, 2014]
  • [] -> リスト
  • () -> タプル

  • lambda -> 無名関数

  • Pandas.Series -> 時系列データを扱う

機械学習

Irisデータ - どんな変なモデルでも精度が出る

まずはいろいろグラフを出してみて、使えそうなパターンを見つける

学習の典型的パターン

  1. target=y, feature=xとする
  2. モデルの形を決める
  3. モデルの形で一番いいパラメータを求める

「あてはまり」の最大化 =「あてはまらなさ」の最小化

典型的でないパターン

  • K-近傍法
    • 予測したいFeatureの近くにあるFeatureをk個取ってくる
    • それの平均から判断する
      • 「近いデータと同じになるだろう」

教師あり学習のタイプ

  • 典型的パターン:パラメトリック
    • 学習・予測早い
    • データに強い仮定を置く
  • 典型的でないパターン:ノンパラメトリック
    • 学習・予測遅い
    • データに弱い仮定を置く

どのパターンがいい?

  • 性能評価
    • 誤差で見るとOverFitting(過学習)に陥る・・
    • Cross Validating(交差)
      • 学習データの一部を検証にのみ使う
      • 例) 10回やって、各誤差の平均値をそのモデルの性能とする
from sklearn.linear_model import LogisticRegression
from sklearn import cross_validation
cv = 10 # 何分割するか
logit= LogisticRegression()
scores = cross_validation.cross_val_score(logit,X,Y,cv=cv)
print(sum(scores)/cv)

Over-FittingとUnder-Fitting

  • k=1 : モデルが難しすぎる = Over Fitting
  • k=80 : モデルが簡単過ぎる = Under Fitting

  • k=80でもcol_index=2と3にすると精度が上がる

    • 有用なFeatureがわかれば精度が格段に上がる

おすすめ書籍

よくやるパターン

  1. 大量のデータがある
  2. プロットしてみる
  3. プロットするFeatureを色々変えて、目視
  4. これかな〜というものを見つけたら、掘ってみる

実習でやったようなアプローチ


雑感:Ringを使ってみた

ちょっと前(最近?)に話題になったRingを上司が購入してたので、触らせてもらった。 f:id:tnaototo:20150519134640j:plain

結論から先に言うと、この動画みたいにはいかなかったorz
www.kickstarter.com

ジェスチャーがうまいこと認識されず・・

できること

音楽再生やボリュームの調整、TwitterFacebookへの投稿など、いろいろできる。
f:id:tnaototo:20150519134705j:plain

この記事に細かく書かれている。
mobilelaby.com

使用感

アクション用のジェスチャーは何回かやってると慣れる。
あと、自分でジェスチャー設定できるので、認識しやすいものを設定したらいいかなと。

同じアクションを何個も(?)登録できるので、
ジェスチャーを変えて登録しておけば、定型文の投稿でも使えるのかなと。
ただ、似たようなジェスチャーにすると、結構ご認識されるので注意。

で、Twitterでジェスチャー入力した文字を投稿できるが、この入力が激ムズw
「test」と投稿したかったけど、どうやっても「e」が「t」や「f」になるので諦めた。

OpenURI

個人的に気に入ったのが、これ。
APIが叩ける。
今のところGetしかできなそうだけど、API側でいろいろやれるのはいいなと。

試しに、Ringでアクション起こしたら携帯に電話をかけるというサンプルを作ってみた。
(運転中に帰るコールする的な)
API叩いているだけですけどねw

サンプルのDockerfile
naotty/docker-twilio · GitHub

Twilioイイっすね(違  

最後に

まだまだこれからだな〜と。
ジェスチャーをきれいに認識して、SDKとかが充実したら楽しそうではある。

Cloud on the BEACH 2015 に行ってきた!

先月の25日に行われたJAWS-UG沖縄のCloud on the BEACH 2015に参加してきた。
当日はスタッフとして経験者トラックの司会進行してた。
jaws-ug-okinawa.doorkeeper.jp

当日の様子やスライドは他の方のブログをご覧ください。
てか、いつの間にか写真撮られてたんだなとww

blog.lexues.co.jp

k-nishijima.blogspot.jp

togetter.com

浅い感想(経験者トラックのみ)

(仮)Storage Gateway で大容量ファイルストレージ構築(してみよう?)。 by 株式会社レキサス 与儀さん

Storage Gatewayで使っているS3領域は通常のものとは違うってのが印象深かった。
S3をストレージ化してるなら、直接触れると思うな、普通は。
Storage Gatewayを使うってことは無さそうだけど、ハマりポイントが聴けてよかった。

Twilioハンズオン by 株式会社 KDDI ウェブコミュニケーションズ 宋さん

掴みの投票アプリで感動w
ぜひ、これ使ってサービス作りたい。
あと、サーバー立てなくても試せるのが便利過ぎる(´∀`) f:id:tnaototo:20150507223728j:plain
ノベルティも貰った(^^)

昼食

ゲストの小島さんと同じ席に座り、ド緊張するorz
その人に刺さるような立て付けにしないと、自発的には使ってもらえないというお話がぶっ刺さった。
AMIMOTOやKintoneがいい例。
うちのエンジニアに刺さるのは何だろうか・・

IoT を支えるAWSサービスとデザインパターン by アマゾンデータサービスジャパン株式会社榎並さん

HackDayで大変お世話になったIoT周りのお話。
恥ずかしながらMQTTを初めて知ったorz
収集 -> 蓄積 -> 分析 -> 検知 のサイクル大事。

sensu/zabbixで支える高トラフィックの話 by クラウドパック岸上さん・比嘉さん

一番興味のあったsensu/zabbixのお話。
ハマりポイントをたくさん聴けたので、楽しかった!
クライアント側はSensuのスタンドアローン版ってのが印象深かった。
あんな数を監視するかはわからないけどww

Dockerで運用しようそうしよう ハンズオン by JAWS-UG沖縄 米須さん*1

Docker & Machine/Swarm/Composeの話とDockerハンズオン。
ハンズオンでは、1サーバーにみんなでログインするというww
みんなでワイワイ、お祭りみたいで楽しかったヽ(゚∀゚)ノ
centosのimageをpullしかけて冷や汗をかく(^^;)
Dockerってプロダクトで使おうとすると面倒だな〜と思うので、実際に使っている人の話を聴きたいなと。

ビーチパーティー & 2次会

飲みながらいろいろ情報交換。
酒の力を借りて、ゲストにアタックw
著名な方々と直接話できるのが( ・∀・)イイ!!

まとめ

内容が盛りだくさんすぎて、お腹いっぱいだったw
沖縄でこんないろいろ聴ける・ハンズオンできるってのは貴重だなと改めて感じた。
スタッフとして役に立ててないので、次回こそはLTやったりして貢献しよう。
あと、仕切りを何度もやらないと、普段のあのゆるさは出せないなと痛感(^_^;)

*1:このトラックのサポートやると言ってDockerを事前に触ってたけど、結局のところ使いどころがわからずに一参加者として座っていたのは内緒w

AWS Security notification re: SSLv3 deprecation

AWSからこんなタイトルのメールが来た。
以下、本文

Dear AWS Customer,
 
This message explains some security improvements in our services. Your security is important to us. Please review the entire message carefully to determine whether your use of the services will be affected, and if so what you need to do.
 
As of 12:00 AM PDT May 20, 2015, AWS will discontinue support of SSLv3 for securing connections to S3 buckets. Security research published late last year demonstrated that SSLv3 contained weaknesses in its ability to protect and secure communications. These weaknesses have been addressed in Transport Layer Security (TLS), which is the replacement for SSL. Consistent with our top priority to protect AWS customers, AWS will only support versions of the more modern TLS rather than SSLv3.
 
You are receiving this email because some of your users are accessing Amazon S3 using a browser configured to use SSLv3, or some of your existing applications that use Amazon S3 are configured to use SSLv3. These requests will fail once AWS disables support for SSLv3 for the Amazon S3 service.
 
The following bucket(s) are currently accepting requests from clients (e.g. mobile devices, browsers, and applications) that specify SSLv3 to connect to Amazon S3 HTTPS endpoints.
 
hogehoge-bucket : ap-northeast-1
 
For your applications to continue running on Amazon S3, your end users need to access S3 from clients configured to use TLS. As any necessary changes would need to be made in your application, we recommend that you review your applications that are accessing the specified S3 buckets to determine what changes may be required. If you need assistance (e.g. to help identify clients connecting to S3 using SSLv3), please contact our AWS Technical Support or AWS Customer Service.
 
For further reading on SSLv3 security concerns and why it is important to disable support for this nearly 18 year old protocol, we suggest the following articles:
 
https://www.us-cert.gov/ncas/alerts/TA14-290A https://blog.mozilla.org/security/2014/10/14/the-poodle-attack-and-the-end-of-ssl-3-0/ http://disablessl3.com/#why
 
Thank you for your prompt attention.
 
Sincerely, The Amazon Web Services Team

これ、なんぞ?

お前んとこのバケットにまだSSLv3でS3にアクセスしてる奴いるけど、5/20にSSLv3禁止にするから、今のうちに対応してね。(意訳)

やったこと

  • クライアントのブラウザは無視
  • アプリ内で使用している「AWS SDK for PHP」をバージョンアップ
  • opensslをアップデート

で、様子見・・
大丈夫なんだろうか・・(-_-;)

その他

公式のForumでもワイワイしているので、引き続きウォッチする。
AWS Developer Forums: AWS disables support for SSLv3 for the ...

2015.05.26 追記

期日を過ぎてもS3にアップ出来たので、上記の対応でうまくいったのだろう・・