Plan Szkolenia
Dzień 1 — Solidne Podstawy Pythona i Narzędzia
Nowoczesne Funkcje Pythona i Typowanie
- Podstawy typowania, generyki, Protokoły i TypeGuard
- Dataclasses, zamrożone dataclasses i przegląd attrs
- Dopasowanie wzorców (PEP 634+) i idiomatyczne użycie
Jakość Kodu i Narzędzia
- Formatowanie kodu i lintery: black, isort, flake8, ruff
- Statyczne sprawdzanie typów z MyPy i pyright
- Haki pre-commit i przepływy pracy programistów
Zarządzanie Projektami i Pakietami
- Zarządzanie zależnościami z Poetry i środowiskami wirtualnymi
- Struktura pakietów, punkty wejścia i najlepsze praktyki wersjonowania
- Budowanie i publikowanie pakietów na PyPI i prywatnych rejestrach
Dzień 2 — Wzorce Projektowe i Praktyki Architektoniczne
Wzorce Projektowe w Pythonie
- Wzorce kreacyjne: Fabryka, Budowniczy, Singleton (warianty Pythona)
- Wzorce strukturalne: Adapter, Fasada, Dekorator, Proxy
- Wzorce behawioralne: Strategia, Obserwator, Polecenie
Zasady Architektoniczne
- Zasady SOLID zastosowane w kodzie Pythona
- Architektura Hexagonal/Clean i granice
- Wzorce iniekcji zależności i zarządzanie konfiguracją
Modularność i Ponowne Użycie
- Projektowanie kodu biblioteki vs aplikacji
- API, stabilne interfejsy i semantyczne wersjonowanie
- Zarządzanie konfiguracją, tajemnicami i ustawieniami specyficznymi dla środowiska
Dzień 3 — Współbieżność, Async IO i Wydajność
Współbieżność i Równoległość
- Podstawy wątków i implikacje GIL
- Multiprocessing i pule procesów dla zadań związanych z CPU
- Kiedy używać concurrent.futures vs multiprocessing
Programowanie Asynchroniczne z asyncio
- Wzorce async/await, pętla zdarzeń i anulowanie
- Projektowanie bibliotek asynchronicznych i współdziałanie z kodem synchronicznym
- Wzorce związane z IO, backpressure i ograniczanie szybkości
Profilowanie i Optymalizacja
- Narzędzia do profilowania: cProfile, pyinstrument, perf, memory_profiler
- Optymalizacja gorących ścieżek i używanie rozszerzeń C/Numba tam, gdzie to odpowiednie
- Pomiar opóźnienia, przepustowości i wykorzystania zasobów
Dzień 4 — Testowanie, CI/CD, Obserwowalność i Wdrożenie
Strategie Testowania i Automatyzacja
- Testy jednostkowe i fixture z pytest; organizacja testów
- Testowanie oparte na właściwościach z Hypothesis i testowanie kontraktów
- Mockowanie, monkeypatching i testowanie kodu asynchronicznego
CI/CD, Wydania i Monitorowanie
- Integracja testów i bram jakości z GitHub Actions/GitLab CI
- Budowanie powtarzalnych kontenerów z Dockerem i wieloetapowymi buildami
- Obserwowalność aplikacji: strukturalne logowanie, metryki Prometheus i śledzenie
Bezpieczeństwo, Zabezpieczenia i Najlepsze Praktyki
- Audyt zależności, podstawy SBOM i skanowanie pod kątem podatności
- Bezpieczne praktyki kodowania dla walidacji wejścia i zarządzania tajemnicami
- Zabezpieczanie środowiska uruchomieniowego: limity zasobów, prawa użytkowników i bezpieczeństwo kontenerów
Projekt Końcowy i Podsumowanie
- Zespół lab: zaprojektuj i zaimplementuj małą usługę, korzystając z wzorców z kursu
- Testowanie, sprawdzanie typów, pakowanie i potok CI dla projektu
- Ostateczna recenzja, krytyka kodu i plan działań naprawczych
Podsumowanie i Następne Kroki
Wymagania
- Silne doświadczenie w programowaniu w Pythonie na poziomie średnio zaawansowanym
- Znajomość programowania obiektowego i podstaw testowania
- Doświadczenie w korzystaniu z linii poleceń i Git
Odbiorcy
- Doświadczeni programiści Pythona
- Inżynierowie oprogramowania odpowiedzialni za jakość kodu Pythona i architekturę
- Liderzy techniczni i inżynierowie MLOps/DevOps pracujący z kodem Pythona
Opinie uczestników (2)
Zajeczia praktyczne związane z treścią naprawdę pomagają lepiej zrozumieć każdy temat. Ponadto, styl rozpoczęcia zajęć od wykładu i kontynuowania praktycznymi ćwiczeniami jest dobry i pomocny do połączenia się z wcześniejszym wykładem.
Nazeera Mohamad - Ministry of Science, Technology and Innovation
Szkolenie - Introduction to Data Science and AI using Python
Przetłumaczone przez sztuczną inteligencję
Przykłady/ćwiczenia doskonale dostosowane do naszej dziedziny
Luc - CS Group
Szkolenie - Scaling Data Analysis with Python and Dask
Przetłumaczone przez sztuczną inteligencję