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

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

Железо и IoT

Hardware projects have always been notoriously difficult to develop and deploy to production compared to their software-only counterparts. However, recent developments in the Python ecosystem for hardware have made the jump from idea to production significantly easier. In this talk, we show how we deployed a sensor network to measure sound, temperature, co2 and also provide the ability for occupants to set their 'working mode' in an office environment. We explore the Python libraries used for each component and also dive into what worked well and what we would do differently. We finish, with the impact on well-being that was enabled by data that was enabled by the sensor project.

Программный комитет ещё не принял решения по этому докладу

Информационная безопасность

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.

Программный комитет ещё не принял решения по этому докладу

DevOps, контейнеры и развертывание

Совместная работа надо кодом является эффективным способном как улучшения качества кода, так передачи опыта внутри комманды. В то же время в последнее время всё больше разработчиков находятся на удаленной работе, комманды становится распределенным. Современные облачные средства рарзработки позвовляют повысить взаимодествие между разработчиками в распределенных коммандах. Какие проблемы можно решить перенся всю разработку в облако и сделав разработчика "тонким клиентом" для инфраструктуры разработки. Сравнителеьный анализ технологий (https://aws.amazon.com/ru/cloud9/ и https://github.com/cdr/code-server). Стоит ли это внедрять или хотя бы смотреть в эту сторону? Практические аспекты внедрения: как подводные камни, грабли ограничения, измнение нагрузки на инфраструктуру так и приемущества которые удалось получить за счет использование данного подхода. Упрощают ли облачные средства разработки жизнь python разработчику?

Программный комитет ещё не принял решения по этому докладу

Современный мир накладывает ряд требований на процесс ввода приложения к эксплуатацию. Основной целью является легкость поиска и устранения проблем (в частности - с производительностью). Автор собрал небольшую лабораторию, которая позволяет ему быстро идентифицировать и устранять проблемы. Мы научимся инструментировать приложения, строить флеймграфы, использовать distributed tracing и делать правильные выводы на основе собранных данных.

Программный комитет ещё не принял решения по этому докладу

Do you like the experience of immersing yourself into the perfect ‘virtual’ world? Then get ready, this talk will support you to build your own virtual reality experience on the web! Get ready to learn to develop VR!

Программный комитет ещё не принял решения по этому докладу

Вы мечтаете построить такую автоматизировнную систему деплоя, в которой минимизирована необходимость иметь отдельную DevOps команду для управления ей? В своем докладе я поделюсь с вами, как сделать первые шаги в этом направлении используя Gitlab CI, docker, Helm и Kubernetes. Вы узнаете, как создать Helm Charts для своих сервисов, о процессе их деплоя в Kubernets.

Технологии виртуализации и контейнеризации
,
Управление конфигурацией
,
Непрерывное развертывание и деплой
,
Непрерывная интеграция
,
Devops / другое
Программный комитет ещё не принял решения по этому докладу

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 talks 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

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

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

Как выглядят тесты распределенных систем, требующих достижения консенсуса между сотнями серверов? Какие системы тестируются таким образом и почему эти тесты нельзя проводить локально? Возможно ли создание сколько-нибудь универсальных решений для подобного тестирования, что общего есть у таких тестов? Какие программные решения можно эффективно соединить вместе для автоматизации подобных тестов? Почему в качестве “клея” для них имеет смысл выбрать Python? Каковы результаты, насколько быстро их удалось достичь и какие проблемы встретились по дороге?

Логирование и мониторинг
,
Технологии виртуализации и контейнеризации
,
Автоматизация разработки и тестирования
,
Нагрузочное тестирование
Программный комитет ещё не принял решения по этому докладу

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

When it comes time to choose a distributed messaging system, everyone knows the answer: Apache Kafka. But how about when you’re on the hook to choose a world-class, horizontally scalable stream data processing system? When you need not just publish and subscribe messaging, but also long-term storage, a flexible integration framework, and a means of deploying real-time stream processing applications at scale without having to integrate many different pieces of infrastructure yourself? The answer is still Apache Kafka.

In this talk, Viktor will give a rapid-fire review of the breadth of Kafka as an event streaming data platform. You will see its internal architecture, including how it partitions messaging workloads in a fault-tolerant way and how it provides message durability. Viktor will explain Kafka’s approach to pub/sub messaging and how Python developers can leverage a framework for computation over streaming data.

Базы данных / другое
,
Микросервисы, SOA
,
Архитектурные паттерны
Доклад принят в программу конференции

Продолжение прошлого доклада, поговорим про то как можно взаимодействовать в БД, как ORM вносит путаницу. Посмотрим для каких задач какой инструмент взаимодействия лучше.

Программный комитет ещё не принял решения по этому докладу

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

Python
,
Бэкенд / другое
,
Организация доступа к базам данных, ORM, собственные драйвера
,
Методы и техника разработки ПО
Программный комитет ещё не принял решения по этому докладу

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

Вам необходимо начать тестировать большое веб-приложение, но вы не знаете с чего начать. Taretto призван помочь в создании python API для ваших тестов. Это коллекция библиотек включает в себя абстракции вокруг selenium, фреймворк для навигации внутри между страницам, базовые классы для описания сущностей тестируемого веб-приложения и другие полезные штуки. Taretto не ограничивается только UI тестированием, вы также с лёгкостью можете его использовать для тестирования REST API, GraphQL и других интерфейсов.

Функциональное тестирование
,
Автоматизация тестирования
,
Интеграционное тестирование
,
Тестирование фронтенда
Программный комитет ещё не принял решения по этому докладу

Многие используют для хранения документации вики страницы (например, confluence). Это доставляет кучу неудобств начиная от неактуальности документации до сложности её версионирования.
Эти проблемы решаются переносом документации в исходники (pydoc) и последующей её автогенерацией. Но как это всё сделать, если уже тонны информации лежат на вики страницах? Давайте разберемся.

Python
,
Бэкенд / другое
Программный комитет ещё не принял решения по этому докладу

Решение направлено на повышения эффективности операционной деятельности ИТ компаний/отделов.

Решаемые проблемы
- операционная нагрузка на ИТ сотрудников
- скорость реакции на инциденты
- высокая вероятность ошибки при ручном конфигурировании ИТ систем

Тренды в которых работает проект
- тренд на автоматизацию в ИТ
- тренд на перемещение операционной деятельности в корпоративные мессенджеры

Любой скрипт на языке высокого уровня (Python) без адаптации передается платформе Skillpub (www.skillpub.org), которая автоматически определяет участки кода где осуществляется взаимодействие с пользователем (ввод/вывод текстовых данных, файлов, изображений и т.д.) и строит коннекторы для данного скрипта в корпоративный мессенджер (Slack, Telegram и др.). Сотрудник выполнивший автоматизацию своей задачи передает скрипт платформе (роботу). После этого коллеги могут запросить у робота выполнение задачи, при этом будет реализован весь заложенный в задачу интерактив и коллеги получат результат выполнения задачи. Автор скрипта не думает как интегрировать в скрипт взаимодействие с корпоративным мессенджером, как контролировать доступ к задаче, как мониторить корректное исполнение задачи, как осуществлять логирование и т.д.. Все это выполняется платформой.

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

В докладе будет рассказано о опыте использования платформы Skillpub в Тинькофф Мобайл.

Программный комитет ещё не принял решения по этому докладу

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!

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

Использование Asyncio + Python в тестах плюсы и минусы.

Программный комитет ещё не принял решения по этому докладу

BDD-тестирование на основе PyTest с переиспользованием кода приложения. Масштабирование процесса BDD-тестирования без предоставления доступа к коду проекта. Функциональный и компактный сервис для создания BDD-сценариев на Flask Admin и SQLAlchemy.

Фреймворки
,
Python
,
Совместная работа, система контроля версий, организация веток
,
Автоматизация разработки и тестирования
,
Работа со внешним заказчиком/исполнителем
,
Функциональное тестирование
,
Автоматизация тестирования
Доклад принят в программу конференции

Do you wish you didn’t waste your time writing code that is relevant? Or passes the requirement? Worry not – Test driven development will help your overcome that! Come and learn how your careful planning the code you write in order to pass these tests will boost up your performance!

Программный комитет ещё не принял решения по этому докладу

Зачем нужно тестирование производительности? Какие инструменты использовать? Как подружить инструменты тестирования с CI-pipeline и системой мониторинга?
На эти и некотороые другие вопросы я попытаюсь ответить в данном докладе, используя свой 8-летний опыт разработчика высоконагруженных сервисов на Python/Erlang/Elixir.
Я расскажу о проверенных в бою инструментах - locust, wrk, Jmeter, а также о том, как встроить эти инструмент в Jenkins и завести у себя pipeline непрерывного тестирования. Также поделюсь опытом визуализации результатов тестирования и их отображением в реальном времени(почти).



P.S. Это драфт, финальный отшлифованный вариант тезисов будет готов позже, после локального митапа (скорее всего в январе).

Python
,
Непрерывная интеграция
,
Нагрузочное тестирование
,
Автоматизация тестирования
,
QA / другое
,
Lua
Программный комитет ещё не принял решения по этому докладу

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

Tartiflette is a brand new GraphQL Implementation built with and for python 3.6+, based on Dailymotion's experience of running a GraphQL API in production for 2,5 years.

We will discover the story of Tartiflette and some interesting features provided by the SDL First approach of Our engine.

Программный комитет ещё не принял решения по этому докладу

Do you marvel at the idea of production-grade Deep Learning that can scale infinitely in nearly constant time?

Using an NLP application as an example, you will learn how to design, build and deploy deep learning systems using serverless computing (Function As A Service). PS: Talk contains code!

Программный комитет ещё не принял решения по этому докладу

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

Эксплуатация. С какими запросами в процессе вывода и эксплуатации приходится сталкиваться. Маршрутизация запросов. Распараллеливание исполнения запросов. Конкуренция моделей. Версионирование данных и моделей. Мониторинг и алертинг. Валидация данных и признаков. Сохранение признаков для быстрого переобучения.

Типичные ошибки. Почему Python не является узким местом при исполнении моделей в реальном времени. В каких местах возникают ошибки. Где есть ресурс для обеспечения требуемой производительности при принятии решений в реальном времени.

Python
,
Микросервисы, SOA
,
Отказоустойчивость
,
Оптимизация производительности
,
Распределенные системы
,
Архитектура данных, потоки данных, версионирование
,
Алгоритмы и их сравнение
,
Масштабирование с нуля
,
Синхронизация данных, параллельная обработка, CDN
,
Архитектуры / другое
,
Непрерывное развертывание и деплой
,
Менеджмент в эксплуатации
,
Непрерывная интеграция
,
Теории и техники анализа
,
Инфраструктура как сервис (IaaS), платформы как сервис (PaaS)
,
Технологии “быстрых решений”, “быстрого прототипирования”
,
Коллаборативная работа
,
Процессы и инструменты в enterprise
,
Импортозамещение
,
Internet of Things
,
Big Data и Highload в Enterprise
,
Интеграция web и enterprise-решений
,
Web-scale IT / другое
,
Machine Learning
,
ETL
,
ClickHouse
Программный комитет ещё не принял решения по этому докладу

Generating deepfakes has become much easier using Deep Learning and Computer Vision methods with the abundance of data available these days. Researchers and engineers are now pushing forward to develop robust methods to detect deepfakes. In this talk, we'll examine the characteristics of deepfakes and discuss how to develop Machine Learning models to automatically detect deepfakes.

Программный комитет ещё не принял решения по этому докладу

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.

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

Всё чаще перед инженерами, работающими с 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

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

Модели прогнозирования временных рядов хорошо зарекомендовали себя в экономике и социологии, а также они неплохо подходят для email-маркетинга. При помощи таких моделей можно:

1. Спрогнозировать количество действий, совершенных пользователем в будущем.
2. Сегментировать пользователей.
3. Спрогнозировать благоприятное время и частоту отправки контента.

В докладе рассмотрим примеры построения моделей прогнозирования с использованием Python, разберем следующие этапы:

1. Подготовка датасета для обучения (удаление выбросов, конструирование признаков).
2. Кластерный анализ.
3. Построение модели на основе прогнозирования временных рядов.

Программный комитет ещё не принял решения по этому докладу

Оптимизация гиперпараметров в машинном обучении - это один из главнейших шагов, выполняемых исследователями и аналитиками для повышения и стабилизации качества выбранной модели. Основная проблема в том, что гиперпараметры не могут быть непосредственно рассчитаны алгоритмически в ходе обучения модели и должны быть заданы до того, как начнется "тренировка". От того, насколько верно будут подобраны гиперпараметры, зависит то, сможет ли ,в конечном счете, модель обнаружить закономерности в исследуемых данных и спрогнозировать максимально близкий к истинному результат в соответствии с бизнес потребностями.
Поставленная задача осложняется тем, что набор гиперпараметров может быть достаточно велик (от десятков до сотен). Простой перебор значений вряд ли будет эффективен с точки зрения временных и ресурсных затрат на обучение. Более того, этот процесс должен быть итеративным, так как в модель поступают новые данные, а старые могут терять актуальность.
В докладе будет рассмотрен подход, который мы использовали для решения этой проблемы, на основе оптимизации Байеса с использованием Гауссовских случайных процессов. Будет описана наша реализация алгоритма (использованы python библиотеки Keras и TensorFlow), включая архитектуру сервисов, обеспечивающих постоянную фоновую работу по поиску потенциально новых, еще более оптимальных, наборов гиперпараметров (использован фреймворк MLFlow). Мы сравним полученные результаты с теми, что были получены ранее при использовании алгоритма традиционного случайного перебора параметров. Сделаем выводы и кратко опишем дальнейшее развитие решений поставленной проблемы (на примере black-box подхода с Google Vizier).

Программный комитет ещё не принял решения по этому докладу

Особенности и лайфхаки настройки JupyterHub для большой Data Science команды. Как правильно организовать работу на общих серверах. Даже если команда состоит из одного человек, вы вынесете новые хитрости.
Но что, если вы не один? Как ужиться на одной машине 20 студентам, изучающим ML, или RND команде из 15? Готовые рецепты, рекомендации и собранные грабли.

Программный комитет ещё не принял решения по этому докладу

Mars is an open-source project which aims at accelerating data science tools like numpy, pandas, scikit-learn and so forth with technology of parallelism and distributed systems. Data scientist or engineer would be able to make slight modification on the old code to migrate to Mars in order to accelerate their tasks. Machine learning tasks could also leverage Mars to accelerate the data manipulation and processing as well.

This talk would talk about the current workflows for data science and machine learning, how Mars could play a role to unite and accelerate the current workflows. The implementation behind would be mentioned as well.

Программный комитет ещё не принял решения по этому докладу

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

Интеграция Python-приложений с Windows API при помощи PyWin32

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

О чем именно я хочу рассказать:

1. Какие программные библиотеки мы используем под MS Windows. Поговорим о совместимости следующих групп библиотек с MS Windows:
- Web-фреймворки
- Драйверы баз данных
- WSGI-серверы
- Распределенные очереди задач
- Брокеры и межпроцессное взаимодействие
- Библиотеки для анализа данных
2. Работа с планировщиком задач MS Windows.
- Как правильно настроить полномочия для выполнения задач планировщика без необходимости входа пользователя в систему
- Создание задач вручную, импорт задач из XML
- Создание задач программным способом
3. Запись логов в журнал событий MS Windows.
- Настройка полномочий для корректной работы системы логирования Python
- Использование NTEventLogHandler из стандартной библиотеки Python для работы с журналом событий Windows
4. Менеджер учетных записей MS Windows
- Используем встроенные возможности MS Windows для хранения учетных данных при помощи библиотеки '''keyring'''
5. Задействуем технологию COM на примере интеграции с продуктами MS Office.
- Сравнение 2-х подходов: работа с .xlsx-файлами при помощи библиотек основанных на работе с XML и при помощи технологии COM
- Используем '''xlwings''' для управления Exсel-моделями из Python-приложения.
6. Разрабатываем супервизор процессов.
- Особенности мультипроцессинга в MS Windows
- Рассмотрим пример супервизора процессов
7. Запуск Python-приложений в качестве служб Windows.
- Настройка полномочий для работы с Windows-сервисами
- Установка и настройка PyWin32 для корректной работы Windows-сервисов на Python
- Использование виртуальных окружений Python с Windows-сервисами
- Регистрация, удаление, запуск и останов Win-сервисов. Стратегии восстановления после сбоя.
- Отладка Win-сервисов
8. Графические Desktop-приложения.
- Применение PyQt
- Разработка Desktop-приложений с Web-интерфейсом.
9. Приложения для Windows Tray.
- Применение библиотеки '''pystray''' для создания приложений Windows Tray.
10. Развертывание web-приложений под MS IIS.
- MS IIS в качестве реверс-прокси для Web-приложений, написанных на Python
- Проксирование WebSocket
11. Поставка решения в закрытый периметр заказчика.
- Особенность сборки проекта на Python без доступа к интернет
– Включаем pip-пакеты в комплект поставки
- Вопросы лицензирования применяемых библиотек
- Варианты защиты исходных кодов
12. Пишем инсталлятор для MS Windows с использованием NSIS.
- Пример инсталлятора

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

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

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

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

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

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

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

У нас в Яндексе существует сервис, который берёт на себя управление доступами в других сервисах. Подключаемых систем много (~300), поэтому важна гибкость в настройке подтверждения доступов.
Пользовательский Python-код, используя доступ к внутренним API, конфигурирует различные сценарии подтверждения. Мы спроектировали и реализовали систему на основе контейнеризации, которая исполняет его в изолированной песочнице.
В докладе я расскажу об аспектах безопасности и производительности исполнения недоверенного кода в контейнерах и опишу механизм доступа к внешним объектам и вызова API изнутри контейнера.

Системы прав доступа
,
Python
,
Бэкенд / другое
,
Безопасность программного кода, SQL и прочие инъекции
,
Технологии виртуализации и контейнеризации
Программный комитет ещё не принял решения по этому докладу

Как поднять процессинг и сделать биллинг
1. Введение и основные термины
- Чем биллинг отличается от процессинга? Первое - это все, что связано с начислениями клиентам за какие-то услуги, второе - процесс проведения оплаты.
- Как появился первый онлайн процессинг
- Какие регуляции существуют со стороны государства

2. Основные проблемы, которые придётся решать
процессинг:
⁃ Обработка ответов от банка(genric_decline > do_not_honor > insufficient_funds)
-- Защита от мошенников (3d secure)
-- Возврат средств: reversal, refund, chargeback
-- Два этапа транзакции: authorization, settlement/capture
-- Что такое клиринг и когда он проходит
биллинг:
⁃ Trial период, скидки и налогообложение
⁃ Не теряем ни копейки с десятичными числами
общая:
Синхронизация данных биллинга и процессинга на примере рекуррентных платежей

3. Как быстро реализовать биллинг и процессинг на Stripe(то же самое есть в российских аналогах прим: яндекс.касса)
⁃ Быстро и просто — готовая платежная форма
⁃ Несколько уровней абстракции в API
⁃ Custom payment flow

4. С чем столкнулись мы в AppFollow
- Миграция со старого API Stripe
- Strong Customer Authorization

Программный комитет ещё не принял решения по этому докладу

Вам знаком потрясающий паттерн проектирования "Толстая Модель"? Нет, я не про бодипозитивных девушек, я про джанго-модели. За 10 лет разработки на джаве я такого не видел ни разу. Поговорим о том, как штуки делаются в джаве, как в питоне, почему это видится странно и какие есть решения.

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

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

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

Что же это означает на деле:

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

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

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

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

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

Фреймворки
,
API
,
Python
,
Бэкенд / другое
,
Логирование и мониторинг
,
Интеграционное тестирование
,
Юнит-тестирование
Доклад принят в программу конференции

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

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

Традиционно разработку на питоне принято хаять за GIL, плохую многопоточность и неудобную асинхронность. Как можно без боли добавить себе в проект очереди задач, выполнение в несколько потоко в и что вообще есть для параллельного/"многопоточного" выполнения если вас мутит от 'async def' и вам лень разбираться в чём отличия между ProcessPoolExecutor и ThreadPoolExecutor.

На лекции я рассмотрю реалистичный пример обработки долгих пользовательских запросов на примере библиотек rq, huey, и celery. Посмотрим также на текущее состояние dask и "а как там это всё делать в стандартной библиотеке"

API
,
Бэкенд / другое
,
ETL
Программный комитет ещё не принял решения по этому докладу

Я расскажу, как мы отрефакторили бэкенд Тинькофф-журнала: бурно растущего медиапроекта с большой аудиторией и сложными редакционными процессами. Наряду с предсказуемым «распилом» монолитного приложения на сервисы решили еще и съехать с Django на более современный (и, разумеется, асинхронный) Python-фреймворк, попутно внедрив практики строгой типизации и валидации в бизнес-логике.

В программе доклада:
— почему мы отказались от Django, хотя его возможности, казалось бы, хорошо покрывали наши потребности,
— почему выбрали для core API проекта очень молодой фреймворк FastAPI: какой выигрыш нам это дало...
— ...и конечно же, какие новые проблемы пришлось решать — и как это отразилось на сроках рефакторинга,
— как мы неожиданно эффективно для себя внедрили проверки типов данных в рантайме, используя Pydantic,
— демо побочного результата рефакторинга — нашей собственной DRF-подобной асинхронной библиотеки.

Фреймворки
,
Миграции данных
,
API
,
Python
,
Бэкенд / другое
Программный комитет ещё не принял решения по этому докладу

Подходы Clean Architecture Роберта Мартина и Domain Driven Design Эрика Эванса были предложены довольно давно, но, пожалуй, лишь сейчас они набирают популярность и входят в лексикон многих разработчиков. Мы пытаемся применить эти методы (или, по крайней мере, некоторые их принципы) при разработке довольно большой корпоративной системы, намереваясь решить возникающие при этом проблемы и по возможности не создать новых. В процессе мы опираемся на open-source библиотеки (например, dry-python project и pydantic) и строим serverless-архитектуру на AWS. Эксперимент ещё в процессе, и мы подвезли вам немного вестей с фронта.

Python
,
Микросервисы, SOA
,
Архитектурные паттерны
,
Работа с Amazon
Программный комитет ещё не принял решения по этому докладу

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

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

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

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

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

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

Django Rest Framework очень популярен, но готовые бэкенды для фильтров имеют скромный функционал. В Ingram мы любим и используем DRF, а так как у нас много сложных API, то мы хотели иметь простой, но полнофункциональный язык фильтров для запросов. Мы внимательно изучили, что есть на рынке и сделали производительную библиотеку для DRF, которая позволяет в строке браузера писать сложные логические запросы простым и понятным синтаксисом. В докладе я расскажу "почему не GraphQL?", про наши требования к библиотеке, про альтернативы и детали реализации. Покажу как работает RQL и как вы можете добавить фильтрацию в свои REST API приложения на DRF.

API
,
Python
,
Бэкенд / другое
,
Организация доступа к базам данных, ORM, собственные драйвера
,
Разработка библиотек, включая open source библиотеки
Программный комитет ещё не принял решения по этому докладу

Пока не придумал
Расскажу про проект NeuroCore. EasyHosting/EasyStorage/EasyLearning ML моделей.
Стэк: python, mongo, kafka, k8s, docker.
В проекте есть все самое интересное: ML/Large Data/Highload/Microservices/K8S.
Расскажу про архитектуру, как мы делали, с какими проблемами сталкивались, как их решали. Расскажу про проблемы k8s, про docker in docker in k8s, утечки памяти, мониторинг моделей, немного про нагрузку.

Python
,
Микросервисы, SOA
,
Архитектурные паттерны
,
Отказоустойчивость
,
Разработка библиотек, включая open source библиотеки
,
Технологии виртуализации и контейнеризации
Программный комитет ещё не принял решения по этому докладу

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

Рефакторинг - обычно это слово вызывает у разработчиков некоторый дискомфорт, но рефакторинг является неотъемлемой частью разработки и часто он сопряжен с серьезными изменениями кодовой базы и не всегда это просто переписывание кода, иногда это и внедрение/обновление библиотек. В своем докладе я расскажу, как мы пришли к решению провести рефакторинг, какие ошибки ожидали нас на пути, поделюсь нашими решениями, а так же раскрою секрет - как удержаться от дикого желания переписать проект с нуля вместо рефакторинга.

Программный комитет ещё не принял решения по этому докладу

Mypy можно пользоваться по-разному. Формально это инструмент для статической проверки типов; кто-то включает его вместо юнит-тестов; кто-то называет его просто "умным линтером".

Но у mypy есть еще одно скрытое достоинство. Оно проявляется не сразу, но оказывается важнее всех остальных. Mypy хорош тем, что развивает вас как инженера и как архитектора.

Мой доклад будет про архитектурные практики: про связность, сопряжение, принципы SOLID, паттерны проектирования: про всё то, о чем в Python-сообществе не принято задумываться, - динамический язык, "мы все тут взрослые люди" и так далее. Я покажу, как mypy, шлепая нас по рукам, заставляет соблюдать эти практики и писать более качественный и поддерживаемый код.

Программный комитет ещё не принял решения по этому докладу

In this lecture, we will learn about “gaze detection”, a technique that allows you to know the exact place where the people are looking inside a mono(2D RGB) picture with deep learning and how we can implement the gaze360 paper \0/

Программный комитет ещё не принял решения по этому докладу

Apache Spark is a popular distributed computing tool for tabular datasets that is growing to become a dominant name in Big Data analysis today. Dask has several elements that appear to intersect this space and we are often asked, “How does Dask compare with Spark?”

This talk attempts to clear this by providing real-life use cases solved using both and walk-through numerous benchmarks done on Petabyte scale data.

Программный комитет ещё не принял решения по этому докладу

Вы слышали, что хобби можно превратить в способ заработка приносящий удовольствие? Как обычный программист может это сделать из своего side-проекта в реальной жизни? Мотивация, поиск свободного времени, выбор идеи, полезные книги и курсы, подводные грабли. На эти основные вопросы я постараюсь ответить в своем докладе. Расскажу, о своем опыте за последние пять лет. Поделюсь опытом open source разработки, важными уроками от взаимодействия с сообществом на github’е, полезными рецептами для построения бизнес модели и поиска клиентов.

Программный комитет ещё не принял решения по этому докладу

Do you want to learn how to identify the various components present in the image? Want to know if the image is of a cat playing with a ball or drinking milk? Then come learn about object detection with localisation with YOLO - a state of the art, real-time object detection system!

Программный комитет ещё не принял решения по этому докладу

There are plenty of applications that process data based on rules; such as those for log processing, event detection, anomaly detection, and event processing. Data that is encountered in such applications is usually in the form of text or JSON. In this talk, we will focus on rules based data processing techniques for JSON data. Similar techniques can be used to process textual data if the format of the data is known and the data can be tokenized into fields on which rules can be applied.

The nature of JSON data allows it to get more and more complex by allowing it to define recursively nested objects, which can make it difficult to be processed based on rules.

The talk is about how python can be used to write simple rules to discover JSON data that obeys or disobeys those rules, progressing into creating rules to process recursively nested data, designing appropriate data formats to define the rules themselves for being evaluated on recursively nested objects, structuring the code to improve overall efficiency of object discovery using short-circuit evaluation methods, adding logical rule evaluation capability, and culminating in creating a Domain Specific Language (DSL) for defining rules that can be evaluated on any type of recursively nested JSON data. The DSL will make the application flexible to addition, revision, or deletion of rules on-the-fly.

Архитектурные паттерны
,
Теории и техники анализа
Программный комитет ещё не принял решения по этому докладу

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

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

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

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

Мнение "Python отлично подходит на роль первого языка программирования" распространено очень широко. Более того, часто можно услышать что-то вроде "Python очень простой, вы практически пишете псевдокод". Но так ли прост язык с точки зрения новичка, просто ли ему учить, достаточно ли Python хорош для роли "самого первого языка программирования"? Я несколько лет обучал языку Python в разных форматах (наставник для джуниоров, ментор, преподаватель online-курсов), успел поучить людей самых разных возрастных категорий, обладающих самым разным опытом. Хочу поделиться своими наблюдениями и опытом, а также донести до слушателя, насколько важным может быть выбор первого языка в жизни будущего разработчика, и почему так важно осмысленно подсказывать путь новичкам.

Программный комитет ещё не принял решения по этому докладу

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

Стандарты кодирования
,
Рефакторинг
,
Методы и техника разработки ПО
Программный комитет ещё не принял решения по этому докладу

In this talk, we will learn more about DensePose, a Facebook project to map all human pixels of an RGB image, to a 3D surface of the human body in real-time \0/

Программный комитет ещё не принял решения по этому докладу

OpenAPI is a great API specification standard to use in a multi-service environment. Schema is a great first step, but if standardized it unlocks great potential: tooling, automated tests, reuse and greater collaboration. We will go over examples of this potential and how to harness these capabilities.

Enforce your schema programmatically and use it to test your code. Reuse internal standards through your ecosystem, without consistency issues on your dependants. Examples are in Python: implementation and demonstration of some principles, and how they integrate.

The talk will present and demo Schemathesis, a tool that generates test cases for your Open API schemas. Open source, on Github.

Программный комитет ещё не принял решения по этому докладу

Python и Data Science в наше время неразрывно связаны. Почему же так вышло, за что саентисты любят этот язык? Поговорим о преимуществах Jupiter notebooks и устроим краткий обзор популярных библиотек для чтения и преобразования данных. Также рассмотрим синтаксис базовых операций преобразования датафреймов. А на закуску немного погрузимся в DS-задачку и математику!

Программный комитет ещё не принял решения по этому докладу

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

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

In this talk, I will share some useful tips on how to take your first steps in becoming an international tech speaker, as learned from my experience as a producer of various tech conferences in the past 3 years, such as AngularUP, React Next, Node.TLV and React Week NYC

Программный комитет ещё не принял решения по этому докладу

Have you ever thought of using data visualization to represent data; but feel that it is a cumbersome process? Worry not – Orange is here to the rescue! Come, dive into the world of this magical open source data mining tool that can also be used as a Python library. Beginner friendly!

Программный комитет ещё не принял решения по этому докладу

Categorical variables are quite common in Data Science.Properly dealing with Categorical variables is crucial for model performance.The talk will be super-practical, provide a broad view of a wide number of approaches at your disposal,and give some ideas about what to try in different situations.

Программный комитет ещё не принял решения по этому докладу

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

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

Есть две большие причины, по которым вам стоит изучить Rust. Во-первых, это язык нацеленный на производительность выполнения. А во-вторых, на продуктивность в разработке. В докладе разберем, как перевести бекенд на него, и что он может дать вам, даже если не написать на нем production-кода.

Программный комитет ещё не принял решения по этому докладу

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

При разработке системы моделирования экономики нефтяных месторождений возникла проблема – взрывной рост сложности системы и времени прохождения тестов. Ситуации могла бы помочь статическая типизация, но её нет, а в mypy проверяет слишком мало. Для решения этой проблемы вычисления были реорганизованы в виде направленного ациклического графа (DAG) где узлами являются вычислительные модули, а ребрами – потоки данных, но его перестройки были чрезвычайно трудозатраты, а в силу юности проекта требовались регулярно.
Тогда был применен следующий подход: связи между вычислительными модулями устанавливаются не непосредственно, а через инверсию управления и задаются аннотациями типов на их методах.
Таким образом в процессе инстанцирования системы и до запуска тестов или расчётов удается построить вычислительный граф, верифицировать его на наличие циклов, проверить что все входы модулей обеспечены соответствующими выходами. Кроме того, использование DAG позволяет произвести автоматическое распараллеливание вычислений, что позволяет полностью задействовать современные многоядерные процессоры.

Python
,
Методы и техника разработки ПО
Программный комитет ещё не принял решения по этому докладу

Только ленивый не знает, что цифра 2020 в календаре означает окончание поддержки Python2. Что это означает на деле? Переход на Python 3 неизбежен?
Вопрос о переходе на Python3 только с первого взгляда может показаться простым и однозначным. Но если попытаться посмотреть на проблему со стороны бизнеса или простого игрока, да и порассуждать здрава как инженер, то все не так уж и однозначно.
В своем докладе, я не буду рассказывать как переходить на Python3. Я расскажу о дискуссии которая возникла в проекте World Of Tanks по поводу перехода на Python3. Какие аргументы за и против высказывались и к какому решению мы пришли.

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

Делать resersh и обрабатывать большие массивы данных на python, c одной стороны, удобно. Но с другой стороны, из опыта отправки pipeline’s в продакшен следует, что возникает целый ряд проблем:
потребление сотни гигабайт ram из-за некомпактного хранения данных в памяти;
длительная обработка больших коллекций;
низкая скорость загрузки и сохранения больших коллекций в память и жесткий диск.
Некоторые проблемы связаны с незнанием особенностей python или со спецификой проекта.
Пути решения проблем, связанных с особенностью python, в частности с аллокацией и управлением памятью в процессе работы pipeline и его частей, будут рассмотрены в докладе.
Один из способов решения проблемы - это переписать эвристики в PyMalloc, но это путь самурая.
Чтобы решить проблемы, надо разобраться в том, как работает PyMalloc, и устроена иерархия памяти в python.
Расскажу, как организовать off-heap для python.
Покажу способы укладывания python класс компактнее, чем это делает Arean allocator.
Рассмотрим бинарную стерилизацию без pickle, которая, не теряя возможности pick, создает новые возможности .

Программный комитет ещё не принял решения по этому докладу

1. Детство
1) Дирекция больших данных – новое подразделение в X5, построено за 2 года с нуля.
2) Изначально создавалось как аналитическое подразделение и не предполагало разработки (или минимальное использование)
3) В процессе работы стало понятно, что разработка не только будет, но её будет много, так как есть потребность со стороны бизнеса
4) Так как мы создавали дирекцию с нуля, не имея бэкграунда, то выбрали самый популярный и мощный язык разработки для backend - Java https://www.jetbrains.com/research/devecosystem-2018/ и React для frontend
5) Разработали прототипы продуктов

