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.

PROMOCJA – pierwsze spotkanie GRATIS
Już teraz
zapisz się na kurs
- Kurs JavaScript / TypeScript Fullstack
Zostaw swoje namiary, a skontaktuję się z Tobą w sprawie kursu
Wycena indywidualna
Plan kursu
- Przygotowanie środowiska programistycznego do pisania aplikacji w JavaScript
- Zmienne i typy danych
- Deklaracja i definicja
- Typy prymitywne oraz typy obiektowe
- Typy i wartości specjalne: null, undefined, NaN i inne
- Literały
- Słowa kluczowe var, let oraz const
- Typowanie dynamiczne i statyczne
- Zmienne i obiekty globalne
- Block scoping
- Operatory typeof oraz instanceof
- Konwersje pomiędzy typami
- Wartości truthy oraz falsy
- Optional chaining
- Instrukcje warunkowe i pętle
- Pętle for-of, for-in oraz for-await-of
- Słowa kluczowe break oraz continue
- Mechanizmy porównywania zmiennych i obiektów
- Operatory binarne
- Pozostałe wyrażenia i operatory
- Priorytety operatorów
- Klasa Math
- Klasa Number
- Data i czas
- Typ Symbol i jego właściwości
- Rzucanie i obsługa wyjątków
- Zagadnienia uzupełniające
- Sposoby tworzenia tablic
- Operacje na tablicach
- Obiekt iterable oraz mechanizm iteratora
- Klasa Array i metody zarządzające tablicami
- Praktyczne przykłady przetwarzania tablic z wykorzystaniem dostępnych metod tablicowych
- Obiekty Array-like
- Konwersje obiektów iterable oraz wartości Array-like do tablic
- Tablice wielowymiarowe regularne i nieregularne
- Kodowanie i przechowywanie napisów
- Sposoby tworzenia napisów
- Niemodyfikowalność napisów
- Napisy wielowierszowe
- Raw strings
- Napisy jako obiekty iterowalne
- Dostęp do pojedynczych znaków w napisie
- Mechanizm destrukturyzacji w pracy z napisami
- Konkatenacja oraz interpolacja napisów
- Obsługa sekwencji specjalnych Unicode
- Porównywanie napisów
- Parsowanie napisów
- Wyrażenia regularne
- Prezentacja flag do pracy z wyrażeniami regularnymi
- Przegląd metod JavaScript wykorzystujących wyrażenia regularne
- Zarządzanie danymi w formacie JSON
- Zagadnienia uzupełniające
- Klasyfikacja funkcji (ordinary functions, specialized functions)
- Sposoby implementowania funkcji
- Funkcje anonimowe
- Wyrażenia funkcyjne
- Funkcje zagnieżdżone
- Funkcje strzałkowe
- Funkcje callback
- Generatory
- Wzorzec IIFE
- Obiekt Function
- Obiekt GeneratorFunction
- Dynamiczne wykonywanie kodu – eval
- Przegląd funkcji wbudowanych
- Parametry domyślne funkcji
- Parametry nazwane funkcji
- Parametry opcjonalne funkcji
- Mechanizm destrukturyzacji w funkcjach
- Mechanizm trailing commas
- Operator spread w pracy z funkcjami
- Zmienna arguments oraz mechanizm rest parameters
- Sposoby zwracania wartości przez funkcje
- Słowo kluczowe this w pracy z funkcjami
- Sposoby implementowania metod w klasach i obiektach
- Closures
- Zagadnienia uzupełniające
- Omówienie założeń programowania obiektowego
- Obiekty jako rekordy oraz jako słowniki
- Tworzenie obiektu z wykorzystaniem notacji literału
- Tworzenie obiektu z wykorzystaniem konstruktora
- Zarządzanie właściwościami obiektu
- Dynamiczne wyznaczanie nazwy klucza / właściwości w obiekcie
- Zarządzanie atrybutami właściwości
- Wykorzystanie operatora spread do pracy z obiektami
- Definiowanie metody w obiekcie
- Przegląd wbudowanych metod obiektu
- Przesłanianie metod wbudowanych
- Sposoby kopiowania obiektów
- Zarządzanie tablicą obiektów
- Przegląd metod klasy Object
- Właściwość __proto__
- Tworzenie klasy z wykorzystaniem podejścia class declaration
- Tworzenie klasy z wykorzystaniem podejścia class expression
- Pola składowe w klasie
- Metody składowe w klasie
- Sposoby definiowania składników prywatnych klasy
- Konstruktory
- Składniki i bloki statyczne
- Dziedziczenie
- Słowo kluczowe super
- Przesłanianie metod w klasach pochodnych
- Prototypy w kontekście dziedziczenia
- Symulowanie dziedziczenia wielokrotnego – mixin classes
- Zarządzanie this w pracy z klasami oraz obiektami
- Przykłady użycia metod call oraz bind
- Zagadnienia uzupełniające
- Omówienie hierarchii kolekcji
- Wzorzec projektowy iterator
- Zarządzanie obiektami klasy Array – przypomnienie
- Pętle for-of oraz for-await-of w pracy z kolekcjami
- Zarządzanie obiektami klasy ArrayBuffer
- Widoki klasy ArrayBuffer: Typed Array oraz DataView
- Konwersje pomiędzy Typed Array oraz zwykłą tablicą
- Łączenie kilku obiektów Typed Array
- Tworzenie i zarządzanie obiektami typu Map
- Konwersja pomiędzy mapą oraz obiektem
- Tworzenie i zarządzanie obiektami typu WeakMap
- Implementowanie mechanizmu cache za pomocą typu WeakMap
- Zarządzanie prywatnymi składnikami klasy za pomocą typu WeakMap
- Tworzenie i zarządzanie obiektami typu Set
- Unia, intersekcja oraz różnica kolekcji typu Set
- Tworzenie i zarządzanie obiektami typu WeakSet
- Mechanizm destrukturyzacji w pracy z kolekcjami
- Uzupełnienie wiadomości o generatorach
Zagadnienia uzupełniające
- Architektura i zastosowanie narzędzia Webpack
- Architektura i zastosowanie narzędzia Babel
- Przygotowanie pliku package.json
- Zarządzanie dependencies
- Konfiguracja modułów potrzebnych do pracy z Webpack oraz Babel
- Utworzenie aplikacji z wykorzystaniem Webpack oraz Babel
- Praca z plikiem konfiguracyjnym Webpack
- Praca z plikiem konfiguracyjnym BabelDołączanie pluginów
- Konfiguracja projektu do pracy z JavaScript
- Konfiguracja projektu do pracy z plikami SCSS oraz stylami CSS
- Konfiguracja projektu do pracy z plikami graficznymi
- Konfiguracja projektu do pracy z biblioteką Bootstrap
- Uruchomienie Live Server dla aplikacji Webpack
- Przygotowanie skryptów uruchomieniowych
- Przygotowanie konfiguracji do pracy w trybie developerskim oraz w trybie produkcyjnym.
- Konteneryzacja aplikacji Webpack
- Zagadnienia uzupełniające
- Omówienie założeń programowania asynchronicznego
- Event loop
- Callbacks
- Zdarzenia jako jeden z mechanizmów asynchroniczności
- Typ Promise
- Metody resolve oraz reject
- Metody then oraz catch
- Omówienie stanów obiektu typu Promise
- Sposoby zwracania danych z poziomu obiektu typu Promise
- Rzucanie wyjątków przez obiekt typu Promise
- Implementacja funkcji asynchronicznych w oparciu o typ Promise
- Wywołania kaskadowe bytów asynchronicznych
- Promise.all
- Implementacja mechanizmu fork-join z wykorzystaniem Promise.all
- Słowa kluczowe async oraz await
- Natychmiastowe wywołania asynchronicznych funkcji strzałkowych
- Sekwencyjne wywołania funkcji asynchronicznych
- Słowa kluczowe async oraz await w pracy z Promise.all
- Generatory asynchroniczne
- Iteracja asynchroniczna uzupełnienie
- Przykłady użycia funkcji fetch
- Konwersja funkcji callback do funkcji opartych o typ Promise
- Używanie słowa kluczowego await w głównym skrypcie aplikacji
- Zagadnienia uzupełniające
- Klasyfikacja sposobów dzielenia kodu aplikacji
- Skrypty
- Moduły CommonJS oraz AMD
- Moduły ECMAScript
- Named exports oraz named imports
- Importowanie z wykorzystaniem przestrzeni nazw
- Różne sposoby wykorzystania mechanizmu default exports
- Default imports
- Moduły zewnętrzne oraz narzędzie npm
- Konwencje nazywania modułów
- Module specifiers
- Dynamiczne ładowanie modułów – operator import()
- Omówienie właściwości import.meta
- Polyfills
- Zagadnienia uzupełniające
- Interpretacja strony internetowej jako model DOM
- Sposoby uzyskiwania dostępu do elementów modelu DOM
- Przetwarzanie elementów modelu DOM
- Zarządzanie kolekcją węzłów elementów typu NodeList
- Poruszanie się po drzewie elementów modelu DOM
- Problem węzłów znaku odstępu
- Elementy równorzędne, potomne, nadrzędne
- Zarządzanie węzłami tekstowymi elementów modelu DOM
- Zarządzanie węzłami atrybutów elementów modelu DOM
- Zarządzanie zawartością HTML elementów w modelu DOM
- Dodawanie elementów do modelu DOM
- Usuwanie elementów z modelu DOM
- Zagadnienia uzupełniające
- Klasyfikacja typów zdarzeń
- Przepływ zdarzeń w DOM
- Różne sposoby obsługi zdarzeń
- Obserwatory zdarzeń
- Przechwytywanie zdarzeń a różne wersje przeglądarek
- Przekazywanie parametrów do metod obsługi zdarzeń
- Przepływ zdarzeń
- Zarządzanie obiektem zdarzenia
- Delegacja zdarzeń
- Zmiana zachowania domyślnego elementu DOM
- Zatrzymanie procesu propagowania zdarzenia
- Obsługa zdarzeń generowanych przez urządzenia wskazujące
- Obsługa zdarzeń generowanych przez klawiaturę
- Obsługa zdarzeń generowanych przez przeglądarkę
- Obsługa zdarzeń generowanych przez formularz sieciowy
- Obsługa zdarzeń generowanych przez zmiany w modelu DOM
- Obsługa innych rodzajów zdarzeń
- Zagadnienia uzupełniające
- Walidacja formularza
- Implementacja klienta REST API
- Local storage oraz session storage
- Przykłady innych bibliotek zewnętrznych
- Zagadnienia uzupełniające
- Różnica pomiędzy TypeScript oraz JavaScript
- Konfiguracja narzędzi potrzebnych do kompilacji kodu TypeScript
- Praca z kompilatorem TypeScript
- Omówienie zawartości pliku konfiguracyjnego tsconfig.json
- Podstawowe typy danych
- Deklarowanie zmiennych oraz obiektów
- Słowa kluczowe var, let oraz const
- Zakres zmiennych oraz obiektów
- Wyrażenia i operatory
- Instrukcje warunkowe i pętle
- Destrukturyzacja
- Operator spread
- Funkcje
- Parametry opcjonalne
- Parametry domyślne
- Rest parameters
- Funkcje strzałkowe
- Słowo kluczowe this w pracy z funkcjami
- Typy danych zwracane przez funkcje
- Interfejsy
- Typy funkcyjne
- Typy indeksowalne
- Rozszerzanie interfejsów przez inne interfejsy oraz klasy
- Typy hybrydowe
- Klasa oraz jej składniki
- Blok statyczny w klasie
- Enkapsulacja
- Dziedziczenie
- Przesłanianie metod
- Słowo kluczowe override
- Klasy abstrakcyjne
- Constructor functions
- Programowanie oparte o typy generyczne
- Interfejsy generyczne
- Generyczne typy funkcyjne
- Klasy generyczne
- Konkretyzacja typów generycznych
- Ograniczenia konkretyzacji typów generycznych
- Typ enum: numeric enum, string enum, heterogeneous enums
- Const enum
- Typy intersekcyjne
- Unie
- Predykaty typów
- Operator typeof oraz instanceof
- Aliasy
- String literal type
- Numeric literal type
- Mapped type
- Typy warunkowe
- Typ Symbol
- Iteratory
- Generatory
- Modułowość – eksportowanie
- Modułowość – importowanie
- Modułowość – default export
- Modułowość – opcjonalne ładowanie modułów
- Przestrzenie nazw
- Wprowadzenie do dekoratorów
- Przegląd różnych rodzajów dekoratorów
- Implementacja własnych dekoratorów
- Praktyczne przykłady wykorzystanie dekoratorów
- Mixins
- Przegląd innych typów wbudowanych
- Przegląd nowości wprowadzonych w kolejnych wersjach TypeScript
- Przygotowanie narzędzia Webpack do pracy z TypeScript
- Zagadnienia uzupełniające
- Omówienie struktury i zasady działania biblioteki React
- Omówienie zasady działania aplikacji SPA
- Przegląd wersji biblioteki React
- Omówienie zasady działania aplikacji SPA
- Przygotowanie aplikacji do pracy z biblioteką React
- Omówienie składni JSX
- Tworzenie pierwszego komponentu
- Konfiguracja aplikacji React do pracy z TypeScript
- Konteneryzacja aplikacji React do pracy w trybie developerskim oraz w trybie produkcyjnym
- Zagadnienia uzupełniające
- Tworzenie komponentu jako klasa
- Tworzenie komponentu jako funkcja
- Dynamiczne parametry komponentu – props
- Stan komponentu
- Modyfikacja stanu za pomocą metody setState
- Wyjaśnienie problemu wskazania this w komponencie
- Zagnieżdżanie komponentów
- Higher Order Component
- Zarządzanie elementami zagnieżdżonymi – React.Children
- Identyfikacja zagnieżdżonych komponentów
- Omówienie cyklów życia komponentu
- Metody cyklu życia komponentu w zarządzaniu stanem komponentu
- Tworzenie komponentu na podstawie tablicy danych
- Komponenty prezentacyjne oraz komponenty logiki
- Zagadnienia uzupełniające
- Komponenty kontrolowane
- Komponenty niekontrolowane
- Dynamicznie generowane pól formularza
- Praca ze zdarzeniami formularza
- Wykorzystanie stanu komponentu do pracy z formularzem
- Walidacja elementów formularza
- Osadzanie informacji o błędach walidacji w formularzu
- Obsługa plików z wykorzystaniem chmury
- Przygotowanie danych formularza do pracy z backendem
- Komunikacja HTTP ze zdalnym API
- Zagadnienia uzupełniające
- Klasyfikacja sposobów zarządzania stanem aplikacji
- Struktura i zasada działania architektury Flux
- Redux jako implementacja architektury Flux
- Konfiguracja aplikacji do pracy z Redux
- Store
- Akcje
- Reducery
- Selektory
- Podłączenie mechanizmów Redux do aplikacji React
- Zarządzanie wywoływaniem akcji za pomocą Redux Thunk
- Komunikacja HTTP z API za pomocą Redux Thunk
- Implementacja Higher Order Reducer
- Implementacja Higher Order Action Creator
- Zarządzanie stanem aplikacji z wykorzystaniem Context API
- Wprowadzenie do mechanizmu React Hooks
- Konfiguracja stanu dla komponentów funkcyjnych
- Funkcja useState
- Funkcja useEffect
- Funkcja useRef
- Funkcja useReducer
- Funkcja useCallback
- Funkcja useMemo
- Funkcja useContext
- Dobre praktyki wykorzystania mechanizmu React Hooks
- Implementacja własnych hooks
- Implementacja formularza z wykorzystaniem React Hooks
- Dynamiczna wersja formularza z wykorzystaniem React Hooks
- Komunikacja HTTP z API za pomocą React Hooks
- Biblioteka react-use
- Biblioteka react-hook-form
- Biblioteka react-fetch-hook
- Biblioteka react-use-form-state
- Biblioteka Formik
- Biblioteka Hook Router
- Biblioteka use-http
- Rozpoznawanie mowy z wykorzystaniem biblioteki react-speech-recognition
- Prezentacja innych bibliotek do pracy z React Hooks
- Zagadnienia uzupełniające
- Konfiguracja aplikacji do pracy z React Router
- Podejście deklaratywne budowania routingu
- Nawigacja pomiędzy komponentami w aplikacji React
- Odczytywanie parametrów z URL
- Routing zagnieżdżony
- Implementowanie przekierowań w kodzie aplikacji React
- Implementacja routingu dla błędu http 404
- Wykorzystanie React Hooks do implementacji routingu (useParams, useLocation, useHistory, useRouteMatch)
- Zagadnienia uzupełniające
- Omówienie mechanizmu autentykacji oraz autoryzacji
- Omówienie standardu JWT
- Sposoby przechowywania tokena po stronie klienta
- Rejestracja użytkowników
- Implementacja mechanizmu logowania
- Zarządzanie tokenami
- Implementacja mechanizmu wylogowania
- Konfiguracja routingu pod kątem bezpieczeństwa aplikacji
- Dostosowanie aplikacji do pracy z użytkownikami o różnych uprawnieniach
- Zagadnienia uzupełniające
- Omówienie zagadnień związanych z testowaniem aplikacji
- Omówienie właściwości frameworka Jest
- Omówienie właściwości biblioteki Enzyme
- Konfiguracja aplikacji React do przeprowadzania testów
- Przedstawienie różnych metod testowania komponentów
- Testowanie właściwości oraz stanu komponentów
- Testowanie stanu reprezentowanego przez framework Redux
- Testowanie mechanizmów implementowanych w ramach Redux Thunk
- Testowanie komunikacji asynchronicznej (fetch, axios)
- Testowanie mechanizmów implementowanych w ramach hooks
- Testowanie kontekstu aplikacji
- Zagadnienia uzupełniające
- Lazy loading komponentów
- Debuggowanie aplikacji opartej o bibliotekę React
- Timery
- Wykorzystanie biblioteki RxJS w aplikacjach React
- React.memo
- React Fragment
- Portale
- React Interceptors
- React-Async
- Zagadnienia uzupełniając
- Omówienie struktury i zasady działania frameworka Angular
- Przegląd wersji frameworka Angular
- Omówienie zasady działania aplikacji SPA
- Konfiguracja aplikacji Angular z wykorzystaniem Angular CLI
- Omówienie struktury projektu
- Dodawanie do aplikacji Angular bibliotek zewnętrznych
- Konteneryzacja aplikacji React do pracy w trybie developerskim oraz w trybie produkcyjnym
- Zagadnienia uzupełniające
- Sposoby dodawania nowego komponentu do aplikacji Angular
- Omówienie struktury komponentu
- Komponenty zagnieżdżone
- Modyfikowanie stylów komponentu
- Osadzanie komponentów na stronie lub w innych komponentach
- Cykle życia komponentów
- Enkapsulacja widoków
- Referencje lokalne
- Dekoratory ViewChild oraz ContentChild
- Omówienie klasyfikacji dyrektyw
- Dyrektywy strukturalne ngIf, ngFor, ngSwitch
- Dyrektywy ngStyle, ngClass
- Implementacja własnych dyrektyw
- Wykorzystanie dekoratorów HostListener oraz HostBinding do pracy z dyrektywami
- Zagadnienia uzupełniające
- Wyjaśnienie pojęcia databinding
- Interpolacja
- Zarządzanie właściwościami komponentu
- Zarządzanie zdarzeniami komponentu
- Two-way databinding
- Implementacja komunikacji pomiędzy komponentami z wykorzystaniem mechanizmu databinding
- Zagadnienia uzupełniające
- Omówienie zasady działania routingu w aplikacji Angular
- Implementacja tablicy routingu
- Zarządzanie ścieżkami nawigacji
- Dekorowanie aktywnych odnośników routingu
- Implementacja nawigacji w aplikacji z wykorzystaniem routingu
- Routing zagnieżdżony
- Przekierowania
- Zarządzanie przekazywanymi parametrami
- Zastosowanie obserwatorów w routingu
- Zasoby statyczne w routingu
- Routing a bezpieczeństwo – implementacja mechanizmu Guards
- Zagadnienia uzupełniające
- Omówienie przeznaczenia i zasady działania obserwatorów
- Sposoby tworzenia i uruchamiania obserwatorów wbudowanych
- Przegląd operatorów i metod do zarządzania obserwatorami
- Implementacja własnych obserwatorów
- Przechwytywanie i przetwarzanie danych z obserwatorów
- Implementacja mechanizmu przekształcania danych – pipes
- Async pipes
- Zagadnienia uzupełniające
- Omówienie roli serwisu w aplikacji Angular
- Implementacja serwisu
- Dependency injection
- Wstrzykiwanie serwisu do komponentu
- Wstrzykiwanie serwisu do innego serwisu
- Komunikacja między komponentami z wykorzystaniem serwisów
- Zagadnienia uzupełniające
- Klasyfikacja różnych sposobów implementacji formularza
- Implementacja formularza z wykorzystaniem modelu Template Driven
- Implementacja formularza z wykorzystaniem modelu Reactive Form
- Omówienie sposobów implementacji różnych pól formularza
- Przesyłanie plików z wykorzystaniem formularza
- Walidacja danych formularza – walidatory wbudowane oraz implementacja własnych walidatorów
- Zarządzanie stanem formularza
- Informowanie użytkownika o nieprawidłowym stanie formularza
- Grupowanie komponentów formularza
- Inicjalizowanie oraz resetowanie pól formularza
- Zarządzanie wartościami domyślnymi formularza
- Formularz a mechanizm databinding
- Zagadnienia uzupełniające
- Omówienie założeń komunikacji HTTP
- Analiza formatu danych JSON
- Konfiguracja i praca z HttpClient
- Implementacja mechanizmu obsługującego żądania HTTP
- Zarządzanie nagłówkami żądania HTTP
- Zarządzanie kodami odpowiedzi HTTP
- Przechwytywanie i zarządzanie danymi
- Praca z mechanizmem przechwytywaczy
- Obsługa błędów komunikacji HTTP
- Implementacja komunikacji HTTP w standardzie REST z aplikacją zewnętrzną
- Zagadnienia uzupełniające
- Omówienie mechanizmu autentykacji oraz autoryzacji
- Omówienie standardu JWT
- Sposoby przechowywania tokena po stronie klienta
- Rejestracja użytkowników
- Implementacja mechanizmu logowania
- Zarządzanie tokenami
- Implementacja mechanizmu wylogowania
- Konfiguracja routingu pod kątem bezpieczeństwa aplikacji
- Dostosowanie aplikacji do pracy z użytkownikami o różnych uprawnieniach
- Zagadnienia uzupełniające
- Omówienie architektury modułów
- Prezentacja korzyści płynących z podziału programu na moduły
- Szczegółowa analiza składników dekoratora NgModule
- Implementacja własnych modułów – feature modules
- Implementacja mechanizmów routingu w modułach
- Implementacja modułów współdzielonych – shared modules
- Leniwe ładowanie modułów
- Interfejs CanLoad
- Implementacja core module
- Zagadnienia uzupełniające
- Klasyfikacja sposobów zarządzania stanem aplikacji
- Typy Subject, BehaviorSubject oraz ReplaySubject
- Omówienie architektury NgRx
- Wskazanie różnic pomiędzy NgRx oraz React Redux
- Konfiguracja aplikacji do pracy z NgRx
- Akcje
- Reducery
- Konfiguracja Store
- Wykorzystanie NgRx w pracy z komponentami
- Wykorzystanie NgRx do pracy z warstwą security
- Implementacja side effects przy pracy z akcjami NgRx
- Zagadnienia uzupełniające
- Wprowadzenie do biblioteki ngx-bootstrap
- Konfiguracja aplikacji do pracy z ngx-bootstrap
- Przegląd komponentów biblioteki ngx-bootstrap
- Osadzanie komponentów ngx-bootstrap w aplikacji webowej
- Zagadnienia uzupełniające
- Wprowadzenie do biblioteki Angular Material
- Konfiguracja aplikacji do pracy z Angular Material
- Ustawianie motywu dla aplikacji pracującej z Angular Material
- Przegląd różnych komponentów biblioteki Angular Material
- Konfiguracja różnych komponentów Angular Material w aplikacji frontend
- Zagadnienia uzupełniające
- Omówienie zagadnień związanych z testowaniem aplikacji
- Omówienie właściwości frameworka Jasmine
- Przygotowanie przykładowych danych dla warstwy testującej
- Różne metody testowania komponentów
- Testowanie serwisów
- Testowanie komunikacji asynchronicznej
- Wykorzystanie frameworka Cypress do testowania E2E
- Zagadnienia uzupełniające
- Omówienie struktury i zasady działania frameworka Vue
- Przegląd wersji frameworka Vue
- Omówienie zasady działania aplikacji SPA
- Omówienie koncepcji Single-File Components (SFC)
- Różnica pomiędzy Options API oraz Composition API
- Sposoby tworzenia projektu Vue
- Omówienie struktury projektu
- Zarządzanie instancją aplikacji (createApp)
- Konfigurowanie globalnych właściwości aplikacji
- Implementowanie własnych pluginów
- Rejestrowanie pluginów w aplikacji
- Wprowadzenie do dyrektyw
- Narzędzie Vite
- Przegląd komend Vue CLI
- Rozszerzenie Devtools
- Przygotowanie wersji produkcyjnej aplikacji
- Konfiguracja projektu do pracy z TypeScript
- Zagadnienia uzupełniające
- Omówienie zasad reaktywności
- Options API
- Sekcja <script>
- Definiowanie stanu reaktywnego
- Zarządzanie szablonem HTML
- Data binding
- Definiowanie metod do zarządzania stanem
- Praktyczny przykład wykorzystania nextTick
- Metody stateful
- Computed properties
- Definiowanie getterów oraz setterów dla computed properties
- Zarządzanie klasami i stylami szablonu HTML
- Renderowanie warunkowe (v-if, v-else, v-else-if, v-show)
- Renderowanie kontenerów danych (v-for)
- Renderowanie w oparciu o
- Przechwytywanie i zarządzanie zdarzeniami
- Modyfikatory zdarzeń
- Obsługa formularzy
- Modyfikatory do pracy z formularzami
- Watcher
- Funkcja $watch
- Zarządzanie referencjami z wykorzystaniem atrybutu ref
- Composition API
- Sekcja <script setup>
- Funkcja reactive
- Funkcja ref
- Porównanie scenariuszy użycia funkcji reactive oraz ref
- Zarządzanie szablonem HTML
- Data binding
- Funkcja computed
- Definiowanie getterów oraz setterów dla computed properties
- Zarządzanie klasami i stylami szablonu HTML
- Renderowanie warunkowe (v-if, v-else, v-else-if, v-show)
- Renderowanie kontenerów danych (v-for)
- Renderowanie w oparciu o
- Przechwytywanie i zarządzanie zdarzeniami
- Modyfikatory zdarzeń
- Obsługa formularzy
- Modyfikatory do pracy z formularzami
- Funkcja watch
- Funkcja watchEffect
- Zarządzanie referencjami z wykorzystaniem atrybutu ref
- Zagadnienia uzupełniające
- Omówienie potrzeby stosowania komponentów
- Options API
- Definiowanie komponentu
- Omówienie sposobów rejestracji komponentu
- Używanie komponentu
- Cykl życia komponentu
- Metody cyklu życia komponentu
- Definiowanie props
- Props statyczne i dynamiczne
- Walidacja props
- Obsługa zdarzeń
- Dyrektywa v-on
- Zarządzanie argumentami funkcji obsługi zdarzenia
- Funkcja $emit
- Walidacja argumentów zdarzenia
- Dyrektywa v-model
- Argumenty dyrektywy v-model
- Modyfikatory dyrektywy v-model
- Zasady dziedziczenia atrybutów przez komponenty zagnieżdżone
- Omówienie zasady działania slotów
- Named slots
- Renderless Components
- Komponenty dynamiczne (<component>)
- Omówienie problemu prop drilling
- Zarządzanie opcjami provide oraz inject
- Konfiguracja opcji provide oraz inject z wykorzystaniem Symbol
- Komponenty asynchroniczne
- Composition API
- Definiowanie komponentu
- Omówienie sposobów rejestracji komponentu
- Używanie komponentu
- Cykl życia komponentu
- Metody cyklu życia komponentu
- Definiowanie props – funkcja defineProps
- Props statyczne i dynamiczne
- Walidacja props
- Obsługa zdarzeń
- Dyrektywa v-on
- Zarządzanie argumentami funkcji obsługi zdarzenia
- Funkcja defineEmits
- Walidacja argumentów zdarzenia
- Dyrektywa v-model
- Argumenty dyrektywy v-model
- Modyfikatory dyrektywy v-model
- Zasady dziedziczenia atrybutów przez komponenty zagnieżdzone
- Omówienie zasady działania slotów
- Named slots
- Renderless Components
- Komponenty dynamiczne (<component>)
- Omówienie problemu prop drilling
- Funkcje provide oraz inject
- Konfiguracja funkcji provide oraz inject z wykorzystaniem Symbol
- Komponenty asynchroniczne
- Komponent Transition
- Komponent TransitionGroup
- Komponent KeepAlive
- Komponent Teleport
- Komponent Suspense
- Funkcje composable
- Implementacja dyrektyw użytkownika
- Implementacja asynchronicznej komunikacji http
- Pluginy
- Zagadnienia uzupełniające
- Omówienie koncepcji routingu
- Komponent router-link
- Komponent router-view
- Implementacja przykładowej struktury kodu realizującej routing
- Zarządzanie parametrami w routingu
- Reagowanie na zmiany wartości parametrów w ramach tego samego routea
- Obsługa błędu 404
- Zastosowanie wyrażeń regularnych w routingu
- Konfiguracja dodatkowych opcji routingu (sensitive, strict)
- Parametry powtarzalne oraz parametry opcjonalne
- Routing zagnieżdżony
- Nawigacja programowa
- Zarządzanie historią nawigowania
- Praca z różnymi trybami zarządzania historią
- Named routes
- Named views
- Przekierowania
- Aliasy
- Przekazywanie parametrów routingu jako props do powiązanego komponentu
- Navigation guards
- Atrybut meta
- Pozyskiwanie informacji z serwera na różnych etapach cyklu życia routea
- Funkcja useLink
- Funkcja scrollBehavior
- Lazy loading w routingu
- Routing dynamiczny
- Zagadnienia uzupełniające
- Omówienie koncepcji stanu aplikacji
- Wprowadzenie do biblioteki Pinia
- Definiowanie store
- Option Store vs Setup Store
- Definiowanie stanu aplikacji
- Pozyskiwanie informacji ze stanu
- Resetowanie stanu
- Dokonywanie zmian w zawartości stanu
- Subskrybowanie zmian w stanie
- Definiowanie gettera
- Przekazywanie argumentów do gettera
- Odwoływanie się do getterów innych elementów stanu
- Definiowanie akcji
- Subskrybowanie akcji
- Pluginy
- Zagadnienia uzupełniające
- Klasyfikacja testów
- Przygotowanie aplikacji do pracy z frameworkiem Vitest
- Praca z Vitest CLI
- Filtrowanie testów
- Pokrycie testami
- Implementowanie różnych rodzajów testów z wykorzystaniem Vitest
- Snapshot test
- Mockowanie
- Praca z Vitest UI
- Testowanie in-source
- Przekazywanie dodatkowych danych w ramach konteksu testu
- Zarządzanie środowiskiem uruchomieniowym testów
- Przykłady wykorzystania matcherów
- Zagadnienia uzupełniające
- Architektura i zastosowanie Node.js
- Instalacja potrzebnych komponentów
- Mechanizm Event Driven Code Execution
- Uruchamianie podstawowych skryptów – REPL
- Przygotowanie aplikacji Node.js do pracy z JavaScript ES6+
- Przygotowanie aplikacji Node.js do pracy z TypeScript
- Omówienie systemu modułowości Node.js
- Omówienie wzorca MVC na potrzeby aplikacji webowej
- Cykl życia serwera Node.js – moduł http
- Implementacja serwera Node.js – moduł http
- Implementacja routingu dla serwera Node – moduł http
- Instalacja frameworka Express
- Omówienie zasady działania middleware
- Zarządzanie żądaniami i odpowiedziami http
- Parametry żądań http
- Nagłówki żądań http
- Przetwarzanie ciała żądania
- Implementacja routingu
- Obsługa zasobów statycznych
- Konfiguracja loggerów
- Walidacja danych
- Obsługa błędów
- Zarządzanie sesją oraz cookies
- Konteneryzacja aplikacji webowej (patrz punkt 42)
- Osadzenie aplikacji webowej w chmurze (patrz punkt 43)
- Zagadnienia uzupełniające
- Prezentacja bibliotek do pracy relacyjnymi bazami danych
- Konfiguracja połączenia z bazą danych – mysql2
- Zarządzanie tabelą w bazie danych – mysql2
- Implementacja relacji pomiędzy tabelami – mysql2
- Zarządzanie danymi w bazie danych – mysql2
- Przygotowanie warstwy bazodanowej – mysql2
- Charakterystyka mechanizmu ORM
- Konfiguracja połączenia z bazą danych – Sequelize
- Zarządzanie modelem tabeli w bazie danych – Sequelize
- Migracje – Sequelize
- Walidacja modelu tabeli – Sequelize
- Definiowanie relacji bazodanowych – Sequelize
- Zarządzanie danymi w bazie danych – Sequelize
- Zarządzanie transakcyjnością – Sequelize
- Przygotowanie warstwy bazodanowej – Sequelize
- Przygotowanie warstwy serwisowej do pracy z warstwą bazodanową
- Konfiguracja połączenia z bazą danych – TypeORM
- Zarządzanie modelem tabeli w bazie danych – TypeORM
- Migracje – TypeORM
- Walidacja modelu tabeli – TypeORM
- Definiowanie relacji bazodanowych – TypeORM
- Zarządzanie danymi w bazie danych – TypeORM
- Zarządzanie transakcyjnością – TypeORM
- Praca z Query Builder – TypeORM
- Tworzenie własnych repozytoriów z wykorzystaniem TypeORM
- Przygotowanie warstwy bazodanowej – TypeORM
- Zagadnienia uzupełniające
- Omówienie architektury bazy danych NoSql
- Prezentacja bibliotek do pracy z bazami danych NoSql
- Konfiguracja połączenia z bazą danych NoSql – mongodb
- Przygotowanie modelu do pracy z bazą danych NoSql – mongodb
- Implementacja relacji w bazie danych NoSql – mongodb
- Zarządzanie danymi w bazie danych NoSql – mongodb
- Przygotowanie warstwy bazodanowej – mongodb
- Przygotowanie aplikacji do pracy z mongoose
- Konfiguracja połączenia z bazą danych NoSql – mongoose
- Przygotowanie modelu do pracy z bazą danych NoSql – mongoose
- Implementacja relacji w bazie danych NoSql – mongoose
- Zarządzanie danymi w bazie danych NoSql – mongoose
- Implementacja kompletnej warstwy do komunikacji z bazą danych
- Przygotowanie warstwy bazodanowej – mongoose
- Przygotowanie warstwy serwisowej do pracy z warstwą bazodanową
- Zagadnienia uzupełniające
- Omówienie standardu REST
- Konfiguracja aplikacji Node.js do pracy z REST
- Integracja aplikacji REST z warstwą bazodanową
- Przechwytywanie parametrów oraz ciała żądania HTTP
- Walidacja danych przekazywanych w ciele żądania HTTP
- Implementacja routingu w aplikacji REST
- Implementacja kompletnej aplikacji REST API
- Rejestracja użytkowników w aplikacji REST Node.js
- Osadzenie warstwy security w aplikacji REST Node.js
- Implementacja serwisu do wysyłania wiadomości email
- Zarządzanie zasobami statycznymi w chmurze
- Implementowanie mechanizmu CORS
- Testowanie aplikacji REST Node.js
- Zagadnienia uzupełniające
- Omówienie standardu GraphQL
- Prezentacja różnic pomiędzy standardami REST oraz GraphQL
- Konfiguracja aplikacji Node.js do pracy z GraphQL
- Integracja aplikacji GraphQL z warstwą bazodanową
- Przygotowanie schematu danych dla aplikacji GraphQL
- Zarządzanie queries w aplikacji GraphQL
- Zarządzanie mutations w aplikacji GraphQL
- Wykorzystanie dodatkowych narzędzi GraphQL – np. variables
- Implementacja kompletnej aplikacji GraphQL
- Rejestracja użytkowników w aplikacji GraphQL
- Osadzenie warstwy security w aplikacji GraphQL
- Implementacja serwisu do wysyłania wiadomości email
- Zarządzanie zasobami statycznymi w chmurze
- Implementacja mechanizmu CORS
- Testowanie aplikacji REST Node.js
- Zagadnienia uzupełniające
- Konfiguracja warstwy testującej dla aplikacji webowej
- Instalacja frameworka Mocha do zarządzania uruchamianiem testów
- Instalacja frameworka Chai do zarządzania asercjami
- Instalacja frameworka Sinon do wykorzystywania mocków
- Przygotowanie struktury projektów do pracy z warstwą testującą
- Przegląd i wykorzystanie różnych rodzajów asercji
- Grupowanie testów
- Hooks (akcje wykonywane pomiędzy testami)
- Mockowanie obiektów
- Testy jednostkowe oraz intergacyjne
- Testowanie metod serwisowych
- Testowanie kontrolerów
- Testowanie mechanizmów asynchronicznych
- Przygotowanie warstwy bazodanowej na potrzeby testów
- Testowanie REST API z wykorzystaniem narzędzi zewnętrznych
- Testowanie warstwy security
- 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ąc
- 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
- 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