Fork me on GitHub

Июль 22–23

PyCon Russia 2018

Рус Eng

Дмитрий Ходаков, Авито

Tornado vs Aiohttp

На дворе 2018й год, кругом микросервисы в kubernetes и машинное обучение. У нас в Авито полно и того, и другого. Когда у вас на руках несколько десятков нагруженных микросервисов поневоле задумаешься о производительности асинхронных приложений.

В докладе я расскажу про:

— типичные проблемы и подводные камни при построении нагруженного микросервисного фреймворка;

— профилирование асинхронных приложений;

— фундаментальные отличия асинхронности tornado и aiohttp;

— честное сравнение tornado vs aiohttp в условиях, приближенных к боевым.

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

Вадим Пуштаев, Mail.Ru

Юнит-тесты в проектах Поиска mail.ru

Я расскажу, как мы в Поиске пишем юнит-тесты. От мелочей типа: как именовать, какова структура каждого теста и т.д., до крупных вопросов: как дела с TDD, как мокать, как быть с внешними системами, типа баз данных, с файловой системой, как мы живем с fixtures, почему надо тестировать приватные методы и подобное.

Доклад будет полезен для любого уровня разработчиков и широкого спектра проектов: от веб-приложений до крупных систем типа биллинга.

Я постараюсь отдельно донести принципы, которыми мы руководствуемся, и отдельно приемы, с помощью которых мы этим принципам следуем. После доклада можно будет немедленно переосмыслить подходы к юнит-тестированию, которые разработчики применяют в своих проектах.

Александр Кошелев, Яндекс

Сборка Docker образов без build зависимостей

Docker стал по сути стандартом де-факто распространения и деплоя приложений на всех платформах. Мы тоже используем его для дистрибуции наших проектов в облако. Одна из здач, которая встает перед разработчиком при использовании Docker: как сделать сборку быстрой и эффективной. Под эффективностью я понимаю в том числе и размер финального образа. Увы, python библиотеки всё ещё часто распространяются в виде исходников, и для сборки проекта требуются какие-то системные зависимости. После успешной сборки эти зависимости зачастую остаются в образе и увеличиват его размер, хотя по факту больше не нужны.

Я расскажу, как мы решали эту проблему: собирать образы без build зависимостей. Образы в итоге получаются более легковесными и, как следствие, быстрее деплоятся, а значит быстрее доходят до наших пользователей.

Сергей Карпович, Вадим Березкин, mos.ru

Как сделать удобную для пользователей поисковую систему

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

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

Доклад будет полезен разработчикам поисковых систем для сайтов и порталов.

Виталий Давыдов, POTEHA DEVELOPERS

Serverless + Python на примере AWS Lambda

В настоящее время для деплоя веб-сервисов компании используют кластеры из контейнеров, которые нужно поддерживать. Несколько лет назад на рынке появилась новая FAAS (function-as-a-service) технология для разработки и деплоя под названием Serverless. Serverless практически полностью исключает необходимость devops и позволяет разработчикам сфокусироваться на написании бизнес-логики приложений. На Serverless можно запускать как высоконагруженные сервисы, так и быстро разрабатывать MVP и прототипы.

В докладе мы поговорим о том, как перейти на Serverless, какие решения есть на рынке и сколько это стоит. После доклада мы рассмотрим небольшую live демку по деплою API на Serverless с использованием Python.

Доклад будет полезен стартапам, малым и средним компаниям, которые хотят оптимизировать стоимость разработки, время на devops и time-to-production.

Евгений Слезко, Marilyn System

Переход на SOA в существующем Python-проекте. Тяжеловато или ничего?

В докладе я поделюсь нашим опытом внедрения сервисно-ориентированной архитектуры в системе, которая разрабатывается на языке Python уже более 5 лет. Зачем это нужно? Какие проблемы решает, а какие создает? О чем стоит позаботиться в самом начале? Какой профит как с точки зрения инженера, так и с точки зрения управления разработкой?

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

Christian Heimes, Red Hat

SSLError, now what?

TLS/SSL is the most important and widely-used protocol for secure and encrypted communication, e.g. HTTPS. It offers more than just encryption. TLS also ensures data integrity and strong authentication with X.509 certificates. But it provides merely a false sense of security if you use it wrong.

