読者です 読者をやめる 読者になる 読者になる

heki1224の適当な日記

技術知識を忘れないように書き留めておくブログ

PyCon APAC 2013 - Day 2 参加メモ

1日目の参加メモは以下にあります。
PyCon APAC 2013 - Day 1 参加メモ - heki1224の適当な日記

写真撮影

http://apac-2013.pycon.jp/ja/
集合写真中央右端の方にいます。

Keynote

Pythonおそいんだけど?
 →CPUそんなに使ってないでしょ?
  →原因はIOとかメモリだって。
 →もしCPU使い切ってても
  →CythonとかPyPy使えばいいじゃん
 →CPU使うところはC言語使えばいいじゃんよ。
・マルティスレッド対応してないんだけど?
 →pythonは並列処理も並行処理も対応してるよー
・動的型付けよくないと思うんだけど?
 →Duck typingのお作法を身につけないとだめだよ
  Discipline and the zen of duck typing(是非よめ!)
  →Duck typingはインターフェース指向と同じだと思うよー  
type()関数とか、isinstance()とか避けようね
 →型エラーはコンパイルで出して欲しいんだけど
  →それおかしくね?
   →チェックしてくれる様々なツールがあるんだから、それ使おうぜ
  →名前のエラーは大体2.5%くらい(Dropboxでは)
 →テスト書け
  →自動で動かせ
   dropboxだと1515くらいある

PofEAA and SQLAlchemy

 Engine
 DataObject
 Session

PofEAA本は読んでおくといいよー

・SQLAlchemyはPofEAA実装をしてます
(振る舞い
・Unit of Work
 domain logicとentity logicを分離する
 ・Object states
   transient
   pending
   persistent
   detached
    expire
 scoped_session(普通はこっちを使う)
  threadidをスコープとする
   request単位でスコープとすることもできるよ

・Identity map

・Lazy load
1:nのn側が呼びされた時に初めてSELECTされる。

(構造

(データソースアーキテクチャパターン
 table data gateway
 row data gateway
 active record
  row data gateway with domain logic
 data mapper

(講演者の考え
table data gatewayは複雑なSQLがあるなら採用する
active recordが悪者扱いされるのは
 いいテーブル設計といいクラス設計は別物
 Embedded Valueを使うと解消できるものも多い
 table data gatewayとactive recordを組み合わせると良いと思うよ
 serviceレイヤ作ってみる
 バランスとしては
  Simple Active Record + Medium sized classes + Service

Webセキュアコーディングの基本

プレゼン資料参照

Pythonで、ハードウェアをWebAPIにする話

Pythonでハードウェアを使う方法
 pyserialを使った方法(おすすめ)
 RPi等のマザーボードのIOを直接操作する方法
・ハードウェアとのやり取り
 コマンド方式
 マザーボードのIOをON/OFFで制御する方法
・ハードウェアをWebAPIにする
 Flaskが楽。
 シリアルポートからreadlineが出来ればOK
・WebAPIで変わる世界