Návrh Školení

Úvod do Lua

    Něco z historie Cíle, funkce a jiné cíle Lua Zdroje dokumentace a výukových programů Lua Instalace interpretu Lua Nastavení a používání LuaRocks

Základní syntaxe a sémantika

    Identifikátory Komentáře, blokové komentáře Globální proměnné a vynucení přísnosti Lokální proměnné Samostatné programy, argumenty programu Kompilační jednotky, bloky, výrazy, středníky

Datové typy a datové struktury

    Základní typy: nil, boolean, number, string Typy objektů: funkce, uživatelská data, vlákno, tabulka Reference/objekty vs. základní hodnoty Význam tabulek v Lua

Úvod do tabulek a jejich všestrannosti

    Tabulky jako asociativní pole Tabulky jako číselná pole, sekvence

Základní řídicí struktury

    The if then elseif else end Smyčka while Smyčka opakování Jednoduchá smyčka for

Vypořádání se s chybou

    Návratové hodnoty vs výjimky Převod návratové hodnoty na výjimku Převedení výjimky na návratovou hodnotu Úrovně chyb

Ukázkové programy

    Vyhodnocení polynomu První vyhledávání šířky Doplňková cvičení

Více o funkcích

    Pojmenované argumenty Objektově orientovaná volání Uzavírání volání Currying Tail Vícenásobné přiřazení a návrat Varargs

Iterátory a korutiny

    Obecná smyčka for Bezstavové vs stavové iterátory Rozdíly mezi iterátory a společnými rutinami

Metatabulky a metametody

    Příklad sady Metametoda __tostring Aritmetické metametody Metametody __index, __newindex Metametoda __len

Moduly a balíčky

    Používání modulů Vytváření modulů Organizace modulů do balíčků

Pokročilé tabulky

    Tabulky pro fronty a zásobníky Tabulky popisující grafy Matice jako tabulky Propojené seznamy jako tabulky Řetězcové buffery

Metatabulky prostřednictvím příkladů

    Proxy Memoization pouze pro čtení Dynamické programování s memoization Fibonacciho příklad

Prostředí

    Vztah mezi globálními proměnnými a prostředími Volné proměnné Tabulka _ENV a tabulka _G

Více o modulech

    Různé přístupy k vytváření modulů Moduly, které mění chování Inicializace modulu a argumenty Použití prostředí k implementaci bezpečných modulů

Pokročilé iterátory a korutiny

    Producent, spotřebitel, filtr Zabalení společných rutin pro získání iterátorů Bezstavový iterátor pro propojené seznamy

Přispívání k ekosystému

    Nahrávání balíčků do MoonRocks

Funkční paradigma v Lua

    Funkce mapy Funkce zmenšení / skládání

Objektově orientovaný Programming

    Různé přístupy k OOP Různé přístupy k dědičnosti Příklady

Přehled standardních knihoven Lua

Sestavení

    Kompilace Eval Vztah s prostředím Binární bloky

Odvoz odpadků

    Slabé tabulky Finalizátory, metametoda __gc

Lua bytecode a virtuální stroj

    Generování bajtkódu ze zdrojového kódu Čtení a analýza bajtkódu Rychlá prohlídka zdrojového kódu Lua VM

C moduly

    Volání C z Lua Search cesty a načítání C modulů

Volání Lua od C

    Chyba zásobníku zpracování pokračování

Práce s hodnotami a typy Lua z C

    Pole Řetězce Metatabulky uživatelských dat Objektově orientovaná volání Light userdata

Správa paměti

    Alokátory GC API

Vlákna v Lua

    Současné rutiny vs vlákna Skutečné vícevláknové zpracování a stavy Lua

Požadavky

Znalost alespoň jednoho dalšího programovacího jazyka. Programming zkušenost. Volitelně, pokud znáte jiné skriptovací jazyky, usnadní to pochopení Lua.

  21 hodiny
 

Počet účastníků


Začátek

Konec


Dates are subject to availability and take place between 09:30 and 16:30.
Open Training Courses require 5+ participants.

Reference (3)

Související kurzy

Combined C/C++, JAVA and Web Application Security

  28 hodiny

Advanced Java Security

  21 hodiny

Combined JAVA, PHP and Web Application Security

  28 hodiny

Standard Java Security

  14 hodiny

Java and Web Application Security

  21 hodiny

Advanced Java, JEE and Web Application Security

  28 hodiny

Související kategorie