Have you ever encountered SSLError while connecting to a server, but you didn’t understand what is going on? Are you running production code without TLS/SSL protection or with certificate validation disabled, because you couldn’t figure out how to make it work correctly?

I’ll give you the rundown of the basic cryptographic building blocks, protocol handshake, inner structure of certificates, and PKI. You’ll learn about the best practices, debugging tools and tips how to diagnose TLS/SSL and how to deal with certificates.

This talk is suitable for both beginner and advanced Pythonistas.

Александр Меньшиков, Лаборатория Конструирования Интеллектуальных Систем

Мастер-класс «Робототехника с Python и ROS»

Python — не только про веб и асинхронность. Наша команда использует его для создания интеллектуальных роботизированных систем.

На мастер-классе мы с вами:

— поговорим о самом популярном фреймворке в сфере робототехники, его архитектуре, возможностях и применении;

— узнаем, как с его помощью взаимодействовать с микроконтроллерами;

— научим систему находить объекты всего лишь одной веб-камерой;

— заставим подчиняться голосовым командам и отчитываться о каждом его шаге;

— и, конечно, напишем на Python собственные компоненты, объединим их в единую систему и увидим результат.

Мы разберем, как от простого модуля обмена данными можно прийти к прототипу автономной турели, способной без помощи оператора произвести поиск цели и известить о статусе выстрела. Мастер-класс будет интересен не только разработчикам и специалистам, связанным с роботостроением, но и всем заинтересованным в применении Python в разных областях.

Обратите внимание на требования к установленному софту, если вы планируете участвовать в мастер-классе.

Валентин Малых, Алексей Лымарь, МФТИ

Воркшоп «DeepPavlov: open-source python library for dialog systems»

На воркшопе вы научитесь делать своего чат-бота (например, для Телеграм или любого другого IM-сервиса). Мы покажем, как работать с данными для обучения диалоговой системы и как пользоваться готовыми моделями, доступными в библиотеке DeepPavlov.

Обратите внимание на инструкцию к установке DeepPavlov, если планируете принять участие в воркшопе. Установите его заранее.

Melanie Warrick, Google

Reinforcement Learning

Reinforcement learning is a popular subfield in machine learning because of its success in beating humans at complex games like Go and Atari. The field’s value is in utilizing an award system to develop models and find more optimal ways to solve complex, real-world problems. This approach allows software to adapt to its environment without full knowledge of what the results should look like. This talk will cover reinforcement learning fundamentals and examples to help you understand how it works.

Марина Камалова, Яндекс

Архитектура чат-бота

Я расскажу, из каких python-компонентов можно создать текстового чат-бота. Что происходит от момента получения пользовательского сообщения до момента получения ответа от бота (NLU, NLG, ML-классификаторы). Как адаптировать бота под разные мессенджеры и не только мессенджеры. А также, как повысить отказоустойчивость бота на примере Telegram API.

Доклад будет интересен всем, кто так или иначе интересуется созданием чат-ботов, в том числе для Telegram. Возможно, тем, кто хочет применить знания по NLP.

После моего доклада вы поймёте, как и из каких «кирпичиков» сделать чат-бота, а также как сделать его на берегу отказоустойчивым и масштабируемым.

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

Спортивное программирование на Python

Спортивное программирование — прекрасная дисциплина, чтобы улучшить ваши навыки в программировании и математике. Обычно все участники используют C / C ++ / Java, но в последнее десятилетие мы видим, что растет число участников, которые используют Python.

Я расскажу, как начать соревноваться, используя Python, дам пару личных советов и трюков, как подготовиться и начать участвовать в соревнованиях. Я покажу вам, как мотивировать себя на практике, как определить класс проблемы и как ее решить. Я продемонстрирую вам некоторые ограничения Python и способы избежать правильных и быстрых решений. Расскажу, как овладеть искусством тестирования и как взламывать и генерировать скрытые тестовые примеры и границы. Также я объясню, как быстро оценить сложность вашего решения без большого количества доказательств и математики, чтобы получить желаемый AC (Accepted).

Kate Heddleston, Shift

Technical Debt in Python

Technical debt is something that every team has to deal with at some point; often sooner than you'd think. This talk is about what is technical debt, what specifically does it look in python, and how can you think about reducing technical debt.

