Pull to refresh

PyCon 2011. Краткое изложение докладов

Reading time 26 min
Views 4.8K
Известно, что с 11 по 13 марта в Атланте (Джорджия) проходила конференция разработчиков PyCon 2011.

Ниже в статье будет приведно краткое изложение большей части докладов со ссылками на видео (англ.). Для удобства ознакомления доклады разбиты по категориям.

Тематика докладов была довольно обширной, поэтому данная статья может оказаться полезной не только питонистам, но и всем остальным ленивым и любознательным.


Общее


Writing great documentation
Лекция Джейкоба Каплан-Мосса.
Не о том, зачем нужна документация. О тех, кто вдохновился документацией в духе Django. О культуре документирования. Почему люди читают документацию. Документация как средство коммуникации — о документировании одного и того же с разных сторон, чтобы расширить коэффициент полезности. Почему документацию должен писать разработчик. Пара слов о разработке по документации — DDD. О типах документации: руководства, тематические гиды, справочники, часто задаваемые вопросы. О вспомогательных средствах документирования. Ответы на вопросы.

Diversity in Tech: Improving our Toolset
Призыв Дженнифер Лич.
О непохожести в общем. Почему в технологии мало женщин: об ожиданиях и [само]внушении на примере женщин и пива. К чему ведет непохожесть в целом (с плавным переходом на женщин в мужском коллективе). Три правила снисходительности к непохожим. В общем, доклад о терпимости к таким как докладчица. Ответы на вопросы.

Getting the job: the do's and don'ts of landing a Python job
Наставления Брайна Морони.
О себе. Пример мировоззрения HR с упоминанием Microsoft и PHP. Набор правил для кандидата: 1) соблюдайте стиль; 2) следуйте указаниям работодателя по написанию, уделите внимание содержанию письма со вложенным резюме; 3) не надоедайте; 4) следите за данными о вас в Интернете; 5) поменьше о себе; 6) приходите приготовленным; 7) воспользуйтесь возможностью обратной связи. Пример используемой формы оценки кандидата. Чего ещё хотят HR. Ответы на вопросы.

Documentation Driven Development
Доклад Кори Урдта.
О том, как появился подход «разработка по документации» и о том, чем он хорош. Притча об инженере из Майкрософт. Почему разработчики не любят документировать код. Чем может помочь Sphinx (с примерами конфигурации). Пара примеров РпД и логики мышления в этом ключе. Ответы на вопросы.

Best Practices for Impossible Deadlines
Доклад Кристофера Гроскопфа.
О машинерии, которая может быть задействована в ситуациях с непредсказуемыми дедлайнами, на примере Чикаго Трибьюн. Ответы на вопросы аудитории.

Going Full Python — Threadless
Доклад Криса МакЭвойя.
Про футболки на PyCon, из под которых попы видно. Кто такие Threadless, чем занимаются и где находятся. О том, при чём там Python и Django, и почему PHP не причём. Чем PHP похож на эпитифное фиговое дерево.

Python.MiroCommunity.org + UniversalSubtitles.org
Мини-презентация Вильяма Кан-Грина и Карла Карстена.
Что такое MiroCommunity и Python.MiroCommunity.org. Что такое UniversalSubtitles и как оно работает.

Наука и исследования


Linguistics of Twitter
Доклад Майкла Хили.
О себе. О проблеме сложности лингвистического анализа, о региональных различиях в выборе слов, о распространении диалектов по США. Исторический контекст: вехи американского английского, вектор развития языка. О возможностях приведения разных диалектов к общей форме: 1) модуль enchant плюс модуль nltk; 2) замена из словаря по регулярным выражениям; 3) Байесовская вероятность с выборочным корпусом языка при помощи модуля nltk; 4) использование географического индекса модуля simplegeo. О составлении выборочного корпуса языка, используя simplegeo и данные из твитов. Ответы на вопросы.

Greasing the Wheels of Exploration with Python
Доклад Майкла Симса.
О себе. О роли роботов в исследованиях других планет. О роверах, исследующих Марс. Исследования кратеров, создание геологических и топологических карт. Как Python используется для генерирования и отсылки команд роверам, обеспечивая их автономность. Почему используется Python. О программах от NASA. Ответы на вопросы.

Running ultra large telescopes in Python
Доклад Мациежа Фиалковского.
О различных телескопах и о том для чего они используются. Примеры получения данных с телескопов и управлениями ими при помощи консоли IPython. Пример кода с использованием twisted. Ответы на вопросы: о производительности Pyhton для данной задачи, о переходе с Java на Python, о спутниках и овцах, можно ли управлять обычной спутниковой антенной.

How to kill a patent with Python
Доклад Ван Линдберга.
О том, как нелегко порой отыскать нужный патент. Как автор зря парсил сайт, содержащий данные по зарегистрированным в США патентам для создания БД, и как один из проектов Google облегчил ему жизнь. О задаче разделения патентов по категориям. Применение принципов обработки естественного языка для поиска данных, проблема отделения шума при определении релевантности данных. Применение экстратора терминов от Yahoo. Как векторы и графы помогли при разборе патентов. Ответы на вопросы.

Handling ridiculous amounts of data with probabilistic data structures
Доклад Си Тайтуса Брауна.
О себе и о ненависти к C++. Как росли мощности секвенирования. Сравнение проблем анализа большого количества данных в биологии и физике. О сегодняшних ограничениях в секвенировании и анализе данных. Почему облака не помогут. Краткое введение в метод дробовика. Пример алгоритма секвенирования на Python, и на что нужно обратить внимание при расчете последовательностей ДНК. О производительности описанного подхода и о качестве представленных графов. Мысли на будущее. Пример визуализации графа. Ответ на вопрос.

Обучение


