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

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

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

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, контейнеры и развертывание

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

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

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

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!

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

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

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

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

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
Доклад принят в программу конференции

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

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

Сеть, бэкенд и 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
- Создал на основе всего вышеперечисленного несколько коммерческих продуктов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Только ленивый не знает, что цифра 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, создает новые возможности .

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

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, синтаксического анализа и токенизации. Доклад об основных сложностях, которые нужно решить для успешной генерации юнит тестов. Мы разберемся, реально ли переложить на машину создание тестов на основе кода без использования дополнительных инструкций или контрактов.

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

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 делает много разных полезных штук, часть из которых предназначена для разработчиков. Мы внимательно следим, как программисты по всему миру используют технологии и помогаем там, где это приносит больше всего пользы.

Невозможно переоценить важность Data Science в современном мире! Однако если посмотреть на среднестатистический код для преобразования данных и выделения признаков, то количество "лапши" выходит далеко за границы разумного. Посмотрев, как пишут код сотни разработчиков, мы в Microsoft Commercial Software Engineering создали новую open source библиотеку mPyPl (Monadic Python Pipeline library), которая поддерживает ленивые конвейеры обработки данных с операцией "|" и позволяет писать код в функциональном стиле.

В доклада я расскажу про основные "боли", решаемые mPyPI, покажу примеры использования для классификации и обнаружения изображений, распознавания событий на видео, рендеринга видео, рисования когнитивных портретов и в других задачах. Через час после доклада мы проведем практический workshop, где вы сможете из нескольких ваших портретов составить один "собирательный" портрет с помощью аффинных преобразования,когнитивных сервисов Microsoft и монадической магии mPyPl.

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