Lépjen kapcsolatba velünk

Kurzusleírás

1. Bevezetés a Go nyelvezetbe

  • Mi az a Go (Golang)?
  • A Go története és tervezési filozófiája
  • A Go mint webes és rendszerszintű programozási nyelvezet
  • Fő jellemzők:
    • Statikus tipizálás
    • Egyszerűség és olvashatóság
    • Gyors fordítás
    • Beépített párhuzamosítás
    • Szemétgyűjtés
    • Köztér-szintű fordítás
  • Gyakori felhasználási területek a Go nyelvezetben
  • A Go előnyei és korlátai
  • A Go összehasonlítása a C/C++, JavaScript, Ruby, Python és Java nyelvekkel
  • A Go ökoszisztéma megértése
  • A Go standard könyvtár áttekintése
  • Go modulok és függőségkezelés
  • Egy Go-alalmazás anatómiája
  • Gyakorlat: Egy egyszerű Go-program vizsgálatára futtatása

2. A Go-fejlesztői környezet beállítása

  • A Go telepítése
  • A Go eszközkészlet megértése
  • Környezeti változók beállítása
  • IDE vagy kód szerkesztő kiválasztása
  • A Go használata parancssorból
  • Go munkaterület létrehozása
  • A Go projektszerkezet megértése
  • Projekt inicializálása Go Modulokkal
  • A go mod init használata
  • Függőségek kezelése a go get használatával
  • Függőségek frissítése és vizsgálata
  • Forráskód formázása a gofmt használatával
  • Programok futtatása a go run használatával
  • Alkalmazások fordítása a go build használatával
  • Go-alalmazások telepítése
  • Köztér-szintű fordítás
  • Gyakorlat: Go projekt létrehozása és beállítása egy konténerben

3. Go változók, konstansok és típusok

  • Változók deklarációja
  • Explitke vs. levezetett típusok
  • Rövid változódeklarációk
  • Konstansok
  • Zérusértékek
  • Változók hatóköre és élettartama
  • Első osztályú adattípusok:
    • Éges számok
    • Lebegőpontos számok
    • Komplex számok
    • Boolean értékek
    • Karaktéros sorok
  • Típuskonverziók
  • Működés Unicode és UTF-8 formátummal
  • Runek és bájtok
  • Többváltozós hozzárendelés
  • Típusbiztonság megértése
  • Gyakorlat: Egy kis parancssori adatsfeldolgozó program elkészítése

4. Operátorok és kifejezések

  • Matematikai operátorok
  • Összehasonlító operátorok
  • Logikai operátorok
  • Hozzárendelő operátorok
  • Inkrementálás és dekrementálás
  • Operátorprioritás
  • Működés egész számokkal és lebegőpontos számokkal
  • Gyakori típuskonverziós hibák elkerülése
  • Gyakorlat: Számítások és validálási logika megvalósítása

5. Dátumok, idő és formázás

  • A time csomag használata
  • Dátumok létrehozása és manipulálása
  • Jelenlegi idő lekérdezése
  • Időzónák és helyek
  • Dátumok és idő formátumának elemzése
  • Dátumok és idő formázása
  • Időtávolságok számítása
  • Működés Unix időbélyegekkel
  • Időtúllépések kezelése
  • Gyakorlat: Időbélyegek és időtartam-számítások hozzáadása egy alkalmazáshoz

6. Tömbök, vágatok, mappek és struktúrák

Tömbök

  • Tömbök deklarációja
  • Tömbök inicializálása
  • Tömbök átlapozása
  • Többdimenziós tömbök

Vágatok (Slices)

  • Vágatok vs. tömbök megértése
  • Vágatok létrehozása
  • Elemek hozzáadása
  • Vágatok másolása
  • Vágatok hossza és kapacitása
  • Vágatok vágása
  • Gyakori vágathibák

Mappek

  • Mappek létrehozása
  • Bejegyzések hozzáadása és eltávolítása
  • Kulcs létezésének ellenőrzése
  • Mappek átlapozása
  • Komplex adatot tartalmazó mappek

Struktúrák

  • Struktúrák definiálása

  • Struktúra mezők

  • Struktúrák inicializálása

  • Összetett struktúrák

  • Név nélküli struktúrák

  • Struktúra metódusok

  • JSON struktúra címkék

  • Gyakorlat: Felhasználók, termékek és alkalmazásadat modellezése struktúrákkal, vágatokkal és mappekkel