Panel: Python in Schools: Teaching It and Teaching With It
Доклад Джоэля Захари Миллера, Марии Литвин, Джефри Элкнера, Вёрна Сидера и Байана Брамли.
Вступительное слово от Захари Миллера. Брамли: как строится процесс обучения; какие задачи решает преподавание информатики; почему Python; что изучают. Литвин: о себе; о решении преподавать математику со информатикой; почему Python; о курсе дискретной математики с информатикой и тренировке алгоритмического мышления на примере решения задачки о лестнице. Элкнер: о себе; о курсах информатики в Вирджинии. Сидер: о себе; о курсах информатики в Северо-Западной Индиане; почему Python. Ответы на вопросы, а также о том, почему учителя не любят Java.

Python and Robots: Teaching Programming in High School
Лекция Верна Сидера.
О себе. Почему дети не хотят учиться программированию — ошибки учителей: начать обучение с правил языка; злоупотребить абстракциями и деталями; дать скучное или отрешенное от жизни задание. О мини-роботах и о том, как они могут зажечь в детях интерес. Для управления роботами на старые таблетки поставили Debian. Примеры простых заданий (с решениями) по программированию роботов. Методика: как каждым последующим заданием стимулировать интерес к возможностям языка. Ещё задания: преодоление препятствий, управление камерой на роботе, управление динамиками. Узкие места предложенного курса: батарейки, «залипания» роботов при низком вольтаже; подготовка необходимой для занятий аппаратуры; сложность определения размера необходимого лекционного материала. Отзыв ученика. Ответы на вопросы, в том числе сколько стоят подобные роботы.

Сообщество


Python Software Foundation Chairman Address
Обращение Стива Холдена.
О питон-сообществе. О конференциях PyCon. О поддержке питон-проектов (в т.ч. конференций и программного обеспечения) от Python Software Foundation. Призыв в PSF.

Get new contributors (and diversity) through outreach
Доклад Ашиша Лароия.
О себе. О проблеме маленьких сообществ. Примеры подхода Fedora в формировании сообщества, подхода Rails. О полезности неформальных встреч. Что такое и хорошо и что такое плохо в формировании сообществ на примере сообществ Debian, Thunderbird. Как привлечь женщин в проект. Ответы на вопросы.

Montreal-Python — Lessons Learned from Bootstraping a Python Community
Доклад Янника Джинграса.
Как начиналась монреальская группа пользователей Python. Анализ существующих пользовательских групп. Всё началось с обычного e-mail. Подсказки для построения груп: 1) Задача организатора не просто собрать людей, но создать условия для их общения; 2) Блиц-доклады это самое то; 3) Выбор места собраний — важное дело; 4) Один в поле организации не воин; 5) Понадобятся деньги, а значит, спонсоры; 6) Экспериментировать нужно; 7) Держите связь с другими группами пользователей. Ответы на вопросы.

Бизнес


Serious Business: Python is not just for Engineering
Доклад Заха Штайндлера.
О постановке бизнес-стратегии во главу угла, о клёвости KPI и рисования различных графиков (визуализации), а также о том при помощи каких технических средств могут быть получены эти показатели и какие аспекты веб-проекта могут подвергаться анализу.

How to sell Python
Круглый стол.
Председательствует Дэниел Гринфилд. Представление участвующих: Титус Браун, Дэн Меш, Кристиан Энт, Фрэнк Уаэльс, Джейс Тёрк. Истории успеха: некоммерческие организации, государственные организации, мелкие и крупные организации, образовательные учреждения. Как они побороли страх, неуверенности и сомнения и почему используют Python, плюс ответы на выпады в стиле «ваш opensource дырявый» и разговор о том, на сколько легко перейти на Python, зная другой язык. О маркетинговых инструментах, которые могут помочь в продвижении. О стоимости разработки на Python (на примере сравнения с PHP, Java); как убедить заказчика, который диктует выбор языка реализации. О рынке работы.

Язык Python


The Python That Wasn't
Лекция Ларри Гастингса.
Об изменениях в языке — почему легко предложить, но трудно внести с базу, а также почему питон стабилен, плюс булыжник в сторону PHP. Что делать, если все-таки идея зудит и требует воплощения. Примеры невоплощенных идей: протокол заморозки (PEP 351), операторы матриц (PEP 211, PEP 225), вызываемый None (PEP 336), конструкция switch/case (PEP 275, PEP 3103) и о том, что люди отвергают свои же PEP, range как литерал (PEP 204), динамический доступ к атрибутам (без PEP). Кто ещё смелый?

Useful Namespaces: Context Managers and Decorators
Доклад Джека Дидериха.
Вспомним дзен. Типы пространств имён: 1) лексическое; 2) модульное/пакетное; 3) внутри-объектное/классовое; 4) «рабочее». О синтаксическом сахаре, в частности о декораторах, менеджерах контекста и их смеси. Примеры декорирования, использование functools.wraps. Декорирование классов, использование functools.total_ordering. Менеджеры контекста, «декораторы наоборот». О подменах и подставах (monkey patching), и снова о них с использованием декораторов и менеджеров контекста. Пример подмен: библиотека unicodenazi. Пример менеджера контекста с использованием contextlib.contextmanager. Как смешать декоратор с менеджером контекста. Ответы на вопросы.

An outsider's look at co-routines
Доклада Питера Портанте.
Ажиотаж вокруг сопрограмм: как выдержать 10000+ одновременных запросов, почему нити не вариант. Диаграммы результатов стресс-тестов Tornado, uWSGI, Gevent и почему Gevent оказался на коне. Определение сопрограмм по Кнуту. Сопрограммы в Python и их ограничения. Пакеты, предоставляющие реализации сопрограмм в противопоставление сопрограммам в Python. Про механизм работы Greenlet. Определения нитей. Абстрагирование нитей и как нити соотносятся с сопрограммами. О необходимости неблокирующего API. О движке событий libevent и обёртках над ним. Ответы на вопросы.

