Redis, skrypty w języku Lua

Podobne dokumenty
Programowanie obiektowe

Microsoft IT Academy kurs programowania

Wprowadzenie do języka Java

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Języki skryptowe w programie Plans

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Przegląd języka Python. Łukasz Anwajler

Programowanie w Ruby

System operacyjny Linux

Programowanie w Ruby

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Należy ściągnąć oprogramowanie Apache na platformę

Python. Wprowadzenie. Jolanta Bachan

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

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

Podstawy Programowania Podstawowa składnia języka C++

Lekcja 6: Pascal. Procedura i funkcja

Python dla początkujących. Małgorzata Niewiem AGH, GGiOŚ, Katedra Geoinformatyki i Informatyki Stosowanej SATIM Satelitarny Monitoring

Podstawy otwartych języków programowania Przechowywanie danych

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

System operacyjny Linux

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Programowanie obiektowe

Python wstęp do programowania dla użytkowników WCSS

Programowanie obiektowe

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Kompilator języka Basic można bezpłatnie pobrać ze strony z zakładki DOWNLOAD.

Zasady Programowania Strukturalnego

Wstęp do programowania. Różne różności

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

Umieszczanie kodu. kod skryptu

KOTLIN. Język programowania dla Androida

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

JAVAScript w dokumentach HTML - przypomnienie

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

Programowanie, algorytmy i struktury danych

JavaScript - korzenie

Python. Skąd taka nazwa? Kurs systemu UNIX 1

Pakiety Matematyczne - R Zestaw 2.

Bloki anonimowe w PL/SQL

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

1 Wprowadzenie do algorytmiki

Programowanie w języku Python. Grażyna Koba

Podstawy programowania: Python. Wprowadzenie. Jolanta Bachan

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Programowanie w Ruby

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Podstawowe części projektu w Javie

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Informatyka 1. Przetwarzanie tekstów

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

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Technologie cyfrowe semestr letni 2018/2019

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Programowanie i projektowanie obiektowe

41. Zmienne lokalne muszą mieć nazwę, którą poprzedza (maksymalnie 128 znaków) oraz typ (każdy z wyjątkiem: text, ntext oraz image)

LibreOffice Calc VBA

Programowanie internetowe

Kurs WWW. Paweł Rajba.

Wprowadzenie do Scilab: podstawy języka Scilab

Zapis algorytmów: schematy blokowe i pseudokod 1

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Personal Home Page PHP: Hypertext Preprocessor

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

Inne podejścia obiektowe. Referat na seminarium magisterskie Zagadnienia Programowania Obiektowego Dymitr Pszenicyn

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Materiały do laboratorium MS ACCESS BASIC

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

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Metodyka i Technika Programowania 1

Tablice deklaracja, reprezentacja wewnętrzna

JavaScript funkcyjność

Oracle11g: Wprowadzenie do SQL

Laboratorium Programowania Kart Elektronicznych

ZASADY PROGRAMOWANIA KOMPUTERÓW

XML extensible Markup Language. część 5

Paradygmaty programowania

PODSTAWY BAZ DANYCH 13. PL/SQL

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Algorytmy dla maszyny PRAM

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Ćwiczenie 1. Przygotowanie środowiska JAVA

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

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

Wykład 1

Transkrypt:

edis, skrypty w języku Lua 1/15 Redis, skrypty w języku Lua Technologie Zarządzania Treścią dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki Teoretycznej i Stosowanej 24 października 2017

Redis, skrypty w języku Lua 2/15 Język programowania Lua I Cechy: Język programowania Lua - wersja 5.3.4 potężny, efektywny i lekki język skryptowy możliwy do uruchomienia na urządzeniach mobilnych, wspiera programowanie: proceduralne, zorientowane obiektowo, funkcyjne, sterowane danymi, wspiera również opis danych, jest dynamicznie typowany, wykorzystuje maszynę wirtualną interpretującą pośredni kod binarny (ang. bytecode), dostarcza automatyczne zarządzanie pamięcią z mechanizmem odśmiecania pamięci (ang. garbage collection), świetnie nadaje się do problemów związanych z konfiguracją, pisania skryptów czy szybkiego prototypowania.

Redis, skrypty w języku Lua 3/15 Język programowania Lua II Cechy: Dokumentacja: https://www.lua.org/manual/5.3/ zaprojektowany i zarządzany w Papieskim Katolickim Uniwersytecie w Rio de Janeiro w Brazyli, Lua to księżyc po portugalsku, czyta się LOO-ah. używany w wielu technicznych aplikacjach ze szczególnym uwzględnieniem systemów wbudowanych i gier, obecnie jest wiodącym językiem skryptowym dla gier, posiada solidną dokumentację i napisano o nim kilka książek, działa bardzo szybko, najszybciej ze wszystkich języków skryptowych, jest przenośna (małą paczkę łatwo wszędzie zainstalować).

Redis, skrypty w języku Lua 4/15 Język programowania Lua III Cechy: Dokumentacja: https://www.lua.org/manual/5.3/ darmowy, działa na licencji MIT, zajmuje tylko 1.1MB po rozpakowaniu. dostarcza meta-mechanizmy, pozwalające na implementację różnych cech języka programowania, nie ma tych cech bezpośrednio w samym Lua, nie jest typowo obiektowy ale dostarcza meta-mechanizmy do implementowania klas i dziedziczenia, meta-mechanizmy pozwalają na utrzmymanie małego języka z dużymi możliwościami, semantyka może być rozszerzana w niekonwencjonalny sposób.

