JavaScript dokładniej - dla tych, którzy chcą się zagłębić

Warsztat ekspercki to coś więcej niż szkolenie. To praca w kontekście konkretnych problemów.

Tytuł: JavaScript dokładniej - dla tych, którzy chcą się zagłębić
Kod: JS-deeper
Kategoria: JavaScript
Forma: 20% wykłady / 80% warsztaty
Czas trwania: 3-4 dni
Odbiorcy: developerzy
Zapisy: Indywidualne zamówienie i dopasowanie dla grupy.
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.

Wymagania co do znajomości JS zmieniły się przez ostatnie kilka lat.

Pobieżna znajomość języka i API modnego dzisiaj frameworka już nie wystarczą. Poza tym frameworki się zmieniają, a język pozostaje na dłużej. W części praktycznej będziemy robić TDD (Test-Driven Development) najciekawszych ficzerów języka i idiomów, wzbogacone o tworzenie modeli koncepcyjnych, testy wydajnościowe oraz dyskusje grupowe w bezpiecznym środowisku. Dziesiątki bardzo starannie zaprojektowanych ćwiczeń pomoże Ci lepiej poznać tajniki języka i przygotuje do pisania nie tylko prostych aplikacji, ale także reużywalnych bibliotek. Założenie: najlepiej zrozumiesz działanie czegokolwiek, implementując to samemu.

Wyróżniki warsztatu

  • Bardzo szczegółowe spojrzenie na język JavaScript
  • Porównanie podejścia obiektowego i funkcyjnego w kontekście JS
  • Nauka z wykorzystaniem testów jednostkowych zamiast slajdów

Program Warsztatu eksperckiego

Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.

  1. Typy - dlaczego większość porad na temat koercji typów jest zbyt uproszczona
    1. Implementujemy algorytmy konwersji dla operacji takich jak ToBoolean czy ToPrimitive
    2. Budujemy ogólny model konwersji między typami
    3. Wyrabiamy intuicję kiedy stosować koercję typów, a kiedy jej unikać
    4. Budujemy algorytm siedzący pod maską ==
    5. Dekomponujemy głęboko zagnieżdżone struktury danych z użyciem destrukturyzacji
  2. Programowanie obiektowe - dlaczego klasyczne OO w JS jest niepotrzebnie skomplikowane
    1. Tworzymy zaawansowane modele koncepcyjne dla programów opartych o funkcje konstruktora/klasy
    2. Tworzymy zaawansowane modele koncepcyjne dla programów opartych o linkowanie obiektów
    3. Rozróżniamy pomiędzy: .prototype, [[Prototype]], __proto__
    4. Poznajemy new i instanceof od podszewki
    5. Odkrywamy niuanse mixinów z Object.assign()
    6. Rozpoznajemy sytuacje, w których abstrakcja klasy wycieka
  3. Funkcje i zasięg widoczności - w pełni wykorzystujemy możliwości, które dają proste funkcje
    1. Budujemy dokładniejszą reprezentację umysłową tego czym tak na prawdę jest hoisting, modelując kontekst wywołania
    2. Budujemy dokładniejszą reprezentację umysłową funkcyjnego zasięgu widoczności na podstawie stosu kontekstów wywołania
    3. Wyciągamy niuanse zasięgu blokowego i przyglądamy się sporom na temat użycia const, let i var
    4. Rozkładamy funkcje na czynniki pierwsze (parametry vs argumenty, domyślne wartości, zmienna liczba argumentów)
    5. Porównujemy 4 sposoby dynamicznego wiązania this
    6. Testujemy i porównujemy wydajność i zużycie pamięci kodu opartego o domknięcia i o prototypy
    7. Szukamy przypadków kiedy nowości z ES6 tj. arrow functions nie powinny być automatycznym zastępstwem dla kodu ES5
  4. Programowanie funkcyjne I - zaczynamy używać pragmatyczne narzędzia programowania funkcyjnego bez doktoratu z matematyki, a Twój kod będzie prostszy i bardziej reużywalny
    1. Implementujemy funkcje wyższego rzędu dostępne w JS (map/filter/reduce/flatMap)
    2. Implementujemy przydatne funkcje wyższego rzędu niedostępne w JS (np. takeWhile)
    3. Rozwiązujemy zaawansowane problemy przetwarzania danych z użyciem ciągu funkcji wyższego rzędu
    4. Optymalizujemy wywołania funkcji z użyciem technik tj. memoization
    5. Zapobiegamy modyfikacji obiektów przez deepFreeze i wzorce programowania immutable
  5. Asynchroniczny JS - zaczniesz świadomie poruszać się w gąszczu opcji zarządzania asynchronicznością w JS
    1. Analizujemy model współbieżności oparty o pętlę zdarzeń
    2. Znajdujemy problemy z callbackami inne niż zagnieżdżenia
    3. Budujemy przydatne utilsy dla Promisów: timeout, first, retry
    4. Używamy async/await aby uzyskać synchronicznie wyglądający kod asynchroniczny
    5. Implementujemy własną wersję Observable/RxJS aby zrozumieć koncepcję strumieni
  6. Modularność - nowoczesne środowiska JS nie potrzebują hacków do pisania modularnego kodu
    1. Analizujemy kod programu opartego o wzorce Revealing Module oraz Dependency Injection
    2. Używamy natywnych modułów ES6 w Node.js i w przeglądarce bez dodatkowych narzędzi
    3. Implementujemy własny Event Emitter aby lepiej zrozumieć wzorzec Observer
    4. Porównujemy wzorce komunikacji oparte o orkiestrację i choreografię
  7. Programowanie funkcyjne II - rozrywka intelektualna dla fanów programowania funkcyjnego
    1. Poznajemy różnice pomiędzy partial application i currying
    2. Zastępujemy obiektowe Dependency Injection z konstruktorami, funkcyjnym Dependency Injection z curry
    3. Poznajemy wady i zalety stylu programowania point-free
    4. Budujemy abstrakcje do łączenia funkcji w użyteczne bloki: compose i pipe
    5. Aplikujemy Funktory i Monady do rozwiązywania praktycznych problemów
    6. Zastępujemy null/undefined komponowalnym Maybe
  8. Metaprogramowanie - wzbogacamy możliwości języka
    1. Dodajemy możliwość iterowania po obiektach
    2. Budujemy bardziej wszechstronną wersję async/await z użyciem generatorów
    3. Wzbogacamy możliwości języka z użyciem Proxy
    4. Budujemy własny DSL z użyciem tagged template literals


Pobierz program w formacie PDF

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twój Warsztat.

Materiały związane z warsztatem

Idea renesansowej pracowni - Bottegi zakłada nieustanną pracę jej członków i dzielenie się jej wynikami.

Zamów warsztat

Imię i nazwisko:
Firma:
E-mail:
Nr tel:
Temat:
Wiadomość:

Jeżeli preferujesz osobisty kontakt to zawsze możesz zadzwonić.

Iwona Sobótka

Koordynatorka szkoleń


Twoje dane osobowe przetwarzamy, aby udzielić odpowiedzi na Twoje pytanie. Administratorem Twoich danych osobowych jest Bottega It Minds Sławomir Sobótka. Przysługuje Ci prawo wniesienia sprzeciwu wobec przetwarzania, prawo dostępu do danych, prawo żądania ich sprostowania, usunięcia lub ograniczenia ich przetwarzania. Szczegółowe informacje dotyczące przetwarzania Twoich danych osobowych znajdują się TUTAJ.