Porting to Python 3
Лекция Леннарта Регебро.
Вступление о продвижении Python. О выборе стратегии портирования: о поддержании кода для разных версий питона, о модели дистрибуции, о единой базе кода. Об утилите 2to3. Когда стоит начать портирование. Шаги портирования: подготовка (рекомендации по начальной обработке кода), тестирование (опционально), портирование (2to3 и 2to3 с Distribute). Часто встречающиеся проблемы, в том числе про байты, строки и юникод. Портирование без 2to3. О расширениях на C. О модуле six. О ресурсах по теме. Ответы на вопросы.

Status of Unicode in Python 3
Доклад Виктора Стиннера.
История юникода в Python. Юникод в Python 3. Данные не подлежащие декодированию и PEP 383, а также что такое суррогаты (surrogareescape). О конверсии байтовых строк в юникод и о новом API для суррогатов в Python 3.2. О конверсии машинерии import. Об аргументах командной строки. Об именах объектов в файловой системе. О не BMP символах. О кодировке исходного кода. Несколько слов о свободной книге «Programming with Unicode». О сложностях, возникавших при реализации поддержки юникода. Новые функции для юникода в модулях на C. Ответы на вопросы.

The Data Structures of Python
Доклад Алекса Гейнора.
О том, чему посвящен доклад. Почему питон это круто. О встроенных типах данных. 30 секунд на «О» большое и «о» малое. Сравнение разных типов последовательностей — для использовать то или другое: 1) списки против кортежей; 2) наборы против списков; 3) наборы против неизменяемых наборов, а также почему не существует неизменяемых словарей. Обзор дополнительных типов из стандартной библиотеки: 1) collections.OrderedDict; 2) collections.deque. Чем и когда может помочь collections.abc. Ответы на вопросы.

Exhibition of Atrocity
Доклад Майка Пирната.
Об ошибках, которые автор успел допустить за 11 лет работы с Python. Венгерская нотация — страшная ложь и глупость. О преступлениях против PEP-8 (пришедшим из других языков посвящается). Однобуквенные имена переменных как средство запутывания. Одержимость лямбда-функциями. Перебор с list comprehensions. Жуткое ветвление elif. Угроза со стороны изменяемых типов в значениях по умолчанию аргументов функций. Свойства на смену геттерам и сеттерам. Метаклассы как замена чёрной магии. Божественные объекты и методы подлежат рефакторингу. Зло в глобальных переменных. Анти-шаблон Diaper (глушилка исключений). О том, как отдубасить утку в рантайм до неузнаваемости (monkey-patching). Изобретательство колёс в логировании.

How to write obfuscated python
Доклад Реврона Джонни Хили.
Как трудно писать на Pyhton запутанно (с выпадом в сторону Ruby). где можно запутать следы: 1) оператор присвоения; 2) операторы сравнения; 3) редактирование байт-кода (объекты типа code, упоминание модуля dis); 4) декораторы (и реализация подобия brainfuck с их помощью); 5) оптимизация хвостовой рекурсии (с лямбдами и декораторами). Ответы на вопросы.

Javascript for people who know Python
Лекция Аэна Бикинга.
Почему JavaScript кажется кажется питонистам странным. О том, как разобраться в странностях. Беглый обзор-сравнение языков: объекты, функции, переменные, аргументы функций, тип undefined, объекты с прототипированием и с self, механизм определения this, пародия на модули, this и self в замыканиях, func.call() и func.apply(), типы данных и ошибки прямого инстанциирования их объектов, операторы + и ==, жуткие массивы JavaScript. Несколько слов про отношение JS к DOM. Как прогрессирует JS. О CoffeeScript, которая может заинтересовать питонистов. Ответы на вопросы.

Hidden Treasures in the Standard Library
Доклад Дага Хеллманна.
Интересное в модулях стандартной библиотеки: csv, sqlite3, hmac, json, sys.excepthook, logging. Ответы на вопросы.

Fun with Python's Newer Tools
Доклад Реймонда Хеттинжера.
Счётчики как словари при помощи collections.counter с примерами. Математика счётчиков. Именованные кортежи из collection.namedtuple с примерами и особым вниманием вспомогательным методам _asdict() и _replace(). Несколько интересных сценариев использования именованных кортежей. Подходы к кешированию результатов функции — классичейский кеш против кеша из lru_cache с примерами. Новый синтаксис форматирования строк .format(). Ответы на вопросы.

Интерпретаторы

Panel: Python VMs
Круглый стол.
Джейкоб Каплан-Мосс председательствует. Дино Виеланд о Iron Python и об интеграции в .Net. Мациеж Фиалковский о PyPy — «как CPython, только круче». Фрэнк Виржбицки о Jython и о том, какая клёвая JVM. Бретт Кэннон о CPython как флагмане. Вопросы: 1) представление VM; 2) производительность; 3) что произошло в реализациях за последний год (Фрэнк о ситуации Sun->Oracle; Дино о лицензиях от Microsoft, нервирующих народ; Бретт и остальные об окончании моратория); 4) Pyhton 3; 5) вопрос Мациежу о том, на что они потратят деньги, полученные от PSF; 6) о песочницах и подходе к их реализациям; 7) как дела у Unladen Swallow (вопрос Бретту); 8) о поддержке модуля ctypes; 9) что случиться ко времени PyCon 2012.

The Development of Python and You
Лекция Байана Кёртина.
Несколько слов о себе. Какие люди, откуда и почему участвуют в разработке CPython. С чего начать участие: гид разработчика, обзор разделов репозитария, заметки по сборке, запуск тестов. О том, что делать если исправили баг, и что отличает хороший патч от плохого. О работе с багтрекером. Какие средства используются при разработке. Ответы на вопросы.