7. Feltételi logika és ciklusok

  • if nyilatkozatok
  • else és else if
  • Változódeklarációk feltételekben
  • for ciklusok
  • Végtelen ciklusok
  • Ciklusfeltételek
  • break és continue
  • Lapozás a range használatával
  • Összetett ciklusok
  • switch nyilatkozatok
  • Kifejezés-alapú switchek
  • Többes esetek
  • Alapértelmezett esetek
  • Típuskapcsolók
  • Gyakorlat: Alkalmazásvalidáció és feldolgozási logika megvalósítása

8. Függvények

  • Függvények definiálása
  • Függvényparaméterek
  • Visszatérési értékek
  • Többes visszatérési értékek
  • Nevezett visszatérési értékek
  • Variádis függvények
  • Névtelen függvények
  • Függvényértékek
  • Zárók (Closures)
  • Rekurzió
  • Függvények átvitele argumentumként
  • Hibát visszatérítő függvények
  • Kis, újrahasználható függvények tervezése
  • Gyakorlat: Meglévő kód refaktorálása újrahasználható függvényekbe

9. Mutatók és memóriakoncepciók

  • Mi az a mutató?
  • Cím és dereferencia operátorok
  • Mutatók és függvényparaméterek
  • Mutatóvonalak
  • Struktúrákra mutató mutatók
  • Nullmutatók
  • Mikor használjunk mutatókat?
  • Érték- vs. referencia-alapú szemantika
  • A Go memóriakezelésének és szemétgyűjtésének megértése
  • Gyakori mutatóhibák
  • Gyakorlat: Alkalmazásadat módosítása mutatók használatával

10. Webalkalmazás létrehozása Go nyelven

  • A Go webes képességeinek áttekintése
  • Bemutatkozás a net/http csomaggal
  • HTTP szerver létrehozása
  • HTTP kérések és válaszok
  • HTTP metódusok
  • Kérő URL-ek és lekérdezési paraméterek
  • HTTP fejlécek
  • HTTP állapotkódok
  • Útválasztás alapjai
  • Kezelők létrehozása
  • Űrlap-adatok kezelése
  • Statisztikus fájlok kiszolgálása
  • Működés HTML sablonokkal
  • Sablonváltozók és vezérlési szerkezetek
  • Webalkalmazás strukturálása
  • Gyakorlat: Alapvető Go web szerver építése

11. RESTful webes szolgáltatás építése

  • REST architektúra alapjai
  • API végpontok tervezése
  • GET, POST, PUT, PATCH és DELETE
  • Működés JSON-nal
  • JSON kódolása és dekódolása
  • Kérés validálása
  • HTTP állapotkódok
  • Hibaválaszok
  • Lekérdezési paraméterek és útvonalparaméterek
  • API válaszstruktúrák
  • Kezelők és üzleti logika szétválasztása
  • Gyakorlat: CRUD REST API építése

12. Go futtatókörnyezet, fordítás és projektfordítás

  • A Go fordító megértése
  • A Go fordítási folyamata
  • go run
  • go build
  • go install
  • go test
  • Fordítási kapcsolók
  • Környezetspecifikus konfiguráció
  • Fordítás különböző operációs rendszerekhez és architektúrákhoz
  • Önálló binárisok létrehozása
  • Alkalmazás konfigurációjának kezelése
  • Gyakorlat: Alkalmazás fordítása több platformra

13. Működés fájlokkal és a webbel

  • Fájlok megnyitása és bezárása
  • Fájlok olvasása
  • Fájlok írása
  • Könyvtárak létrehozása
  • Fájlmetaadat
  • Pufferelt I/O
  • Működés streammel
  • JSON fájlok olvasása és írása
  • HTTP kliensek
  • Kimenő HTTP kérések indítása
  • HTTP klienshibák kezelése
  • Időtúllépések és lemondások
  • API válaszok feldolgozása
  • Gyakorlat: Adatok lekérése egy külső API-ról és helyi mentése

14. Hiba kezelé és hibakeresés

  • A Go megközelítése a hibáknak
  • Hibák visszaadása függvényekből
  • Hibák ellenőrzése
  • Egyedi hibák létrehozása
  • Hibák csomagolása
  • Kontextus hozzáadása hibákhoz
  • errors.Is és errors.As
  • Panik és visszatérés
  • Mikor használjuk a panic-et
  • Gyakori Go problémák hibakeresése
  • Alkalmazási aktivitás naplózása
  • Go hibakereső eszközök használata
  • Gyakorlat: Szándékosan bevezetett alkalmazási hibák diagnózisa és javítása

