Конференция завершена. Ждем вас на Moscow Python Conf ++ в следующий раз!

Заявки на доклады

Поиск по тегам:

Тестирование и автоматизация

Убивай мутантов, спаси свой код

Никита Соболев

У вас настроен супер-стрикт-набор валидаторов кода, обязательная аннотация типов без Any и требования стопроцентного покрытия кода тестами? Вот и у нас тоже да. Но тогда для вас не секрет, что ошибки все равно будут. И никакие тесты вас не спасут. Потому что они плохие.

Плохие? Почему плохие? А потому что вы не тестрируете ваши тесты! Приходите на мой доклад, я научу вас как тестировать тесты и упарываться по их качеству.

Python
Доклад принят в программу конференции

Укрощая зверя: legacy-код, тесты и вы

Кирилл Борисов

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

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

О чем вы узнаете:
* как начать разговор с вашим начальством и не быть осмеянным;
* возможные векторы атаки на "логово зверя";
* какие грабли могут поджидать ступивших на этот путь;
* всякие мелочи, которые вам пригодятся (или нет).

Python
,
Стандарты кодирования
,
Рефакторинг
,
Методы и техника разработки ПО
,
Legacy системы, жизненный цикл продуктов
Доклад принят в программу конференции

Базы данных и ORM

История aiopg

Алексей Фирсов

Почему появилась библиотека aiopg, какие были совершены ошибки (только мое мнение)? Разберемся, что это. ORM? Драйвер? Может быть, все вместе? Может, это что-то другое? Попробуем сравнить aiopg vs asyncpg.

Python
,
Организация доступа к базам данных, ORM, собственные драйвера
Доклад принят в программу конференции

Управление зависимостями и инфраструктура

How we test 1'000 Python projects in Kiwi

Alex Viscreanu

At Kiwi.com we have lots and lots of Python projects, some important ones are more than 5 years old. With our explosive growth from a small start-up into an international company, it's critical for us to manage code quality at scale. If we find some issue with nginx configuration, we need an automated way to check all projects for it. One year ago we created our own "Zoo" project, which is open sourced! This "reverse-test-system" constantly crawls all our repositories and checks a wide range of issues, from simple "wrong dependency version" and up to tricky GitLab and deploy misconfiguration. In the talk I will showcase how you can set the "Zoo" for yourself and what tests we are using for our code. Hope some of them can be useful for you code base too!

Доклад принят в программу конференции

Как варить вкусный статический анализ кода

Илья Лебедев

У вас настроен супер-стрикт-набор валидаторов кода, обязательная аннотация типов без Any и требования стопроцентного покрытия кода тестами? У меня тоже нет. Это не потому, что мы с вами бесполезные и непрофессиональные разработчики, а потому что надо дело делать, а не типы вылизывать.

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

Python
,
Стандарты кодирования
Доклад принят в программу конференции

Сеть, бэкенд и web-разработка

Эволюция Тинькофф Журнала: от Wordpress до Django с React

Вадим Гончаров
Арсений Габдуллин

Мы в Тинькофф стараемся экспериментировать с разными штуками и развивать то, что «взлетело». Так, четыре года назад родился Тинькофф-журнал: эксперимент про обучение людей финансовой грамотности. Эксперимент успешный, и за годы мы эволюционировали проект от простого блога на Wordpress до Django-комбайна с быстрым фронтендом на ReactJS.

Доклад будет про эволюцию: как безболезненно для бизнеса «на лету» менять технологии с сохранением пользовательского опыта, чем Django лучше готовых решений, нужно ли добавлять к ней ReactJS-фронтенд и зачем.

Доклад принят в программу конференции

Инструменты domain driven design

Артем Малышев

Сложность бывает неотъемлемой и привнесённой. Из доклада вы узнаете, как организовывать первую и минимизировать вторую. Поговорим о том, как построить свой продукт вокруг решаемой проблемы, а не используемого фреймворка. Узнаем, в каком месте лучше вводить typing и dataclasses. Рассмотрим, где нам пригодится контрактное программирование и pydantic. Попробуем библиотеки из проекта dry-python. И, конечно, не обойдётся без тестов. Только практика. Никаких UML-схем и абстрактных фабрик фасадов.