Supporting CPython on Unsupported Platforms
Доклад Тима Лешера.
Постановка проблемы на примере устройства Vocollect (под управлением Windows CE). Выбор между встраиваемыми скриптовыми Java, Lua и Python остановили на последнем. Почему сначала сделали форк и какие уроки из этого вынесли: 1) не делать форк; 2) стоит использовать crosscut, либо карантин; 3) придерживаться одной C-нотации. Ответы на вопросы.

Prototyping Go's Select with stackless.py for Stackless Python
Доклад Эндрю Френсиса.
Откуда взялась идея подражать Go. О передаче сообщений по синхронным каналам stackless.py в текущей реализации. Где может пригодиться select (примеры с супервизорами), а также сравнение тасклетов и reactor из twisted. Пример select из Go с разъяснением функциональности. О различиях stackless на C и stackless.py, о планировщике, о каналах и их балансировке. Как реализовывался select в stackless.py, как появились операции над каналами, как очередь тасклетов была заменена очередью операций. Доклад не уложился в отведённое время и был прерван.

Анализ кода

Python-Aware Python
Доклад Неда Бэтчелдера.
Вступление: о том как одни программы Python могут анализировать другие программы на Python (пример — coverage.py). Что такое код: виды кода. Исходный код -> абстрактное синтаксичекое дерево (AST) -> объект кода (в том числе байткод, .pyc-файл) -> объект функции, объект фрейма -> исполнение -> стек фреймов. Трассировка кода при помощи sys.settrace(). Пример трассировки. Модуль linecache. Подводные камни трассировки. О работе с AST — поиск выражений, модуль ast. О мощи модуля inspect. Пара слов о модулях tokenize, dis, opcode. О проблемах динамического языка. Примеры кода, неподдающегося анализу. Ответы на вопросы.

What would you do with an ast?
Доклад Мэтью Десмараиса.
О том, что Мэтью делал, когда был тестером: ручное тестирование, тестирование при помощи инструментов, задействующих анализ кода. Что такое AST, пример дерева, определение понятий. Атрибуты узла, поля узла. Пример создания дерева. Пример автоматического перевода Python-кода в JavaScript. Пример подглядывания за интерпретатором. Какого рода утилиты могут использовать AST. Когда AST нужен, а когда нет. Ответы на вопросы.

Развёртка


Reverse-engineering Ian Bicking's brain: inside pip and virtualenv
Исследование Карла Мейера.
Как строится изолированная среда. Что такое site-packages и как они работают. Как работает sys.prefix и sys.exec_prefix. Как в виртуальную среду подключается стандартная библиотека. Как подключаются глобальные site-packages. Что такое bin/activate на самом деле. Что делать, когда нельзя использовать virtualenv напрямую (mod_wsgi). Проблемы с форками site.py и их решение. Что такое pip на самом деле. Использование API pip. О возможном будущем virtualenv и pip. Ответы на вопросы (внезапно появились Ларри Гастингс и Аэн Бикинг).

Deploying Applications with zc.buildout
Доклад Джима Фалтона.
Как buildout начинался в Zope. Задача: объедить две стадии развёртки (деплоймента) — установку ПО и его конфигурирование. Решение: примеры конфигураций buildout для создание релиза с исходниками, архива, пакета (rpm), конечной настройки приложения. О мета-рецептах buildout. О дальнейшем развитии проекта.

Dependency management with Puppet
Доклад Ричарда Краули.
Почему не pip freeze, почему Puppet. Управление зависимостями и конфигурирование приложений при помощи Puppet. Понятие ресурсов в Puppet и их типы: пакеты, группы, пользователи, ключи ssh, сервисы, exec, file и пр. Объединение ресурсов в классы (это тип ресурса), а также в свои типы ресурсов. Использование puppet-pip. Механизм автоподгрузки модулей. Конфигурирование нодов — направление модулей на сервера. Пример модуля для Django и подводные камни. Пример модуля для Apache с объявлением сервиса. Развёртка при помощи Fabric против Puppet master. Пара слов о проекте blueprint от devstructure для автоматической генерации puppet-кода. Ответы на вопросы.

TUF: Secure Software Updates in Python
Презентация Джереми Кондра.
Что такое обновлятор ПО вообще и какие риски он предполагает. Инструменты, которые могут быть использованы в качестве обновляторов и их слабые стороны (с описанием методов атак их раскрывающих): PyPi, менеджеры пакетов. Что может TUF (это каркас для обновлений) и как работает. Ответы на вопросы. Демонстрация интеграции TUF в скрипт distutils.

Continuous deployment
Доклад Лоуренса Ван Гутвена.
О себе. Об отношении непрерывной интеграции к непрерывной развёртке. Критика модели водопада в разработке и противопоставление ей Agine/Scrum/EXP. Связь непрерывной развёртки с короткими циклами разработки. Определение непрерывной развёртки. Как не делать из развёртки события. Тестирование, автоматизация, измерения, аудит кода. Подводные камни разных механизмов развёртки. Стратегии развёртки: в частности об «осмотрительной» развёртке. О необходимости здравого смысла при наращивании функционала систем развёртки. Ответы на вопросы.

Packaging, from Distutils to Distutils2
Доклад Тарека Зиаде.
Пара слов о талисмане distutils. Проблемы distutils и их решение в distutils2: 1) зависимости и их решение при помощи метаданных из PEP 345; 2) setup.py как гигантский швейцарский нож, и его замена — setup.cfg (а также пример использования pysetup); 3) проблема удаления и её решение с помощью PEP 376 (пример с pysetup); 4) проблема с инопланетными номерами версий и её решение в PEP 386 (а также пример нормализации номера версии в distutils2); 5) дополнительные файлы с данными и директива files.resources в distutils2. О взаимодействии distutils2 с различными системами сборки. distutils2 под именем packaging. Ответы на вопросы.

Проектирование приложений


