Menu Zamknij

Kurs Python

Opis kursu

  • Płacisz za jeden miesiąc nauki.
  • Uczysz się tak długo, jak potrzebujesz.
  • Pełne wsparcie na każdym etapie nauki.
  • Pytasz o wszystko, tyle razy, ile potrzebujesz i wtedy, kiedy chcesz. Szybko otrzymasz odpowiedź.
  • Spotkania 1:1 online + nagranie ze spotkania.
  • Plan nauki dopasowany do Ciebie.
  • Dużo zadań i projektów praktycznych.
  • Stały feedback na Twój kod i strukturę projektów.
  • Uczysz się w swoim tempie.
  • Motywuję Cię do pracy i dbam o Twoje postępy.
  • Portfolio w kilka miesięcy.
  • Szukasz pracy w trakcie kursu.
  • Otrzymasz certyfikat ukończenia kursu.
promocja ikona
PROMOCJA – pierwsze spotkanie GRATIS

Już teraz

zapisz się na kurs​

Zostaw swoje namiary, a skontaktuję się z Tobą w sprawie kursu

    * - pola obowiązkowe

    Administratorem danych osobowych jest KM PROGRAMS KRZYSZTOF MAKOWSKI z siedzibą przy ul. Cicha 7, 42-454 Niegowonice, Polska. Dane osobowe osób korzystających z formularza kontaktowego przetwarzane są w celu identyfikacji nadawcy oraz obsługi zapytania przesłanego przez udostępniony formularz. Więcej informacji o przetwarzaniu danych osobowych, w tym o przysługujących Ci uprawnieniach, znajduje się w Polityce Prywatności.

    Plan kursu

    Chcesz wejść do branży IT, ale nie wiesz, od czego zacząć? Python to strzał w dziesiątkę! Prosty do opanowania i wykorzystywany wszędzie od startupów po Google i Netflixa, od prostych aplikacji narzędziowych po aplikacje webowe, Data Science i AI. W tym kursie napiszesz dużo kodu i poznasz niezbędną teorię. Szybko stworzysz własne projekty do portfolio. Zdobędziesz konkretne umiejętności, które liczą się w IT. Kurs został przemyślany tak, żeby od razu wykorzystać elementy z innych moich kursów: Python Data Science oraz Python AI. Dzięki temu możesz od podstaw nauczyć się języka Python i od razu zbudować portfolio z atrakcyjnymi projektami, które pokażą Twoje umiejętności z zakresu automatyzacji procesów, Data Science, AI oraz aplikacji webowych. 

    Wybierz ten kurs jeśli:

    • Zależy Ci na szybkich efektach nauki,
    • Chcesz szybko zbudować profesjonalne portfolio i atrakcyjne CV,
    • Szukasz języka, który otwiera drzwi do różnych specjalizacji (AI, automatyzacja, data science, web),
    • Chcesz w prosty sposób tworzyć zaawansowane rozwiązania.
    • Instalacja narzędzi potrzebnych do uruchamiania aplikacji napisanej w Python
    • Pierwszy program w Python
    • Praca z interpreterem Python
    • Przegląd i wybór najlepszego IDE do tworzenia aplikacji w Python
    • Analiza struktury programu w Python

    W tej sekcji napiszesz kilkadziesiąt programów i rozwiążesz kilkadziesiąt zadań teoretycznych, które wspólnie przeanalizujemy.

    • Zmienne i typy danych
    • Prezentowanie i formatowanie danych w konsoli
    • Typowanie dynamiczne
    • Obiekty mutowalne, niemutowalne, identyfikacja obiektów
    • Typy liczbowe (liczby całkowite, zmiennoprzecinkowe, wartości logiczne, ułamki, Decimal, liczby zespolone)
    • Operacje arytmetyczne, relacji, logiczne
    • Operatory i priorytety operatorów
    • Przestrzenie nazw oraz zasięg zmiennych
    • Zasięg zmiennych
    • Konwersje danych
    • Pobieranie od użytkownika, pseudolosowość i inne formy pozyskiwania danych
    • Instrukcje warunkowe, pętle, wybór jednej opcji z wielu możliwości

    W tej sekcji napiszesz kilkadziesiąt programów i rozwiążesz kilkadziesiąt zadań teoretycznych, które wspólnie przeanalizujemy.

    • Organizacja kodu z wykorzystaniem funkcji
    • Sposoby definiowania i wywoływania funkcji
    • Parametry i argumenty funkcji
    • Zwracanie wyniku działania funkcji
    • Argumenty domyślne funkcji, positional arguments, keyword arguments, arbitrary argument list
    • Zasady kolejności przekazywania argumentów do funkcji
    • Type hints i statyczna analiza kodu (mypy, pyright)
    • Walidacja argumentów funkcji
    • Higher order function, typ Callable
    • Wyrażenia lambda
    • Funkcje zagnieżdżone i closures
    • Paradygmat programowania funkcyjnego
    • Rekurencja
    • Implementacja algorytmów na liczbach
    • Dokumentowanie funkcji
    • Implementacja popularnych algorytmów – ćwiczymy funkcje

    W tej sekcji napiszesz kilkadziesiąt programów i rozwiążesz kilkadziesiąt zadań teoretycznych, które wspólnie przeanalizujemy.

    • Listy, list comprehension
    • Tuple, namedtuple
    • Range
    • Dict, dictionary comprehension, struktury pochodzące od dict (Counter, defaultdict)
    • Set, frozenset
    • Iterator, iterable, funkcje pracujące z iterable
    • Deque
    • Przegląd innych struktur z modułu collections
    • Operacje i metody do zarządzania strukturami iterable
    • Zasady porównywania i sortowania elementów struktur iterable
    • Przegląd funkcji realizujących programowanie funkcyjne
    • Generatory, generator expression
    • Moduł itertools
    • Struktury wielowymiarowe
    • Implementacja popularnych algorytmów – ćwiczymy struktury danych

    W tej sekcji napiszesz kilkadziesiąt programów i rozwiążesz kilkadziesiąt zadań teoretycznych, które wspólnie przeanalizujemy.

    • Niemodyfikowalność napisów
    • Sposoby tworzenia, prezentowania i formatowania napisów
    • Napisy wielowierszowe, raw strings
    • Pojedyncze znaki, standard Unicode, różne sposoby kodowania
    • Metody i moduły do zarządzania napisami
    • Wyrażenia regularne
    • Konwersja i parsowanie napisów
    • Typ bytes, bytearray
    • Odczytywanie danych z pliku tekstowego
    • Implementacja popularnych algorytmów – ćwiczymy napisy

    W tej sekcji napiszesz kilkadziesiąt programów i rozwiążesz kilkadziesiąt zadań teoretycznych, które wspólnie przeanalizujemy. Napiszesz pierwsze projekty do portfolio.

    • Klasa i obiekt
    • Inicjalizacja pól składowych, metody składowe
    • Obiekt self, typ Self
    • Enkapsulacja, hermetyzacja, zasada TDA
    • Magic methods, przeładowanie operatorów
    • Asocjacja, agregacja, kompozycja
    • Dekoratory @classmethod oraz @staticmethod
    • Obiekt cls oraz atrybuty klasy
    • Dekorator @property
    • Piszemy aplikacje, wprowadzając pierwsze klasy z zachowaniem dobrych praktyk OOP
    • Metaklasa, introspekcja, refleksja, metaprogramowanie
    • Dynamiczne tworzenie klas
    • Dekorator @dataclass
    • Dziedziczenie
    • Nadpisywanie metod, dekorator @override
    • Name mangling
    • Polimorfizm, duck typing
    • Dziedziczenie wielokrotne, problem diamentowy
    • Abstrakcyjność
    • Dziedziczenie typów wbudowanych
    • Piszemy pierwsze aplikacje, wprowadzając podział na klasy, budujemy strukturę aplikacji
    • Wyjątki, przechwytywanie i obsługa wyjątków, własne klasy wyjątków
    • Analiza błędów w kodzie
    • Mechanizm zero-cost exceptions
    • ExceptionGroup oraz except *
    • Bezpieczna obsługa komunikacji z zasobami
    • Klasy typów wyliczeniowych
    • Structural pattern matching
    • Moduły i klasy do pracy z datą i czasem
    • Zarządzanie datą i czasem z uwzględnieniem stref czasowych

    W tej sekcji poznasz komponenty, które potem wykorzystasz w Twoich aplikacjach do portfolio.

    • Tworzenie i zarządzanie archiwum zip
    • Komunikacja z plikami CSV
    • Wysyłanie wiadomości email
    • Zarządzanie plikami, katalogami
    • Przetwarzanie danych w formacie JSON
    • Przegląd i prezentacja możliwości modułów biblioteki standardowej

    W tej sekcji rozwiniesz istniejące i napiszesz nowe projekty do portfolio, które wykorzystają typy generyczne i aliasy.

    • Zasada działania dekoratora
    • Kolejność wykonywania dekoratorów
    • Przechwytywanie argumentów przekazywanych do dekorowanej funkcji oraz dekoratora
    • Dekorator ogólnego przeznaczenia
    • Dekorator jako klasa
    • Teoria typów generycznych
    • Typy generyczne dla funkcji i klasy
    • Ograniczona zmienna typu i zmienna typu z granicą
    • Aliasy typów

    W tej sekcji napiszesz projekty, które wykorzystają algorytmy, struktury danych i wzorce projektowe i będą gotowe do wysłania do Twojego repozytorium w PyPI.

    • Kolejne algorytmy na liczbach, napisach i strukturach danych
    • Konwersje pomiędzy systemami liczbowymi
    • Wyszukiwanie i sortowanie
    • Metoda dziel i zwyciężaj
    • Metody numeryczne
    • Programowanie zachłanne i dynamiczne
    • Algorytmy kryptograficzne
    • Grafy
    • Klasyfikacja wzorców projektowych
    • Implementacja wzorców kreacyjnych, strukturalnych, czynnościowych

    W tej sekcji poznasz komponenty, które potem wykorzystasz w Twoich aplikacjach do portfolio. Nauczysz się, jak wygląda komercyjna struktura projektu i jakie narzędzia wykorzystać do jej zbudowania. W tym momencie zaczniesz równolegle naukę Git.

    • Rola modułów i paczek w projekcie Python
    • Różnica pomiędzy modułem i skryptem
    • Pozyskiwanie informacji na temat właściwości modułu
    • Różne sposoby importowania modułu
    • Leniwe ładowanie modułów
    • Folder __pycache__
    • Przegląd modułów biblioteki standardowej
    • Tworzenie i importowanie paczek
    • Rola pliku __init__.py
    • Narzędzie pip
    • Teoria środowisk wirtualnych
    • Narzędzia venv, virtualenv, plik requirements.txt
    • Zarządzanie projektem w Python z wykorzystaniem narzędzia pipenv
    • Zarządzanie projektem w Python z wykorzystaniem narzędzia poetry
    • Konfiguracja PyPI do publikowania własnych repozytoriów
    • Piszemy razem krok po kroku projekt praktyczny –  tworzenie publicznego repozytorium na PyPI
    • Umieszczenie projektu w publicznym repozytorium GitHub i przygotowanie dokumentacji

    W tej sekcji nauczysz się pisać testy jednostkowe i dbać o wysokie pokrycie kodu testami – co jest kluczowe w pracy nad profesjonalnymi aplikacjami. Dzięki temu Twoje projekty będą miały realną wartość komercyjną i staną się bardziej niezawodne. Od tego momentu testowanie stanie się integralną częścią Twojego procesu tworzenia oprogramowania. Każdy projekt w Twoim portfolio będzie wzbogacony o zestaw dobrze napisanych testów, a Ty nauczysz się wykorzystywać narzędzia do mierzenia pokrycia kodu i dbania o jego jakość.

    • Teoria zagadnień związanych z testowaniem aplikacji
    • Omówienie frameworków do testowania aplikacji w Python
    • Podejście TDD oraz BDD
    • Przygotowanie projektu do pracy z testami (pytest, unittest)
    • Uruchamianie testów i asercje
    • Praktyczny przykład stosowania podejścia TDD
    • Porządkowanie testów za pomocą paczek, modułów, klas oraz funkcji
    • Markery i pluginy w pytest
    • Badanie pokrycia kodu testami (pytest-cov)
    • Pliki konfiguracyjne conftest
    • Hooks, cykl życia testów
    • Testy zagnieżdżone i parametryzowane
    • Fixtures
    • Unittest
    • Mocks
    • Patch
    • Partial mocking oraz spy objects

    W tej sekcji poznasz komponenty, które potem wykorzystasz w Twoich aplikacjach do portfolio.

    • Przygotowanie klasy do generowanie loggerów
    • Formatowanie treści oraz wyglądu wiadomości
    • Zarządzanie poziomami rejestracji loggera
    • Zapisywanie logów do pliku
    • Wykorzystanie klasy zarządzającej loggerami w aplikacjach w Twoim portfolio

    W tej sekcji poznasz elementy języka Python, dzięki którym zrozumiesz, jak działają narzędzia i biblioteki, które będziemy wykorzystywać w kolejnych etapach naszej wspólnej nauki.

    • Wprowadzenie pojęć związanych z wielowątkowością, asynchronicznością, programowaniem równoległym
    • Porównanie wielowątkowości, asynchroniczności i programowania równoległego
    • Prezentacja modułu threading
    • Tworzenie wątku za pomocą funkcji oraz za pomocą klasy
    • Zarządzanie pracą wielu wątków z wykorzystaniem ThreadPoolExecutor
    • Omówienie typowych problemów związanych z wielowątkowością 
    • Lock, RLock
    • Kolejki
    • Implementacja wzorca producent-konsument
    • Semafor, Timer, Barrier
    • Prezentacja modułu asyncio
    • Słowa kluczowe async i await
    • Omówienie zasady działania coroutine
    • Omówienie zasady działania event loop
    • Wykorzystanie funkcji asyncio.gather
    • Wykorzystanie funkcji asyncio.create_task
    • Chaining coroutines
    • Kolejki asynchroniczne asyncio.Queue
    • Iterator asynchroniczny
    • Moduł aiohttp i asynchroniczna komunikacja z REST API
    • Implementowanie asynchronicznego web servera
    • Asynchroniczna komunikacja z plikami
    • Praca z asynchronicznym context managerem
    • Implementacja klasy do pracy z asynchronicznym context managerem
    • Zarządzania taskami za pomocą asyncio.TaskGroup
    • Przechwytywanie błędów podczas pracy z asyncio.TaskGroup
    • Praktyczne przykłady mechanizmów programowania równoległego w Python
    W tej części kursu zbudujesz aplikacje do portfolio, w których wdrożysz automatyzacje procesów, Data Science, AI oraz interfejs użytkownika. W tym momencie nauczysz się również Docker. Już na tym etapie nauki Twoje portfolio będzie profesjonalne i atrakcyjne, ponieważ w aplikacjach znajdzie się:
    • Warstwa repozytoryjna do komunikacji z dowolnym rodzajem plików,
    • Asynchroniczne monitorowanie zawartości plików i katalogów,
    • Zarządzanie arkuszami Excel,
    • NumPy oraz Pandas,
    • Zadania cykliczne i harmonogramowanie zadań,
    • Komunikacja z różnego rodzaju API do pozyskiwania danych,
    • Zarządzanie skrzynką mailową,
    • Generowanie faktur,
    • Generowanie PDF,
    • Generowanie raportów i statystyki z przetworzonych danych,
    • Gen AI, np. sterowanie głosem, generowanie dokumentów, wykorzystanie ChatGPT i innych modeli LLM,
    • Zarządzanie danymi na Google Drive,
    • Webowy interfejs użytkownika,
    • Inne narzędzia – cały czas rozbudowuję tę sekcję.
    Wszystkie aplikacje będą przetestowane (wysokie pokrycie kodu testami). Zadbamy o statyczną analizę kodu oraz o taką strukturę projektów, którą potem bez kłopotu będziesz w stanie wzbogacić o rozwiązania z kolejnych etapów naszej wspólnej nauki.

    W tej sekcji wprowadzimy bardzo ważny element, jakim są bazy danych. Dzięki temu zyskasz nieograniczone możliwości przechowywania i zarządzania danymi. Nauczymy się zagadnień związanych z bazami danych i językiem SQL. Rozwiążesz zadania praktyczne i teoretyczne, które wspólnie przeanalizujemy.

    • Teoria relacyjnych baz danych
    • Konfiguracja środowiska bazodanowego bezpośrednio na OS oraz z wykorzystaniem Docker
    • Język SQL
    • Zarządzanie serwerem oraz użytkownikami bazy danych
    • Zmienne globalne, lokalne, sesji
    • Tworzenie i zarządzanie tabelami w bazie danych
    • Typy danych w bazie danych
    • Operacje CRUD
    • Łączenie danych z tabel (join, subqueries)
    • Grupowanie danych i funkcje agregujące
    • Ograniczenia dla tabel (constraints)
    • Relacje one-to-one, many-to-one, many-to-many
    • Transakcje
    • Widoki
    • Indeksy
    • Funkcje analizy okna
    • Dane geoprzestrzenne
    • Wyszukiwanie pełnotekstowe
    • Funkcje definiowane przez użytkownika
    • CTE (Common Table Expressions)
    • Tabele tymczasowe
    • Triggers
    • Wizualizacja danych pobranych z bazy danych

    W tej sekcji piszemy w Python warstwę do komunikacji z bazami danych. Zadbamy o jej przetestowanie i przeprowadzimy statyczną analizę typów. Dzięki temu do nowych aplikacji oraz do tych, które już masz w portfolio, możesz dodać możliwości, związane z przechowywaniem i zarządzaniem danymi za pomocą baz danych.

    • Przygotowanie aplikacji w Python do realizacji komunikacji bazodanowej
    • Implementacja warstwy komunikacji aplikacji w Python z kontenerem bazy danych
    • Implementacja operacji CRUD i innych operacji do zarządzania danymi w bazie danych
    • Zapytania parametryzowane
    • Zarządzanie wynikami zapytań SQL
    • Konfiguracja i zarządzanie relacjami
    • Transakcyjność
    • Pozyskiwanie informacji o właściwościach bazy danych i tabel
    • Wykonywanie kopii zapasowej bazy danych
    • Implementacja generycznego repozytorium bazodanowego
    • Testowanie generycznego repozytorium bazodanowego

    W tej sekcji napiszemy projekty, które wykorzystają warstwę do komunikacji z bazą danych. Do projektów, które już masz w portfolio dodamy możliwości, związane z komunikacja z bazami danych. Twoje aplikacje zyskają nowe możliwości pod kątem gromadzenia i przetwarzania danych. Dla każdego projektu przejdziemy przez kolejne kroki:

    • Omówienie założeń projektów, projekt realizujemy razem krok po kroku
    • Przygotowanie środowiska wirtualnego, instalacja potrzebnych bibliotek, przygotowanie kontenera bazy danych
    • Przygotowanie środowiska wirtualnego do testowania aplikacji
    • Ustalenie modelu danych dla warstwy bazodanowej oraz logiki biznesowej aplikacji
    • Implementacja i testowanie generycznej warstwy do komunikacji z bazą danych
    • Analiza i optymalizacja zapytań SQL
    • Walidacja i konwersja pozyskanych danych
    • Przygotowanie struktury danych do realizacji założeń logiki biznesowej
    • Implementacja i testowanie warstwy serwisowej aplikacji
    • Utrzymanie wysokiego procentowego pokrycia kodu testami
    • Statyczna analiza kodu i zastosowanych typów
    • Raportowanie i zapisywanie do bazy danych wyników przetwarzania danych
    • Implementacja graficznego interfejsu użytkownika
    • Umieszczenie projektu w publicznym repozytorium i przygotowanie dokumentacji

    W tej sekcji poznasz kolejne podejście do zarządzania bazami danych. Nauczysz się ORM w oparciu o popularny framework komercyjny SqlAlchemy. Dodatkowo zaczniesz zarządzać w profesjonalny sposób schematem tabel w bazie danych za pomocą narzędzia Alembic. Wejdziesz na wyższy poziom pisania aplikacji bazodanowych.

    • Omówienie koncepcji ORM
    • Przygotowanie aplikacji w Python do komunikacji bazodanowej z wykorzystaniem ORM, SqlAlchemy, Alembic
    • Dwa sposoby pracy w SqlAlchemy, Core, ORM
    • Implementacja warstwy komunikacji aplikacji w Python z kontenerem bazy danych (Docker + MySQL)
    • Różne sposoby tworzenia klasy reprezentującej model tabeli w bazie danych
    • Zarządzanie klasą reprezentującą model tabeli w SqlAlchemy
    • Implementacja operacji CRUD i innych operacji do zarządzania danymi w bazie danych
    • Zarządzanie danymi otrzymanymi w wyniku zapytań
    • Konfiguracja i zarządzanie relacjami bazodanowymi
    • Optymalizacja zapytań SQL poprzez stosowanie mechanizmów ORM w SQLAlchemy
    • Optimistic, pessimistic locking w SqlAlchemy
    • Mechanizmy back populates oraz backref
    • Mapowanie kontenerów obiektów innych niż encje
    • Mapowanie dziedziczenia
    • Bulk insert, bulk update
    • Pobieranie dużych ilości rekordów
    • Events
    • Pooling
    • Zarządzanie savepoints
    • Two phase commit
    • Zarządzanie isolation levels
    • Implementacja cache w SqlAlchemy
    • Zarządzanie migracjami z wykorzystaniem narzędzia Alembic
    • Implementacja generycznego repozytorium bazodanowego z wykorzystaniem mechanizmów ORM
    • Wykorzystanie asynchroniczności w SqlAlchemy
    • Implementacja generycznego repozytorium bazodanowego z wykorzystaniem mechanizmów ORM w wersji asynchronicznej
    • Testowanie generycznego repozytorium bazodanowego w wersji synchronicznej i asynchronicznej za pomocą Testcontainers
    • Testowanie generycznego repozytorium bazodanowego w wersji synchronicznej i asynchronicznej z użyciem własnego kontenera

    W tej sekcji użyjesz ORM / SqlAlchemy oraz Alembic w projektach do portfolio. Dzięki temu Twoje aplikacje zaczną wykorzystywać profesjonalny komercyjny framework. Dzięki wiedzy zdobytej w poprzedniej sekcji, wykorzystasz w projektach cały potencjał SqlAlchemy. Dla każdego projektu przejdziemy przez kolejne kroki:

    • Omówienie założeń projektu, projekt realizujemy razem krok po kroku
    • Przygotowanie środowiska wirtualnego, instalacja potrzebnych bibliotek, przygotowanie kontenera bazy danych
    • Przygotowanie środowiska wirtualnego do testowania aplikacji i podejścia TDD
    • Ustalenie modelu danych dla warstwy bazodanowej oraz logiki biznesowej aplikacji
    • Implementacja i testowanie generycznej warstwy do komunikacji z bazą danych – SqlAlchemy, ORM
    • Analiza i optymalizacja zapytań SQL, korzystając z mechanizmów ORM
    • Walidacja i konwersja pozyskanych danych
    • Przygotowanie struktury danych do realizacji założeń logiki biznesowej
    • Implementacja i testowanie warstwy serwisowej aplikacji
    • Utrzymanie wysokiego procentowego pokrycia kodu testami
    • Statyczna analiza kodu i zastosowanych typów
    • Raportowanie i zapisywanie do bazy danych wyników przetwarzania danych
    • Implementacja graficznego interfejsu użytkownika
    • Umieszczenie projektu w publicznym repozytorium GitHub i przygotowanie dokumentacji

    W tej sekcji nauczysz się, w jaki sposób realizować komunikację bazodanową NoSQL z wykorzystaniem MongoDB. Wykorzystasz rozwiązania, znajdujące się w standardowej bibliotece Python, jak również bibliotekę MongoEngine.

    • Konfiguracja środowiska bazodanowego
    • Szczegółowe omówienie zasad języka NoSQL
    • Przygotowanie aplikacji w Python do realizacji komunikacji bazodanowej
    • Implementacja komunikacji aplikacji w Python z kontenerem bazy danych
    • Zarządzanie właściwościami pól dokumentów
    • Implementacja relacji
    • Indeksowanie oraz ustalanie porządku danych
    • Dziedziczenie dokumentów
    • Tworzenie i zarządzanie instancjami dokumentów
    • Wstawianie, modyfikowanie i usuwanie dokumentów
    • Pobieranie i zarządzanie danymi
    • Sposoby optymalizacji zapytań
    • Implementacja repozytorium bazodanowego
    • Testowanie repozytorium bazodanowego

    W tej sekcji użyjesz NoSQL w projektach do portfolio. Dzięki temu Twoje aplikacje zaczną wykorzystywać możliwości nierelacyjnych baz danych. Dla każdego projektu przejdziemy przez kolejne kroki:

    • Omówienie założeń projektu, projekt realizujemy razem krok po kroku
    • Przygotowanie środowiska wirtualnego, instalacja potrzebnych bibliotek, przygotowanie kontenera bazy danych
    • Przygotowanie środowiska wirtualnego do testowania aplikacji i podejścia TDD
    • Ustalenie modelu danych dla warstwy bazodanowej oraz logiki biznesowej aplikacji
    • Implementacja i testowanie generycznej warstwy do komunikacji z bazą danych NoSQL
    • Analiza i optymalizacja zapytań do bazy NoSQL
    • Walidacja i konwersja pozyskanych danych
    • Przygotowanie struktury danych do realizacji założeń logiki biznesowej
    • Implementacja i testowanie warstwy serwisowej aplikacji
    • Utrzymanie wysokiego procentowego pokrycia kodu testami
    • Statyczna analiza kodu i zastosowanych typów
    • Raportowanie i zapisywanie do bazy danych wyników przetwarzania danych
    • Implementacja graficznego interfejsu użytkownika za pomocą biblioteki Streamlit
    • Umieszczenie projektu w publicznym repozytorium GitHub i przygotowanie dokumentacji
    • Omówienie założeń kolejnych projektów praktycznych i wspólna realizacja projektów krok po kroku
    W tej sekcji poznasz framework Flask. Dzięki niemu wszystkie projekty, które napisałeś do tej pory – oraz te, które będziesz tworzył w przyszłości – rozbudujesz o warstwę webową i przekształcisz w REST API. Wszystkie aplikacje będą bazować na narzędziu Docker. Wprowadzimy podział na mikroserwisy oraz warstwę bezpieczeństwa (security). Poznasz rozwiązania, które pozwolą prezentować Twoje projekty w sieci.
    • Omówienie zagadnień i architektury aplikacji webowej
    • Omówienie standardów HTTP, REST
    • Gunicorn, framework Flask, Nginx
    • Konfiguracja kontenerów Docker dla mikroserwisów opartych na Flask
    • Konfiguracja kontenerów Docker dla baz danych w mikroserwisach
    • Konfiguracja Nginx do przechwytywania żądań dla mikroserwisów
    • Zarządzanie danymi zapytania za pomocą Pydantic
    • Cykl życia żądania
    • Konfiguracja endpointów z wykorzystaniem Blueprints oraz MethodView
    • Plugin flask-pydantic
    • Generowanie dokumentacji (OpenAPI, Swagger)
    • Konfiguracja ORM z wykorzystaniem Flask-SQLAlchemy oraz Flask-Migrate
    • Warstwa serwisowa
    • REST API dla warstwy serwisowej, dependency injection
    • Testy pierwszego mikroserwisu z pełnym pokryciem
    • Konfiguracja mikroserwisu do zarządzania użytkownikami
    • Konfiguracja bazy danych NoSQL dla mikroserwisu użytkowników
    • Wysyłanie maili za pomocą pluginu Flask-Mail
    • Rejestracja, aktywacja, resetowanie hasła użytkowników
    • Wprowadzenie do frameworka Flask-RESTful
    • Testy mikroserwisu użytkowników z pełnym pokryciem (w tym z wykorzystaniem Testcontainers)
    • Konfiguracja API Gateway z warstwą security
    • Autentykacja, autoryzacja, 2FA, refresh tokens w warstwie security API Gateway
    • Konfiguracja CORS
    • Testy API Gateway z warstwą security z pełnym pokryciem
    • Konfiguracja mikroserwisu komunikującego się z innymi mikroserwisami
    • Wdrożenie Retry Pattern do realizacji logiki biznesowej rozdzielonej na kilka mikroserwisów
    • Background tasks
    • Testy mikroserwisu do komunikacji z innymi mikroserwisami z pełnym pokryciem
    • Osadzenie aplikacji webowej w chmurze
    • Websockets

    W tej sekcji poznasz framework FastAPI. Dzięki niemu wszystkie projekty, które napisałeś do tej pory oraz te, które będziesz pisał od tej pory, rozbudujesz o asynchroniczną warstwę webową i zaczniesz tworzyć z nich REST API. Wszystkie aplikacje będą bazować na narzędziu Docker. Zastosujemy podział na mikroserwisy oraz wprowadzimy warstwę security. Poznasz możliwości, które pozwolą prezentować Twoje rozwiązania w sieci.   

    • Omówienie architektury asynchronicznej aplikacji webowej
    • Omówienie standardów HTTP, REST, JSON oraz innych powiązanych z aplikacjami RESTful
    • Klasyfikacja pojęć związanych z frameworkiem FastAPI
    • Prezentacja i wykorzystanie dependency injection
    • Prezentacja i wykorzystanie middleware
    • Wykorzystanie asynchroniczności do implementowania aplikacji webowej
    • Przygotowanie środowiska wirtualnego aplikacji w Python do pracy z FastAPI
    • Konfiguracja kontenera Docker dla aplikacji webowej FastAPI
    • Praca ze zmiennymi środowiskowymi
    • Implementacja REST API
    • Routing
    • Przekazywanie oraz walidacja request params oraz query strings
    • Praca z nagłówkami
    • Przechwytywanie i walidacja ciała żądania
    • Zarządzanie sesją oraz cookies
    • Przygotowanie odpowiedzi dla żądania
    • Analiza kodów HTTP
    • Globalne przechwytywanie wyjątków
    • Serializacja i deserializacja JSON, dobre praktyki serializacji i deserializacji danych
    • Przygotowanie prawidłowego formatu zwracanych danych
    • SQLAlchemy w wersji asynchronicznej jako mechanizm do zarządzania warstwą bazodanową
    • SQLAlchemy w wersji asynchronicznej – zarządzanie schematem bazy danych
    • SQLAlchemy w wersji asynchronicznej – tworzenie i zarządzanie modelami tabel bazy danych
    • SQLAlchemy w wersji asynchronicznej – implementacja relacji bazodanowych
    • SQLAlchemy w wersji asynchronicznej – zarządzanie zapytaniami do bazy danych
    • SQLAlchemy w wersji asynchronicznej – pobieranie i przetwarzanie danych z warstwy bazodanowej
    • SQLAlchemy w wersji asynchronicznej – optymalizacja komunikacji z bazą danych
    • Warstwa serwisowa aplikacji webowej
    • Testowanie aplikacji webowej
    • Testowanie REST API z wykorzystaniem zewnętrznych klientów REST
    • Konfiguracja CORS
    • Pobieranie zasobów statycznych z aplikacji frontend
    • Zarządzanie zasobami statycznymi na przykładzie komunikacji z serwisem AWS S3
    • Bezpieczeństwo aplikacji webowej – autentykacja i autoryzacja
    • Bezpieczeństwo aplikacji webowej – Omówienie standardu JWT, JWT Debugger
    • Bezpieczeństwo aplikacji webowej – zarządzanie danymi przesyłanymi w tokenie JWT
    • Bezpieczeństwo aplikacji webowej – omówienie zasady działania i przygotowanie access token
    • Bezpieczeństwo aplikacji webowej – omówienie zasady działania i przygotowanie refresh token
    • Bezpieczeństwo aplikacji webowej – dobre praktyki szyfrowania danych w tokenach JWT
    • Bezpieczeństwo aplikacji webowej – biblioteka Jose do generowania tokenów JWT
    • Bezpieczeństwo aplikacji webowej – przygotowanie modułu rejestracji użytkowników
    • Bezpieczeństwo aplikacji webowej – przygotowanie modułu aktywacji konta użytkownika
    • Bezpieczeństwo aplikacji webowej – szyfrowanie hasła użytkownika
    • Bezpieczeństwo aplikacji webowej – implementacja modułu autentykacji użytkownika
    • Bezpieczeństwo aplikacji webowej – implementacja modułu autoryzacji użytkownika
    • Deployment aplikacji webowej – omówienie zastosowania serwera nginx
    • Deployment aplikacji webowej – przygotowanie wersji produkcyjnej aplikacji
    • Deployment aplikacji webowej – osadzenie aplikacji webowej w chmurze
    • Generowanie dokumentacji aplikacji webowej
    • Websockets

    W tej sekcji poznasz framework Django. Dzięki temu wszystkie projekty, które napisałeś do tej pory oraz te, które będziesz pisał od tej pory, rozbudujesz o warstwę webową i zaczniesz tworzyć z nich REST API. Wszystkie aplikacje będą bazować na narzędziu Docker. Zastosujemy podział na mikroserwisy oraz wprowadzimy warstwę security. Poznasz możliwości, które pozwolą prezentować Twoje rozwiązania w sieci.   

    • Omówienie architektury aplikacji webowej
    • Omówienie standardów HTTP, REST, JSON i innych powiązanych z aplikacjami RESTful
    • Klasyfikacja pojęć związanych z frameworkiem Django
    • Elementy aplikacji Django – projekt, aplikacja
    • Wzorzec projektowy Active Record
    • Framework Django REST
    • Przygotowanie środowiska wirtualnego aplikacji w Python do pracy z Django, Django REST
    • Konfiguracja kontenera Docker dla aplikacji webowej Django
    • Praca ze zmiennymi środowiskowymi
    • Implementacja REST API w oparciu o klasę APIView oraz o dekorator @api_view
    • Routing
    • Przekazywanie i walidacja request params oraz query strings
    • Praca z nagłówkami
    • Przechwytywanie i walidacja ciała żądania
    • Zarządzanie sesją oraz cookies
    • Przygotowanie odpowiedzi dla żądania
    • Analiza kodów HTTP
    • Globalne przechwytywanie wyjątków
    • Serializacja i deserializacja JSON, dobre praktyki serializacji danych
    • Przygotowanie prawidłowego formatu zwracanych danych
    • Implementacja serializerów i deserializerów
    • Django ORM jako narzędzie do zarządzania warstwą bazodanową
    • Django ORM – zarządzanie schematem bazy danych
    • Django ORM – tworzenie i zarządzanie modelami tabel bazy danych
    • Django ORM – Implementacja relacji bazodanowych
    • Django ORM – Zarządzanie zapytaniami do bazy danych
    • Django ORM – Pobieranie i przetwarzanie danych z warstwy bazodanowej
    • Django ORM – Optymalizacja komunikacji z bazą danych
    • Konfiguracja panelu administratora
    • Warstwa serwisowa aplikacji webowej
    • Testowanie aplikacji webowej
    • Testowanie REST API z wykorzystaniem zewnętrznych klientów REST
    • Konfiguracja CORS
    • Pobieranie zasobów statycznych z aplikacji frontend
    • Zarządzanie zasobami statycznymi na przykładzie komunikacji z serwisem AWS S3
    • Bezpieczeństwo aplikacji webowej – autentykacja i autoryzacja
    • Bezpieczeństwo aplikacji webowej – omówienie standardu JWT, JWT Debugger
    • Bezpieczeństwo aplikacji webowej – zarządzanie danymi przesyłanymi w tokenie JWT
    • Bezpieczeństwo aplikacji webowej – omówienie zasady działania i przygotowanie access token
    • Bezpieczeństwo aplikacji webowej – omówienie zasady działania i przygotowanie refresh token
    • Bezpieczeństwo aplikacji webowej – dobre praktyki szyfrowania danych w tokenach JWT
    • Bezpieczeństwo aplikacji webowej – biblioteka Simple JWT
    • Bezpieczeństwo aplikacji webowej – przygotowanie modułu rejestracji użytkowników
    • Bezpieczeństwo aplikacji webowej – przygotowanie modułu aktywacji konta użytkownika
    • Bezpieczeństwo aplikacji webowej – szyfrowanie hasła użytkownika
    • Bezpieczeństwo aplikacji webowej – implementacja modułu autentykacji użytkownika
    • Bezpieczeństwo aplikacji webowej – implementacja modułu autoryzacji użytkownika
    • Deployment aplikacji webowej – omówienie zastosowania serwera nginx
    • Deployment aplikacji webowej – przygotowanie wersji produkcyjnej aplikacji (WSGI oraz ASGI)
    • Deployment aplikacji webowej – osadzenie aplikacji webowej w chmurze
    • Generowanie dokumentacji aplikacji webowej
    • Przykładowa aplikacja oparta o wspierane elementy asynchroniczności w Django

    W ramach tego modułu wdrożymy zaawansowane wzorce projektowe, takie jak CQRS, DDD, API Gateway, Saga oraz inne kluczowe rozwiązania charakterystyczne dla architektury mikroserwisowej. Jeśli zdobędziesz wiedzę podczas kursów Python Data Science lub Python AI, będziesz mógł wykorzystać narzędzia takie jak modele LLM, RabbitMQ, Kafka, LangChain w projektach webowych i rozbudować portfolio o zaawansowane rozwiązania.

    Kurs Python został zaprojektowany tak, aby po jego ukończeniu znać większość zagadnień z kursów Python Data Science i Python AI. Dzięki temu szybko rozpoczniesz budowanie profesjonalnego portfolio i zaczniesz aktywnie szukać pracy w IT. Po zakończeniu kursu Python możesz kontynuować naukę, uzupełniając brakujące elementy z zakresu analizy danych i sztucznej inteligencji w ramach dedykowanych sekcji z kursów Python Data Science oraz Python AI.

    Ten moduł realizujesz równolegle z kursem – poinformuję Cię, kiedy należy go przerobić

    • Omówienie architektury platformy Docker
    • Zasada działania obrazu oraz kontenera
    • Różnica pomiędzy kontenerem Docker oraz maszyną wirtualną
    • Instalacja platformy Docker
    • Praca z Docker CLI
    • Tworzenie i zarządzanie obrazami platformy Docker
    • Image Layers
    • Wprowadzenie do pracy z Docker Hub
    • Osadzenie przygotowanego obrazu w repozytorium Docker Hub
    • Tworzenie i zarządzanie kontenerami w platformie Docker
    • Omówienie cyklu życia kontenera
    • Kopiowanie plików z maszyny lokalnej do kontenera
    • Kopiowanie plików z kontenera do maszyny lokalnej
    • Klasyfikacja rodzajów danych przechowywanych w kontenerach
    • Tworzenie i zarządzanie volumes w platformie Docker
    • Różnica pomiędzy anonymous volumes oraz named volumes
    • Tworzenie i zarządzanie bind mounts w platformie Docker
    • Omówienie różnic pomiędzy volumes oraz bind mounts
    • Tworzenie volumes tylko do odczytu
    • Instalacja i uruchamianie przykładowych narzędzi z wykorzystaniem platformy Docker
    • Omówienie struktury pliku konfiguracyjnego Dockerfile
    • Praca z argumentami oraz zmiennymi środowiskowymi
    • Konteneryzacja aplikacji webowej z wykorzystaniem Docker
    • Komunikacja kontenera z zewnętrznym REST API
    • Komunikacja kontenera z narzędziami osadzonymi w localhost
    • Komunikacja container to container z użyciem networks w platformie Docker
    • Przegląd sterowników do konfiguracji zachowania networks
    • Omówienie zasady działania narzędzia Docker Compose
    • Instalacja narzędzia Docker Compose
    • Struktura pliku konfiguracyjnego narzędzia Docker Compose
    • Przygotowanie kontenera bazy danych
    • Konfiguracja kontenerów do pracy z wieloma bazami danych
    • Konteneryzacja przykładowej aplikacji
    • Przykład tworzenia utility containers

    Git to jedno z najważniejszych narzędzi w pracy programisty – pozwala zarządzać kodem, kontrolować zmiany i bezpiecznie rozwijać projekt w zespole. W tym module poznasz również GitHub, czyli platformę, która umożliwia przechowywanie repozytoriów w chmurze, współpracę z innymi programistami oraz prezentowanie swojego kodu potencjalnym pracodawcom. Ten moduł będziesz realizować równolegle z kursem – dam Ci znać w odpowiednim momencie, kiedy warto go przerobić, aby w pełni wykorzystać jego możliwości w swoich projektach.

    • Podstawowe informacje na temat systemów kontroli wersji
    • Working area, staging area, local / remote repository
    • Instalacja Git
    • Inicjalizacja repozytorium
    • Konfiguracja i personalizacja ustawień Git (3 poziomy konfiguracji)
    • Dokumentacja Git
    • Struktura katalogu .git
    • Plik .gitignore
    • Plik .gitattributes
    • Śledzenie stanu, porównywanie plików projektu zarządzanego przez Git
    • Tworzenie commitów
    • Reset, restore, revert
    • Prezentowanie informacji na temat commitów
    • Hooks
    • Tworzenie i zarządzanie gałęziami
    • Merge, rebase, squash
    • Git Flow, TBD
    • Praca zespołowa z wykorzystaniem GitHub
    • Clone, push, fetch, pull
    • Dobre praktyki przygotowania repozytorium na GitHub
    • Struktura pliku README.md
    • Praktyczny przykład pracy zespołowej z wykorzystaniem GitHub
    • Worktree
    • Submodules
    • Subtree
    • Stash
    • Bisect
    • Tags
    • Inne komendy Git (o których nie wspomniałem w tym opisie, a których użyłem w kursie)
    • Praca z Git, GitHub z wykorzystaniem komercyjnego IDE
    • Fork
    • Tworzenie pull requests
    • GitHub Desktop

    Newsletter