万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

Python Developers Festa 2012.03 #pyfes

http://www.zusaar.com/event/158001
参考:http://d.hatena.ne.jp/Voluntas/20111015/1318682867
◯Pyfes行ってきた
場所:Oracle(銀座線 外苑前 4a,4d出口)
建物のオラクル青山センター 13F S3,4,5,6
※入館書を無くすとOracle社員になれるのは都市伝説らしい
※Festaはイタリア語
※昼は12:00-13:00

Pythonのテスト
tox, unittest2, nose, mock, pytest, coverage

・Python3.3のありか
http://python.org/download/releases/3.3.0/

→~/pyfes_studyに仮想環境いれてみた

/opt/python-3.2.2/bin/virtualenv --python=/usr/local/bin/python3.3 ~/pyfes_study

・Python2系
/opt/local/bin/python
・Python3系
/usr/local/bin/python

Python Developers Festa 2012.03 Mercurial Hands-on
URL:https://bitbucket.org/troter/pyfes-2012.03-mercurial-handson/wiki/Home


・環境つくった

/opt/python-3.2.2/bin/virtualenv --python=/usr/bin/python2.7 ~/mercurial_study

・ダウンロード
→pipではダメだった2.1.1でのバグ??

$ pip install mercurial
Downloading/unpacking mercurial
  Downloading mercurial-2.1.1.tar.gz (3.3Mb): 3.3Mb downloaded
  Running setup.py egg_info for package mercurial
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
      File "/Users/shinriyo/mercurial_study/build/mercurial/setup.py", line 457, in <module>
        version = version.splitlines()[0]
    AttributeError: 'list' object has no attribute 'splitlines'
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 14, in <module>

  File "/Users/shinriyo/mercurial_study/build/mercurial/setup.py", line 457, in <module>

    version = version.splitlines()[0]

AttributeError: 'list' object has no attribute 'splitlines'

・バイナリからmpkgのコンパイル済みのを落とす
XCodeのバージョンとかで失敗らしいMac限定バグ・・
URL:http://mercurial.selenic.com/
 からバイナリを落とす

・バージョン見る
※ハイフンは要らない※コマンドになってる

$ hg version
Mercurial - 分散構成管理ツール(バージョン 2.1.1+20120301)

・メモ
藤原さんのBlog
URL: http://www.lares.dti.ne.jp/~foozy/fujiguruma/scm/mercurial.html
自分の親は第1親
マージ対象は第2親
gitはwindowsには入らない
mercurialTortoise互換
pull requestは議論できない

5つだけログ出力

hg log --limit 5


◯LT
@vlantasさん
・Riak カサンドラみたいな Erlang
GithubErlang
http://www.slideshare.net/torufurukawa/python-33
Python 3.2

>>> 'ほげ'
'ほげ

Python 3.3

'ほげ' == u'ほげ'

サロゲートペアも1文字

>>> a = '\U0001F34C'
>>> len(a)
1

・distutils

デーモンプロセスのユーティリティ

・vertualenvっぽいの

python3 -m venv

@tokorotenさん
・Fuzzing
ファジングとは、ソフトウェアのバグや脆弱性を検証するためのテスト手法の一種
→レベルを上げて物理で殴る
 計算力を上げて、テストで殴る

並列化によって高速可

・ダムファジング
 ランダムなデータ入力
・ミューテーションファジング
 正常なデータを元に突然変異させて入力
 →Microsoft などでやってる
・スマートファジング
 プロトコルを元にしてデータを生成
 →1.XMLとして正しいか?2.中身として正しいか?

・GA Fuzzing

・reのパーサ
正規表現をパースするstr_parseがある。

◯まとめ
・Fuzzingランダムデータにヨル攻撃
・バグがない事の保証
正規表現から
http://www.slideshare.net/TokorotenNakayama/fuzzing-pyfes

