Fork me on GitHub

Июль 3–4

PyCon Russia 2016

Рус Eng

Александр Кошкин, Positive Technologies

Знай и люби свой CPython во имя луны и великой справедливости

Один из основополагающих способов узнавать новое — выводить старое за границы применимости. Достигая противоречия или получая абсурдные результаты, можно получить представление о более общих концепциях, что позволяет детализировать уже понятое и прикоснуться к неизвестному. В этот раз нечто подобное я постараюсь сделать с основной реализацией ЯП Python — CPython. Мы рассмотрим блоки, из которых сделан интерпретатор, поймем, как они взаимодействуют, вмешаемся в их работу на низком уровне и поймем, какой профит и проблемы из этого можно получить.

Видео и презентация →

Александр Сибиряков, Scrapinghub

Автоматическое разрешение заявок о ложных срабатываниях в антивирусе Avast

Ложными срабатываниями в антивирусной терминологии называются срабатывания на чистых файлах, не являющихся зловредными. Когда пользователь видит красный поп-ап, запрещающий запуск файла антивирусом, ему предлагается сообщить о ложном срабатывании в лабораторию. С такими заявками будут разбираться вирусные аналитики.

Тема ложных срабатываний очень важна для производителей антивирусов. Любимая игра или браузер, который используется повседневно, после обновления может начать «ловиться» антивирусом. У популярных антивирусов от этого страдают миллионы пользователей. Если системный файл ОС будет заблокирован, то такое срабатывание может закончится сервисом компьютера пользователя.

Моей задачей было построить автоматический классификатор заявок для того, чтобы разгрузить вирусную лабораторию от ручного труда.

Классификатор использовал на входе данные из 4-х бэкендов, рассчитывал около 120 сигналов и по ним вычислял вероятность зловредности файла. У классификатора были очень высокие требования к качеству. Для обучения использовались деревья решения с градиентным бустингом (GBDT), а обучающая выборка содержала 10000 примеров размеченных вручную аналитиками.

Проект занял около полугода, для него была построена специальная инфраструктура и разработан бизнес-процесс аналитика на этапе внедрения. На данный момент классификатор используется уже два года.

Видео и презентация →

Raymond Hettinger, Python core developer

Воркшоп Descriptors and Context Managers

  • Preview: use of property() for computed fields
  • Overview: How descriptors work
  • Project: Develop descriptor based data validators
  • Preview: Output redirection with print()
  • Most common context managers: files and locks
  • Three paths through a content manager
  • Project base case: family() help() dis()
  • Redirection the hard way
  • Redirection the better way
  • Function and class decorators
  • Project: Name fix-up for the data validators

Дмитрий Кукушкин, Wargaming

Falcon - очередная WSGI библиотека?

Для разработки веб-сервисов в Online Presence мы традиционно выбирали Django, но в один прекрасный момент, при разработке Глобальной Карты 2.0, мы поняли, что нам хочется больше свободы. Посмотрев по сторонам, выбор пал на микрофреймворк falcon. В докладе я расскажу об устройстве Глобальной Карты, разберу причины, по которым мы взяли falcon, плюсы и минусы этого решения, а также поделюсь выводами, которые мы сделали по итогу внедрения этой библиотеки.

Видео и презентация →

Jackie Kazil, Capital One

User-centered open source projects

Open-source projects often struggle with finding contributors and getting off of the ground. Communities, such as Github and PyPi, are host to redundant projects and libraries. In the development space, how do you distinguish your project from others, get people excited to contribute to it, and ultimately create a successful open source project? The answer is to apply user-centered design techniques to the development of your project. User-centered design is usually applied to web applications and products on the front-end of a website, but these techniques can be applied to open source libraries. In user-centered open source projects, your users are those who type pip install $your_library.