Юрий Селиванов, Андрей Светлов и Christian Heimes

Core Development Panel

Core Development Panel — три Core Developer-а ответят на любые вопросы из зала: про будущее python, про проблемы, сообщество и все, что вас интересует. Готовьте вопросы, будет интересно!

Антон Патрушев, Spherical

Как перестать заботиться об окружении и начать жить

Что разработчик хочет от хорошего, отлаженного окружения? Предсказуемости, скорости развёртывания, минимальных телодвижений. Чик-чик и работать. Каждый, кто занимается профессиональной разработкой на чём угодно старается сделать свою ежедневную деятельность более комфортной. Это хорошо видно по количеству инструментов, которые доступны разработчикам: их арсенал ширится с каждым годом. При этом, как и везде, серебряной пули нет: чтобы достичь желаемого приходится долго копать их все, подбирать подходящую комбинацию инструментов под себя и «дружить» их между собой.

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

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

Итак:

— devpi: почему вы обязательно должны иметь свой package index и о том, почему у нас их много;

— как нужно дружить с extras_require из setup.py чтобы было легко;

— pew и почему он, на наш взгляд, лучше альтернатив;

— зачем нужен Docker на машине каждого разработчика.

Юрий Селиванов, EdgeDB, asyncio

Asyncio сегодня и завтра

Alejandro Saucedo, Eigen Technologies

Industrial Data Pipelines with Python and Airflow

This talk will provide a practical deep dive on how to build industry-ready machine learning / data pipelines using Airflow. This will consist of a practical presentation that will build from the basics of Airflow, and show how it is possible to build scalable and distributed machine learning data pipelines using a distributed architecture with a Celery backend. I will provide insights on some of the key learnings I've obtained throughout my career building & deploying machine learning systems in critical environments across several sectors.

Stephan Jaensch, Yelp

Type annotations with large(r) codebases

You've heard about type annotations, you know they help reduce bugs and improve documentation especially for large codebases, and you've attended an introductory talk or read a tutorial about using them. But how do you get started using them with your big, existing codebase? How do you make sure your colleagues will be annotating new code they write - or existing code they're changing? And how do you get around some of the issues you might run into when using the still-beta type checker mypy on your codebase?

This talk will start where the typical introductory Python type annotation talks end and discuss the real-world challenges when starting to annotate types with an existing codebase of tens or hundreds of thousands of lines of code. I'll walk you through best practices learned from doing just that at Yelp, telling you about some of the roadblocks we hit (and how we got past them). We'll also take a look at:

— how you can get the most out of type annotations even with non-annotated third-party libraries

— how to deal with decorators and other things that currently don't always work well with annotations

— when the only way to get proper type checking is through refactoring your code.

Денис Катаев, Тинькофф

SQLAlchemy: Python vs Raw SQL

Мы ежедневно работаем с реляционными базами данных: изменяем объекты, накатываем миграции, создаем индексы. Но иногда нужно агрегировать данные по нескольким полям или хочется попробовать свежие возможности реляционных баз данных, например, оператор Union. Django или PeeWee умеют выражать только простые вещи, поэтому приходится использовать сырой SQL.

А вот библиотека SQLAlchemy может выразить любой сложный запрос на чистом Питоне. Это позволяет писать понятный код и с легкостью его рефакторить.

Разберемся на примерах, как SQLAlchemy устроена изнутри, как она упрощает нашу работу и когда стоит ее применять (спойлер — всегда).

Елена Никитина, Система

Сделано на коленке: как из парсера получился полноценный проект

Что вы делаете, когда вас пытаются вытащить на конференцию со словами «у тебя же такой крутой проект, почему бы тебе о нем не рассказать?»

Часто приходится встречать ярких разработчиков, которые решают самые неординарные задачи, но годами не выходят за пределы своей команды. Я и сама, профессионально программируя на С++ более 10 лет, так и не выпустила ни один публичный проект на этом языке. А хотелось.

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

В докладе я расскажу о том, как:

— начать свой первый open-source проект так, чтобы он стал заметным;

— доработать идею на костылях до полноценного проекта, не принуждая себя;

— собираются устойчивые команды и что вам даст такая команда;

— использовать такой проект для разностороннего развития.