Python
,
Архитектурные паттерны
,
Рефакторинг
Доклад принят в программу конференции

Как мы в Яндексе следим за производительностью веб-приложений

Кирилл Дунаев

Большинство разработчиков собирают логи своих приложений. Обращения к базе данных, HTTP-запросы и ответы API, задачи Celery. Логи полезны: там видны пятисотки от внешних сервисов, проседания производительности и неожиданно возросшее время ответа после деплоя в пятницу вечером.

За годы работы с Django-приложениями мы в Яндекс заметили, что разные приложения пишут в лог примерно одно и то же. А мы, разработчики, не любим писать один и тот же код!

В докладе я расскажу про нашу внутреннюю библиотеку, которая автоматически подключается к нашим Django-приложениям и сама собирает множество логов, включая работы с ORM и HTTP-запросами. Кроме логов, я расскажу про нашу культуру работы с ними: кросс-дежурства, примеры "плохих" и "хороших" графиков, на что мы обращаем внимание, а что лучше игнорировать.

Python
,
Организация доступа к базам данных, ORM, собственные драйвера
,
Профилирование
,
Разработка библиотек, включая open source библиотеки
,
Логирование и мониторинг
Доклад принят в программу конференции

Цены на Avito: как мы управляем миллиардом значений

Дмитрий Климинский

Все цены на Avito выбираются программно: у нас есть команда аналитиков с Machine Learning, множество одновременных экспериментов и миллиард цен на разные услуги в разных городах. В докладе я расскажу про нашу инфраструктуру на Python, как мы работаем с данными, общаемся с аналитиками, отдаем цены для Frontend и быстро ищем нужные значения.

Доклад принят в программу конференции

Как создать десять приложений из одного и не сойти с ума

Анна Мошкина

Иногда мечта программиста сбывается, и можно раз за разом создавать одно и то же приложение с небольшими отличиями в логике работы и интерфейсе. А дальше все, как в фильмах ужасов: багфиксы и новые фичи должны применяться ко всем ранее созданным приложениям. И никаких миграций для баз данных!

В докладе я расскажу, как мы делаем такие штуки, динамически создаем приложения по JSON-описанию, используем "пластилиновую" архитектуру базы данных и тестируем одновременно наше "ядро" и десятки созданных приложений. И все это - на базе Django, PostgreSQL и Angular.

Доклад принят в программу конференции

Как мы делаем предсказуемо хорошие микросервисы

Олег Ермаков

Мы в ЦИАН любим микросервисы: на C#, на JS и, конечно же, на Python. Когда создаешь микросервис в 50-й раз, уже видишь повторяющиеся шаги и примерно представляешь себе "минимальный джентльменский набор" того, что должно быть внутри. 

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

В докладе расскажу о нашем подходе к созданию микросервисов: 
- генерацию базового шаблона;
- покажу, что скрывается в недрах каждого сервиса: нашу библиотеку "cian-core";
- о подходе к взаимодействию между сервисами, включая походы в базы данных;
- о логах и трассировке запросов;
- о том как конфигурируем, деплоим и мониторим микросервисы в продакшне.

Python
,
Микросервисы, SOA
,
Стандарты кодирования
,
Логирование и мониторинг
Доклад принят в программу конференции

OpenStack - Python-проект в 12 миллионов строк. История проекта, комьюнити, библиотеки и интересные решения

Вадим Пономарев

Доклад будет состоять из 6-ти частей.

Историческая справка: что это за проект, когда был основан проект и зачем, кем разрабатывалась первая версия, кто занимается им сейчас.

Как устроен: карта всего проекта в целом, микросервисная архитектура проекта, кем и зачем используется в настоящее время.

Размер проекта и комьюнити: количество проектов, количество репозиториев, количество строк в цифрах, сервис для сбора статистики комьюнити, какие компании участвуют в разработке.

Как ведется разработка: workflow проекта, используемые инструменты, выпуск релизов, управление зависимостями, как выполняется codereview и сколько в целом уделяется этому внимания. Кратко о документации проекта и сколько ей уделяется внимания. Об отдельном проекте для разворачивания среды разработки devstack.