Redis, skrypty w języku Lua 5/15 Składnia języka Lua - instrukcja warunkowa Hello World print("hello World!") Instrukcja warunkowa wiek = 18 -- zmienna globalna --[[ Przykład instrukcji warunkowej if z wielowierszowym komentarzem ]] if ( wiek >= 18 ) then print( "osiagnales pelnoletniosc" ) else print( "jetes niepelnoletni" )

Redis, skrypty w języku Lua 6/15 Składnia języka Lua - pętla for, konkatenacja pętla for pierwszy = 7 ostatni = 14 krok = 2.2 for i = pierwszy, ostatni, krok do -- polecenia... print( "i wynosi ".. i ) --krok może być ujemy-iteracja w dół i wynosi 7.0 i wynosi 9.2 i wynosi 11.4 i wynosi 13.6

Redis, skrypty w języku Lua 7/15 Składnia języka Lua - pętla while pętla while -- lokalna zmienna l, globalniej nie można konkatenować local l = 10 -- while działa jeśli warunek = true while l>0 do -- polecenia... l = l - 3.14159 print("l wynosi ".. l) l wynosi 6.85841 l wynosi 3.71682 l wynosi 0.57523 l wynosi -2.56636

Redis, skrypty w języku Lua 8/15 Składnia języka Lua - pętla repeat pętla repeat local k = 7 -- repeat działa jeśli warunek = false -- wpisujemy warunek na przerwanie petli repeat repeat -- polecenia... print("k wynosi ".. k) k = k + 9.81 until k>50 -- until not (k<=50) k wynosi 7 k wynosi 16.81 k wynosi 26.62 k wynosi 36.43 k wynosi 46.24

Redis, skrypty w języku Lua 9/15 Składnia języka Lua - funkcje prosta funkcja function iloczyn( par1, par2 ) -- deklaracja funkcji return par1 * par2 -- słowo kluczowe "return" - zwrócenie wartości print( tostring( iloczyn( 123, 456 ) ) ) -- 56088 prosta funkcja function silnia(n) local x = 1 for i = 2, n do x = x * i return x sil = silnia(7) print( 7!=, sil, zapis blokowy, parametrów funkcji print ) 7!= 5040 zapis blokowy parametrów funkcji print

Redis, skrypty w języku Lua 10/15 Składnia języka Lua - tablice tab = {} -- pusta tablica tab[ a ] = 123 tab[ b ] = 456 print(tab) -- drukuje adres tablcy tabb = tab -- przy okazji, rozróżnia duże i małe litery print(tabb) -- wskazuje ten sam adres co tab print(tab[ a ], tab[ b ]) -- 123 456 print(tab.a, tab.b) -- 123 456 tab[1] = 7 tab[3] = 8 tab[44] = 9 print(tab[1], tab[2], tab[3], tab[44]) -- 7 nil 8 9 tabc = { 11, 22, Wojtek, d = "Danuta" } tabc[0] = 999 print(tabc[0], tabc[1], tabc[2], tabc[3], tabc[ d ], tabc.d) table: 0x128e1f0 table: 0x128e1f0 123 456 123 456 7 nil 8 9 999 11 22 Wojtek Danuta Danuta

Redis, skrypty w języku Lua 11/15 Składnia języka Lua - przechowywanie funkcji zmienne i tabele przechowujące funkcje fun = function(m) print( Liczba m=.. m) fun(888) function zwroc_funkcje() return function(n) print( Liczba n=.. n) fun00 = zwroc_funkcje() fun00(9999) Liczba m=888 Liczba n=9999

Redis, skrypty w języku Lua 12/15 Składnia języka Lua - przestrzenie nazw tabela jako własna przestrzeń nazw MojaPrzestrzen = {} -- coś jakby konstruktor MojaPrzestrzen.new = function (imie, wiek) return { imie = imie, wiek = wiek } jan = MojaPrzestrzen.new( Jan, 23) print(mojaprzestrzen.new, jan) print(jan.imie, jan.wiek) function: 0x10ade50 Jan 23 table: 0x10ae090

Redis, skrypty w języku Lua 13/15 Składnia języka Lua - interakcja z użytkownikiem, napisy interakcja z użytkownikiem, napisy print( "Czesc, jak masz na imie?\n" ) --\n to oznaczenie nowej linii --Funkcja io.read( ) oczekuje na wprowadzenie danych local imie = io.read( ) print( "Czesc, ".. imie.. "." ) print(string.len(imie)) print(string.byte(imie, 1)) print( Ostatnia litera:.. imie:sub(string.len(imie))) Czesc, jak masz na imie? Adam Czesc, Adam. 4 65 Ostatnia litera: m

Redis, skrypty w języku Lua 14/15 Wykorzystanie skryptów Lua w Redis I prosty odczyt danych return redis.call( get, napis ) > set napis "Ala ma kota" $ redis-cli --eval redis.lua "Ala ma kota" odczyt listy return redis.call( lrange, imiona, 0, -1) > RPUSH imiona "Jan" "Marek" "Halina" "Wojtek" "Martyna" $ redis-cli --eval redis.lua 1) "Jan" 2) "Marek" 3) "Halina" 4) "Wojtek" 5) "Martyna"

Redis, skrypty w języku Lua 15/15 Wykorzystanie skryptów Lua w Redis II prosty odczyt danych local imiona = redis.call( lrange, imiona, 0, -1) local zenskie = {} for key, value in pairs(imiona) do if ( value:sub( string.len(value) ) == a ) then table.insert(zenskie, value) return zenskie > RPUSH imiona "Jan" "Marek" "Halina" "Wojtek" "Martyna" $ redis-cli --eval redis.lua 1) "Halina" 2) "Martyna"