Návrh Školení
Den 1 — Robustní základy a nástroje pro Python
Současné funkce Pythonu a typování
- Základy typování, generiky, Protokoly a TypeGuard
- Dataclasses, zamrznuté dataclasses a přehled o attrs
- Pattern matching (PEP 634+) a idiomické použití
Kvalita kódu a nástroje
- Nástroje pro formátování a analýzu kódu: black, isort, flake8, ruff
- Statické kontrolní typy s MyPy a pyright
- Pre-commit hooks a pracovní postupy vývojářů
Správa projektu a balení
- Správa závislostí s Poetry a virtuálními prostředími
- Struktura balíčků, vstupní body a osvědčené postupy verze
- Sestavování a publikování balíčků do PyPI a privátních registřů
Den 2 — Design Patterns & Architektonické Postupy
Design patterns v Pythonu
- Vytvářecí vzory: Factory, Builder, Singleton (Pythonovské varianty)
- Strukturální vzory: Adapter, Facade, Decorator, Proxy
- Chováníové vzory: Strategy, Observer, Command
Architektonické principy
- SOLID principy aplikované na kódové základy v Pythonu
- Hexagonální/Clean Architektura a hranice
- Vzory pro injekci závislostí a správu konfigurací
Modularita a opakovatelnost
- Návrh knihovného vs aplikaci určeného kódu
- API, stabilní rozhraní a semantické verze
- Správa konfigurací, tajných klíčů a nastavení specifických pro prostředí
Den 3 — Konkurenčnost, asynchronní IO a výkon
Konkurenčnost a paralelismus
- Základy vláknování a implikace GILu
- Paralelní zpracování a procesové fondy pro CPU-intenzivní úkoly
- Kdy použít concurrent.futures vs multiprocessing
Asynchronní programování s asyncio
- Vzory async/await, událostový cyklus a zrušení
- Návrh asynchronních knihoven a interoperabilita se synchronním kódem
- IO-intenzivní vzory, zpětné tlaky a omezení rychlosti
Profilace a optimalizace
- Nástroje pro profilaci: cProfile, pyinstrument, perf, memory_profiler
- Optimalizace kritických cest a použití C-rozsireni/Numba tam, kde je vhodné
- Měření latence, propustnosti a využití prostředků
Den 4 — Testování, CI/CD, observabilita a nasazování
Strategie testování a automatizace
- Testování jednotek a fixtures s pytest; organizace testů
- Testování na základě vlastností pomocí Hypothesis a kontraktní testování
- Maskování, monkeypatching a testování asynchronního kódu
CI/CD, release a monitoring
- Vkorporace testů a kontrolních bran do GitHub Actions/GitLab CI
- Sestavování reprodukovatelných kontejnerů s Docker a multi-stage builds
- Observabilita aplikací: strukturované záznamy, metriky Prometheusu a trasování
Zabezpečení, pevnost a osvědčené postupy
- Kontrola závislostí, základy SBOM a kontrola zranitelností
- Osvědčené postupy pro zabezpečení kódu: validace vstupů a správa tajných klíčů
- Pevnost během běhu: omezení prostředků, uživatelská práva a bezpečnost kontejnerů
Kamenný projekt & revize
- Team lab: návrh a implementace malé služby s využitím vzorů z kurzu
- Testování, kontrola typů, balení a CI pipeline pro projekt
- Koncová revize, kritika kódu a plán uskutečnitelných vylepšení
Souhrn a další kroky
Požadavky
- Silná zkušenost s programováním v Pythonu na střední úrovni
- Obratnost v objektově orientovaném programování a základním testování
- Zkušenosti s používáním příkazového řádku a Git
Cílová skupina
- Starší Python vývojáři
- Software inženýři odpovědní za kvalitu a architekturu Python kódu
- Tech Lead a MLOps/DevOps inženýři pracující s Python kódovými základy
Reference (5)
Skutečnost, že máme více praktických cvičení s více podobnými daty, jaké používáme v našich projektech (satelitní snímky v rastrovém formátu)
Matthieu - CS Group
Kurz - Scaling Data Analysis with Python and Dask
Přeloženo strojem
I thought the trainer was very knowledgeable and answered questions with confidence to clarify understanding.
Jenna - TCMT
Kurz - Machine Learning with Python – 2 Days
Very good preparation and expertise of a trainer, perfect communication in English. The course was practical (exercises + sharing examples of use cases)
Monika - Procter & Gamble Polska Sp. z o.o.
Kurz - Developing APIs with Python and FastAPI
The explaination
Wei Yang Teo - Ministry of Defence, Singapore
Kurz - Machine Learning with Python – 4 Days
Trainer develops training based on participant's pace