In this talk, Jackie will illustrate some user-centered techniques that have been used on her own project — Mesa (https://github.com/projectmesa/mesa), along with other successful open source projects. This talk will include a survey of interviews with a focus on successful techniques, along with additional user-centered design techniques that could be leveraged to inspire increased community engagement into your project.

Видео и презентация →

Екатерина Тузова, PyCharm

Theano: обучаем нейросеть

Theano — это расширение языка Python, позволяющее эффективно вычислять математические выражения, содержащие многомерные массивы. Библиотека предоставляет базовый набор инструментов для конфигурации нейросетей и их обучения. Наибольшее признание Theano получила в задачах машинного обучения при решении задач оптимизации. Библиотека позволяет использовать возможности GPU без изменения кода программы, что делает ее незаменимой при выполнении ресурсоемких задач.

В докладе я покажу базовые принципы Theano и общие сложности, с которыми сталкивается разработчик, впервые начиная использовать библиотеку. Так же мы рассмотрим особенности компилятора, который переводит математические выражения, написанные на языке Python в эффективный код на C.

Видео и презентация →

Андрей Солдатенко, Toptal

Building social network with Neo4j and Python

Social phenomena is coming. We have lot’s of social applications that we are using every day, let’s say Facebook, twitter, Instagram. Lot’s of such kind apps based on social graph and graph theory. I would like to share my knowledge and expertise about how to work with graphs and build large social graph as engine for Social network using python and Graph databases. We'll compare SQL and NoSQL approaches for friends relationships.

Видео и презентация →

Armin Ronacher, Flask framework

How Python was Shaped by leaky Internals

A deep dive into the internals of the CPython interpreter and how some of its design decisions have shaped the language.

Видео и презентация →

Raymond Hettinger, Python core developer

Thinking about Concurrency

Walk through two examples of threading and multiprocessing to illustrate rules and best practices for taking advantage of concurrency.

  • Processes versus threads
  • Fear and respect. Methodology and Confidence
  • Role of testing and fuzzing
  • Race conditions and sequencing issues
  • Locks versus flags
  • Resource isolation and atomic message queues
  • Sequencing by placing tasks in one thread
  • Barriers that wait for parallel threads to complete
  • Monitoring progress of daemon threads
  • Thread local variables versus global state
  • Advantages and disadvantages of processes
  • Parallelizable tasks versus intrinsically sequential tasks
  • Performance killers, the three most common mistakes

Видео и презентация →

Martin Gorner, Google

Workshop «Tensorflow»

Preparation instructions: make sure you come with the necessary software installed.

Павел Петлинский, Rambler&Co

Хочу всё знать!

Доклад для пытливых и любознательных питонистов, которые хотят разобраться, как всё работает под капотом, и «где у ней внутре неонка».

Python «тормозит»? Смотрим, как устроена виртуальная машина. Python съел всю память? Смотрим, как устроено управление памятью и структура данных в стандартной библиотеке. GIL — зло. Что будет, если его отключить?

Видео и презентация →

Кирилл Борисов, Яндекс

Flame graph: новый взгляд на привычное профилирование

Все хотят знать, как выполняется их код. Многие догадываются, чем это можно измерить. И лишь немногие находят в себе силы продраться через результаты измерений. Проблема ещё более усложняется, если приложение исполняется в нескольких процессах, потоках или на разных серверах. Вал измерений захлестывает разработчика, и уже не видно конца...

В этом докладе мы попытаемся упростить все это с помощью визуализации, а именно — flame graph'ов, красивых и наглядных . Также вместе рассмотрим процесс сбора данных, их подготовку и на примерах поучимся читать получившиеся графики.

Видео и презентация →

Антон Егоров, ostrovok.ru

Докеризация веб-приложениния на Python

Я поделюсь опытом и лучшими практиками деплоймента веб-приложения на Python с помощью технологии Docker. Расскажу, как собрать образ с нуля, дам пошаговую инструкцию, которой можно пользоваться как шаблоном для своих приложений. У нас в компании большой опыт работы с Docker, только через мои руки прошло пару десятков приложений, которые надо было докеризировать, и каждое новое приложение — это отдельный квест.

Видео и презентация →

David MacIver, Hypothesis

Воркшоп «Property-based testing with Hypothesis»

Hypothesis is a library for writing smarter tests.

Instead of hand-writing every example in your tests, you describe what sorts of examples you need and let it fill in the blanks. It uses this to actively go looking for bugs in your code.

It’s proven very effective, and is being used by an ever growing number of open source projects (including pypy, cryptography, and mercurial), but people sometimes struggle to get started.

In this session we’ll help you overcome that by going through a number of illustrative examples that will help you understand this style of testing better.

The first two hours will be spent on these, start with a discussion of the problem, a sample test to start you off, and then people will work through it at their own pace, with me there to answer questions and help people when they get stuck. After people have had some time on a given problem, I’ll go over some possible tests for the example and why they are useful, and give people time to try anything they like out before moving on to the next problem.

For the final hour, people will work on testing some more substantial code. You should feel free to bring your own, but I will provide some interesting projects for people to work on for anyone who doesn’t have anything specific.

At the end of this you should feel much more comfortable with the general concepts of property based testing, and be able to use Hypothesis effectively to test your own code.

Видео и презентация →

Артем Малышев, Positive Technologies

Очереди задач без купюр

Так или иначе в любом сложном web приложении используются очереди задач. И так уж сложилось, что им положено быть распределёнными. В данный момент рынок решений для python разработчиков представляют 2 главных продукта - Celery и RQ. В докладе я расскажу о внутреннем устройстве обеих систем. Поговорим о том, с какими проблемами столкнулись их создатели, как их решили и чем эти решения грозят конечному пользователю. Как устроены группы, хорды и eta? Как добиться отказоустойчивости на транспортном уровне? Почему это тяжело масштабировать? На все эти вопросы я дам ответ в своём докладе.

Видео и презентация →

Андрей Светлов, Python Core Developer

Продвинутое использование py.test

Большинство разработчиков пишут тесты с помощью стандартной библиотеки unittest и довольны жизнью. Я тоже был из таких - пока не начал интенсивно использовать py.test.

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

В докладе речь пойдет о написании pytest fixtures (основном инструменте расширения), добавлении конфигурационных параметров, написании plugins и прочих полезных штуках.

Видео и презентация →

Nathaniel Manista, Google

Code Unto Others

Large codebases need not be tragedies of the commons so riddled with complexity and technical debt, but so many are. How does that happen? By what mechanisms and pathologies do a large number of locally reasonable decisions by intelligent authors add up to unmaintainable software? How can it be that the end result of everyone doing everything right is a system “too dangerous to touch” that can’t be modified without likely breaking something?

I’ve written that software, I’ve maintained that software and brought it back from the brink, and I’ve trained others in what is required to avoid trouble. I’ll share what practices work, and why and how they do. I’ll dive into the designs of classes, functions, modules, and packages. I’ll evaluate the tradeoffs of global state and other dark magic. I’ll even dig into and get personal about naming.

The first obligation of code is to run correctly. The second obligation of code usually is to run efficiently. The third obligation of code is to play well with other code and other programmers. Come learn how to write code that makes friends without sacrificing function or performance!

Видео и презентация →

Андрей Сумин, HeadHunter

Питон под нагрузкой

Питон занимает неотъемлемое место в архитектуре hh.ru — все фронтенд-сервисы и некоторые бекенды написаны именно на нём. В своём докладе я расскажу о том, как Питон справляется с нагрузкой самого посещаемого работного сайта в рунете (и почему иногда всё-таки не справляется), поделюсь наболевшими проблемами и способами их решения. Как выполнить CPU-intensive операции в Торнадо? Так ли страшен GIL? Как понять что вообще происходит на продакшене? Доклад будет интересен всем, кто разрабатывает и поддерживает Питон-сервисы. Особый акцент я сделаю на проблемах, возникающих при использовании асинхронных фреймворков и на построении удобной инфраструктуры для отладки и мониторинга.

Видео и презентация →

Андрей Власовских, JetBrains

Аннотации типов и Python 2 + 3

Переход проекта на Python 3 может отнять довольно много сил. Для библиотек ситуация ещё сложнее, поскольку обычно нужно поддерживать обе версии и писать код на так называемом Python 2 + 3, пересечении множеств функциональности двух версий. Аннотации типов являются одним из средств, которые могут помочь при этом переходе.

В докладе мы обсудим, как информация о типах позволяет находить ошибки несовместимости версий, почему в Dropbox добавляют аннотации типов даже в проекты на Python 2, что нового уже появилось и ещё появится в PEP 484 для поддержки совместимости Python 2 и 3.

Видео и презентация →

Ben Nuttall, Raspberry Pi

Physical computing with Python and Raspberry Pi

The Raspberry Pi Foundation is a UK charity which creates low-cost, high-performance computers that people use to learn, solve problems and have fun. Through our educational programmes we work to put the power of digital making into the hands of people all over the world.

With Python on the Raspberry Pi, it's easy to start creating physical computing projects, and to experiment and tinker with add-ons and accessories from lights and buzzers to environmental sensors and robotics. This ease of access was accelerated with the creation of a new minimal boilerplate library called GPIO Zero, of which I am the primary author. In this talk I'll talk about the Foundation's work in education, share some great Pi projects, give a taster of how to get started in physical computing and dive into the technical innards of the GPIO Zero library. As well as a learning tool, the Pi is commonly used in home automation projects and industrial applications.

Видео и презентация →

David MacIver, Hypothesis

21st Century Software Testing

Software is everywhere, and it's full of bugs.

In order to fix bugs you need to find them. In order to find bugs in software, you need to test it.

But there are so many bugs. How are we going to test for them all?

Hypothesis is a modern software testing library that is here to help you out. You focus on the behaviour you want to test and let Hypothesis probe the boundary conditions of your software, automatically finding where those behaviours are violated.

This is a talk by David R. MacIver, the primary author of Hypothesis. He'll talk about the challenges of good testing, and how Hypothesis can help you future-proof your software.

Константин Лопухин, Scrapinghub

Как добавить scripting в веб приложение

Доклад для тех, кому требовалось дать пользователям возможность расширять приложение при помощи скриптов или макросов. К этом часто приходят разработчики приложений для продвинутых пользователей, у которых невозможно заранее прописать все варианты использования - как правило, это проекты для бизнес-пользователей.

Когда стало понятно что это нужно, сразу возникает много проблем: есть очень большой простор для выбора решения и много граблей. Например: встроить чужой язык, или сделать свой? Если чужой, как правильно организовать песочницу, которая не даст выполнить произвольный код? Как устроить API и выбрать нужный уровень абстракции? Как показать пользователю ошибки, как лучше организовать документацию, как обучить новых пользователей? Когда это вообще оправдано?

Видео и презентация →

Дмитрий Киселев, Endpoint.com

Python Robot Operating System вместо Middleware framework

Мы визуализируем интерактивные 3д среды. Если без buzz-words, то нам надо синхронизировать зоопарк из 20-50 разных приложений на 4-5 нодах, так, чтобы разные инстансы Google Earth знали, в каком направлении смотрит сосед, и карта на тачскрине следовала бы за вашими передвижениями. Приложения разные: от веб-приложений в браузере до хитрообернутых продуктов гугла. Часть приложений обменивается данными раз в полчаса, другие же 60-120 раз в секунду, и еще миллион мелких проблем.

Первая попытка была сделать это на Java Middleware — об этой попытке либо хорошо, либо ничего — то есть ничего.

В докладе я расскажу, почему мы выбрали RobotOperationSystem (ROS) и почему он вам нужен, даже если вы не робот.

Видео и презентация →

Иван Цыганов, Positive Technologies

Осторожно, DSL!

Каждый разработчик рано или поздно сталкивается с предметно-ориентированными языками (DSL). Мы разберемся, зачем же нам нужны DSL, и какие проблемы они нам помогают решать. Поймем, в каких случаях нам стоит разрабатывать свой язык, а в каких — использовать уже существующий. Попробуем провести грань и решить, где у нас просто библиотека, а где — предметно ориентированный язык. Придумаем свой DSL и сравним различные подходы к работе с ним в Python. Увидим, как работают лексический и синтаксический анализаторы. Обязательно поговорим про то, как облегчить жизнь пользователям нашего языка. Как сделать информативными сообщения об ошибках? Как тестировать сценарии, написанные на нашем языке? На эти вопросы мы сможем дать ответ.

Видео и презентация →

Алексей Лавренюк, Яндекс

Мастер-класс «Один день из жизни нагрузочного тестировщика в Яндексе»

Я покажу, как с помощью Python решать задачки, очень часто встречающиеся в жизни нагрузочного тестировщика (и не только). Вместе с вами мы научимся анализировать логи для того, чтобы понимать характер нагрузки, фильтровать их, делать из них патроны, обрабатывать результаты тестов и сравнивать их, а затем представлять в виде красивых графиков.

Для участия в воркшопе потребуется ноутбук с установленными на нем: git, python 3, jupyter notebook (не обязательно, но удобно), numpy, pandas, matplotlib, seaborn

Martin Gorner, Google

Tensorflow and deep learning, without a PhD

Google has recently open-sourced its framework for machine learning and neural networks called Tensorflow. With this new tool, deep machine learning transitions from an area of research into mainstream software engineering. In this session, we will teach you how to choose the right neural network for your problem and how to make it behave. Familiarity with differential equations is no longer required. Instead, a couple of lines ofTensorflow Python, and a bag of "tricks of the trade" will do the job. No previous Python knowledge required.

Видео и презентация →