Hatena::ブログ(Diary)

断章10100

2011/08/27

PyCon JP 2011 に参加してきました。

| 01:15 | PyCon JP 2011 に参加してきました。を含むブックマーク PyCon JP 2011 に参加してきました。のブックマークコメント

参加メモを残します。

間違いがございましたら、ご指摘ください。

基調講演 @

遠くは広島からこられた方がいました。いやー、遠いですね。

生 Tarek 。もちろん英語!

Package

聴きやすい、はっきりとした英語でいいね!

ななめ聞きしかできないけれど、資料を見つつ聞きました。

パッケージングは大変!

  • 依存関係はどう定義するか。
  • setup.py の役割は何か?
  • 何がインストールされるか?
  • バージョンをどうつけるか?
  • データファイルをどう定義するか?
依存関係はどう定義するか。

依存性の段階でもいろいろあるよ!

モジュール、パッケージ、システム。

あと、Windowsにどう入れるの?

Distutils Setuptools OS-Packaging

大変だけど、PEP 345 Metadata v1.2 で解決できる。

setup.py の役割は何か?

色々するけど、いろいろ書きすぎるし、

Python コードだし、管理が大変。

これを setup.cfg で簡素化していくらしい。

ini 形式。no python needed here! w らしい。

pytohn 3.3 で導入される pysetup でsetup.cfg を

create。sphinx-quickstart と同じ感じで入力していく。

これで解決。

何がインストールされるか?

Distutils、easy_install、Pip の3種類のインストールされた

パッケージ管理フォーマットがある。

ここでも PEP。PEP 376 が参考になる。

インストールされたパッケージを管理するためのPEP。

動画を見せるのはいいね。参考にします。>> PHPCon JP 2011

pysetup を使って管理する。

バージョンをどうつけるか?

tip で書かれたバージョンとか、長すぎる名前とか

過去に実際PyPIで出された。ひどい!

これも PEP 386 Standard version scheme

対策しよう。

1.2.dev<1.2<1.2.2

などのバージョン管理にしよう。

データファイルをどう定義するか?

VIDEO IMAGE ISO などどこにあるか、、、

これはsysconfig.cfg で対処しよう。

Roadmap

Pytohn 3.3 から上記の機能を所有した distutils2 の

利用ができるようになるよ!

今風の 5 Tips

Tips

1. PEP 386 バージョン体型を使う

2. できるだけひとまとめにsetup.pyを作る

3. インストーラの利用を前提としない

4. PyPIに不安定版をリリースしない

5. データファイルに気を付ける

Python 3

3.2まで徐々にバージョンが上がってきた。

パッケージ数は最近やっと500を超えたあたりで

もっと多くのパッケージのバージョンアップが求められる。

だけど、Numpy、SQLAlchemyなどが使える。

でもやはり、Django、Pyramidなどがいまだ移行できず、困った。

感想

aptと似た感じと思ったので、何か参考にしたかどうか

尋ねたかった。

C APIへの誘い!@

構造体と関数ポインターがわかる人向け。

C使っていないから難しかった。

C API

メモリ操作、文字列操作などを隠蔽している。

C からPython が使えるし、逆もできる。

C API の読み方、使い方

Py[型名]_[処理名]でCの関数名を書く。

ヘッダとライブラリを読みこめばコンパイルできる。

PyNumber_Add は+が対象の処理をいろいろしていて複雑。

初期化->処理->終了処理

の流れで記載する。

Pythonから使う

静的に組み込むことができる。

動的に読み込むことができる。

実際にCで何か作ってないので、わからない。

クラスも作れます。

modules/xxsubmodule.c というサンプルがあるはず。

CによるOOP

関数ポインターとTypeDefで書く。

Pythonエンジニアの作り方 @

blockdiagの人。#世界の小宮

Pythonに出会ってからの体験談

16-29は他の言語使っていて、ラスト2年Python使った。

あるあるってな感じの人になっている。

新しいツールや手法を取り入れず、ツール作っても

他に似たツールがあったりでリリースぜず、何も作らなかったらしい。

お小遣い帳など。

偶然、同僚がPythonistaだった。

最初は普通の【シンプルかつストイック】な言語だと感じたらしい。

Visioを使っていたが、ファイルの編集に飽き飽きし、blockdiag 作ってしまった。

  • 決心

作る。完璧にしない(80%を目指す)。ただ、ユニットテスト、DVCSを使うとした。

