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

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

Program szkolenia: JavaScript Craftsmanship

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Program szkolenia: Zaawansowane programowanie w C++

Program szkolenia: Tworzenie aplikacji w Ruby on Rails z wykorzystaniem zwinnych metodyk

Zaawansowane programowanie w języku C++

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne

Tytuł szkolenia: Angular 4 - budowanie nowoczesnych i wydajnych aplikacji przeglądarkowych

JavaScript - korzenie

Dobry start do profesjonalnego programowania w C++ dla. początkujących programistów

SZKOLENIE TWORZENIE SYSTEMÓW

Program szkolenia: Test Driven Development (TDD) using Spock or JUnit 5

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

Scala - programowanie obiektowo-funkcyjne

Techniki efektywnego testowania kodu dla programistów Java (Spock

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

JavaScript : programowanie zaawansowane / Tomasz "Comandeer" Jakut. Gliwice, cop Spis treści

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia

Szkolenie wycofane z oferty. Programowanie w JavaScript (zawiera jquery)

Program szkolenia: Receptury testowania automatycznego - problemy, strategie, taktyki, techniki, narzędzia

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

O sobie. Adam Kowalski. Absolwent informatyki Uniwersytetu Wrocławskiego Full-stack Developer w firmie Synergy Codes.

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Java Persistence API - zagadnienia zaawansowane

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

Program szkolenia: Continuous Integration i Git

Zaawansowane programowanie w C++ (PCP)

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

KARTA KURSU. Wstęp do programowania

Szkolenie wycofane z oferty

PRZEWODNIK PO PRZEDMIOCIE

Program szkolenia: Jenkins - Continuous Integration

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

Patryk Jar Meet.js, Gdańsk 11 marca 2013 r. MODULARNY JAVASCRIPT

Program szkolenia: Symfony, nowoczesny framework PHP

PRZEWODNIK PO PRZEDMIOCIE

Aplikacje webowe z wykorzystaniem Node.js oraz Express

PRZEWODNIK PO PRZEDMIOCIE

Szablony funkcji i szablony klas

NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD

Tester oprogramowania 2014/15 Tematy prac dyplomowych

DSL w środowisku Eclipse. Grzegorz Białek Architekt techniczny, Sygnity S.A.

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień Uniwersytet Warszawski

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Programowanie obiektowe 1 - opis przedmiotu

Zapisywanie algorytmów w języku programowania

Programowanie obiektowe

[Junior Developer - pierwsza praca jako programista - JavaDevMatt] 1. Sponsorzy Partnerzy projektu O czym i dla kogo jest ta książka?

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

PHP revisited - odświerzenie spojrzenia na programowanie w PHP

Praktyczne zastosowanie bibliotek Boost oraz nowego standardu C++11

Programowanie Zespołowe

Historia modeli programowania

KARTA PRZEDMIOTU. Warsztaty z Ruby on Rails. Ruby on Rails Workshop

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Podstawy modelowania programów Kod przedmiotu

INŻYNIERIA OPROGRAMOWANIA

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Zacznij Tu! Poznaj Microsoft Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska

Szkolenie: Dobry Przypadek Testowy

Ogólne zasady projektowania algorytmów i programowania

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Programowanie w języku Swift : Big Nerd Ranch guide / Matthew Mathias, John Gallagher. Gliwice, cop Spis treści

Wykład Ćwiczenia Laboratorium Projekt Seminarium

COMARCH IT AKADEMIA. Programista VBA w Microsoft Excel (microbootcamp)

OBC01/TOPMOB Projektowanie w języku Objective-C

Przesłanki powstania książki... xvi Dla kogo przeznaczona jest ta książka?... xvi Co znajdziemy wewnątrz książki?... xvii

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Imię, nazwisko i tytuł/stopień KOORDYNATORA (-ÓW) kursu/przedmiotu zatwierdzającego protokoły w systemie USOS Dr Adam Naumowicz

Acceptance Test Driven Development wspierane przez narzędzie ROBOT Framework. Edyta Tomalik Grzegorz Ziemiecki

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Od programowania wizualnego do tekstowego

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Program szkolenia: REST i Microservices w PHP

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Programowanie obiektowe

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Systemy Rozproszone Technologia ICE

Język Java i technologie Web - opis przedmiotu

Spis treści. Wprowadzenie 15

Słowa kluczowe jak góry lodowe

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013

Program szkolenia: Wprowadzenie do Domain Driven Design dla biznesu (część 0)

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

Szkolenie: Podstawy automatyzacji z Selenium IDE

REFERAT PRACY DYPLOMOWEJ

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Program szkolenia: Wzorce projektowe w C++

ECDL Podstawy programowania Sylabus - wersja 1.0

Transkrypt:

Program szkolenia: JavaScript dokładniej - dla tych, którzy chcą się zagłębić Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: JavaScript dokładniej - dla tych, którzy chcą się zagłębić JS-deeper JavaScript developerzy 3-4 dni 20% wykłady / 80% warsztaty 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. JS można krytykować za błędy projektowe, natomiast faktem jest, że jest to dominujący język w przeglądarkach i coraz popularniejszy język po stronie serwera. Czas go poznać na głębszym poziomie. Język, nie kolejne API, narzędzie, framework czy bibliotekę. Budując ekspercką intuicję, będziesz mógł/mogła skoncentrować się na problemach biznesowych a nie składni i idiomach języka. Te ostatnie staną się Twoją drugą naturą. Niczym kierowca Formuły 1 rozumiejący doskonale to co siedzi pod maską samochodu, będziesz rozumieć co siedzi pod maską języka JS oraz najpopularniejszych bibliotek open source. I w końcu wyrobisz sobie własny styl programowania oparty o pełniejsze zrozumienie języka a nie od lat powtarzane mantry w stylu "zawsze rób X", "nigdy nie rób Y". Efekty uczenia Będziesz bardziej krytycznie patrzeć na programowanie obiektowe w JS z użyciem new, prototype i this Docenisz prostotę ludzkich części programowania funkcyjnego w JS Nagniesz swój mózg dotykając "nieludzkich" części programowania funkcyjnego Będziesz bardziej świadomie dobierać zaawansowane wzorce programowania asynchronicznego do problemu Będziesz lepiej rozumieć reguły koercji typów w JS Podniesiesz ekspresywność swojego kodu dzięki wybranym elementom ES6+ Zaczniesz patrzeć na JS w większej rozdzielczości i dostrzegać subtelne niuanse Sposób nauki 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. Ponad 60 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. W części teoretycznej omawiamy przygotowane przez mnie wcześniej testy jednostkowe opisujące mechanizmy języka. Strona: 1/5

Czym to szkolenie NIE jest kursem node.js kursem z API przeglądarkowych (DOM, XMLHttpRequest, HTML5) kursem z frameworka do robienia Single Page Apps kursem z architektury aplikacji wprowadzającym kursem językowym dla nowicjuszy pozbawionym opinii trenera nijakim tutorialem Zalety szkolenia: 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 Strona: 2/5

Szczegółowy program: 1. Typy - dlaczego większość porad na temat koercji typów jest zbyt uproszczona 1.1. Implementujemy algorytmy konwersji dla operacji takich jak ToBoolean czy ToPrimitive 1.2. Budujemy ogólny model konwersji między typami 1.3. Wyrabiamy intuicję kiedy stosować koercję typów, a kiedy jej unikać 1.4. Budujemy algorytm siedzący pod maską == 1.5. Naprawiamy przypadki brzegowe === 2. Programowanie obiektowe - dlaczego klasyczne OO w JS jest niepotrzebnie skomplikowane 2.1. Tworzymy zaawansowane modele koncepcyjne dla programów opartych o funkcje konstruktora/klasy 2.2. Tworzymy zaawansowane modele koncepcyjne dla programów opartych o linkowanie obiektów 2.3. Rozróżniamy pomiędzy:.prototype, [[Prototype]], proto 2.4. Poznajemy new i instanceof od podszewki 2.5. Odkrywamy niuanse kopiowania z Object.assign() 2.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 3.1. Budujemy dokładniejszą reprezentację umysłową tego czym tak na prawdę jest hoisting, modelując kontekst wywołania 3.2. Budujemy dokładniejszą reprezentację umysłową funkcyjnego zasięgu widoczności na podstawie stosu kontekstów wywołania 3.3. Wyciągamy niuanse zasięgu blokowego i przyglądamy się sporom na temat użycia const, let i var 3.4. Rozkładamy funkcje na czynniki pierwsze (parametry vs argumenty, domyślne wartości, zmienna liczba argumentów) 3.5. Porównujemy 4 sposoby dynamicznego wiązania this Strona: 3/5

3.6. Testujemy i porównujemy wydajność i zużycie pamięci kodu opartego o domknięcia i o prototypy 3.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 4.1. Zastanawiamy się czym tak na prawdę jest programowanie funkcyjne 4.2. Implementujemy funkcje wyższego rzędu dostępne w JS (map/filter/reduce/find) 4.3. Implementujemy przydatne funkcje wyższego rzędu niedostępne w JS (m.in. flatmap, zip czy takewhile) 4.4. Dogłębnie analizujemy sposoby zapobiegania modyfikacji obiektów (seal, freeze, deepfreeze itd.) 4.5. Optymalizujemy wywołania funkcji z użyciem technik tj. memoization 5. Asynchroniczny JS - zaczniesz świadomie poruszać się w gąszczu opcji zarządzania asynchronicznością w JS 5.1. Analizujemy model współbieżności oparty o pętlę zdarzeń 5.2. Znajdujemy problemy z callbackami inne niż zagnieżdżenia 5.3. Budujemy przydatne utilsy dla Promisów: finally, timeout, first, retry, collapse 5.4. Implementujemy własne obiekty zgodne z protokołem Iterable, aby lepiej zrozumieć generatory 5.5. Używamy generatorów aby zbudować własną abstrakcję do pisania synchronicznie wyglądającego kodu asynchronicznego 5.6. Używamy async/await aby uzyskać synchronicznie wyglądający kod asynchroniczny 6. Modularność - maksymalizujemy nasze opcje w temacie zarządzanie modułami 6.1. Analizujemy kod programu opartego o wzorce Revealing Module oraz Dependency Injection 6.2. Implementujemy własny Event Emitter aby lepiej zrozumieć wzorzec Observer 6.3. Wprowadzamy elementy choreografii do istniejącej aplikacji z użyciem Event Emitter'a 6.4. Programistycznie kontrolujemy kolejność ładowania modułów inspirując się składnią AMD Strona: 4/5

6.5. Budujemy dokładniejszy model koncepcyjny require, exports i module.exports z CommonJS 6.6. Porównujemy moduły ES6 z CommonJS 7. Struktury danych - powrót na studia i notacja wielkiego O 7.1. Implementujemy pełny interfejs Map z ES6 aby lepiej zrozumieć po co je wprowadzono 7.2. Optymalizujemy prędkość odczytów z naszej mapy 7.3. Konwertujemy iterowalne obiekty i obiekty tablicopodobne na tablice 7.4. Robimy destrukturyzację nietrywialnych struktur 8. Programowanie funkcyjne II - rozrywka intelektualna dla fanów programowania funkcyjnego i zrozumiesz czym są monady 8.1. Poznajemy różnice pomiędzy partial application i currying 8.2. Zastępujemy obiektowe Dependency Injection z konstruktorami, funkcyjnym Dependency Injection z curry 8.3. Poznajemy wady i zalety stylu programowania point-free 8.4. Budujemy abstrakcje do łączenia funkcji w użyteczne bloki: compose i pipe 8.5. Zastępujemy null/undefined komponowalnym Maybe 8.6. Zastępujemy try/catch komponowalnym Either 9. Metaprogramowanie i Domain Specific Languages - podróż w rzadziej używane fragmenty języka aby zrozumieć go na jeszcze głębszym poziomie 9.1. Poznajemy możliwości i niebezpieczeństwa programowania z użyciem ES6 proxy poprzez przykłady 9.2. Budujemy DSL z użyciem tagged template literals i porównujemy je ze zwykłymi template literals Strona: 5/5