API Design anti-patterns
Лекция Алекса Мартелли.
О распространенных ошибках, допускаемых при проектировании и реализации API.

API Design: Lessons Learned
Лекция Реймонда Хеттинжера.
Немного общих советов относительно хорошего API. Частности: 1) При сведении эквивалентных типов к одному (например, индексов массивов к целым) следует чётко обозначать типы, которые могут быть сведены; 2) В классах дружелюбных к наследованию все внутренние вызовы защищены от изменения; 3) Там, где нужна гибкость (в противовес простоте) следует избегать зашитых в код предустановок параметров, лучше использовать необязательные аргументы; 4) Если требуется возможность обработки как позиционных так и итерируемых аргументов не следует обрабатывать разные сигнатуры в конструторе, лучше определить под эти нужды отдельные методы; 5) Лучше использовать аргументы-ключевые слова, чем менять сигнатуры, добавляя новые позиционные аргументы; 6) Чтобы сигнатура конструктора наследующегося класса не конфликтовала с сигнатурой конструктора наследуемого, последий можно определить опосредованно — в одном из методов. Ошибки, допускаемые при создании API и пути решения на примерах asyncore.py и глобальных настроек. О том, какие проблемы приносят категоризация и иерархии в модулях, и как с ними бороться.

Оптимизация


«Dude, Where's My RAM?» — A deep dive into how Python uses memory
Доклад-презентация Дейва Мэлколма.
Краткий обзор доклада. Симптомы чрезмерного потребления памяти, их причины в CPython (баги в счетчике ссылок, перебор с кешированием и пр.) и пути их устранения. Пример объекта и его размещения в памяти. Размеры в памяти основных типов данных, полученные sys.getsizeof(). Оптимизация с использованием __slots__. Несколько слов о средстве профилирования уровня ссылок на объекты Meliae. Что проходит через PYMALLOC, а что отдаётся в malloc. О средствах профилирования уровня размещения объектов в памяти: 1) Valgrind; 2) gdb-heap. Презентация gdb-heap: принцип работы, пример выдачи данных, язык запросов, подводные камни использования, история успеха в проекте Fedora, будущее проекта. Ответы на вопросы.

Why is Python slow and how PyPy can help?
Доклад Алекса Гейнора, Мациежа Фиалковского и Армина Риго.
Что такое PyPy и на сколько он быстр. Что такое JIT и джиттинг. Джиттинг на примере мини-приложения. Грабли семантического разбора языка, боксы, интроспекция фреймов. Ответы на отличные вопросы.

Swarming the Web: Evolving the Perfect Config File
Доклад Курта Грандиса.
Постановка вопроса: почему так часто приходится модифицировать файлы конфигурации. Настройка и оптимизация производительности сервера с точки зрения теории управления и оценки эффективности: есть система, есть сенсоры — не хватает контроллера. Оптимизация методом роя частиц в Python (ecspy) и её применение в качестве контроллера для создания файлов конфигурации. Вариант алгоритма тестирования конфигураций. Тестовая оптимизация и её результаты. Ответы на вопросы.

Тестирование и отладка


Units Need Testing Too
Доклад Гэри Бенрхардта.
Что мы тестируем и какие при этом встречаем проблемы: 1) исчерпывающая проверка недостижима; 2) время прогона тестов возрастает линейно с ростом объема системы; 3) представление результатов выполнения тестов малоинформативно из-за бинарности. О недостатках терминологии. Определения понятий unit и unit test. Правильные тесты (с использованием объектов-фальшивок — mock, stab) на примере Django. Об интеграционных тестах. Рекомендации по написанию тестов. Пример набора тестов (510 тестов) для 10000 строк кода, выполняющегося за секунду с небольшим. Ответы на вопросы (в том числе, о разумном объеме класса в строках).

Testing the Mobile (and Desktop) Web with Selenium 2.0 — Better, Faster, and more Pythonicly
Презентация Джейсона Гаггинса.
Что такое Selenium, какие проблемы решает. О Selenium IDE, Builder, Remote Control. Примеры тестов на Java и C#. О проекте Selenium Grid. Рекомендация к запуску тестов в параллели, вместо последовательности. Новое в Selenium 2: обзор компонентов для тестирования мобильных платформ (Android и iOS); нативная обработка событий клавиатуры и мыши; проверка XSS; поддержка диалоговых окон и пр. Пример использования нового API по средствам Python-обвязки. О том, как получилось исключить Selenium RC Java Server и как можно на его место воткнуть Grid. Пример (пошаговый) запуска тестов для iPhone, Android.

Testing with mock
Доклад Майкла Фурда.
О себе. Введение в библиотеку mock, для чего служит mock. Mock-объект хранит информацию о том, как он был вызван. Возможности класса MagicMock. Подмена объектов налету и откат подмены при помощи mock.patch. Примеры использования библиотеки, в том числе подмены объектов и их атрибутов. Предостережение о том, что не стоит перебарщивать с mock. Ответы на вопросы.

Using Python to debug C and C++ code (using gdb)
Доклад Дейва Мэлколма.
О встроенной поддержке Python в gdb версии 7+, о том почему это круто с рассказом об отладке инсталлятора Red Hat, написанного на Python. Примеры использования Python внутри gdb — отладка приложения на C — а) долгий классический путь gdb с заметками о том, на что следует обратить внимание при определении типов и получении значений; б) короткий путь при помощи Python. Проход по массивам, структурам. И снова о том, чем такая отладка удобна. Пример хука обработки строк (prettyprinter) для одного из типов строк в LibreOffice и подключения его классом к gdb. На что следует обратить внимание при работе. Ресурсы по теме. Ответы на вопросы.

Веб


HTTP in Python: which library for what task?
Доклад Оги Феклера.
Беглый обзор httplib, httplib2, pycURL, twisted.web.http. О поддержке указанными библиотеками HTTP 1.1. Представление py-nonblocking-http.