Библиотеки и собственные решения OpenStack (проекты OSLO): о самых интересных библиотеках, написанных комьюнити OpenStack, какие проблемы решали, и что в итоге получилось.

Архитектурные паттерны
,
Отказоустойчивость
,
Распределенные системы
Доклад принят в программу конференции

Язык Python, его эволюция и использование

Python Governance

Benjamin Peterson

Last summer, Guido van Rossum retired as BDFL of Python. Consequently, the CPython project has had to adopt a new governance model. This talk will cover the history of the Python project, how the new CPython governance model was selected, and what the future might hold for CPython and the Python language.

Доклад принят в программу конференции

Что делать, если ваш код на Python тормозит

Григорий Бакунов

Секретный доклад от директора по распространению технологий в Яндексе.

Доклад принят в программу конференции

Как развивался Python в Яндекс

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

12 лет назад начался эксперимент по использованию Python в серьезных продуктах компании. Эксперимент получился удачным (кто бы сомневался!) и Python начал свое победное поползновение по сервисам компании. Яндекс.Афиша, Яндекс.Погода - через некоторое время сервисов стало очень много, и вместе с ними начали появляться "лучшие практики" и "устоявшиеся подходы" к решению разных задач.

В докладе я расскажу про 12 лет эволюции Python в компании: от первых сервисов, запаковывавшихся в deb-пакеты и раскатывавшихся на голое железо, до непростого монорепозитория с собственной системой сборки и облаком. Еще в рассказе будут Django, Flask, Tornado, Docker, PyCharm, IPv6 и другие штуки, с которыми мы сталкивались на протяжении этих лет.

Доклад принят в программу конференции

Elixir как цель развития для python async

Максим Лапшин

Питон длительное время существует в контексте других языков программирования и впитывает концепции из соседних окружений.

Tornado был скопирован с libevent. Asyncio тоже был позаимствован.

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

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

Сегодня концепции, которые легли в основу платформы erlang почти 30 лет назад в том или в ином виде находят своё проявление в системах типа http://seastar.io/

Хочу рассказать о том, в каком направлении вынуждена развиваться система, которая продолжает мигрировать от простого линейного кода к libevent и дальше.

Доклад принят в программу конференции

Разработка плагинов к mypy

Владимир Пузаков

Mypy помогает нам писать качественный код. Но не со всеми ситуациями он может справиться в одиночку. Для решения этой проблемы в mypy есть плагины. В данном докладе будет рассказано о ситуациях, в которых их нужно писать. Я покажу, как писать свой плагин для решения этих проблем, какие инструменты есть в mypy для этого, и как тестировать свой плагин.

Python
,
Разработка библиотек, включая open source библиотеки
Доклад принят в программу конференции

Go vs Python

Виталий Левченко

Go — волшебное слово, решение всех проблем продакшна разом и одновременно негодная технология без эксепшнов. Истина посередине, поэтому поговорим о конкретных примерах:
• asyncio vs горутины;
• производительность узких мест;
• лаконичность vs простота кода;
• порог входа;
• тулинг и паттерны поиска проблем и оптимизации производительности;
• обслуживание в продакшне.

В качестве бонуса простой кейс, где внедрение Go сразу дало 10-кратный выигрыш производительности.

Доклад принят в программу конференции

Аsync и await в production

Сергей Борисов

В "Домклик" больше 50 Python-разработчиков, и мы используем асинхронное программирование с самого начала наших проектов. Польза от корутин с async и await огромна, но вместе с этой пользой приходят специфические сложности. Неожиданно для разработчиков течет память, не ловятся исключения, а доступные "асинхронные" библиотеки для типовых задач часто очень сырые.

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

Доклад принят в программу конференции

Железо и IoT

Micropython для квестов в реальности и аркадных игр

Никита Левонович

Квестоделы применяют Micropython для разработки квестов в реальности последнего поколения и аркадных игр.