А также кое-что про реверс-инжиниринг сайтов, недооцененные возможности хабра и о том, как Ярославль и Санкт-Петербург помогали Москве отлаживать код.

Доклад — для разработчиков любого уровня. Если вы хотите помогать другим, мечтаете о своем гитхабе и статье на хабре, но не знаете, с чего начать или просто стесняетесь, — добро пожаловать.

Сергей Борисов, ДомКлик

Воркшоп «Cython — программирование на C для людей»

Python имеет отличные возможности для интеграции с кодом на языке C. Это позволяет с небольшими затратами оптимизировать критичные к производительности функции, сохраняя гибкость. Иногда это проще, чем переписывать весь сервис на Go / Rust. Я покажу, какими инструментами можно пользоваться для решения таких задач, и мы вместе напишем синхронный клиент с простым протоколом.

Обратите внимание: для участия в воркшопе нужно взять свой ноутбук с установленными на нем Jupyter Notebook, Cython, Redis или Docker.

Максим Мазаев, ЦИАН

Как поддерживать согласованность API в микросервисной архитектуре

Я расскажу о принципах разработки микросервисов в ЦИАН и о том, как мы боремся с типичными проблемами их поддержки — версионированием и согласованностью API. Как менять API, ничего не поломав. Как контролировать согласованность через CI-систему. Рассмотрим вопросы кодогенерации и swagger-схем.

Доклад будет полезен разработчикам, интересующимся микросервисной архитектурой.

Donald Whyte, Engineers Gate

High Performance Data Processing in Python

The Internet age generates vast amounts of data. Most of this data is unstructured and needs to cleaned. Python has become the standard tool for transforming this data into more useable forms.

numpy and pandas are the most popular Python libraries for processing large quantities of data. For small datasets, these libraries do the job without much effort. However, when running complex transformations on larger datasets, many developers fall into common pitfalls that kill the performance of these libraries.

This talk explains how numpy and pandas work under the hood and how they use vectorisation to process large amounts of data extremely quickly. We show an example dataset being processed using numpy/pandas. We demonstrate how to use these libraries effectively, reducing the processing time of this large dataset from several hours to seconds.

Михаил Коробов, ScrapingHub

Машинное обучение для извлечения данных из веба

Все знают, как написать веб-паука на Python: берем Scrapy / Selenium / requests и скачиваем странички с сайта, затем используем XPath / CSS / BeautifulSoup селекторы (+ регулярные выражения), чтоб извлечь нужную информацию. Но подходы сильно отличаются, когда информацию хочется автоматически извлечь из сотен тысяч сайтов - правил и эвристик тут недостаточно.

В докладе я расскажу о том, каким образом машинное обучение может применяться для написания «умных» веб-пауков:

  • как классифицировать веб-страницы;
  • как научить пауков «понимать» элементы страниц: веб-формы, паджинацию и т.д.
  • как выделять информацию из веб-страниц в структурном виде;
  • как научить пауков не скачивать ненужные страницы - дубликаты, страницы не по теме.

Будут примеры из практики, в том числе примеры использования Deep Learning и Reinforcement Learning; расскажу также о доступных Open-Source компонентах, из которых можно таких умных пауков собирать.

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

7 советов по редактированию кода в PyCharm

Среды разработки больше всего известны своими интеграциями с инструментами и возможностями по навигации в проектах. А как насчёт редактирования кода?

Я расскажу о 7 приёмах редактирования кода в среде PyCharm, которые невозможно или сложно реализовать в текстовых редакторах. Эти приёмы выполняют действия не над строками, а над синтаксическими и семантическими структурами Python: переменными, выражениями, функциями. Мы обсудим, позволяет ли это редактировать код быстрее и какие недостатки есть у этого подхода.

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

Aiohttp от автора

В докладе расскажу про текущую ситуацию, опишу планы на будущее и дам советы по правильному применению.

Алексей Кузьмин, ДомКлик

Асинхронность изнутри

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

Ling Zhang, Aiden.ai

NLP to Discover Rich Insights from Massive Noisy Text

In this talk, I present a case study of how we extracted rich, actionable insights from a large noisy corpus of unstructured survey responses for a government entity. We reduce time to analysis from months to minutes. We use scikit-learn and NLTK to explore techniques such as clustering, natural language understanding, and summarization, and go over both practical methods and the underlying theory.