Python使う。

ソフトウェアのリリースを通しての経験
  • blockdiag

パーサ->レイアウトエンジン->画像出力

作る中で色々と勉強になった。

PyPIにてリリースしても全然使ってもらえなかった。

自分がどう変わったのか

でも素晴らしツールだから、公開しよう、発表してこうと思った。

Demoを入れると伝わるよ!!

after Python

Python 勉強、開発の違い 開発者と利用者の関係

アウトプットとインプットの相互作用 コミュニティの力

  • 開発

結局勉強になるが、実際に体験できた。

まとめ
  • 何かを作りましょう
  • ブログ、発表などでアウトプットしましょう
  • 楽しもう!

ブーイングなんてされない。

発表では顔を上げてもらうようにしよう。

感想

何かパッケージなんでもいいので、パッチ当ててみたい。

PHPCon の発表が ls コマンドの説明レベルなので困った。

お昼

@

@

@

と知り合った!

@氏に再来週の

スタートSphinxの助言をいただけた!

Guidoへの5つの質問

  • 多言語化について。

英語のみ極端な多言語化法やだと、PEP 3131 をみて。

ユニコード使えるよ。

  • Pythonを追加しし後悔した機能。

reduce()

  • Python3への置換えで重要な点

ライブラリの書き換え

  • Python以外の進めたいg年後

C言語

生物や、神経系ソーシャルグラフが影響を与えるのでは?

http://goo.gl/jtnBK

Pythonで創るソーシャルゲームの未来 @

GUMI CTO horiuci

ソーシャルゲーム業界の現状、ポジション

現状は右肩上がりらしい。来季は3000億円の市場

Zyngaの規模だと、3兆円ぐらいの株価総額になりそう。

現状は、ゲームの飽和状態。

Pythonの利用状況

いろいろPythonとかsouth、capistranoRedmineを使っている。

AWSに環境を作っています。

世界へ

世界No.1を目指す。

すなわち、FacebookスマホNo.1を目指す。

そのためには、継続的にヒットを出す。

ノウハウの構築共有、ユーザ獲得を目指す。

QA
  • なぜPythonを選んだのか

偶然。

Pythonが好きなエンジニアがいた。

  • 苦労した点、良かった点

言語的に意識が高いエンジニアが集まりやすい。

バージョンによる差が少ないので、習得が早い。

Tuning Python Code @

ボトルネックを探す

DiskIO Network Latency PacketLoss TTL

ボトルネックになりやすいよね。

探すには、top dstat strace などを使って探しましょう。

strace -c python -c などで

システムコール何回呼ばれたか探せます。

CPUボトルネックだったら

deterministic: 関数に入った時と出たときの時間がわかる

statstical: プログラムのどこを今実行しているのかわかる

deterministicはバイナリが必要だったり、遅くなったりする。

stasticalは十分な時間をとらないと行けないし、stdlibにはない。

cputime(計算した時間) wallclocktime(実時間) を測れる。

sigperf(稲田さんが作成されたもの)を使うと

実行中の状態を取得できる。

早いコードを書く

まずは、より良いデータ構造とアルゴリズムを選択すること。

その上高速化する。

遅い理由としては、下記のPython由来の問題がある。

バイナリーレベルでは、特にループの中で、

グローバル変数関数を呼ばないようにする。

ローカル変数に入れるのもよい。

できるだけ、Cで書かれているものを利用する。

循環参照も削除する。

Pythonを高速化する

Cythonを利用すると、PythonからCのコードへ

移すことができる。

9倍まで高速化できた。

PyPyを使うと、JITが聞くので早くなる。

4倍に早くなる。

並列化も使える。

感想

関数変数をfor内のローカル変数に割り当てると

早いと聞いたが、自動でバイナリ作成時に最適化されてないのかな

と思いました。

その後、直接発表者に上記質問をぶつけてみたところ、

Python動的言語で、実行時までどの関数が呼ばれるか

わからないから無理、とのことでした。

誰得?俺得。

Pythonで働くということ

各社各社で違うんだなあと思った。

GUMIはいけいけの体育会系だし、

BeProudは職人気質

Nexediは独自路線。

どの会社も面白そうですね。

Closing

皆様お疲れ様でした。

エキスパートPythonプログラミング

参加した方で、この本を高評価している人が多かった。

私もこの本が Python 界のスタンダードになればいいなと思います。