2. Отрочество
1) В процессе работы поняли, что разработчики думают алгоритмами, а Data Scientists думают как математики. Т.е. есть незакрытый сегмент работы: есть backend, есть DS, нет промежуточного слоя.
а) Не всем задачам нужна тяжелая артиллерия (Java)
б) Артиллерия — это дорого
2) Вывод - нужно развивать разработку на Python

3. Юность
1) Развиваем направление Python
а) Набрали Data Engineer и разработчиков на Python
б) Data Engineer - новое направление между разработкой и БД
в) Начали делать небольшие продукты на Python
2) Проблемы, с которыми мы столкнулись
а) нет Python-сеньоров

4. Зрелость
Что впереди: примерные пути развития
1) Определить границы ролей
2) Вырастить лидов разработчиков на Python либо комплексную команду с разработкой на нескольких языках

Программный комитет ещё не принял решения по этому докладу

This talk will be focusing on PyWebView, a library to build cross-platform (Linux, MacOS, Windows) GUI for Python application using modern web technologies (HTML, CSS, JS).

I will be talking about why and when we should use PyWebView, in contrast with conventional GUI frameworks and Electron. I will also be describing the application architecture of apps built with PyWebView, how it works underlyingly, and the strengths and limitations of PyWebView.

I will also briefly introduce the open-source application I built with PyWebView and share my experience over the course of development.

