- PyCon APAC 2013 1日目に行ってきた(1) #pyconapac
- PyCon APAC 2013 1日目に行ってきた(2) #pyconapac
- PyCon APAC 2013 1日目に行ってきた(3) #pyconapac
- PyCon APAC 2013 2日目に行ってきた(1) #pyconapac
ちょっと間が空いてしまったけど、PyCon APACの2日目の後半。Pythonでハードウェアを操る話、ちょうどRasberryPiを買ったので耳寄り情報が多かった。とりあえずpyserialは入れとけと。
あとDjangoのデバッグの話は、django-debug-toolbarなど興味深かった。これって他のフレームワークにも移植されてて、Flask版やBottle版もあるみたい。そういえばBottleはwerkzeugで動かすこともできたような。
PythonでハードウェアをWebAPIにした話
- 北神雄太さん @nonNoise
- 所属:ArtifactNoise
- 職業:発明家
- 主な開発:Elpis Framework
- スライド
気になってる話題
- Tessel
- JavaScript, Nodeが動くらしい
- Arduino YUN (アードゥイーノ ヤン)
- Linuxが乗ってる
- GALAXY Gear
- Nymi
ハードウェア界隈の話
- Arduinoの進化
- RaspberryPiなどのカード型PCの登場
- RaspberryPiのPiはPythonのパイらしい
- PyGameが標準で入っている!
- Linuxなら標準で入っているので、カード型PCでPythonを動かし、特殊なハードウェアをコントロールする新しいムーブメント
Pythonでハードウェアを扱う方法
- Pyserialを使う。簡単
- USBが刺さった時にどっちのポートが刺さったかわからない
- USB Serial変換チップ
- USBがttyとして認識される!
- USBのドライバを書かなくてすむ
- マザーボードのIOを直接操作できる
ハードウェアとのやりとり
- 基本的にはコマンド方式がほとんど
- 1(前へ進む), 2(後ろへ進む)
ハードウェアをWebAPIにする
(メモあんまり残ってない)
ser.getline()
Django最速デバッグ指南
- @hirokiky さん
- スライド
django-pdb
- -pm
- Exception出たらデバッガが起動する
django-devserver
- SQLのクエリのログ
- リクエストの情報
- プロファイリング情報
などをコンソールに出力。
django-debugtoolbarはテンプレートを使っていないと表示されない。APIだとデバッグ情報は見れない。あとJSが走るのでJSゴリゴリ書いているとエラーになる可能性がある。
runserverwerkzeug
- Flaskの人が作っているWSGI実装
- ブラウザ上でインタラクティブなデバッガーが使える
logging
- logger.error(Invalid code: %s%azunyan)
- logger.error(Invalid code: %s,miotan)
2.が正しい。理由は2.で書いておくとログ集約ができるから。
重要な点
- 正しく使う
- ログレベルの認識を一致させる
- ログの頻度の統一
debug,info,warning(warn),error,critical(crit)
- debug
- 開発時のみ出力
- info
- ファイル出力
- warning
- 機能は動作してるけど何か間違っている
- 処理は継続できるけど何かがおかしい
- バリデーションエラーぐらいの認識
- error
- 500エラー
- バッチが落ちるレベル
- critical
- 使わない
その他開発・運用で使っているツール
- PyCharm: Python向けIDE(IntelliJ)
- Sentry: ログ収集プラットフォーム
- ログを集約してメールで通知とか
まとめ
- デバッグには何が起こっているのかを理解するのが大事
- ツールを正しく使えばデバッグ時の負荷を減らせる