Современный квеструм - это около 15 электронно-вычислительных устройств, общающихся по сети (MQTT). Большинство из этих ЭВУ - микроконтроллеры (ESP32), которые управляют периферийными устройствами: mp3-плееры, реле и различные датчики, и используют устройства ввода-вывода: дисплеи, диоды, кнопки, клавиатуры и многие другие.

Однако, так было далеко не всегда, еще пару лет назад в квестах было гораздо меньше устройств, основным вычислительным модулем была Arduino, а общение между разными парами устройств могло происходить по разным протоколам.

Доклад будет посвящен формированию архитектуры, используемой командой КВЕСТОДЕЛЫ для решения подобных задач на micropython применительно к популярным микроконтроллерам от Espressif Systems.

Доклад принят в программу конференции

AI/ML и визуализация данных

Распределенное машинное обучение fblearner

Фёдор Шабашев

Когда вы начинаете использовать машинное обучение, Jupyter notebooks выглядит как самый подходящий инструмент. Но чем глубже вы закапываетесь в эту кроличью нору, тем сложнее становятся инфраструктурные вопросы: как переобучить модель на новых данных, если дата-сайентист заболел? Что делать, когда после трех суток обучения «мигнул» сервер с данными, или вы обнаружили в них ошибку? Как настроить CI/CD для проверки моделей и раскатывания их в прод? Как вернуть удачную модель месячной давности, на которой все так хорошо работало?

Для ответа на эти и другие вопросы мы в Facebook создали “FBLearner” - собственную инфраструктуру для машинного обучения. В докладе я расскажу, что она может, как мы ее используем, и что из нашего опыта вы можете использовать уже сейчас. Ну, и про ленту Фейсбука, конечно же, раз я в нем работаю :)

Доклад принят в программу конференции

ML в поиске и рекомендациях hh.ru

Игорь Киценко

Из доклада вы узнаете:
- как устроена система рекомендаций вакансий hh.ru;
- как в hh.ru перешли от стандартного полнотекстового поиска к поиску на основе машинного обучения;
- почему поисковая выдача hh.ru зависит от вашего резюме;
- как ML-сервис на Python может интегрироваться с поисковым движком на Java (Lucene).

Доклад принят в программу конференции

А что, если без Python? Julia для машинного обучения и вообще

Глеб Ивашкевич

Для машинного обучения есть много инструментов. Python, конечно, остается самым распространенным. Julia - не новичок, но совсем недавно стала пригодной для production-использования. Сравним, оценим сильные и слабые стороны и попробуем разобраться, для кого она подойдет.

Machine Learning
Доклад принят в программу конференции

Mars: A tensor-based unified framework for large scale data computation

Xuye Qin

Mars is a tensor-based unified framework for large-scale data computation. Github: https://github.com/mars-project/mars.

Mars tensor provides a compatible interface like Numpy, users can obtain the ability to handle extreme huge tensor/ndarray by simple import replacement. We extend the interface of Numpy to support create tensor/ndarray on GPU by specifying gpu=True on all the implemented array creation, and also, create sparse matrix via noting sparse=True on some array creation like zeros, eye and so on.

Mars can scale in to a laptop, and scale out to a cluster with thousands of machines. Both the local and distributed version share the same piece of code, it's fairly simple to migrate from a single machine to a cluster due to the increase of data. Mars is evolving quickly aimed at reaching production-level.

Mars is completely open sourced, and takes advantage of the great projects from Python community like numpy, cupy, numexpr, pyarrow etc to build the entire project. In the long term, mars is aimed to create a distributed counterpart of scipy stack which is not subject to the ability of a single machine.

This talk will focus on why we start the project of Mars and how we have done to ensure the simplicity of API and performance on huge terabytes-scale tensor/ndarray computation.

Доклад принят в программу конференции

Делаем Dashboard для авиакомпании: Dash и не только

Николай Фоминых

У нас в S7 много разных данных, например, мы собираем параметры наших самолетов и определяем лучшее время для техосмотра. Данные сложные, их много, показывать надо разным людям с разными целями. На ум сразу приходят Grafana и Dash, но действительно ли это лучшие решения?

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

Доклад принят в программу конференции