WSGI: Working together to solve the web's problems
Круглый стол.
О PEP 4444, о том, чего не хватает wsgi. О том, чем является wsgi и чем не является. Перспективы развития wsgi.

HTSQL — an insanely good WSGI / REST interface to your favorite database
Доклад Кларка Эванса.
Кларк о себе. Пара примеров работы с HTSQL. О том на сколько легко использовать библиотеку в любых python-проектах. История создания HTSQL. Из чего состоит HTSQL. HTSQL — прежде всего язык навигации по данным. Ответы на вопросы о первой части. О синтаксисе и его REST-готовности, о встроенных и подключаемых средствах форматирования (представления) результатов. О текущем состоянии проекта, о лицензии. Ответы на вопросы.

Using Coroutines to Create Efficient, High-Concurrency Web Applications
Доклад Мэтта Спитца.
Что такое высоконагруженное веб-приложение. Варианты оптимизации такого приложения. Пример Meebo Bar и Ad Server. Интересное сравнение выдачи простого приложения с разных баз, их плюсы и минусы: Apache CGI, Apache mod_wsgi (mpm_prefork), Twisted, gevent+gunicorn. На что нужно обращать внимание при использовании gevent, а также, что поможет вывести проект на gevent+gunicorn в продакшн (инструменты управления и отладки). Про опыт использования связки в Meebo. Ответы на вопросы.

Hookbox: All Python web-frameworks, now real-time. Batteries Included
Презентация Майкла Картера.
Подходы к созданию веб-приложений реального времени и их ограничения. Подход Hookbox. Демонстрация, обзор. Ответы на вопросы.

An (biased) survey of the python web
Доклад Марка Рэмма.
Каков Python для веб-разработки. Как обстояли дела с веб-каркасами в 2005-м и как обстоят сейчас, списки каркасов. Каркасов нынче слишком много — сложно выбрать между ними. Нет очевидного лидера. О Django. Из-за чего рубист может удариться в питон. Общие библиотеки, которые могут пригодиться в веб-разработке. О Python-хостинге. Обобщение. Пара слов о каркасе Pyramid. Почему плох web2py. Ответы на вопросы.

Scaling Python past 100
Доклад Марка Рэмма.
О себе. Про то, как из-за парня из Украины FossFor.us работал на Django. О том, что в Django было тогда хорошо и что не слишком. Про то, как из-за Марка SourceForge.net стал работать на TruboGears и почему. Из чего приготовили сайт SourceForge: почему MongoDB, mod_wsgi; и как успели к дедлайну. Как решили использовать Python для всего на SourceForge — про получившуюся платформу Allura. Как сообщество Python помогало при создании Allura. Советы по планированию приложений: точно сформулируйте решаемую приложением задачу; одержимость масштабированием вредна; подбирайте правильные инструменты для создания приложения. Ответы на вопросы, в том числе о боязни того, что Python трудно масштабируются.

Disqus: Serving 400 million people with Python
Доклад Джейсона Йона и Дэвида Крамера.
О том, как обслужить 500 млн. уникальных пользователей в месяц (пиковая нагрузка 25 тыс. запросов/сек.). Что такое Disqus, немного истории и данных о внутренней организации. Инфраструктура Disqus. Apache+mod_wsgi vs. nginx+uWSGI. Они используют Celery, Grahpite, Sentry, Gargoyle, форкнули Django. Почему эти парни перешли с Ruby и PHP на Python.

How Dropbox Did It and How Python Helped
Доклад Райана Хантера.
О докладчике. Что такое Dropbox и как он начинался. Как Python помог ускориться при начальной разработке Dropbox в 2007-м. Как появилась компания. Крупные достижения того времени: удалось отреверсить маковский Finder, чтобы наложить оверлеи на иконки; создать инфраструктуру массовых http-оповещений (используя Twisted); создать платформонезависимую базу кода и пр. Где используется Python: серверная логика, десктопные клиенты, контроллер сайта, API, аналитика. Объяснение, почему Python. Питон помогает при итерационной разработке. О медлительности и пожирании оперативной памяти питоном. Методы уменьшения времени CPU (о функии any() и пр.). Как оптимизировать использование оперативной памяти и бороться с фрагментацией памяти — или вместо этого использовать PyPy. Планы Dropbox.

