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

Поиск по тегам:
Показать только принятые доклады

Офлайн 2021

Writing tests is a great start - but property-based testing libraries like Hypothesis can help you find bugs you didn't know were possible!

There are even more advanced techniques out there, like symbolic execution, fuzzing, metamorphic relations, and delta-debugging. Come find out how they work, why you'd use them, and change the way you think about testing!

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

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

В докладе расскажу, почему мы изначально долгое время использовали MongoDB в качестве брокера Celery, какие недостатки вынудили нас искать альтернативу, какие альтернативы мы рассматривали и что выбрали в итоге (спойлер - YMQ https://cloud.yandex.ru/services/message-queue).

Также освещу процесс перехода, с какими трудностями столкнулись, что пришлось изменить в коде проектов и какой эффект в результате получили.

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

Многие знакомы с методологией Test-Driven Development и, в частности, Behavior-Driven Development. Не трудно объяснить, почему данный подход к разработке и обеспечению качества ПО все больше набирает популярность: это своего рода прозрачное соответствие между бизнес-требованиями и технической реализацией продукта.

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

Во время презентации будет продемонстрирован сервис, реализующий возможность поведенческого тестирования Python3-проекта на основе PyTest с применением плагина pytest_bdd. В основе данного сервиса, реализуемого при помощи компактного Flask Admin, SQLAlchemy как ORM и Allure для предоставления отчетов, лежит переиспользование проектного кода для выполнения тестовых сценариев. Такой инструмент предоставляет возможность создавать, запускать и получать отчеты о выполнении, а также реализует интерфейс для администрирования сценариев и добавления в регресс. И все это позволяет существенно упростить возможность автоматизированного тестирования приложения без предоставления доступа к коду проекта.

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

asyncio набирает популярность, всё больше разработчиков начинают его использовать в стремлении повысить производительность разрабатываемых систем и КПД использования системных ресурсов.

При всех своих достоинствах, эффективное асинхронное программирование требует новых подходов и знаний. Эти подходы в многом непривычны "простому разработчику на flask/django", хотя эксперты в многопоточном программировании могут увидеть много общего.

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

В течение последних семи лет автор:
- принял деятельное участие в создании asyncio/async/await как части Python;
- на основе asyncio сделал серию библиотек: aiohttp и другие инструменты в организации aio-libs;
- создал на основе всего вышеперечисленного несколько коммерческих продуктов.

Лекция обобщает полученный в результате всей этой деятельности опыт.

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

Всё чаще перед инженерами, работающими с Big Data, стоит задача масштабирования ML-моделей, что зачастую заключается в адаптации некоторого Data Science-решения к работе в распределённой среде.

В докладе представлены подходы к решению задачи замены реализаций алгоритмов машинного обучения на распределённые аналоги. В частности, миграция c Scikit-learn на аналоги из библиотеки распределённого машинного обучения MLlib (PySpark). Рассматриваются модели для анализа семантики естественных языков TF-IDF и классические классификаторы (Наивный Байесовский и SVM).

Другими словами, мы пытаемся существующий pipeline перенести на рельсы спарка и показываем, какие трудности могут при этом возникнуть. От архитектуры решения до особенностей тюнинга гиперпараметров.

Key Words: Data Science, Big Data, Python, Spark, PySpark, MLlib, TF-IDF, Scikit-learn, SVC, NaiveBayes

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

Когда ты приходишь после многих лет разработки на джаве в мир пайтона, у тебя возникает странный диссонанс. Богатейший язык! Шикарное комьюнити! Батарейки не просто включены, их ещё и мешок в нагрузку дают! Но при этом: эммм, а про разделение ответственности тут слышали вообще? А что с экосистемой? Почему никто не думает о безопасности? Почему столько действий надо делать руками?

Поговорим о том, что и где пошло не так, как комьюнити с этим борется и что ещё предстоит делать.

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

Этот доклад — увлекательное путешествие через форматы пакетов, машинерию пакетных менеджеров и библиотек, dependency resolution и историю Python packaging. Ваш гид в этом путешествии — Грам, автор библиотеки DepHell, призванной бороться со злом.

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

* Краткий обзор тайп-чекинга в питоне, mypy, pep484.
* Как я писал библиотеку django-stubs.
* С какими проблемами столкнулся в процессе.
* Что еще планируется сделать.
* DEP (Django Enhancement Proposal) по поводу добавления типов в core.

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

Out with the old, in with the new. Replacing a functioning platform with shiny containerized automated goodness.

When companies evolve, their tech stacks need to as well. But sometimes you realize every single part of the machine needs evolving, and you're better off scrapping the entire thing.

Zero downtime migration from a legacy stack based on Jenkins, Ansible, Icinga, HAproxy, nginx, uwsgi, pypi, and Tomcat to a new one based on Travis, Docker, CloudFormation and ECS/Fargate with assorted tech debt solved on the way there.

A high level overview of current tech, leaning towards the "serverless" trend by having 0 self-managed resources ("classic servers"). Talk will focus on AWS offerings but is applicable to most of the popular public clouds.

It's basically a rich man's Heroku, with all the flexibility you might possibly need, while avoiding scary tech like Kubernetes which nobody wants to really learn how to manage properly.

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

Традиционно считается, что Microsoft хорошо поддерживает языки программирования на платформе .NET: C#, F# и т.д. Однако такое мнение несколько устарело, и в облаке Microsoft Azure многие языки являются first-class citizens. При этом, если речь заходит о машинном обучении, то на первый план выходит Python.

В докладе я покажу несколько примеров использования Python в облаке Azure, в том числе Azure Functions для запуска моделей в облаке и Azure Machine Learning для обучения.

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

Периодически возникают ситуации, в которых IDE не справляется с задачей рефакторинга. В этом случае мы пытаемся использовать поиск/замену по проекту, sed, awk и другой подручный инструментарий. Но чем сложнее задача, тем выше вероятность того, что придется прошерстить весь код и везде вручную внести требуемые однотипные изменения в сотнях файлов.

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

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

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

Но что, если вы не один? Как ужиться на одной машине 20 студентам, изучающим ML, или R&D-команде из 15? Готовые рецепты, рекомендации и собранные грабли.

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

Не секрет, что многие программисты на Python считают, что типы не нужны. Они мешают выражать свои мысли, ограничивают в возможностях, то есть просто не дают писать код. С другой стороны, разработчики на языках со статической типизацией как-то научились со всем этим справляться и вряд ли кто-то из них горит желанием избавляться от типов.

В этом докладе я продемонстрирую, как богатая строгая статическая система типов позволяет разработчикам выражать свои идеи в типах и заставляет компиляторы эти идеи проверять. Будет много примеров кода на таких языках, как Haskell и Idris (и даже на языках пострашнее!), поэтому будет сложно, но я попытаюсь объяснить эти примеры так, чтобы было понятно, как именно типы там работают. В частности, мы посмотрим на то, как вычисления на типах строго специфицируют Web API и отправляют данные на GPGPU, как зависимые типы позволяют использовать регулярные выражения для контроля значений переменных и реализовывать корректно работающие структуры данных, как линейные типы применяются для обеспечения гарантий корректности управления ресурсами, наконец, как типы высших порядков выражают целые классы систем сборки (да-да, это что-то про make!).

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

We have to write and deploy Python applications in many environments where security is the first class citizen of the project. Sometimes these are mission critical projects, sometimes they are being deployed in a place which is known to have targeted attacks.

This talk will go through the process of development cycle where we check dependencies and code via tools like 'bandit' and 'safety' to find known CVEs in dependencies or security issues in code.

After the code is ready to be packaged, we will go through the steps of building wheels from own Python package index to have reproducible Debian packages as output.

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

О Julia говорят много, красочно и пророчат ей славное будущее. Но так ли легко ее использовать в реальных системах? Мы решили проверить и мигрировали часть нашей системы предсказания сбоев и поломок на промышленном оборудовании с Python на Julia. Чем это закончилось, где лежали грабли и как самостоятельно написать model server на Julia я и расскажу.

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

Многие крупные компании исторически предпочитают использовать MS Windows. Я расскажу об опыте разработки Python-приложений для компаний, которые не любят Docker или WSL (Windows Subsystem for Linux), а предпочитают MS Windows в чистом виде.

Что будет в докладе: Windows-специфичные библиотеки для Python, нюансы работы планировщика, работа с логами, с COM, запуск Python-приложений как служб Windows, графические Windows-приложения, развертывание приложений и создание инсталляторов.

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

2020! Год победившего Python 3! Все больше и больше систем встает на новые рельсы, библиотеки гордо отказываются от поддержки старого языка и, кажется, ничто уже не остановит победную поступь новой эпохи...

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

Что же это означает на деле:
* отказ от перехода на новые версий сторонних библиотек;
* необходимость бэкпортить нужные куски из чужого кода на Python 3;
* невозможность использовать asyncio и прочие прогрессивные вещи из новых версий языка.

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

Но мы не пали духом, ведь на носу был ежегодный хакатон: 72 часа, никакого контроля и бесконечный бекон! Наша команда решила воспользоваться этим шансом и перевести весь продукт на Python 3, попытавшись не нанести непоправимого урона родной компании.

Как мы это сделали? Уложились ли в сроки? Все ли остались живы??

Ответы на эти и другие вопросы вы найдете в этом докладе.

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

Python has built-in tracing and profiling facilities in form of callback hooks in the sys module. The settrace and setprofile callbacks have several drawbacks. They slow down the Python interpreter considerable and only allow tracing of Python code. Modern OS and CPUs come with a variety of APIs for efficient and low-level tracing down to system calls, Kernel space code, and hardware events. Some tools even create code that runs in Kernel space.

This talk is an introduction and comparison of various low and high level tools for profiling and tracing as well as visualization tools like flame graphs. It covers ptrace, perf, SystemTap, and BCC/eBPF. Ptrace based commands like strace are easy

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

Делать research и обрабатывать большие массивы данных на Python c одной стороны удобно, но с другой стороны из опыта отправки pipeline’ов в продакшн следует, что возникает целый ряд проблем:
* потребление сотни гигабайт RAM из-за некомпактного хранения данных в памяти;
* длительная обработка больших коллекций;
* низкая скорость загрузки и сохранения больших коллекций в память и на диск.

Пути решения проблем, связанных с особенностями Python, в частности с аллокацией и управлением памятью в процессе работы pipeline и его частей, будут рассмотрены в моем докладе. Один из способов решения проблемы — это переписать эвристики в PyMalloc, но это путь самурая. Чтобы решить проблемы, надо разобраться в том, как работает PyMalloc и устроена иерархия памяти в Python.

Я расскажу, как организовать off-heap для Python, покажу способы укладывания Python-классов компактнее, чем это делает Arena allocator, рассмотрю бинарную сериализацию без pickle, которая, не теряя интерфейса pickle, дает нам новые возможности.

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

Только ленивый не знает, что цифра 2020 в календаре означает окончание поддержки Python 2. Что это означает на деле? Переход на Python 3 неизбежен?

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

В своем докладе я не буду рассказывать, как переходить на Python 3. Я расскажу о дискуссии, которая возникла в проекте World Of Tanks по поводу перехода на Python 3. Какие аргументы за и против высказывались, и к какому решению мы пришли.

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

Легаси-проекты — это страшно. Ладно еще, когда это что-то небольшое. Но как быть, если вам принесли чудовищного спрута, всех щупалец которого даже сразу не разглядишь, а разработчики, породившие его испарились?

Этот доклад — выжимка из последних пятнадцати лет спасения и похорон различных проектов. Он включает в себя пошаговые инструкции, страшные байки из жизни и ключевые штуки, которые надо проверять заранее: до того, как вы ввязались в очередную авантюру. Это теоретическая часть двухсерийного выступления, в которой я расскажу, что вытаскиваю из заказчиков, на что смотрю в проектах, как оцениваю сроки. А если интересно, как я разгребаю неизвестный код на практике — приходите на воркшоп “Как разобраться в legacy-коде, который вы видите первый раз в жизни”.

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

Building data pipelines are a consolidated task, there are a vast number of tools that automate and help developers to create data pipelines with few clicks on the cloud. It might solve non-complex or well-defined standard problems. This presentation is a demystification of years of experience and painful mistakes using Python as a core to create reliable data pipelines and manage insanely amount of valuable data. Let's cover how each piece fits into this puzzle: data acquisition, ingestion, transformation, storage, workflow management and serving. Also, we'll walk through best practices and possible issues. We'll cover PySpark vs Dask and Pandas, Airflow, and Apache Arrow as a new approach.

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

Soon or later in their career, every programmer has to deal with data validation. Be it a web, desktop or mobile application, you just cannot avoid data validation. A robust, powerful yet easy-to-use data validation library can be a valuable tool in your toolset. Cerberus is a lightweight and extensible open source data validation library for Python. It provides type checking and other validation, transformation and normalization rules out of the box and it is designed to be easily extensible and customized.

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

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

Так началось моё увлекательное путешествие в мир метапрограммирования, AST, синтаксического анализа и токенизации. Доклад об основных сложностях, которые нужно решить для успешной генерации юнит-тестов. Мы разберемся, реально ли переложить на машину создание тестов на основе кода без использования дополнительных инструкций или контрактов.

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