万年素人からHackerへの道

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

Python Developers Festa 2012.11

URL: http://connpass.com/event/952/

LINEはHTTPを利用してログイン処理や、スタンプ情報、友達の状態・通知情報の取得などをしている。
TCPではなく、UDPが音声や動画配信に使用される。
SEGA コイン落としが凄いらしい

●mopemopeさんのmeinheld
https://github.com/mopemope/meinheld

Pythonデザインパターン
http://code.activestate.com/recipes/langs/python/

●最速最強Webサーバーアーキテクチャ
http://qiita.com/items/d9db1ed5493c2d8e1c69

◯ 定期プレゼン
Python 3.3 アップデート
@torufurukawa

yield from 構文
外側から先導?で引数に入れてコルーチンのように出来る。

u復活
2.xから移行しやすい

  • X faulthandler

もっと下のレイヤーのエラーが出る

import lzma

unittest.mockで依存性も

venvモジュール

$python3.3 -m venv tongpoo
$cd tongpoo
$ls
bin incliude lib pyvenv.cfg
$source bin/active
$switch python


What’s New In Python 3.3
http://docs.python.org/3/whatsnew/3.3.html

Pythonを取り巻く開発環境(PyCon JP 2012資料 #pyconjp)
http://ymotongpoo.hatenablog.com/entry/2012/09/16/090842

What's New In Python 3.3をざっと眺める
http://www.slideshare.net/likr/whats-new-in-python-33

◯Impala の話
@shiumachi Cloudera
http://www.cloudera.co.jp/blog/cloudera-impala-real-time-queries-in-apache-hadoop-for-real.html

SlideShareのURL:http://www.slideshare.net/shiumachi/impala-15324018

Impalaとは?
低レイテンシ・分析特化型クエリ実行基盤

分析特化型クエリ実行基盤。
Google Dremel、Google F1などにインスパイアされて開発された。
中の人がF1エンジニア。データサイエンティストが使うことを想定している。若干R&D向け。

なぜ開発された?
Hadoopだと高レイテンシですぐに結果がほしいのに時間かかる。あとHiveみたいにクエリ言語的なものでやりたい。

MapReduce処理
Apache MapReduceとは?Hadoopのコアコンポーネントの一つ。バッチ処理を分散して行う。耐障害性をもったものをわりかし簡単に作れる。

プログラミング言語のMapとReduceのように、これらを組み合わせてデータ処理に応用したもの

Shuffle処理

Hadoop Hive

http://37signals.com/

低レイテンシでできるが、機能は少ない
問題点:簡単になったとはいえ、やはり大変。

データを並列にMapperに流しこむ。
MapperからReducerに対して、データ集約を行う(key一致したもので)。
そのReducerに対して処理を行うと分散できる。

なので、上位がいくつか出てきた。HivemOozie、Pig、Mahoutなど。

アーキテクチャはHiveQLと同じ(一部制限はあるけど)。
Hiveは中央の実行サーバで実行計画作ってたが、Impalaはスレーブが実行計画を作成、さらにスレーブが実行させる。
あとローカルを読んだりもできるので速い。

HiveはUDFが使えるMRを使うので障害耐性がある
現在はデータ菜園テストが使っている

・"NOT FREE"
@everes

TOLOT
http://tolot.com/
A6サイズ 64ページの冊子を500円で作れるサービス
「写真を印刷するならIndigoが標準」
コンピュータで変換処理かけてプリンタに持っていくのが時間かかる。
ただIndigoはここらへんを分散できたりする。
1台3A?の印刷機

アーキテクトだが、工場認可の書類を作った。

FREE + PREMIUM = FREEMIUM

TOLOTが搭載するのは基本機能だけ

PHPのテストライブラリtestman
https://github.com/tokushima/testman

Success
Fail

PHPUnitが使いづらいから自分で作った。
__setup__
__teardown__



Python in WebKit Land

http://steps.dodgson.org/

WebKitではBuildBotとTracChromiumではRietveld、GYP、App Engineを使っている。

※ Buildbot CIツール

Chromium
Ritveld
GYP(first party)
App Engine

Bots
Bugzilla

http://www.ohloh.net/p/WebKit

commiters.py

suggest-reviewers:レビュワーを提案してくれる。

webkit-patchコマンド

「生JavaScript使わず聖杯を見つけろ」
CoffeeScript, RequireJS, Backbone.js
 
・ae35 + @ian
djangodash
48時間でサービス作ろう

MR.DUNG


・最速最強Webサーバーアーキテクチャ
http://qiita.com/items/d9db1ed5493c2d8e1c69
meinheld
まいんはると

Luaモジュール
nginxとmemcachedだけが速かった。

meinheldはC言語

gunicornはnginxには勝てない
コールバックのややこしさを解消するためにgreenlet使う

OSの実際のTCPスタックの動作を考慮に入れて最適化する。
OSは accept() を呼ばなくても backlog (listen の引数に指定した数) までは自動でTCPの接続を開始しています。

OSの実際のTCPスタックの動作を考慮に入れて最適化する。

writableにならないと〜
など
nginxよりはやくなった。

thundering hard 問題
ネットワークプログラミングでは常識
同時にアクセプトするが、実際に1プロセスだけしかできない。

イベントドリブンプログラミングでpreforkモデルだとだとこの問題が発生する。

・takabow