@atusuoishimotoさん
ANS-prog (アンスプログ
http://answer.pythonpath.jp

◯Python3どうするよ?
・既存のアプリはいつPython3に移植する?
 リリースサイクル
 python2.6が2013年にサポート打ち切る

・いつからPython3に切り替える?
・Python3てなに勉強すればいい?

UbuntuPythonサポート
・Ubuntu12.04 LTS → Python2.7(2.6は削除されたので注意)

・Ubuntu14.04 LTS → Python3.x


Windows環境 Windows8サポート?
 Windows8サポート???
 インストラが動かなくなる可能性
 Python2.7の公式コンパイラVisual C++2008が入手不可能になる可能性
 Python本体をビルドできなくなる
 拡張モジュールのビルドも困難

主要パッケージの移行状況
・未対応
 Django
 PIL
 Twisted

PyPIダウンロードトップ50のうち、30くらいはPython3対応済み
Django等の大きめのプロジェクトも以降が始まりそう
そろそろPython2.4,2.5がサポート外になってきた

アプリの寿命を考える
Python3スライドシェア
http://www.slideshare.net/aodag/bpstudy54-python3

@natsu_bmさん
塹壕戦から揚陸艇強襲上陸まで:生き残るためのテスト戦略とは(仮)

訊くのもいいが、最初から知っておけばいい
初期段階からテスト参加者が参加
→伝言ゲームが避けられる

テスト≠品質

@laniusさん
Koshinukeによる最高のGit体験

・Koshinukeとは?
Git Wenフロントエンド(Githubなど)
社内向け
オープンソース
タスク管理機能を搭載予定
アプリケーションライフサイクル〜〜

その他かっこいい
Gitblit
http://gitblit.com/

・koshinuke
・koshinuke.java
・koshinuke.py

・blame
どの行が更新したかどうか?

Chrome Extention
Octoboard

@shimizukawaさん
運用コストが半分になった!Pythonパッケージの極意
PYTHON PACKAGING

pipはDistributeがないと動かない

distutils2→distutils2→packaging ←pipが利用

・PEP306
バージョン管理

◯pysetupの使い方
3.3
・従来

python setup.py install

・pysetupの使い方

pysetup run istall_dis

Graphのコマンド
vertualenvは対応していない?

pysetup graph blockdiag

Distutils2のドキュメントは放置されてるのでpython3.3のpackagingのドキュメントを読む

・Distutils2/packaging

出版社が出版社を運営するようなもの

@kuenishiさん
http://dl.dropbox.com/u/673631/pyfes2012/_build/html/index.html
できる!Zookeeper
ZOO keeper 分散調停システム
GFS
BigTable
Chubby
Hadoop
HBase
ZooKeeper

・HBase使ってる人はZookeeper使ってる
・ざっくりいうと
ものすごく冗長化されたKVS
大抵のことには動じないKVS
死活監視も出来ちゃうKVS
故障もちろんOK
ネットワーク分断

マスタ調達他、なんかの切り替え
分散キュー
小さなデータ格納庫
分散ロック、分散トランザクション

NFSみたいな感じ

・Semantics
ふつうのファイルシステム

・インストールコマンド

sudo pip install zc-zookeeper-static

※ソースインストールはおすすめしない antでPythonをビルドするらしいので

NICの故障の検知

・Jubatus
リアルタイム機械学習
C++を使った
stormを機械学習を足した感じ

@takabow
佐藤

Oracle Coherence
・分散データグリッド(×分散キャッシュ)
Pure Java
1つのjarファイルで完結
サーバーアプリとCoherence API群からなる
key-value pairのObjectをMapに格納
KVS
クラスタを組んでるのか?

Coherenceの内部構造概略
キャッシュの格納方法は具体的にどこか?
backing map
Javaなのでheapかな?

・Cash Service
Distributed Cache Service(分散キャッシュ)

同じデータにレプリケーションする
heapに格納するデータをRDB

分散キャッシュがメモリにあふれる
backスキーマを定義される

分散KVS
Coherence Serviceが

3つのノードのうち1つが切れても他のノードへ自動再配布

cache.put("key", "value");
cache(i)l

ヒープが格納されているのが1台いれば大丈夫。

・TCMP
TCPはおせっかいなので、UDPを使った上独自で

・POF(Portable Format Object)
Coherence独自のシリアライザ

・Quety
転送量&転送回数の削減
データクセスにput/getばかりじゃ毎回クライアントにデータが飛んでくるのでI/Oムダ
処理手順を投げて〜

・ネットワーク関連の障害
CAPで言うところの「一貫性」+「可読性」

・プロセスダウンの検知をするには
TCP Ring

・サーバー(OS)のダウンを検知するには
IM Monitor
JavaのisReachable

・一番避けたいクラスターの分断
正常値

障害発生時

@yssk22
・果てしないあのCloudFoundryの彼方へ私をつれていって

Cloud Foundry
Cloud Foundry ファイルングの名前
実体はない
Rubyのgemしかないのもある

好きな言語やフレームワークが使える
Java/Ruby/Perl/PHP/Python/Node.js/C#VB(ASP/NET)/Erlang/Smalltalk

スケールアウト

vmc apps

・ベンダー
Active State(Windows用のActive Perl配布してたとこ)
VMware
TIear 3(Eaarsの会社)
FeedHenty
HP
Dell

・一言で
カーネルのPaaSサービス

オープンソースだがオープンでない
メーリングリストでやってるわけではない

・mongoDBつかえる?
大量のデータをいれてもだめ

デプロイメントのツールでいい。

・20インスタンスまでつかえる

AWS、GAE、Herokuみたいな

@takufukushima
ネットワーク仮想化プラットフォームMidoNetについて

ネットワーク仮想化とは?
マルチデバイス
ネットワークサービスの普及
動画、音楽サービス

データセンタ集約
ラックにまとめて管理
スケールアウト
 仮想化する場合も
ネットワークはツリー型リポジトリ

@hiroki_niinuma
web魚拓
「忘れられる権利」

落ちないサービス Note
社民党の悪いことを載せる
中越地震2500


Tornadoの洋書がAmazon