Zkuste nás kontaktovat

Návrh Školení

1. Úvod do jazyka Go

  • Co je Go (Golang)?
  • Historie a designové filozofie jazyka Go
  • Go jako jazyk pro vývoj webu a systémů
  • Кlíčové charakteristiky:
    • Statické typování
    • Jednoduchost a čitelnost
    • Rychlé kompilace
    • Vestavěná konkurence
    • Sběr nevyužité paměti
    • Křížové kompilace
  • Обecné případné použití Go
  • Výhody a omezení Go
  • Porovnání Go s C/C++, JavaScriptem, Ruby, Pythonem a Javou
  • Pochopení ekosystému Go
  • Přehled standardní knihovny Go
  • Moduly Go a správa závislostí
  • Anatomie aplikace v Go
  • Praktická cvičení: Prozkoumat a spustit jednoduchý program v Go

2. Nastavení vývojového prostředí Go

  • Instalace Go
  • Pochopení nástrojového řetězce Go
  • Nastavení proměnných prostředí
  • Výběr IDE nebo editoru kódu
  • Použití příkazového řádku s Go
  • Vytvoření pracovního prostoru Go
  • Pochopení struktury projektu Go
  • Inicializace projektu pomocí Go Modules
  • Použití go mod init
  • Správa závislostí pomocí go get
  • Aktualizace a kontrola závislostí
  • Formátování zdrojového kódu pomocí gofmt
  • Spouštění programů pomocí go run
  • Kompilace aplikací pomocí go build
  • Instalace aplikací Go
  • Křížová kompilace aplikací
  • Praktická cvičení: Vytvořit a nakonfigurovat projekt Go uvnitř kontejneru

3. Proměnné, konstanty a typy v Go

  • Deklarace proměnných
  • Explicitní vs. odvozené typy
  • Krátké deklaráce proměnných
  • Konstanty
  • Nulové hodnoty
  • Rozsah a doba života proměnných
  • Základní datové typy:
    • Celá čísla
    • Čísla s plovoucí desetinnou čárkou
    • Komplexní čísla
    • Booleovy hodnoty
    • Řetězce
  • Konverze typů
  • Práce s Unicodem a UTF-8
  • Rune a bajty
  • Náhrada více proměnných
  • Pochopení bezpečnosti typů
  • Cvičení: Vytvořit malý program pro zpracování dat z příkazového řádku

4. Operátory a výrazy

  • Aritmetické operátory
  • Porovnávací operátory
  • Logické operátory
  • Přiřazovací operátory
  • Inkrement a dekrement
  • Priorita operátorů
  • Práce s výpočty celých a reálných čísel
  • Vyhnout se běžným chybám při konverzi typů
  • Cvičení: Implementovat výpočty a logiku validace

5. Dátumy, časy a formátování

  • Použití balíčku time
  • Vytváření a manipulace s data
  • Získání aktuálního času
  • Časová pásma a lokace
  • Parsování dat a času
  • Formátování dat a času
  • Výpočet trvání
  • Práce s Unixovými časovými pečetěmi
  • Zpracování časových limitů
  • Cvičení: Přidat časové značky a výpočet trvání do aplikace

6. Pole, řetězce, mapy a struktury

Pole

  • Deklarace polí
  • Inicializace polí
  • Přecházení přes pole
  • Viřrozměrná pole

Řetězce (Slices)

  • Pochopení rozdílu mezi řetězci a poli
  • Vytváření řetězců
  • Přidávání prvků
  • Kopírování řetězců
  • Délka a kapacita řetězců
  • Rozkrojení řetězců
  • Běžné pasti při práci s řetězci

Mapy

  • Vytváření map
  • Přidávání a odstraňování položek
  • Kontrola existence klíče
  • Přecházení přes mapy
  • Mapy obsahující komplexní data

Struktury

  • Definice struktur

  • Pole struktur

  • Inicializace struktur

  • Zaznížené struktury

  • Anonymní struktury

  • Metody struktur

  • JSON tagy struktur

  • Praktická cvičení: Modelovat uživatele, produkty a data aplikace pomocí struktur, řetězců a map