Программный комитет ещё не принял решения по этому докладу

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.

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

This talk is about how we can distribute in clusters with several workers training at the same time to improve your training time.

Программный комитет ещё не принял решения по этому докладу

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

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

Очень юный программист. На данный момент - 8 лет. Прогрессирует с невероятной скоростью. Создал несколько программ самостоятельно, педагоги, которые увидели впервые - подумали, что списал, потому что не верят, что разобрался сам. Получает первый сертификат об окончании курса по обучению программированию от Московской школы кодинга. Проходит курс на платформе Степик. Хочет поделиться опытом освоения текстового языка программирования с 7 лет (до этого был визуальный язык). Надеется стать частью комьюнити.

Программный комитет ещё не принял решения по этому докладу

Replacing a functioning backend hosting platform with shiny containerized automated goodness.

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

Поскольку Python является основным языком для Data Science, на нём приходится писать много кода для обработки данных. При этом зачастую это делается в императивном стиле, с использованием промежуточных переменных - что выглядит не очень изящно. Мы предлагаем использовать в задачах обработки данных функциональный стиль, который позволяет оформлять конвейеры обработки данных в виде цепочки совершаемых над ними преобразований, почти как конвейеры в операционных системах или оператор |> в F#.
Кроме того, в практических задачах часто нужно извлекать из данных целый набор признаков, которые затем будут подаваться на вход модели машинного обучения или нейросети. В этом случае удобно использовать конвейер данных с именованными полями, в которых каждая операция - это вычисление какого-то нового поля на базе уже существующих.
Для поддержки такого подхода нами была создана библиотека mPyPl (Monadic Python Pipeline library), которая поддерживает ленивые конвейеры обработки данных с операцией |, а также набор базовых операций над ними. Мы расскажем, как такой подход успешно применялся для классификации и обнаружения изображений, распознавания событий на видео, рендеринга видео, рисования когнитивных портретов и в других задачах.

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