Курс Python: Промышленная разработка [2022]
bigdata team
Алексей Драль
Авторский курс Python от Алексея Драля для IT-специалистов. С нами вы научитесь писать чистый и поддерживаемый код как в лучших технологических компания.
Почему мы сделали этот курс?
Монолитный, неподдерживаемый код сложно тестировать, изменять, дебажить. Когда вы почти все свое время тратите на поддержку, а до релиза в прод проходит бесконечность ─ это признаки неподдерживаемого кода. Когда вы не можете воспроизвести результаты исследований своих коллег ─ это признаки неподдерживаемого кода. Когда вы не можете быстро проверить правильность факторов для модели машинного обучения ─ это признаки неподдерживаемого кода.
Цель курса ─ научить вас писать код, который легко читать, тестировать, отлаживать, поддерживать и расширять. В этом смысл слов "промышленная разработка".
Для кого этот курс
1. Разработчики
Освоите лучшие практики разработки ПО, научитесь писать поддерживаемый код, прокачаете знания Python. Подойдет Junior и Middle разработчикам.
2. Аналитики
Научитесь писать код, который позволяет воспроизводить результаты исследований и эффективно проверять гипотезы.
3. Data Scientists
Научитесь писать код, готовый к интеграции в продукт или сервис.
Часть 1 - Тестирование приложений, консольные приложения, юникод и кодировки
Вы научитесь работать с распределенными файловыми системами, познакомитесь с экосистемой Hadoop, разберетесь с оптимизацией MapReduce вычислений и работой с Hive.
1.1 Тестирование приложений
1.1 Тестирование приложений
- Что такое TDD и как правильно делать рефакторинг.
- Пишем юнит-тесты с помощью pytest и PDB.
- Что такое DevOps и как помогает жизни CI/CD.
- Изменяем аргументы командной строки (CLI), а не код.
- Разбираем аргументы консольного приложения с помощью argparse.
- Следим за качеством кода с помощью pylint, покрытием кода тестами pytest-cov и скоростью выполнения тестов.
- Как правильно создать логику callback-вызовов в зависимости от аргументов командной строки и причем здесь open-closed principle.
- Что такое Unicode, character и code point.
- Познаем разницу между bytes и Unicode.
- Расширяем консольное приложение для работы с кодировками UTF-8, koi8-r.
- Учим изменять кодировку стандартных потоков входа (STDIN) и выхода (STDOUT).
Часть 2 - Логирование, Mock внешних зависимостей, автоматизация работы с Web
Вы научитесь настраивать логирование, работать с имитацией поведения внешних ресурсов, использовать Web-технологии для автоматического парсинга интернет-страниц.
2.1 Логирование в Python, YAML
Часть 3 - Паттерны проектирования, Web-сервис, мониторинг приложений2.1 Логирование в Python, YAML
- Знакомимся с особенностями реализации logging в Python.
- Настраиваем логирование с помощью YAML-конфига.
- Изучаем поведение различных уровней логирования.
- Тестируем реализацию с помощью caplog fixture в pytest.
- Изучаем patch и Mock.
- Изменяем поведение тяжеловесных функций или внешних вызовов на примере sleep в тестах.
- Познаем контекст вызова для правильной реализации patch / mock.
- Знакомимся (или вспоминаем) Web под капотом (HTTP, HTML, OSI Model).
- Автоматизируем поиск / мониторинг внешних сервисов с помощью библиотеки requests.
- Вычленяем нужную информацию из HTML с помощью lxml, XPath и BeautifulSoup.
Вы познакомитесь с самыми используемыми паттернами проектирования, напишете собственный Web-сервис и научитесь его деплоить и тестировать.
3.1 Паттерны проектирования
3.1 Паттерны проектирования
- Введение в паттерны проектирования (Design Patterns).
- Порождающие паттерны (Creational) на примере Factory Method и Abstract Factory.
- Поведенческие паттерны (Behavioral) на примере Strategy.
- Структурные паттерны (Structural) на примере Composite.
- Задание на декоратор (Decorator).
- Flask, werkzeug и Jinja2.
- Познаем что такое wsgi, почему Flask в чистом виде не катит для production.
- Тестирование и разработка Flask-приложений через TDD-парадигму.
- Flask json API, templates и static.
- Масштабируем приложение на примере gunicorn и Nginx.
- Создаем поддерживаемые Web-сервисы и настраиваем мониторинг на примере Graphite и Grafana.
https://bigdatateam.org/ru/python-course