7. Podmíněná logika a smyčky

  • Příkazy if
  • else a else if
  • Deklarace proměnných uvnitř podmínek
  • Smyčky for
  • Neomezené smyčky
  • Podmínky smyček
  • break a continue
  • Přecházení pomocí range
  • Zaznížené smyčky
  • Příkazy switch
  • Switche založené na výrazech
  • Více případů
  • Výchozí případ
  • Typové switche
  • Cvičení: Implementovat logiku validace a zpracování aplikace

8. Funkce

  • Definice funkcí
  • Parametry funkcí
  • Vratné hodnoty
  • Více vratných hodnot
  • Pojmenované vratné hodnoty
  • Variadické funkce
  • Anonymní funkce
  • Hodnoty funkcí
  • Uzavřené funkce (closures)
  • Rekurze
  • Předávání funkcí jako argumentů
  • Funkce vracující chyby
  • Design malých, opakovatelně použitelných funkcí
  • Cvičení: Refaktorovat stávající kód do opakovatelně použitelných funkcí

9. Ukazatele a pojmy paměti

  • Co je ukazatel?
  • Operátory adresy a dereference
  • Ukazatele a parametry funkcí
  • Přijímající ukazatele
  • Ukazatele na struktury
  • Nil ukazatele
  • Kdy používat ukazatele
  • Semantika hodnoty vs. odkazu
  • Pochopení správy paměti a sběru nevyužité paměti v Go
  • Běžné chyby s ukazateli
  • Praktická cvičení: Změnit data aplikace pomocí ukazatelů

10. Vytváření webové aplikace v Go

  • Přehled webových schopností Go
  • Úvod do balíčku net/http
  • Vytvoření HTTP serveru
  • HTTP požadavky a odpovědi
  • HTTP metody
  • URL požadavků a parametry dotazu
  • HTTP hlavičky
  • HTTP stavové kódy
  • Základy routingu
  • Vytvoření handlerů
  • Zpracování dat formulářů
  • Servisování statických souborů
  • Práce s HTML šablonami
  • Proměnné šablon a struktur řízení
  • Strukturace webové aplikace
  • Praktická cvičení: Vytvořit základní webový server v Go

11. Vytváření RESTful webových služeb

  • Základy REST architektury
  • Design API koncových bodů
  • GET, POST, PUT, PATCH a DELETE
  • Práce s JSON
  • Kódování a dekódování JSON
  • Validace požadavků
  • HTTP stavové kódy
  • Chybové odpovědi
  • Parametry dotazu a cesty
  • Struktury API odpovědí
  • Oddělení handlerů od obchodní logiky
  • Praktická cvičení: Vytvořit CRUD REST API

12. Go runtime, kompilace a stavby projektů

  • Pochopení Go kompilátoru
  • Proces stavby Go
  • go run
  • go build
  • go install
  • go test
  • Přepínače stavby
  • Konfigurace specifická pro prostředí
  • Stavba pro různé operační systémy a architektury
  • Vytváření samostatných binárních souborů
  • Správa konfigurace aplikace
  • Cvičení: Sestavit aplikaci pro více platform

13. Práce se soubory a webem

  • Otevření a uzavření souborů
  • Čtení souborů
  • Zápis souborů
  • Vytváření adresářů
  • Metadata souborů
  • Bufrovaný I/O
  • Práce s datovými toky
  • Čtení a zápis JSON souborů
  • HTTP klienti
  • Odesílání odchozích HTTP požadavků
  • Zpracování chyb HTTP klientu
  • Časové limity a zrušení
  • Zpracování API odpovědí
  • Praktická cvičení: Získat data z externího API a uložit je lokálně