MongoDB + Pylons at Catch.com: Scalable Web Apps with Python and NoSQL
Доклад Найолла О`Хиггинса.
Что такое catch.com и какие требования учитывались при его создании. Почему перешли с Java и BDB JE на Pylons и MongoDB. Краткий обзор MongoDB и таблица микро-сравнения MogoDB vs MySQL vs BDB, о модели данных MongoDB. MongoDB с Python (через PyMongo), примеры запросов, таблица примерно соотношения операторов. О поддержке географических данных в MongoDB. На что требуется обратить внимание — о подводных камнях MongoDB. Несколько слов о Pylons и почему они предпочитают Pasters, а не mod_wsgi. Немного об инфраструктуре catch.com. Ответы на вопросы.

An Introduction to Tornado
Доклад Гэвина Роя.
Обзор основных компонентов (модулей) и возможностей каркаса Торнадо. Почему Торнадо не использует Твистед. Примеры приложений с использованием Торнадо. Немного об использовании неблокирующего сервера Торнадо.

Ten Years of Twisted
Доклад Глифа Лефковица. * Кто-то подсунул Глифу плохой микрофон.
О том, что такое Твистед. Немного истории: о том, как игра стала каркасом и о том, зачем может понадобиться писать веб-сервер и обвязку к нему с нуля. Что такое синхронность и асинхронность. Примеры мощи сервера Твистед.

Opening the Flask
Презентация Армина Ронаха.
О том, как первоапрельский фейк стал микрофреймворком: в чём была шутка и почему её приняли за чистую монету. Как появился Flask и из чего он состоит. Пример hello-приложения. О подходах в дизайне, использованных в Flask: локальные переменные контекста, однокартный импорт модулей, отсутствие объекта приложения, явные настройки, автоматическое упорядочение url-правил по сложности. О расширениях к Flask. Уроки, выученные в ходе разработки микрокаркаса. Ответы на вопросы.

Django

Pluggable Django Patterns
Доклад Кори Оордта.
Почему монолитные приложения не в духе Джанго. Что такое подключаемые приложения и почему это хорошо. Что важно для подключаемых приложений. Приёмы, используемые в существующих Джанго-приложениях, которые можно взять на заметку.

Django: Pitfalls I Encountered and How to Avoid Them
Доклад Люка Сниринджера.
Пути импорта модулей. Наследование шаблонов. Обработка контекста шаблонов и полезность RequestContext. Настраиваемые менеджеры в моделях. Динамические формы: использовать метакласс или переопределение __init__()?

Django Packages: A Case Study
Презентация Дэниэла Гринфелда.
Минутный обзор django-apps.com, или что в нём было не так. Как на DjangoDash 2010 были созданы djangopackages.com. Подходы и идеология: таблицы сравнения, объективные метрики. Советы по итогам разработки: 1) когда речь идет о стороннем API нужно как можно глубже исследовать предмет, прежде чем преступить к реализации; 2) помнить о PEP 8; 3) использовать фикстуры; 4) не прибегать к преждевременной оптимизации; 5) проектировать архитектуру; 6) обмениваться информацией в команде. Как история продолжилась на DjangoCon2010. Используемые django-приложения. Что планируется ещё. Что будет в pythonpackages.com. Ответы на вопросы.

Running Django Apps on Google App Engine
Доклад Уэсли Чена.
Шесть минут хохм, пока собирается аудитория, и полминуты на сборку презентации с помощью питона. Чен о себе. Чен о Джанго. Чен о App Engine. Об ограничениях App Engine в случае применения Django и о попытках их сгладить — хелпер и, позже, патч.  O djangoappengine. O Django-nonrel и о том, что в нем хорошо, на что следует обратить внимание при использовании. Шаги для портирования django-приложение под App Engine. Ответы на вопросы.

Pyramid

State of Pylons/TurboGears 2/repoze.bfg
Доклад Криса МакДона, Бена Бангерта и Марка Рэмма.
О Pylons: было до версии 2.0 и что стало потом. Почему Бангерт решить слиться с TurboGears и repoze, а не переписывать всё снова. Как появился Pyramid. О TurboGears и как Рэмм решил участвовать в инициативе Pyramid. О repoze.bfg, появившемся как костыль для Zope, ставшем отдельным каркасом. О идеологии repoze.bfg и малой известности. Как стало: Pylons, repoze.bfg  становятся Pyramid, при этом TurboGears 2 (основе Pylons) продолжает развиваться и поддерживаться, равно как и TurboGears 1 (основе CherryPy). Пример wsgi-приложения с Pyramid (привет Django). Что включает Pyramid, на чём может работать. Чем Pyramid не является (совсем не Zope). Бодрое видео о создании логотипа Pyramid. Ответы на вопросы.

The Pyramid FAQ
Доклад Карлоса де ля Гордия.
Где можно задать вопросы по Pyramid. Чем хороша Пирамида. Отношение Пирамиды к Pylons, TurboGears, Zope. О документации. Почему Пирамида это кирпичи, а не рельсы. Что использовать для новых проектов: Pylons или Pyramid. Пример запуска Pylons-приложения в Pyramid. Akhet — шаблоны приложений в стиле Pylons 1. О диспетчеризации и механизме Traversal. Ответы на пару вопросов.

Технологии


Distributed Tasks with Celery
Презентация Райана Петрелло.
О докладчике. О том, почему выбрали Celery: асинхронная обработка задач (в том числе распределенная), привлекательность для пользователя, планировщик, обработка ошибок и повтор заданий. Краткое введение в очереди сообщений (AMQP). Об использовании AMPQ в качестве очереди задач. Основы Celery. Celerybeat, веб-хуки, удаленное управление (бродкаст) исполняющими процессами (воркерами). Примеры использования. Celeryev и celerycom. Советы. Ответы на вопросы.

Advanced Network Architectures With ZeroMQ
Доклад Зеда Шоу.
О себе, упоминая книгу Learn Python The Hard Way. Не выпускайте ZeroMQ в Интернет. Для чего используют ZeroMQ и как он может стать заменой библиотекам для работы с сетью, что умеет. Примеры с потешной СУБД MulletDB (запрос-ответ, публикация-подписка, стриминг). Примеры с веб-сервером Mongrel2. ZeroMQ может: очередь сообщений, использоваться на месте http+json, быть основой для создания сервера или протокола. Ответы на вопросы.

CouchDB and Python in practice
Доклад Люка Готцлинга.
Что такое CouchDB, из чего состоит и чем хорош. Демонстрация работы с CouchDB через Fucon. ORM к CouchDB на Python. couchdb-python: типы полей, пример использования. Создание представлений, map/reduce. О производительности, масштабируемости. О доводах за и против. Планы на будущее. Ответы на вопросы.

Firefox Sync
Презентация Тарека Зиаде.
Что такое Firefox Sync и как он работает. Механизмы реализации со стороны клиента и серверов. Детали о шифровании жонглированием. Чем измеряли производительность на серверах, как и какие части подверглись масштабированию. Firefox Sync в цифрах. Стек приложений, задействованный на серверах. Какие уроки преподнёс проект. Ответ на вопрос о синхронизации истории.

An Open success for the cloud: OpenStack
Презентация Энди Смита.
О себе. Об OpenStack: как были соединены проекты swift, nova, а также burrow, glance, django dashboard. История успеха OpenStack в NASA, Rackspace. Почему Python. История развития проекта nova. Как rpc, tornado, twisted, eventlet сменяли друг друга в проекте nova. Ответы на вопросы.

Everything You Wanted To Know About Pickling, But Were Afraid To Ask!
Доклад Ричарда Сандерса.
О себе. Что такое pickling, пример использования, альтернативы ему, сильные и слабые стороны. Общие разъяснения по протоколам сериализации с замерами производительности. Разъяснения по каждому из четырёх протоколов. Машина стеков — как работают бинарные протоколы на примере списков. На что следует обратить внимание при использовании. Различия модулей pickle и cPickle. Ответы на вопросы.

Supporting All Versions of Python All The Time With Tox
Доклад Кумара МакМиллана.
Про opensource. Введение в утилиту tox с демонстрацией. О файле конфигурации tox.ini. Про 2to3 и о том. О создании единого дистрибутива для серсий 2 и 3, информация к сведению о setup.py. Настройка tox для тестов в дистрибутиве и вне его. Tox и doc-тесты. Tox и исходные коды из системы контроля версий. О tox и Jenkins CI. Ответы на вопросы.

mrjob: Distributed Computing for Everyone
Доклад Джимми Рецлафа.
Какую проблему решает MapReduce. Пример MapReduce в картинках. Что такое mrjob, примеры использования. Долгий разбор варианта решения задачи подсчета кликов/показов баннеров, а также отслеживания продаж с помощью MRJob. Ответы на вопросы, в т.ч. почему не Dumbo.

ZODB: A Python Persistence System
Доклад Криса МакДонах.
Что такое ZODB и как она работает. О модуле pickle: примеры упаковки объекта в pickle-файл и чтения из файла; о формате pickle; о его ограничениях; о поддерживаемых типах данных. Чем ZODB отличается от pickle и чем схожа. Пример использования ZODB. О транзакционности. Сравнение ZODB с объектными, реляционными, nosql БД. Типы хранилищ данных, поддерживаемые ZODB. О возможностях индексирования и поиска. О масштабировании. Уникальные черты и ограничения ZODB. Где использовать и где не надо. Ответы на вопросы.

Using Blender's new BPY Python API
Презентация Кристофера Аллана Веббера.
Кратко о Blender. Примеры скриптованных на Python сцен: из анимационного фильма Elephant's Dream; пример симуляции толпы паучков; карта патентных бомбардировок. Мини-введение в пользовательский интерфейс Blender. Что такое BPY. О внутренностях .blend файлов. Пример использования BPY прямо в Blender — поиск и модификация объекта. О самодокументированности Blender. Возможности скриптования самого Blender: создание оператора; создание панели. Пара слов о система упаковки. О будущем BPY. Немного о игровом движке (пример с Yo! Frankie). Ответы на вопросы. Ненавязчивая реклама курса Creature Factory.

Разное


A Fireside chat with Guido van Rossum
Ван Россум отвечает на вопросы.
О 20-летии питона, об окончании моратория, о PEP 342 и сопрограммах посредством генераторов (или почему Гвидо не любит программы с обратными вызовами), будет ли Python 4, о процессе адаптации Python 3 (или жаль книгу Пилгрима), как случилось, что PEP от Гвидо не приняли (и как в язык затесались лямбда-функции и подобное), отношение к реализациям, отличным от CPython (в частности PyPy).

Keynote: Hilary Mason
Солянка от Хилари Мейсон.
Коротко о себе, bit.ly и об анализе данных. Выражение, порождающее само себя. Поздравление Python с днём рождения. График популярности языков. Анекдот про программиста в бакалее. О вычислительном мышлении. Как деятельность приводит к физическим изменениям мозга. О самых клёвых конструкциях языка: with, генераторы, декораторы, и list comprehensions. Откуда пришли list comprehensions. К чему движется индустрия. О генетике, фитнес-функции и биоинформатике, а также других штуках, которые подарят нам супер-силы. Ответы на вопросы.

Python IDEs Panel
Презентация сред разработки на Python их производителями.
Дино Виеланд — Python Tools для Visual Studio. Дмитрий Джемеров — PyCharm. Тодд Вайтмэн — Komodo. Стефан Дайвел — Wing IDE. Барри Ворсо — python-mod.el для Emacs. Ответы на вопросы.

Extreme Network Programming with Python and Linux
Доклад Роба Ладвика.
О сложности работы с сетью. Архитекрута сигнал-слот и её использование (пример), а также SignallingStream и SelectSignaller. Про малтикаст, IGMP, TTL с примерами, а также о том, почему интерфейс может игнорировать малтикаст пакеты. Про «сырые» сокеты. Про библиотеку pypcap. Про ввод интерфейса в режим расширенного прослушивания (promiscuous mode). О том, как читать структуру sockaddr_ll, возвращаемую recvfrom(). Про «готовые» сокеты. Как использовать socket.sendto(). Про виртуальные интерфейсы видов TUN и TAP. Об использовании dpkt, а также на что следует обратить внимание. Создание мостов. О работе с сетью, устойчивой к задержкам и обрывам (DTN). Ответы на вопросы.

Through the Side Channel: Timing and Implementation Attacks in Python
Исследование Джереми Кондра.
Что такое атака по сторонним каналам. Пример «классической» функции авторизации и её разбор на предмет подверженности атакам. Развенчание шифрования RSA. Как работает RSA на пальцах, шаги шифрования/расшифровки. Сильные слабые стороны RSA-CRT. Пример атаки RSA (pow()). Выводы. Ответы на вопросы, в т.ч. о том как решается проблема атаки на ==, и обращение к пользователям PyCrypto.

Добавка: для ценителей жанра ссылка на торрент с видео означенных докладов — narod.ru/disk/23856546001/pycon2011.torrent.html
Tags:
Hubs:
+66
Comments 37
Comments Comments 37

Articles