15. Interfészek és absztrakció

  • Mi az az interfész?
  • Implíc interfész-megvalósítás
  • Interfészek definiálása
  • Interfész-értékek
  • Üres interfészek / any
  • Típus-igazolások
  • Típuskapcsolók
  • Mutató vs. érték alapú megvalósítások
  • Kis interfészek tervezése
  • Függőség-inverzsió
  • Interfészek használata tesztelésre
  • Alkalmazáscsúcsok csökkentése
  • Gyakorlat: Interfészek bevezetése a mintawebalkalmazásba

16. Csomagok és projekt-organizálás

  • Csomagok létrehozása
  • Csomag-átnevezési konvenciók
  • Kiexportált és nem kiexportált azonosítók
  • Csomagok importálása
  • Csomag inicializálása
  • Alkalmazási rétegek szervezése
  • Belső csomagok
  • Függőségkezelés Go Modulokkal
  • Szeminatikus verziónyilvántartás
  • Harmadik féltől származó csomagok használata
  • Körkörös függőségek elkerülése
  • Karban tartható Go projektek tervezése
  • Gyakorlat: Alkalmazás refaktorálása külön csomagokba

17. Párhuzamosítás Goroutine-okkal

  • Mi az a párhuzamosítás?
  • Goroutine-ok
  • Goroutine-ok indítása
  • Könynyű, párhuzamos futtatás megértése
  • Szinkronizációs kihívások
  • Megosztott állapot
  • Felelősségi feltételek (Race conditions)
  • sync.WaitGroup használata
  • Mutexek és olvasási/írási mutexek
  • Atomális műveletek
  • Gyakorlat: Sorozatos feladat átalakítása párhuzamos feldolgozásra

18. Csatornák (Channels)

  • Csatornák megértése
  • Értékek küldése és fogadása
  • Pufferelt vs. puffer nélküli csatornák
  • Blokkoló viselkedés
  • Csatornák bezárása
  • Lapozás csatornákon
  • Irányított csatornák
  • Csatorna-alapú kommunikáció
  • Select nyilatkozatok
  • Időtúllépések és lemondások
  • Munkáspool-minták
  • Termelős/fogyasztó minták
  • Gyakorlat: Párhuzamos munkarendszerek építése

19. Kontextus és kéréskezelés

  • Miért fontosak a kontextusok webes alkalmazásokban?
  • context.Context
  • Kérés-szintű kontextus
  • Lemondás
  • Határidők
  • Időtúllépések
  • Kontextus terjesztése az alkalmazási rétegeken keresztül
  • Adatbázis vagy HTTP műveletek lemondása
  • Kontextus-miss használat elkerülése
  • Gyakorlat: Kérés-lemondások és időtúllépések hozzáadása a webalkalmazáshoz

20. Go alkalmazások tesztelése

  • Miért fontos az automatizált tesztelés?
  • Egységtesztek írása
  • A testing csomag
  • Tesztfüggvények
  • Teszt-átnevezési konvenciók
  • Táblázat-alapú tesztek
  • Hibák tesztelése
  • HTTP kezelők tesztelése
  • HTTP tesztszerverek
  • Teszt-rögzítők (fixtures)
  • Lesújtás
  • Perfomancia tesztelés (Benchmarks)
  • Példat tesztek
  • Interfészek tesztelése mókokkal vagy hamis elemekkel
  • Gyakorlat: Tesztcsomag létrehozása a mintaalakalmazáshoz

21. Teljesítmény optimalizálás

  • Go alkalmazások teljesítményének megértése
  • Düföli pontok azonosítása
  • CPU vs. memória teljesítmény
  • Hatékony adattípusok
  • Félreérthető allokációk csökkentése
  • Karaktéros sorok, bájtok és puffer
  • Goroutine-kezelés
  • Túlzott párhuzamosítás elkerülése
  • Cache-stratégiák
  • Adatbázis és hálózati szempontok
  • Alkalmazások profilozása
  • Perfomancia tesztelés
  • A Go profilozó eszközeinek használata
  • Gyakorlat: Szándékosan hatékony alkalmazás profilozása és optimalizálása