14. Zpracování chyb a ladění

  • Přístup Go k chybám
  • Vrácení chyb z funkcí
  • Kontrola chyb
  • Vytváření vlastních chyb
  • Zabalení chyb (wrapping errors)
  • Přidání kontextu k chybám
  • errors.Is a errors.As
  • Panika a obnova
  • Kdy používat panic
  • Ladění běžných problémů v Go
  • Logování aktivity aplikace
  • Používání nástrojů pro ladění Go
  • Cvičení: Diagnostikovat a opravit úmyslně zavedené chyby aplikace

15. Rozhraní a abstrakce

  • Co je rozhraní?
  • Implicitní implementace rozhraní
  • Definice rozhraní
  • Hodnoty rozhraní
  • Prázdná rozhraní / any
  • Typové asertce
  • Typové switche
  • Implementace ukazateli vs. hodnotou
  • Design malých rozhraní
  • Inverze závislostí
  • Používání rozhraní pro testování
  • Snižování vazby aplikace
  • Praktická cvičení: Zavést rozhraní do ukázkové webové aplikace

16. Balíčky a organizace projektu

  • Vytváření balíčků
  • Pojmenovací konvence balíčků
  • Exportované a neexportované identifikátory
  • Importování balíčků
  • Inicializace balíčků
  • Organizace vrstev aplikace
  • Vnitřní balíčky
  • Správa závislostí pomocí Go Modules
  • Semantické verzování
  • Používání balíčků třetích stran
  • Vyhnutí se cyklickým závislostem
  • Design udržitelných projektů Go
  • Cvičení: Refaktorovat aplikaci do samostatných balíčků

17. Konkurence pomocí goroutin

  • Co je konkurence?
  • Goroutiny
  • Spouštění goroutin
  • Pochopení lehkého konkurentního provádění
  • Výzvy synchronizace
  • Sdílený stav
  • Stavy závodů
  • Použití sync.WaitGroup
  • Exkluzivní uzamykatelé a čtenáři-zapisovatelé
  • Atomické operace
  • Praktická cvičení: Převést sekvenční úkol na konkurentní zpracování

18. Kanály

  • Pochopení kanálů
  • Odesílání a přijímání hodnot
  • Bufrované vs. nebufrované kanály
  • Blokovací chování
  • Zavírač kanálů
  • Přecházení přes kanály
  • Kanály s směrováním
  • Komunikace založená na kanálech
  • Příkazy Select
  • Časové limity a zrušení
  • Vzor pracovního bazénu
  • Vzor producenta/spotřebitele
  • Praktická cvičení: Vytvořit konkurentní systém pracovníků

19. Kontext a správa požadavků

  • Proč jsou kontexty důležité ve webových aplikacích
  • context.Context
  • Kontext v rozsahu požadavku
  • Zrušení
  • Konečné termíny
  • Časové limity
  • Propagace kontextu přes vrstvy aplikace
  • Zrušení operací databáze nebo HTTP
  • Vyhnutí se špatnému použití kontextu
  • Cvičení: Přidat zrušení požadavků a časové limity do webové aplikace

20. Testování aplikací v Go

  • Proč je automatizované testování důležité
  • Písání unit testů
  • Balíček testing
  • Testovací funkce
  • Pojmenovací konvence testů
  • Tabulkové testy
  • Testování chyb
  • Testování HTTP handlerů
  • HTTP testovací servery
  • Testovací fixtury
  • Krytí testy
  • Benchmarky
  • Příklad testů
  • Testování rozhraní pomocí mocků nebo falešných objektů
  • Praktická cvičení: Vytvořit sadu testů pro ukázkovou aplikaci

21. Optimalizace výkonu

  • Pochopení výkonu aplikací v Go
  • Identifikace úzkých míst
  • Výkon CPU vs. paměti
  • Efektivní datové struktury
  • Snižování zbytečných alokací
  • Řetězce, bajty a buffery
  • Správa goroutin
  • Vyhnutí se nadměrné konkurenci
  • Strategie cachování
  • Zvážení databáze a sítě
  • Profiling aplikací
  • Benchmarky a testování výkonu
  • Používání nástrojů pro profiling Go
  • Cvičení: Zprofiltovat a optimalizovat úmyslně neefektivní aplikaci

