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 (2)
Praktické cvičení související s obsahem skutečně pomáhají lépe pochopit každý téma. Navíc, styl začínání hodiny přednáškou a pokračování praktickým cvičením je dobrý a užitečný pro propojení s přednáškou prezentovanou dříve.
Nazeera Mohamad - Ministry of Science, Technology and Innovation
Kurz - Introduction to Data Science and AI using Python
Přeloženo strojem
Příklady a cvičení dokonale přizpůsobené našemu oboru
Luc - CS Group
Kurz - Scaling Data Analysis with Python and Dask
Přeloženo strojem