Návrh Školení
Den 1 – Pevné základy Pythonu a moderní nástroje
Moderní funkce Pythonu a typová kontrola
- Základy typové anotace, generika, protokoly a TypeGuard
- Přehled datových tříd, jejich variant s uzamčením i knihovny attrs
- Porovnávání vzorů (podle PEP 634+) a jeho běžné použití
Kvalita kódu a nástroje pro vývoj
- Nástroje na formátování a kontrolu kódu: black, isort, flake8, ruff
- Statická typová kontrola pomocí MyPy a pyright
- Předběžné kontroly při odevzdání kódu a pracovní postupy vývojářů
Správa projektů a balíčků
- Správa závislostí pomocí nástroje Poetry a virtuálních prostředí
- Dobré postupy při vytváření struktury balíčků, definování vstupních bodů a verzování
- Sestavování a distribuce balíčků na PyPI či do privátních registrů
Den 2 – Návrhové vzory a architektonické postupy
Návrhové vzory v Pythonu
- Vytvářecí vzory: Továrna, Stavitel, Singleton (v jejich „pythonických“ podobách)
- Strukturální vzory: Adaptér, Fasáda, Dekorátor, Proxy
- Chování řídících vzorů: Strategie, Pozorovatel, Příkaz<\/li>
Architektonické principy
- Použití principů SOLID při tvorbě kódu v Pythonu
- Hexagonální architektura a její hranice oddělení od ostatních částí systému
- Nástroje na injekci závislostí a správu konfigurace
Modularita a opětovné využití kódu
- Rozdíly mezi knihovnami a samostatnými aplikacemi v Pythonu
- Návrh API, zajištění stability rozhraní a použití sémantického verzování
- Správa konfigurace, tajných dat a nastavení specifických pro dané prostředí
Den 3 – Souběžnost, asynchronní programování a optimalizace výkonu
Souběžnost a paralelismus
- Základy použití vláken a dopady Globálního interpretorového uzamčení (GIL)
- Použití víceprocesování pro úlohy náročné na výpočetní výkon
- Kdy volit knihovnu concurrent.futures a kdy multiprocessing
Asynchronní programování s asyncio
- Použití syntaxe async/await, správa událostní smyčky a řešení stornování operací
- Vývoj asynchronních knihoven a kompatibilita s synchronním kódem
- Způsoby řešení problému přetížení vstupně-výstupních operací, omezení rychlosti jejich vykonávání
Profilování a optimalizace výkonu
- Nástroje na profilování: cProfile, pyinstrument, perf, memory_profiler
- Optimalizace kritických částí programu a využití rozšíření napsaných v jazyce C či nástroje Numba tam, kde je to účelné
- Měření doby odezvy, propustnosti systému a spotřeby zdrojů
Den 4 – Testování, automatizace s CI/CD, monitorování a nasazování
Strategie testování a jejich automatizace
- Jednotkové testy s nástrojem pytest; organizace testů podle vhodných kategorií
- Testy založené na vlastnostech pomocí knihovny Hypothesis a kontraktní testování
- Mokování (mocking), přepisování funkcí (monkeypatching) a testování asynchronního kódu
Automatizace vývoje, nasazení a monitorování
- Integrace testů do systémů GitHub Actions či GitLab CI s kontrolami kvality kódu
- Sestavování reprodkovatelných kontejnerů pomocí Dockeru a víceetapového sestavení obrazů
- Monitorování chování aplikace: strukturované logy, metriky v systému Prometheus a nástroje na sledování operací
Bezpečnost, zabezpečení kódu a další osvědčené postupy
- Audit závislostí, tvorba seznamu komponent softwarového balíčku (SBOM) a kontrola na slabiny v kódu
- Bezpečné programování: validace vstupů a ochrana citlivých dat základních nastavení systému
- Omezení prostředků, řízení oprávnění uživatelů a zabezpečení kontejnerů při provozu
Závěrečný projekt a shrnutí znalostí
- Laboratoř ve skupinách: navrhněte a vytvořte jednoduchou službu s využitím naučených vzorů a postupů.
- Testování, kontrola typů, příprava balíčku a sestavení CI řetězce pro tento projekt.
- Závěrečná diskuze, kritika napsaného kódu a stanovení konkrétních plánů na další zlepšení.
Shrnutí kurzu a doporučené další kroky
Požadavky
- Silé znalosti programování v Pythonu na středně pokročilé úrovni
- Orientace v objektově orientovaném programování a základních testech
- Zkušenosti s používáním příkazového řádku a systému Git
Cílová skupina
- Zkušení programátoři v Pythonu
- Inženýři softwaru odpovědní za kvalitu a architekturu kódu v Pythonu
- Techničtí vedoucí a inženýři MLOps/DevOps pracující s projekty v Pythonu
Reference (2)
všechno bylo dokonalé
Florin Vrincianu
Kurz - Python Programming Fundamentals
Přeloženo strojem
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