22. Bezpečnost a robustní praktiky webových aplikací

  • Validace uživatelského vstupu
  • Bezpečné zpracování HTTP požadavků
  • Předcházení běžným webovým zranitelnostem
  • Bezpečné zpracování chyb
  • Koncepty autentizace a autorizace
  • Správa tajných informací a konfigurace
  • Bezpečná HTTP komunikace
  • Vyhnutí se citlivým informacím v logu
  • Správa závislostí a aktualizace
  • Limity zdrojů a časové limity požadavků
  • Cvičení: Prohlédnout a zpevnit ukázkové API

23. Logování aplikací a observabilita

  • Základy logování
  • Strukturované logování
  • Úrovně logů
  • Logování požadavků
  • Logování chyb
  • Korelace a ID požadavků
  • Monitorování chování aplikace
  • Základní metriky
  • Koncové body pro kontrolu zdraví
  • Diagnostika produkčních problémů
  • Praktická cvičení: Přidat strukturované logování a kontroly zdraví

24. Kontejnerizace aplikace Go

  • Proč používat kontejnery?
  • Aplikace Go a kontejnerizace
  • Seznámení se s Dockerfile
  • Stadiumové stavby (multi-stage builds)
  • Vytvoření minimálního runtime obrazu
  • Správa konfigurace pomocí proměnných prostředí
  • Kontejnerová síť
  • Uvolňování portů aplikace
  • Spouštění aplikace v kontejneru
  • Testování kontejnerizované aplikace
  • Praktická cvičení: Zabalit ukázkovou aplikaci Go jako produkčně připravený kontejner

25. Nasazení

  • Příprava aplikace pro produkci
  • Stavba produkčních binárních souborů
  • Konfigurace prostředí
  • Kontejnerové nasazení
  • Architektura nasazení
  • Obrácené proxy
  • Zvážení HTTPS/TLS
  • Kontroly zdraví aplikace
  • Průběžné vypnutí
  • Zpracování signálů operačního systému
  • Škálování webových aplikací Go
  • Vodorovné vs. vertikální škálování
  • Základní odstraňování problémů při nasazení
  • Praktická cvičení: Nasadit ukázkovou webovou aplikaci

26. Capstone: Kompletní webová aplikace v Go

Účastníci propojují koncepty vytvářením kompletní aplikace.

Projekt může zahrnovat:

  • Inicializace projektu pomocí Go Modules
  • Organizace balíčků
  • HTTP routing
  • REST API koncové body
  • Zpracování JSON požadavků a odpovědí
  • Validace vstupu
  • Zpracování chyb
  • Rozhraní
  • Konkurentní zpracování
  • Komunikace s externím API
  • Persiste souborů nebo databáze
  • Automatizované testy
  • Logování
  • Zvážení výkonu
  • Kontejnerizace
  • Produkční konfigurace
  • Nasazení

27. Recenz a nejlepší praktiky

  • Přezkum základní syntaxe Go
  • Pojmenovací konvence kódu Go
  • Psaní idiomatického Go
  • Držení kódu jednoduchým
  • Efektivní design balíčků
  • Najlepší praktiky zpracování chyb
  • Principy designu rozhraní
  • Najlepší praktiky konkurence
  • Strategie testování
  • Zvážení výkonu
  • Udržitelnost a čitelnost
  • Běžné chyby nováčků v Go
  • Odporúčané přístupy pro pokračování vývoje v Go

28. Závěr

  • Přezkum klíčových konceptů
  • Přezkum dokončené webové aplikace
  • Otázky a diskuse
  • Odstraňování problémů v běžných reálných scénářích
  • Odporúčané další kroky pro vývoj v Go
  • Další knihovny a zdroje ekosystému Go
  • Další příležitosti pro stavbu produkčních služeb v Go

Požadavky

  • Pochopení obecných programovacích principů

Cílová skupina

  • Programátoři
 28 Hodiny

Počet účastníků


Cena za účastníka

Reference (5)

Nadcházející kurzy

Související kategorie