Cena kursu
- Cena spotkania grupowego wynosi 90 zł netto za 60 minut (110,7 zł brutto za 60 minut).
- Cena spotkania indywidualnego wynosi 140 zł netto za 60 minut (172,2 zł brutto za 60 minut).
- Płacisz zawsze za 25 kolejnych spotkań grupowych.
- Płacisz zawsze za jedno kolejne spotkanie indywidualne.
- Pierwsze spotkanie grupowe gratis.
- Istnieje możliwość wystawienia faktury VAT.
Opis kursu
- Profesjonalne przygotowanie do pracy na stanowisku programisty w wybranym języku programowania oraz powiązanymi z nim bibliotekami oraz frameworkami.
- Nauka od podstaw po zaawansowane rozwiązania komercyjne.
- Zoptymalizowany kod napisany zgodnie z dobrymi praktykami programistycznymi.
- Szkolenie według planu dopasowanego do najnowszych standardów IT.
- Nagrania ze spotkań grupowych, które możesz oglądać kiedy tylko chcesz.
- Ogromna ilość zadań teoretycznych i praktycznych o różnym poziomie trudności.
- Wsparcie mentora przy rozwiązywaniu problemów związanych z pytaniami teoretycznymi, zadaniami praktycznymi i projektami komercyjnymi.
- Elastyczny kontakt z mentorem.
- Profesjonalne przygotowanie do rozmowy kwalifikacyjnej.
- Profesjonalnie przygotowane portfolio z rozbudowanymi projektami komercyjnymi.
- Skuteczne techniki nauki programowania.
Plan kursu
- Przegląd dostępnych wersji Python
- Instalacja Python na dowolnym systemie operacyjnym
- Instalacja managera pakietów pip
- Omówienie zasady działania virtual environments
- Instalacja narzędzia virtualenv
- Instalacja narzędzia pipenv
- Omówienie struktury projektu Python
- Omówienie roli plików Pipfile oraz Pipfile.lock
- Przegląd komend pipenv shell
- Praca z interpreterem Python
- Instalacja managera pakietów conda
- Zarządzanie wirtualnymi środowiskami z wykorzystaniem conda
- Instalacja managera pakietów poetry
- Zarządzanie wirtualnymi środowiskami z wykorzystaniem poetry
- Zagadnienia uzupełniające
- Cechy języka dynamicznie typowanego
- Dwa rodzaje obiektów: immutable oraz mutable
- Funkcja globalna id
- Typy liczbowe (całkowite i zmiennoprzecinkowe)
- Typy logiczne
- Liczby zespolone
- Ułamki
- Precyzyjne przechowywanie danych zmiennoprzecinkowych
- Namespaces
- Zasięg zmiennych
- Zasada LEGB
- Rzutowanie
- Sposoby pobierania i prezentacji danych
- Losowanie danych
- Operatory
- Walrus operator
- Priorytet operatorów
- Zagadnienia uzupełniające
- Różne postaci instrukcji warunkowej if
- Ternary operator
- Wprowadzenie do list, tuple oraz dict
- Bloki warunkowe z wykorzystaniem list, tuple oraz dict
- Blok match case
- Pętla for
- Pętla while
- Petle for else oraz while else
- Sposoby implementowania pętli do while
- Instrukcje break oraz continue
- Słowo kluczowe pass
- Debuggowanie
- Analiza mechanizmu podpowiadania błędów
- Zagadnienia uzupełniające
- 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
- Podpowiadanie typów
- Wyrażenia lambda
- Funkcje zagnieżdżone
- Closures
- Dekoratory
- Dokumentowanie funkcji
- Zagadnienia uzupełniające
- Napis jako obiekt niemutowalny
- Sposoby tworzenia i prezentacji napisów
- Napisy wielowierszowe
- Raw strings
- Formatowanie napisów
- Przegląd i praktyczne przykłady metod zarządzających napisami
- Optymalne przetwarzanie napisów
- Wyrażenia regularne
- Flagi do pracy z wyrażeniami regularnymi
- Konwersja i parsowanie napisów
- Zagadnienia uzupełniające
- Iteratory oraz struktury iterable
- Wzorzec lazy evaluation
- Sekwencje jako szczególny przypadek iterable
- List
- Tuple
- Namedtuple
- Range
- Bytes oraz bytearray
- Set
- Frozenset
- Dict
- Counter
- Deque
- Defaultdict
- OrderedDict
- ChainedMap
- Przegląd innych struktur z modułu collections
- Operacje i metody do zarządzania strukturami iterable
- Zasady porównywania elementów struktur iterable
- Zasady sortowania elementów struktur iterable
- List comprehension
- Przegląd funkcji realizujących programowanie funkcyjne
- Higher Order Functions
- Generatory
- Generator expressions
- Moduł itertools
- Struktury wielowymiarowe
- Tworzenie kodu o strukturze jednowierszowej
- Praktyczne przykłady wykorzystania bytów iterable
- Zagadnienia uzupełniające
- Przechowywanie daty i czasu za pomocą obiektów naive
- Przechowywanie daty i czasu za pomocą obiektów aware
- Omówienie struktury modułu datetime
- Reprezentowanie różnicy czasu za pomocą datetime.timedelta
- Reprezentowanie daty za pomocą datetime.date
- Reprezentowanie czasu za pomocą time.time oraz datetime.time
- Przechowywanie daty i czasu za pomocą obiektu datetime.datetime
- Strefy czasowe – moduł pytz
- Konwersja daty i czasu pomiędzy różnymi strefami czasowymi
- Porównywanie daty i czasu
- Dobre praktyki programistyczne przetwarzania daty i czasu
- Zagadnienia uzupełniające
- Klasyfikacja błędów
- Syntax errors
- Wyjątki
- Zachowanie aplikacji podczas wystąpienia wyjątku
- Rzucanie wyjątków
- Przechwytywanie wyjątków za pomocą bloku try except
- Sekcja else w bloku try except
- Sekcja finally w bloku try except
- Przechwycenie rodzaju wyjątku w sekcji except
- Przegląd wbudowanych klas wyjątków
- Definiowanie własnych klas wyjątków
- Bezpieczna obsługa zasobów
- Zagadnienia uzupełniające
- Definicja modułu oraz paczki
- Sposoby tworzenia modułu
- Importowanie modułów
- Pozyskiwanie informacji na temat modułu
- Skrypt szczególnym przypadkiem modułu
- Zasady wyszukiwania modułów
- Kompilowanie modułów
- Moduł sys
- Przegląd innych standardowych modułów Python
- Funkcja dir
- Definiowanie paczek
- Plik __init__.py
- Różne sposoby importowania elementów paczki
- Dobre praktyki tworzenia struktury projektu
- Tworzenie przykładowego projektu z podziałem na paczki i moduły
- Umieszczenie paczek w zdalnym repozytorium PyPI
- Importowanie utworzonej paczki z repozytorium PyPI
- Zagadnienia uzupełniające
- Omówienie zasad programowania obiektowego
- Tworzenie klas i obiektów
- Klasyfikacja składników klasy
- Słowo kluczowe self
- Metoda __init__
- Inne ważne dunder methods
- Atrybuty klasy oraz atrybuty obiektu klasy
- Różne sposoby odwoływania się do składników instancji klasy
- Pozyskiwanie informacji na temat obiektu
- Przygotowanie obiektów klasy do pracy ze strukturami iterable
- Metody instancji klasy
- Dekoratory @classmethod oraz @staticmethod
- Dekorator @property
- Klasy jako obiekty callable
- Składniki prywatne w klasie
- Klasy POJO
- Dynamiczne tworzenie klas
- Podstawy metaprogramowania
- Dziedziczenie
- Polimorfizm
- Dekoratory @classmethod oraz @staticmethod w dziedziczeniu
- Rozszerzanie typów wbudowanych
- Abstrakcyjność
- Dziedziczenie wielokrotne
- Duck typing
- Implementacja własnego iteratora
- Moduł pythonlangutil
- Dekorator dataclass
- Przegląd innych dekoratorów rozszerzających możliwości klasy
- Metoda __init_subclass__
- Dokumentowanie kodu klasy
- Zagadnienia uzupełniające
- Algorytmy badające właściwości geometryczne
- Algorytm badające właściwości matematyczne
- Konwersje pomiędzy systemami liczbowymi
- Badanie ciągów danych pod kątem wybranych właściwości
- Sortowanie ciągów danych
- Zastosowanie metody dziel i zwyciężaj
- Wybrane metody numeryczne
- Programowanie zachłanne
- Algorytmy na tekstach
- Wybrane algorytmy kryptograficzne
- Rekurencja
- Przegląd wybranych struktur danych
- Zagadnienia uzupełniające
- Klasyfikacja wzorców projektowych
- Implementacja wzorców kreacyjnych
- Implementacja wzorców strukturalnych
- Implementacja wzorców czynnościowych
- Zagadnienia uzupełniające
- Porównanie funkcji str() oraz repr()
- Implementacja różnych sposobów formatowania danych
- Operacje odczytu i zapisu do plików
- Praca z plikami w trybie tekstowym oraz binarnym
- Zarządzanie danymi w formacie JSON
- Operacje odczytu i zapisu do plików w formacie JSON
- Bezpieczny sposób zarządzania komunikacją z plikiem
- Zagadnienia uzupełniające
- Konfiguracja wybranego środowiska bazodanowego
- Omówienie zasad języka SQL
- Nawiązanie połączenia z bazą danych
- Konfiguracja connection pool
- Implementacja kursora do zarządzania połączeniem
- Implementacja operacji CRUD
- 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
- Praktyczny przykład uogólnionego repozytorium bazodanowego
- Zagadnienia uzupełniające
- Omówienie zagadnień ORM
- Instalacja i konfiguracja aplikacji do pracy z SQLAlchemy
- Różne sposoby tworzenia modelu tabeli
- Zarządzanie modelem tabeli bazy danych z poziomu SQLAlchemy
- Pozyskiwanie informacji na temat modelu tabeli z bazy danych
- Zarządzanie migracjami z wykorzystaniem narzędzia Alembic
- Różne sposoby tworzenia i zarządzania sesją
- Transakcyjność
- Implementacja operacji CRUD
- Omówienie sposobów pozyskiwania danych z tabel
- Zarządzanie wynikami otrzymanymi w ramach zapytań
- Konfiguracja i zarządzanie relacjami bazodanowymi
- Sposoby implementowania mechanizmu eager loading
- Implementowanie mechanizmów optimistic / pessimistic locking
- Implementacja cache
- Praktyczny przykład uogólnionego repozytorium bazodanowego
- Zagadnienia uzupełniające
- Konfiguracja wybranego środowiska bazodanowego NoSQL
- Omówienie zasad języka NoSQL
- Nawiązanie połączenia z bazą danych
- Tworzenie kolekcji oraz dokumentów
- 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ń
- Zagadnienia uzupełniające
- Zarządzanie archiwami ZIP
- Zarządzanie plikami CSV
- Zarządzanie plikami oraz katalogami
- Wysyłanie wiadomości email
- Lazy Streams
- Generowanie tokenów JWT
- Komunikacja ze zdalnym REST API
- Geolokalizacja
- Zagadnienia uzupełniające
- Omówienie zagadnień związanych z architekturą testowania
- Klasyfikacja testów
- Podejście TDD (Test-Driven Development)
- Implementacja podstawowej struktury testującej
- Uruchamianie testów
- Omówienie zasady działania asercji
- Praktyczne przykłady wykorzystania różnych rodzajów asercji
- Generowanie testów opartych na istniejących metodach
- Sposoby pomijania testów
- Wykonywanie testów zagnieżdżonych i parametryzowanych
- Grupowanie testów
- Wykonywanie operacji przed testami i po testach
- Implementacja test loaderów
- Omówienie zagadnień związanych z mockowaniem
- Patch oraz dekorator @patch
- Prezentacja różnych przykładów mockowania
- Analiza struktury i kolejności wywołania bytów mockowanych
- Rzucanie wyjątków z mockowanych obiektów
- Side effect functions
- Generowanie mocków na podstawie istniejących obiektów
- Partial mocking
- Zagadnienia uzupełniające
- Wprowadzenie pojęć związanych z programowaniem wielowątkowym
- Moduł threading
- Tworzenie wątku za pomocą funkcji
- Tworzenie wątku za pomocą klasy
- Zarządzanie pracą wielu wątków – ThreadPoolExecutor
- Problemy związane z wielowątkowością
- Lock
- RLock
- Kolejki
- Implementacja wzorca producent-konsument
- Semafor
- Timer
- Barrier
- Wprowadzenie pojęć związanych z programowaniem asynchronicznym
- Porównanie wielowątkowości i asynchroniczności
- Moduł asyncio
- Słowa kluczowe async oraz 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 jako przykład wykorzystania asynchroniczności
- Asynchroniczna komunikacja z REST API
- Implementowanie asynchronicznego web servera
- Zagadnienia uzupełniające
- Omówienie architektury aplikacji webowej
- Omówienie standardów HTTP, REST, JSON oraz innych powiązanych
- Klasyfikacja pojęć związanych z frameworkiem Django
- Różnica pomiędzy projektem oraz aplikacją
- Wzorzec projektowy Active Record
- Wprowadzenie do frameworka Django REST
- Przygotowanie środowiska do pracy z Django REST
- Dokeryzacja aplikacji webowej (patrz punkt 23)
- Praca ze zmiennymi środowiskowymi
- Implementacja REST API w oparciu o klasę APIView
- Implementacja REST API w oparciu o dekorator @api_view
- Routing
- Przekazywanie 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 mechanizm do zarządzania warstwą bazodanową
- Migracje
- Tworzenie modelu bazy danych
- Zarządzanie zmianami w modelu bazy danych
- Implementacja relacji bazodanowych
- Zarządzanie zapytaniami do bazy danych
- Pobieranie i przetwarzanie danych z warstwy bazodanowej
- Optymalizacja komunikacji z bazą danych
- Konfiguracja panelu administratora
- Warstwa serwisowa aplikacji webowej
- Wykorzystanie modułu django.test do testowania aplikacji
- Testowanie modelu aplikacji
- Mockowanie obiektów i testowanie warstwy serwisowej
- Testowanie REST API z wykorzystaniem zewnętrznych klientów REST
- Konfiguracja CORS
- Pobieranie zasobów statycznych z aplikacji frontend
- Zarządzanie zasobami statycznymi z wykorzystaniem AWS S3
- Autentykacja oraz autoryzacja
- Omówienie standardu JWT
- JWT Debugger
- Zarządzanie danymi przesyłanymi w tokenie JWT
- Omówienie zasady działania i przygotowanie access token
- Omówienie zasady działania i przygotowanie refresh token
- Dobre praktyki szyfrowania danych w tokenach JWT
- Biblioteka Simple JWT
- Przygotowanie modułu rejestracji użytkowników
- Przygotowanie modułu aktywacji konta użytkownika
- Szyfrowanie hasła użytkownika
- Implementacja modułu autentykacji użytkownika
- Implementacja modułu autoryzacji użytkownika
- Omówienie zastosowania serwera nginx
- Przygotowanie wersji produkcyjnej aplikacji (WSGI oraz ASGI)
- Osadzenie aplikacji webowej w chmurze (patrz punkt 24)
- Generowanie dokumentacji aplikacji webowej
- Internacjonalizacja
- Zagadnienia uzupełniające
- Omówienie architektury aplikacji webowej
- Omówienie standardów HTTP, REST, JSON oraz innych powiązanych
- Klasyfikacja pojęć związanych z frameworkiem Flask
- Wprowadzenie do frameworka Flask-RESTful
- Przygotowanie środowiska do pracy z Flask-RESTful
- Dokeryzacja aplikacji webowej (patrz punkt 23)
- Praca ze zmiennymi środowiskowymi
- Implementacja REST API w oparciu o klasę Resource
- Implementacja REST API w oparciu o dedykowane dekoratory
- Routing
- Przekazywanie 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
- Flask-SQLAlchemy jako mechanizm do zarządzania warstwą bazodanową
- Migracje
- Tworzenie modelu bazy danych
- Zarządzanie zmianami w modelu bazy danych
- Implementacja relacji bazodanowych
- Zarządzanie zapytaniami do bazy danych
- Pobieranie i przetwarzanie danych z warstwy bazodanowej
- Optymalizacja komunikacji z bazą danych
- Warstwa serwisowa aplikacji webowej
- Testowanie modelu aplikacji
- Mockowanie obiektów i testowanie warstwy serwisowej
- Testowanie REST API z wykorzystaniem zewnętrznych klientów REST
- Konfiguracja CORS
- Pobieranie zasobów statycznych z aplikacji frontend
- Zarządzanie zasobami statycznymi z wykorzystaniem AWS S3
- Autentykacja oraz autoryzacja
- Omówienie standardu JWT
- JWT Debugger
- Zarządzanie danymi przesyłanymi w tokenie JWT
- Omówienie zasady działania i przygotowanie access token
- Omówienie zasady działania i przygotowanie refresh token
- Dobre praktyki szyfrowania danych w tokenach JWT
- Biblioteka Flask-PyJWT
- Przygotowanie modułu rejestracji użytkowników
- Przygotowanie modułu aktywacji konta użytkownika
- Szyfrowanie hasła użytkownika
- Implementacja modułu autentykacji użytkownika
- Implementacja modułu autoryzacji użytkownika
- Omówienie zastosowania serwera nginx
- Przygotowanie wersji produkcyjnej aplikacji (WSGI oraz ASGI)
- Osadzenie aplikacji webowej w chmurze (patrz punkt 24)
- Generowanie dokumentacji aplikacji webowej
- Internacjonalizacja
- Zagadnienia uzupełniające
- Omówienie architektury aplikacji webowej
- Omówienie standardów HTTP, REST, JSON oraz innych powiązanych
- Klasyfikacja pojęć związanych z frameworkiem FastAPI
- Prezentacja i wykorzystanie mechanizmu dependency injection
- Prezentacja i wykorzystanie mechanizmu middleware
- Wykorzystanie mechanizmów asynchroniczności do implementowania aplikacji webowej
- Przygotowanie środowiska do pracy z FastAPI
- Dokeryzacja aplikacji webowej (patrz punkt 23)
- Praca ze zmiennymi środowiskowymi
- Implementacja REST API
- Routing
- Przekazywanie 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
- SQLAlchemy jako mechanizm do zarządzania warstwą bazodanową
- Migracje
- Tworzenie modelu bazy danych
- Zarządzanie zmianami w modelu bazy danych
- Implementacja relacji bazodanowych
- Zarządzanie zapytaniami do bazy danych
- Pobieranie i przetwarzanie danych z warstwy bazodanowej
- Optymalizacja komunikacji z bazą danych
- Warstwa serwisowa aplikacji webowej
- Testowanie modelu aplikacji
- Mockowanie obiektów i testowanie warstwy serwisowej
- Testowanie REST API z wykorzystaniem zewnętrznych klientów REST
- Konfiguracja CORS
- Pobieranie zasobów statycznych z aplikacji frontend
- Zarządzanie zasobami statycznymi z wykorzystaniem AWS S3
- Autentykacja oraz autoryzacja
- Omówienie standardu JWT
- JWT Debugger
- Zarządzanie danymi przesyłanymi w tokenie JWT
- Omówienie zasady działania i przygotowanie access token
- Omówienie zasady działania i przygotowanie refresh token
- Dobre praktyki szyfrowania danych w tokenach JWT
- Biblioteka Jose do generowania tokenów JWT
- Przygotowanie modułu rejestracji użytkowników
- Przygotowanie modułu aktywacji konta użytkownika
- Szyfrowanie hasła użytkownika
- Implementacja modułu autentykacji użytkownika
- Implementacja modułu autoryzacji użytkownika
- Omówienie zastosowania serwera nginx
- Przygotowanie wersji produkcyjnej aplikacji
- Osadzenie aplikacji webowej w chmurze (patrz punkt 24)
- Generowanie dokumentacji aplikacji webowej
- Internacjonalizacja
- Zagadnienia uzupełniające
- 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 aplikacji webowej
- Przykład tworzenia utility containers
- Zagadnienia uzupełniające
- Omówienie architektury Amazon Web Services
- Omówienie pojęcia regionu
- Omówienie pojęcia availability zone (AZ)
- Praca z Identity and Access Management (IAM)
- Wprowadzenie pojęć users, roles, groups oraz policies
- Konfiguracja konta użytkownika
- Zarządzanie budżetem
- Omówienie Amazon Machine Images (AMI)
- Wprowadzenie do serwisu Elastic Compute Cloud (EC2)
- Przygotowanie i uruchomienie instancji EC2
- Przegląd parametrów instancji EC2
- Konfiguracja Security Groups do ustawienia możliwości komunikacyjnych instancji EC2
- Komunikacja z instancją EC2 z wykorzystaniem SSH
- Komunikacja z instancją EC2 z wykorzystaniem AWS Console
- Konfiguracja Elastic IP
- Konfiguracja User Data do uruchamia operacji początkowych dla instancji EC2
- Przygotowanie instancji EC2 do pracy z kontenerami Docker
- Osadzenie skonteneryzowanej aplikacji webowej w instancji EC2
- Klasyfikacja sposobów uruchamiania instancji EC2
- EC2 Elastic Network Instances (ENI)
- Omówienie pojęć scalability oraz high availability
- Skalowanie wertykalne oraz horyzontalne
- Omówienie pojęcia load balancing
- Klasyfikacja load balancerów
- Uruchomienie serwisu Elastic Load Balancer (ELB)
- Load Balancer Stickiness
- Cross-Zone Load Balancing
- Omówienie pojęć związanych z auto scaling
- Konfiguracja Auto Scaling Group (ASG)
- Sposoby skalowania – Target Tracking Scaling
- Sposoby skalowania – Simple / Step Scaling
- Konfiguracja Elastic Block Store (EBS)
- Klasyfikacja EBS Volumes
- Konfiguracja EC2 Instance Store
- Konfiguracja Elastic File System (EFS)
- Porównanie EBS oraz EFS
- Wprowadzenie do serwisu Relational Database Service (RDS)
- Zalety i wady stosowania RDS
- Omówienie mechanizmu RDS Read Replicas
- Omówienie mechanizmu Single AZ oraz Multi AZ
- Konfiguracja usługi RDS
- RDS Encryption
- Wady i zalety pracy z bazą danych Amazon Aurora
- Konfiguracja RDS do pracy z Amazon Aurora
- Omówienie usługi Amazon ElastiCache
- Wprowadzenie do serwisu Elastic Beanstalk (EB)
- Przygotowanie środowiska Elastic Beanstalk Environment
- Klasyfikacja sposobów osadzania aplikacji w EB Environment
- Praca z Elastic Beanstalk Extensions
- Klonowanie środowiska Elastic Beanstalk
- Docker w pracy z Elastic Beanstalk
- Osadzanie aplikacji webowej w środowisku EB
- Osadzanie aplikacji webowej w środowisku EB z komunikacją bazodanową z wykorzystaniem RDS
- Load balancing oraz autoscaling aplikacji osadzonej w środowisku EB
- Przygotowanie API Gateway dla środowiska EB
- Wprowadzenie do serwisu Elastic Container Service (ECS)
- Omówienie pojęcia orkiestryzacji kontenerów
- Konfiguracja ECS
- Wprowadzenie do serwisu AWS Fargate
- Omówienie jednostki uruchomieniowej Task
- Konfiguracja Task Definition
- Omówienie i konfiguracja Service
- Przeznaczenie elementu Cluster
- Konfiguracja Cluster
- Osadzenie aplikacji webowej jako service w klastrze AWS Fargate
- Komunikacja kontenera AWS Fargate z bazą danych osadzoną w RDS
- Zarządzanie parametrami aplikacji poprzez Systems Manager
- Komunikacja kontenerów osadzonych w ramach serwisów AWS Fargate (wdrażanie architektury mikroserwisowej)
- Konfiguracja distributed tracing dla kontenerów AWS Fargate z wykorzystaniem usługi AWS X-Ray
- Konfiguracja load balancera do pracy z kontenerami AWS Fargate
- Konfiguracja auto scaling do pracy z kontenerami AWS Fargate
- Wprowadzenie do serwisu App Mesh
- Charakterystyka pojęcia proxy
- Envoy Proxy jako przykład proxy używanego w App Mesh
- Tworzenie namespace w ramach usługi App Mesh
- Tworzenie service dla skonfigurowanego namespace
- Konfiguracja URI utworzonych w usłudze Route53 do pracy ze skonfigurowanymi serwisami
- Konfiguracja Virtual Node
- Konfiguracja Virtual Service dla utworzonych serwisów
- Konfiguracja AWS Fargate do wdrożenia konfiguracji przygotowanej w ramach AWS Mesh
- Wprowadzenie do serwisu AWS CodePipeline
- Wyjaśnienie pojęcia continuous integration (CI)
- Wyjaśnienie pojęcia continuous delivery (CD)
- Przygotowanie aplikacji webowej do pracy z CI/CD
- Przygotowanie repozytorium GitHub aplikacji webowej do pracy z AWS CodePipeline
- Przygotowanie serwisu ECS do pracy z AWS CodePipeline
- Omówienie kolejnych etapów budowania i uruchamiania projektu w ramach usługi AWS CodePipeline
- Uruchomienie serwisu z aplikacją webową w ramach CI/CD
- Testowanie mechanizmu CI/CD w ramach AWS CodePipeline
- Sprawdzanie logów aplikacji z wykorzystaniem usługi CloudWatch
- Serwowanie zasobów statycznych z wykorzystaniem usługi AWS S3
- Zagadnienia uzupełniające
- Teoretyczne wprowadzenie do zagadnień z obszaru Data Science
- Przygotowanie projektu do pracy z narzędziami Data Science
- Wprowadzenie do biblioteki NumPy
- Sposoby tworzenia struktury NumPy Array
- Indeksowanie struktury Array
- Przegląd operacji na strukturze Array
- Zarządzanie wymiarami struktury Array
- Wektoryzacja Array
- Tablice wielowymiarowe w NumPy
- Wprowadzenie do biblioteki Pandas
- Różne sposoby pozyskiwania danych ze źródeł zewnętrznych
- Sposoby tworzenia struktury DataFrame
- Omówienie funkcji do zarządzania strukturą DataFrame
- Sposoby zarządzania wartościami liczbowymi oraz napisami
- Zarządzanie danymi reprezentującymi datę oraz czas
- Zarządzanie kolumnami struktury DataFrame
- Indeksowanie struktury DataFrame
- Filtrowanie danych struktury DataFrame
- Sortowanie danych struktury DataFrame
- Generowanie statystyk i podsumowań
- Zarządzanie wartościami NA
- Implementacja operacji merge, join oraz concat
- Grupowanie danych
- Sposoby tworzenia struktury Series
- Omówienie funkcji do zarządzania strukturą Series
- Indeksowanie struktury Series
- Sposoby tworzenia struktury Index
- Omówienie funkcji do zarządzania strukturą Index
- Mechanizm chained indexing
- Wprowadzenie do biblioteki Matplotlib
- Line plot
- Bar chart
- Pie chart
- Histogram
- Scatter plot
- Subplot
- Inne przykłady wykresów
- Animacje
- Zarządzanie opisem, wyglądem oraz danymi wykresów
- Przegląd innych możliwości biblioteki Matplotlib
- Tworzenie zaawansowanych wykresów z użyciem biblioteki Seaborn
- Przetwarzanie danych pozyskiwanych w dziedzinie finansów
- Końcowe przygotowanie danych na potrzeby przyszłego przetwarzania
- Wykorzystanie przetworzonych danych na potrzeby Machine Learning
- Zagadnienia uzupełniające
- Omówienie architektury GIT
- Konfiguracja i personalizacja ustawień GIT
- Klasyfikacja repozytoriów
- Tworzenie repozytorium lokalnego
- Zarządzanie plikami w ramach obszarów repozytorium
- Rozgałęzianie i scalanie
- Przegląd wszystkich operacji GIT
- Aplikacje i wtyczki do pracy z GIT
- Praca ze zdalnym repozytorium
- Dobre praktyki tworzenia repozytoriów GIT
- GitHub Pages
- Zagadnienia uzupełniające
Materiały video
-
Zarządzanie pamięcią w Python od podstaw
Przykład aplikacji, w której pokazuję, w jaki sposób Python przechowuje obiekty.
GitHub: https://github.com/kmprograms/python-001-zarzadzanie-pamiecia
KM Programs: https://km-programs.pl/ -
Jak używać Lazy Streams w Python?
Przykład aplikacji, w której pokazuję w jaki sposób używać w Python biblioteki lazy_streams
LazyStreams: https://github.com/brettschneider/python_lazy_streams/blob/master/README.md
GitHub: https://github.com/kmprograms/python-002-lazy-streams
KM Programs: https://km-programs.pl/ -
Podpowiadanie typów w Python
Przykład aplikacji, w której pokazuję w jaki sposób używać w Python mechanizmu podpowiadania typów.
GitHub: https://github.com/kmprograms/python-003-podpowiadanie-typow
KM Programs: https://km-programs.pl/ -
Conda + Python
Zastosowanie narzędzia Conda do zarządzania wirtualnymi środowiskami Python.
Conda: https://docs.conda.io/en/latest/
Anaconda: https://www.anaconda.com/
GitHub: https://github.com/kmprograms/python-004-conda
KM Programs: https://km-programs.pl/ -
Wymuszanie rodzaju argumentów w Python
Przykład aplikacji, w której pokazuję, w jaki sposób wymuszać rodzaj argumentu w funkcji Python.
GitHub: https://github.com/kmprograms/python-005-wymuszanie-rodzaju-argumentow
KM Programs: https://km-programs.pl/ -
Jak używać walrus operator w Python?
Przykład aplikacji, w której pokazuję, jak działa walrus operator.
GitHub: https://github.com/kmprograms/python-006-walrus-operator
KM Programs: https://km-programs.pl/