План на курса
Ден 1 — Робустни основи на Python и инструментарии
Съвременни особености на Python и типизация
- Основи на типизацията, generics, Protocols и TypeGuard
- Dataclasses, замразени dataclasses и преглед на attrs
- Pattern matching (PEP 634+) и използване в Python
Качество на кода и инструментарии
- Форматирирачи и линтери: black, isort, flake8, ruff
- Проверка на типовете с MyPy и pyright
- Pre-commit hooks и работни процеси за разработчици
Менажмънт на проекти и пакетиране
- Управление на зависимости с Poetry и виртуални среди
- Структура на пакетите, точки входа и най-добри практики за версиониране
- Създаване и публикуване на пакети в PyPI и частни регистри
Ден 2 — Шаблони на проектиране и архитектурни практики
Шаблони на проектиране в Python
- Създаващи шаблони: Factory, Builder, Singleton (Python варианти)
- Структурни шаблони: Adapter, Facade, Decorator, Proxy
- Поведенчески шаблони: Strategy, Observer, Command
Архитектурни принципи
- SOLID принципи приложени към кодовете с Python
- Hexagonal/Clean Architecture и границите между компоненти
- Шаблони на dependency injection и управление на конфигурацията
Модуларност и повторно използване
- Проектиране на библиотека спрямо приложение
- APIs, стабилни интерфейси и семантично версиониране
- Управление на конфигурацията, секретите и средната за конкретна среда налива
Ден 3 — Конкуренция, асинхронен IO и производителност
Конкуренция и паралелизъм
- Основи на потоци (threads) и последствията от GIL
- Multiprocessing и процессни пули за CPU-ограничени задачи
- Кога да се използва concurrent.futures в сравнение с multiprocessing
Асинхронно програмиране с asyncio
- Модели на async/await, event loop и спирање (cancellation)
- Проектиране на асинхронни библиотеки и взаимосъвместимост с синхронен код
- IO-ограничени модели, обратно натискане (backpressure) и ограничаване на скоростта (rate limiting)
Профилиране и оптимизация
- Инструменти за профилиране: cProfile, pyinstrument, perf, memory_profiler
- Оптимизиране на горещите участъци (hot paths) и използване на C-расширения/Numba когато е уместно
- Мерки за задължителност, пропускнала и използване на ресурси
Ден 4 — Тестване, CI/CD, наблюдаемост и разполагане
Стратегии за тестване и автоматизация
- Юнит тестване и фиксации с pytest; организация на тестовете
- Property-based тестване с Hypothesis и контрактно тестване
- Макарни (mocking), монкейпатчинг (monkeypatching) и тестване на асинхронен код
CI/CD, пускане и мониторинг
- Интегриране на тестовете и врата за качество (quality gates) в GitHub Actions/GitLab CI
- Създаване на воспроизводими контейнери с Docker и многоетапни създания (multi-stage builds)
- Наблюдаемост на приложенията: структурирано логиране, метрики за Prometheus и трасиране
Сигурност, укрепване и най-добри практики
- Аудит на зависимости, основи на SBOM (Software Bill of Materials) и сканиране за уязвимости
- Практики за сигурно кодиране за валидация на входни данни и управление на секретите
- Укрепване при изпълнение: ограничения на ресурси, права на потребители и сигурност на контейнерите
Минипроект за завършване и преглед
- Лабораторна работа в екип: проектиране и имплементация на малко обслужване с помощта на шаблоните от курса
- Тестване, проверка на типовете, пакетиране и CI пайлири за проекта
- Крайна преглед, критика на кода и план за подобрения с конкретни действия
Резюме и следващи стъпки
Изисквания
- Средно-напреднал опит в програмирането на Python
- Запознаност с обектно-ориентираният подход и основното тестване
- Опит с използването на командния ред и Git
Целева аудитория
- Напреднали програмисти на Python
- Софтуерни инженери, отговорни за качеството и архитектурата на кода с Python
- Технически водачи и MLOps/DevOps инженери, които работят с кодове на Python
Отзиви от потребители (5)
Фактът, че имаме повече практически упражнения, използващи повече подобни данни на тези, които използваме в нашите проекти (сателитни изображения в растерен формат)
Matthieu - CS Group
Курс - Scaling Data Analysis with Python and Dask
Машинен превод
Очаквах, че треньора ще бъде много компетентен и ще отговори на въпросите с увереност, за да разяснява разбирането.
Jenna - TCMT
Курс - Machine Learning with Python – 2 Days
Машинен превод
Отлична подготовка и експертиза на треньора, перфектна комуникация на английски. Курсът е практическо обучение (упражнения + споделяне на примерни случаи на приложение)
Monika - Procter & Gamble Polska Sp. z o.o.
Курс - Developing APIs with Python and FastAPI
Машинен превод
Обяснението
Wei Yang Teo - Ministry of Defence, Singapore
Курс - Machine Learning with Python – 4 Days
Машинен превод
Треньор разработва обучение според темпа на участниците
Farris Chua
Курс - Data Analysis in Python using Pandas and Numpy
Машинен превод