22. Biztonság és robosztus webes alkalmazás-gyakorlatok

  • Felhasználói bemenet validálása
  • HTTP kérések biztonságos kezelése
  • Gyakori webes sebezhetőségek megelőzése
  • Biztonságos hiba-kezelés
  • Autentikáció és autorizáció fogalmak
  • Titkok és konfiguráció kezelése
  • Biztonságos HTTP kommunikáció
  • Érzékeny információk elkerülése naplóban
  • Függőség-kezelés és frissítések
  • Erőforrás-korlátok és kérés-időtúllépések
  • Gyakorlat: A minta-API átvizsgálása és megerősítése

23. Alkalmazás-naplózás és figyelmettesség

  • Naplózás alapjai
  • Szerkezett naplózás
  • Naplózási szintek
  • Kérés-naplózás
  • Hiba-naplózás
  • Korreláció és kérés-azonosítók
  • Alkalmazás-működés figyeltetése
  • Alapvető metrikák
  • Egészségügyi végpontok
  • Éles környezeti problémák diagnózisa
  • Gyakorlat: Szerkezett naplózás és egészségügyi ellenőrzések hozzáadása

24. A Go alkalmazás konténerizálása

  • Miért használjunk konténereket?
  • Go alkalmazások és konténerizálás
  • Dockerfile írása
  • Többfázisú fordítás
  • Minimális futtatókép-alkalmazás építése
  • Konfiguráció kezelése környezeti változókkal
  • Konténer hálózat
  • Alkalmazás portjainak kitétele
  • Alkalmazás futtatása konténerben
  • Konténerizált alkalmazás tesztelése
  • Gyakorlat: A minta Go alkalmazás csomagolása éles környezetben használható konténerré

25. Telepítés

  • Alkalmazás előkészítése éles környezethez
  • Éles binárisok fordítása
  • Környezeti konfiguráció
  • Konténer-alapú telepítés
  • Telepítési architektúra
  • Visszafordított proxy-k
  • HTTPS/TLS szempontok
  • Alkalmazás-egészségügyi ellenőrzések
  • Könnyű leállás
  • Operációs rendszerjelek kezelése
  • Go webes alkalmazások méretezése
  • Horizontális vs. vertikális méretezés
  • Alapvető telepítési hibakeresés
  • Gyakorlat: A minta webes alkalmazás telepítése

26. Koronázó: Teljes Go webes alkalmazás

A résztvevők összekapcsolják a fogalmakat egy teljes alkalmazás fejlesztésével.

A projekt tartalmazhatja a következőket:

  • Projekt inicializálása Go Modulokkal
  • Csomag-organizálás
  • HTTP útválasztás
  • REST API végpontok
  • JSON kérés- és válaszkezelés
  • Bemenet-validáció
  • Hibakezelés
  • Interfészek
  • Párhuzamos feldolgozás
  • Külső API kommunikáció
  • Fájl- vagy adatbázis-perszisztencia
  • Automatizált tesztek
  • Naplózás
  • Teljesítmény-szempontok
  • Konténerizálás
  • Éles konfiguráció
  • Telepítés

27. Visszanézés és legjobb gyakorlatok

  • A Go alapszintaxisának áttekintése
  • Go kódolási konvenciók
  • Idiomatikus Go írás
  • Kód egyszerűségének megőrzése
  • Hatékony csomagtérvezés
  • Hibakezelési legjobb gyakorlatok
  • Interfész-tervezési elvek
  • Párhuzamosítás legjobb gyakorlatai
  • Tesztelési stratégiák
  • Teljesítmény-szempontok
  • Karban tarthatóság és olvashatóság
  • Gyakori hibák, amelyeket az új Go fejlesztők elkövetnek
  • Ajánlott megközelítések a Go fejlesztés folytatásához

28. Következtetés

  • Főfogalmak áttekintése
  • A kész webes alkalmazás áttekintése
  • Kérdések és beszélgetés
  • Gyakori valós világ-területek hibakeresése
  • Ajánlott következő lépések a Go fejlesztéshez
  • További Go könyvtárak és ökoszisztéma-erőforrások
  • Toábbi lehetőségek éles környezetű Go szolgáltatások építésére

Követelmények

  • A programozás általános elveinek megértése

Célcsoport

  • Fejlesztők
 28 Órák

Résztvevők száma


Ár per résztvevő

Vélemények (5)

Közelgő kurzusok

Rokon kategóriák