PyFes 2013.3 参加メモ #pyfes
午前: Riak ハンズオン
Riak ハンズオンに参加したと思っていたらいつの間にか Riak ハンズオンを手伝う側に回っていたでござる
教訓
- インターネットがまともに使えない、かつ全員がMac という特殊な環境だと AirDrop を使って必要なファイルをばらまくという技が使える。かなり限定的な条件ではあるが、便利
- ハンズオンで構築からやらせるのはリスク高過ぎと再確認
ハンズオンについては別途ブログを書くかもしれない
Go ( @ymotongpoo )
http://www.slideshare.net/ymotongpoo/20130316-go
- Go 言語の紹介
- 内容はいつも説明を聞いているのでほぼ知っていた。初めて説明聞いた人には面白い内容のはず
- プレゼンうまくなっててびっくり
Mock と patch ( @torufurukawa )
http://www.slideshare.net/torufurukawa/mock-and-patch
テストが難しいメソッド
例: urlopen の結果は不確定なのに、その結果に依存するメソッド
- 戻り値が不確定
- 乱数
- 時刻
- セットアップがだるい
- DB
- Web API
だから、テスト対象の外側を入出力として扱う
mock モジュール
- 3.2 以前は PyPI
- 3.3 標準ライブラリ unittest.mock
mock の 使い方
- 依存先オブジェクトを入れ替える
- 例: urlopen を mock に入れ替える
- with patch で入れ替える
with patch('urllib.request.urlopen') as m:
...
... from urllib.request.urlopen ...
これが m になる
- @patch で入れ替える
- with はインデントが深くなるのであまり好きじゃない
@patch('urllib.request.urlopen')
- call_count で呼び出し回数を確認
assert m.call_count == 1
- call_args で引数を確認
- 依存先の挙動を定義する
- m.return_value = 999
- 返り値が 999 になる。
- m.return_value.meth.return_value = 1
- m().meth()
- 複雑な戻り値は side_effect
- m.return_value = 999
def f(x, y): ...
m.side_effect = f
例外も side_effect に指定可能
MS Surface でゲームを作った話 ( @tokoroten )
巷で話題の Surface ではない本物の Surface
静電容量式はオワコン
API は C# なので pygame からアクセスする場合はソケット通信で入力メソッド部分を置き換えれば既存のゲームを移植可能
Introduction of Leap Motion (@hagino3000 )
http://www.slideshare.net/hagino_3000/introduction-of-leap-motion
手の認識に特化した小型モーションキャプチャデバイス
机の上にちょこんと置いて手をかざして使うことを想定している
- センサー: 赤外線センサー
- 接続: USBインタフェース
- 高分解能(0.01mm), 速い(> 60 FPS), 安い
- Pre Order
- < $90
- 5/13 以降順次発送
- 開発者登録
- 一個無料で送ってくれる
- 製品版と一部異なる
- 起動に開発者IDとパスワードが必要
- 作ったアプリの勝手配布はNG
- ユースケース
- 今はゲームぐらい
- まだ何に使うのか思いつかない
Tinkerer ( @r_rudi )
Sphinx を利用したブログ作成ツール
tinker コマンドを使う
更新のたびに全ファイル生成し直し
webpay ( @keikubo )
1時間で使えるクレカ決済
USでは決済市場が白熱している
日本の決済システムは問題がいっぱい
だから日本で開発者向けの決済システムを作った。それが webpay
ライブマインドマッピング ( @sawonya )
@3_and_planet による身の上話をマインドマップ化
2人目の人は名前がわからなかった cobit の話
@wozozo による身の上話をマインドマップ化
WebMachine ( @voluntas )
https://gist.github.com/voluntas/f99838001efced196fc0
- Webmachine
- Basho 製 REST ツールキット
- Erlang 専用?
- 「考え方」なのでどんな言語でもOK
Blender ( @lab1092 )
インターネットの経済学 ( @JHarrison )
Webサービスってどれほどの価値があるのか?
Fabric ( @drillbits )
https://speakerdeck.com/drillbits/fabric-python-developers-festa-2013-dot-03-number-pyfes
- 環境はたくさん作らなきゃいけない
- 開発、本番、ステージング、ステージング2、ステージング3、...
- pip install fab
- オプションでユーザ名、ホスト、SSH鍵などを指定可能
- env にオプションを指定することも可能
Opsworks & Chef ( @tk0miya )
http://www.slideshare.net/TakeshiKomiya/ops-works-chef
- why chef
- 冪等性
- 手続き型ツール(Capistrano, Fabric)は順序が重要(差分更新)
- community cookbooks
- 大抵のツール向けの設定が集約
- 再利用の精神
- 理想はほとんど書かない
- 冪等性
- chef の種類
- chef-server
- 大規模用、クライアントサーバ型
- chef-solo
- 小規模運用、手動実行
- 20台くらいまでなら chef-solo で十分
- ホスティング
- 有料プラン
- chef-server
chef-solo
- vagrant
- virtualbox の CLI ラッパー
- AWS、VMWare Fusion にも対応
- VMの作成/起動/削除が簡単になる
- librarian
- cookbook 管理ツール
- yum や apt みたいなもん
- 依存関係解決 Java 入れたりとか
- Chef 使うなら最初に覚えたい
- 類似ツール: Berkshelf
- どっち使ってもいい
- attributes を書く
- json 形式で書いていく
- 実行する
- コマンド一発
tips
capistrano 経由で実行すると便利
罠
OpsWorks
- AWS のアプリ管理ツール
- 環境構築
- アプリのデプロイ
- インスタンスの起動/終了の管理
- スケーリング
- スケジューリング
- まだバグが残ってる
- This is oops works
団長 (団長)
メモはとったけど公開しない
moriyoshi さん
AnyPack Builder
素晴らしい