SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
PIC RoR Heroku
Report
mgwsuzuki
Follow
Oct. 29, 2012
•
0 likes
•
912 views
1
of
17
PIC RoR Heroku
Oct. 29, 2012
•
0 likes
•
912 views
Download Now
Download to read offline
Report
2012/10/26 Un-Conference
mgwsuzuki
Follow
Recommended
Janogia20120921 yoshinotakeshi
Keisuke Ishibashi
2.2K views
•
25 slides
about Tcpreplay
@ otsuka752
29K views
•
23 slides
hpingで作るパケット
Takaaki Hoyo
14.9K views
•
21 slides
サーバPUSHざっくりまとめ
Yasuhiro Mawarimichi
39.5K views
•
57 slides
Apache James - local mail server
Tozo Tanaka
1.3K views
•
8 slides
Varnish
Ayako Hatori
573 views
•
14 slides
More Related Content
What's hot
HTTP2入門
Sota Sugiura
1.1K views
•
63 slides
#mailerstudy 01 LT POP/IMAP入門
Takashi Takizawa
2.6K views
•
21 slides
Redis速習会@Wantedly
Yoshinori Kawasaki
4.8K views
•
31 slides
Redisととあるシステム
Takehiro Torigaki
9K views
•
18 slides
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
49.8K views
•
139 slides
CpawCTF 勉強会 Network
Takaaki Hoyo
19.4K views
•
33 slides
What's hot
(20)
HTTP2入門
Sota Sugiura
•
1.1K views
#mailerstudy 01 LT POP/IMAP入門
Takashi Takizawa
•
2.6K views
Redis速習会@Wantedly
Yoshinori Kawasaki
•
4.8K views
Redisととあるシステム
Takehiro Torigaki
•
9K views
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
•
49.8K views
CpawCTF 勉強会 Network
Takaaki Hoyo
•
19.4K views
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
do_aki
•
3.8K views
HTTP2 時代の Web - web over http2
Jxck :)
•
48K views
Webアプリケーションの無停止稼働
Kazuho Oku
•
6.4K views
Hokkaido.cap#4 ケーススタディ(ネットワークの遅延と戦う:前編)
Panda Yamaki
•
20.2K views
GGEasyMonitor技術情報
KitASP_Corporation
•
148 views
Raspberry Pi 2 誤自宅サーバー移行日記
96smcln
•
3.2K views
WTM52 あなたの作ったWEBサイト、生きてますか?
Masanori Oobayashi
•
1.6K views
NanoStrand
Masashi Umezawa
•
816 views
高速化のポイント
ryos36
•
458 views
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
azumakuniyuki 🐈
•
1.9K views
本番環境で使いたいPHP
Takuya Sato
•
3.4K views
H2O - making HTTP better
Kazuho Oku
•
54.5K views
今週やった事
Aira Sakajiri
•
205 views
Hokkaido.cap#10 実践パケット解析まとめ
Panda Yamaki
•
3.3K views
Similar to PIC RoR Heroku
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Panda Yamaki
33.2K views
•
67 slides
Heartbleedチェッカの改善(不正アクセスしないような改造)
Kensuke Nezu
1.5K views
•
17 slides
HTTP入門
Sota Sugiura
8K views
•
118 slides
websocket-survery
hogemaru_
1K views
•
23 slides
Craft CMSに最適なサーバはどんな環境?
Kei Mikage
1.1K views
•
27 slides
Webフレームワークを作ってる話 #osakapy
Masashi Shibata
2K views
•
29 slides
Similar to PIC RoR Heroku
(20)
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Panda Yamaki
•
33.2K views
Heartbleedチェッカの改善(不正アクセスしないような改造)
Kensuke Nezu
•
1.5K views
HTTP入門
Sota Sugiura
•
8K views
websocket-survery
hogemaru_
•
1K views
Craft CMSに最適なサーバはどんな環境?
Kei Mikage
•
1.1K views
Webフレームワークを作ってる話 #osakapy
Masashi Shibata
•
2K views
コンピューターネットワーク入門
Yusuke Miyazaki
•
1.4K views
Web時代の大富豪的プログラミングのススメ
Hideyuki Takeuchi
•
7.3K views
Web基礎
stx_kata
•
952 views
ゆるかわPhp
Ryota Mochizuki
•
1.1K views
Status 425 HTTP/Tokyo
yuki-f
•
1.6K views
OAuth 2.0 MAC Authentication
Ryo Ito
•
1.9K views
DXライブラリでMMO作ったよ!
h2so5
•
11.8K views
Soft layer network概要_jslug向け
Hideaki Tokida
•
2.4K views
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
You_Kinjoh
•
36.1K views
Httpを振り返ってみる
galluda
•
444 views
20apr2012 kernelvm7-main
Shotaro Uchida
•
2.4K views
C# 7.2 with .NET Core 2.1
信之 岩永
•
5.9K views
WebSocketでリアルタイム通信 (第13回学生LT資料)
stmkza
•
537 views
HTTP を肌で感じる
Kazuya Kohara
•
1.1K views
More from mgwsuzuki
80年代ゲーム機の技術をFPGAに実装してみた
mgwsuzuki
785 views
•
12 slides
Hardwre Sprite controled by mruby
mgwsuzuki
292 views
•
11 slides
レーザーカッターを使おう
mgwsuzuki
6.1K views
•
30 slides
3Dプリンタを使おう - 20131110
mgwsuzuki
1.5K views
•
32 slides
最近一年間で作ったもの
mgwsuzuki
1.3K views
•
37 slides
カッティングプロッタの使い方
mgwsuzuki
4.3K views
•
16 slides
More from mgwsuzuki
(8)
80年代ゲーム機の技術をFPGAに実装してみた
mgwsuzuki
•
785 views
Hardwre Sprite controled by mruby
mgwsuzuki
•
292 views
レーザーカッターを使おう
mgwsuzuki
•
6.1K views
3Dプリンタを使おう - 20131110
mgwsuzuki
•
1.5K views
最近一年間で作ったもの
mgwsuzuki
•
1.3K views
カッティングプロッタの使い方
mgwsuzuki
•
4.3K views
3 dプリンタの使い方
mgwsuzuki
•
6.8K views
IR remocon
mgwsuzuki
•
780 views
PIC RoR Heroku
1.
PICとRoR・herokuの無茶な関係
@mgwsuzuki
2.
自己紹介 • 本職はLSI設計とかデジタル無線通信とか組
み込みソフト開発とか • 小さいマイコンとか電子部品が好き • Low Layer好き、というか好き
3.
PICマイコン • 32bit 80MHz
CPU • 128KB Flash Memory, 32KB RAM – MBじゃない、KB • OS無し
4.
マイコンとセンサ • 小さいマイコンに興味を持つと大体センサに手を出す • 今回は気圧センサ
5.
ネットワーク?? • これは?? • 10Mbpsのイーサネット
6.
PICマイコン • 32bit 80MHz
CPU • 128KB Flash Memory, 32KB RAM – MBじゃない、KB • OS無し • でもEthernetでDHCP, DNS, TCP, UDP, Webサーバまでできる – 製造メーカーがライブラリを無償提供
7.
妄想 •
気圧センサで取得したデータを • Ethernet使って • 今はやりのRuby on Railsで作ったサーバに • PCを使わずにPICだけで • 自動的に投稿してみようじゃないか
8.
困難 • PICでjavaやrubyが動くわけじゃない • 文字列処理に便利な正規表現があるわけ
じゃない • HTTPライブラリがあるわけじゃない • 要するに無いないづくしorz
9.
楽観 •
TCPあれば80番ポート叩けばいいよね • HTTPなんて”GETなんちゃら”って送ればいいよね • セッションもcookieをオウム返しすればいいよね • authenticity_tokenだってオウム返しでしょ? • BASIC認証だって(ry • なんとかなるよね、きっと
10.
とりあえず現物 • senslogs.herokuapp.com/senslogs
11.
Ruby on Rails •
Scaffoldingでひな形作って 改造 • BASIC認証追加 • データがPOSTされたとき の時間を記録する • Herokuへdeploy
12.
HTTP GET GET /senslogs/new
HTTP/1.0 <- PICから送信 HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 … <- 途中省略 Set-Cookie: _sensor_session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRkkiJWE2MzJmMGVhNDkzNGNjZTI0Z WZlYzZiYWRkOTI2NjRjBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMUpmT1hzOHZJa1RDSHdoZDVB bC9lQTlWRkRkRHJScVdOcE5aSDRjc0pUMjA9BjsARg%3D%3D-- 7f1dc20e289a0a5bc0cb5dbe1bc2522cee8fb0bd; path=/; HttpOnly … <form accept-charset="UTF-8" action="/senslogs" class="new_senslog" id="new_senslog" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="nFgUyFamqODtURZ0W81UcofMPDh1Esx1hurNDC/Jt04=" /></div> • GETで得た文字列をどうにかして解析しないといけない • そのための文字列操作関数を作る
13.
作ったライブラリ
• 可変長の文字列を扱 う文字列クラス • いわゆるString
14.
作ったライブラリ
• HTTPサーバと会話する ためのクラス
15.
受信と送信 Content-Ty
文字列が細切れになって時間差で到着する pe: text/h これを連結して1つの文字列に直す tml; chars set=utf-8 送信はその逆を行う Content-Type: text/html; charset=utf-8
16.
HTTP POST POST
/senslogs HTTP/1.1 Host: senslogs.herokuapp.com これが無いと接続できなかった Connection: close Cookie: _sensor_session=BAh7B… GETで得たCookieを返す Authorization: Basic XXXXXXXX BASIC認証の文字列 Content-Length: XXX BODYの文字列長 utf8=%E2%9C%93&authenticity_token=8r3AJu9wnUoZRL5iRG%2Ffc3TLdYRVJPcPO86PCMa eZE0%3D&senslog%5Btempature%5D=23&senslog%5Bpressure%5D=429&commit=Create+ Senslog • POSTするためにはGETが必要 – Cookie, Authenticity_token • HTTPサーバに受け付けられるか見ながらヘッダを追加していった • BASIC認証のヘッダはとにかく付けておけばo.k.
17.
まとめ • ネタとして • 2W以下の低消費電力で動作する •
外部のサーバに指令を書いておけば… – スマホでエアコンをオンすることだって可能 • 小さなマイコンでもネットにつながる • 最近は無線LANボードも安くなった • Low Layerは楽しいのでオイデオイデ