de la validarea formularelor web la porcii verzi (utilizarea automatelor in contextul web-ului)

74
Dr. Sabin Buraga www.purl.org/net/busaco

Upload: sabin-buraga

Post on 22-Jun-2015

2.803 views

Category:

Education


0 download

DESCRIPTION

A presentation -- prepared for the InfoEducation 2011 summer camp -- regarding the pragmatic uses of automata theory (especially finite state machines) in the Web context, with examples covering XML validation, REST Web services, game development, etc. The content is available in Romanian language, only.

TRANSCRIPT

Page 1: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Dr. Sabin Buragawww.purl.org/net/busaco

Page 2: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

validarea formularelor Web

porcii verzi

Page 3: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Cum putem valida dateleintroduse de utilizator?

Page 4: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)
Page 5: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

prenumele & numele vor include doar litere

adresa de email are forma [email protected], unde domeniu e compus din 2—4 litere

Page 6: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

$nume = $_REQUEST['nume'];

$lungime = strlen ($nume);

for ($i = 0; $i < $lungime; $i++) {

if (!este_litera (nume[$i])) {

genereaza_eroare (NUME_ERONAT);

}

}

// aparent, numele a fost introdus corect

echo ('Numele e corect...');

Page 7: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

prenumele & numele vor include doar litere(inclusiv caracterele albe + cratima)

primul caracter trebuie scris cu majuscula

Page 8: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Am putea folosi ―ceva‖mai flexibil & ―evoluat‖?

Page 9: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

sstart

slitere

seroare

≠ majusculesau ≠ litere

majuscula

litera

≠ litere

scorect

final de cuvânt

Page 10: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

sstart

slitere

seroare

≠ majusculesau ≠ litere

majuscula

litera

≠ litere

scorect

final de cuvânt

automat (finit determinist)

Page 11: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

sstart

slitere

seroare

≠ majusculesau ≠ litere

majuscula

litera

≠ litere

scorect

final de cuvânt

automat (finit determinist)

Page 12: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Automatele pot fi folositepentru verificarea corectitudinii

din punct de vedere sintactic

Page 13: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Cum putem reprezenta simbolic un automat?

Page 14: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Sstart -> Majusc SlitereSstart -> DiferitDeMajusc SeroareSlitere -> Litera SlitereSlitere -> Final ScorectSlitere -> DiferitDeLitere SeroareScorect ->

Seroare ->

Majusc -> [A-Z]

Litera -> [a-zA-Z]

...gramatica

Page 15: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

generalizând, avem:

Neterminal -> Neterminal Terminal

Neterminal -> meta-caractere (simboluri)

Terminal -> caractere “reale”

X -> Y specificând regula de productie

gramatica

Page 16: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Specificarea la nivel de programa unor tipuri particulare de

gramatici se face via expresii regulate(regular expressions – regex)

Page 17: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Expresii regulate

pattern-uri textuale

conform unor reguli precise,li se pot ―potrivi‖ texte

Page 18: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Expresii regulate

caractere ―reale‖ vs. meta-caractere

uzual, meta-caracterelesubstituie operatori ―speciali‖

Page 19: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

. orice caracter, exceptând new-line (\n)

[…] enumerare de caractere: [A-Z] [0-9]

| alternativă a mai multe forme: M|F

(…) grupare de caractere

$ final de linie

^ început de linie sau negare: [^A-Z]

Page 20: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

? 0 sau maxim 1 apariții: (web)?

* zero sau mai multe apariții: .*

+ minim 1 sau mai multe apariții: [0-9a-z]+

{…} interval de apariții: [a-zA-Z]{2,4}

{1,} ≡ +

{0,} ≡ *

{0,1} ≡ ?

Page 21: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

\d o cifră: [0-9]\w un caracter alfanumeric: [0-9_a-zA-Z]\s un spațiu alb: [\t\r\n\ \f]\D orice exceptând cifre: [^0-9]\W caracter ne-alfanumeric: [^0-9_a-zA-Z]\S orice exceptând spații: [^\t\n\r\ \f]\b limitele unui cuvânt\B orice alt context decât limitele

unui cuvânt (interiorul unui cuvânt)\A începutul unui șir\Z sfârșitul unui șir

Page 22: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Expresia desemnând adresa de e-mail:

.+@.+\.(.){2,4}

Page 23: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

sstart ssub

seroare

oricealtceva

simbolul @

sdom

.+.+

oricealtceva

simbolul .

scorect

(.){2,4}orice

altceva

Page 24: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Expresia desemnând adresa de e-mail:

.+@.+\.(.){2,4}

Hm… valori ca -@@.74 sunt considerate corecte!

Page 25: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

sub validare_email { $testmail = shift; if ($testmail =~ / /) { return 0 }; if ($testmail =~/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ || $testmail !~

/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/)

{ return 0;

} else { return 1;

}}

expresii regulate – limbajul Perl

Page 26: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

test ()

match ()

replace ()

split ()

Page 27: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

var expr = new RegExp ("^[A-Z]?[a-z]+$");$('mesaj').className = expr.test (valoare)

? 'corect' : 'eroare';

expresii regulate – limbajul JavaScript

Page 28: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Am putea valida structura documentelor XML?

Page 29: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

<!-- arbore genealogic --><arbore>

<persoana id="busaco" gen="M"><prenume>Sabin-Corneliu</prenume><mama>

<persoana id="mama" gen="F"><prenume>Sabina-Elena</prenume>

</persoana></mama><tata>

<persoana id="tata" gen="M"><prenume>Radu-Corneliu</prenume>

</persoana></tata><obs>...</obs>

</persoana></arbore>

Page 30: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Folosind gramatici (automate),putem valida documentele XML:

DTD (Document Type Definition)

RELAX NG

Page 31: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

<!-- DTD pentru validarea arborelui genealogic --><!DOCTYPE arbore [

<!ELEMENT arbore (persoana+)><!ELEMENT persoana (prenume,mama?,tata?,obs*)><!ELEMENT prenume (#PCDATA)><!ELEMENT mama (persoana)><!ELEMENT tata (persoana)><!ELEMENT obs (#PCDATA)>

<!ATTLIST persoanaid ID #REQUIREDgen (M|F) #IMPLIED

>]>

Page 32: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

<!-- DTD pentru validarea arborelui genealogic --><!DOCTYPE arbore [

<!ELEMENT arbore (persoana+)><!ELEMENT persoana (prenume,mama?,tata?,obs*)><!ELEMENT prenume (#PCDATA)><!ELEMENT mama (persoana)><!ELEMENT tata (persoana)><!ELEMENT obs (#PCDATA)>

<!ATTLIST persoanaid ID #REQUIREDgen (M|F) #IMPLIED

>]> neterminal

terminal

Page 33: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)
Page 34: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Alte scenarii de utilizarea automatelor?

Page 35: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Transportul datelor prin Internet

Page 36: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

sistem de transmisie la nivel fizic:fir, wireless,...

ț ț

interfata (API)

protocol

Page 37: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Stabilirea & eliberarea conexiuniisunt guvernate de un automat

Page 38: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

automatul TCP (Transmission Control Protocol)

Page 39: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

automatul TCP (Transmission Control Protocol)

Page 40: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

(infoiasi)$ netstat -tActive Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 fenrir:1548 thor:auth TIME_WAITtcp 0 0 fenrir:ssh thor:4008 ESTABLISHEDtcp 0 0 fenrir:ftp-data c409-27.net.infoia:2674 TIME_WAITtcp 0 0 fenrir:ssh c412-6.net.infoias:2508 ESTABLISHEDtcp 0 0 fenrir:pop3s xteam:64688 TIME_WAITtcp 0 1 fenrir:1546 mta-v12.level3.mai:smtp SYN_SENTtcp 0 0 localhost:1544 localhost:smtp TIME_WAITtcp 0 540 fenrir:1541 www.cs.tuiasi.ro:www FIN_WAIT1tcp 0 0 fenrir:ssh c409-20.net.infoia:1124 ESTABLISHEDtcp 0 0 fenrir:pop3s xteam:64682 TIME_WAITtcp 0 0 localhost:8008 localhost:1537 ESTABLISHEDtcp 0 1 fenrir:1533 mta-v12.level3.mai:smtp SYN_SENTtcp 0 0 fenrir:ftp c412-11.net.infoia:1444 FIN_WAIT2tcp 0 0 fenrir:1511 fenrir:1509 TIME_WAIT

comanda netstat permite ―spionarea‖ starilor curente pentru fiecare conexiune TCP

Page 41: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Software bazat pe servicii Web

Page 42: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Software bazat pe servicii Web

paradigma REST(REpresentational State Transfer)

Page 43: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Servicii Web

software oferind o functionalitate anume

Page 44: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Servicii Web

traduceri, curs valutar, meteo, cartografiere, statistici, stocare,…

Page 45: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Servicii Web

utilizate de alte aplicatii/servicii

Page 46: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

recurgerea la servicii multiple – mash-up

Page 47: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Rezultatul unei procesari(efectuate de un serviciu Web)

conduce la obtinerea unei reprezentaria unei resurse

Page 48: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Rezultatul unei procesari(efectuate de un serviciu Web)

conduce la obtinerea unei reprezentaria unei resurse

resursa = blog, fotografie, flux de stiri, program etc.

Page 49: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Rezultatul unei procesari(efectuate de un serviciu Web)

conduce la obtinerea unei reprezentaria unei resurse

reprezentare = HTML, JPEG, PNG, RSS, SVG,…

Page 50: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Reprezentarea e specificatavia tipuri MIME

text/html, image/png, application/xhtml+xml

Page 51: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Reprezentarile aceleasi resurse – desemnate de un URI unic –

pot fi multiple

Page 52: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Resursa specificata de http://vremea.la/galaciuc/

poate fi reprezentata de:

un document HTML – accesat de un browser Webun flux Atom – utilizat de alte servicii

un document SVG – pentru listare

Page 53: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Resursa specificata de http://vremea.la/galaciuc/

poate fi reprezentata de:

un document HTML – accesat de un browser Webun flux Atom – utilizat de alte servicii

un document SVG – pentru listare

fiecare reprezentare are asociat un URL

Page 54: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Clientii (navigatoare Web, player-e,…)interactioneaza cu reprezentarile

resurselor via verbe

―acceseaza‖ – GET

―modifica‖ – POST

―sterge‖ – DELETE

Page 55: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Orice accesare a unei reprezentari plaseaza aplicatia – ori clientul Web –intr-o stare ce va fi schimbata in urma

unui transfer de date(accesarea altei reprezentari)

Page 56: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

sindex

smesaj

sflux

GET

seditor

GET

POST

Web-ul ca un automat

Page 57: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

sindex

smesaj

sflux

GET

seditor

GET

POST

http://blog.info/

http://blog.info/mesaj

http://blog.info/mesaj/edit

http://blog.info/stiri

reprezentare1

(XHTML)

reprezentare2

(XHTML)

reprezentare3

(XHTML)

reprezentare4

(Atom)

Page 58: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Transferul se realizeaza prin protocolul HTTP

Reprezentarea e modelata in HTML, JSON , XML(sau alt format) si indicata prin MIME

Adresabilitatea se rezolva via URI

Page 59: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

// invocarea asincronă (Ajax) a unui serviciu Web via jQuery

jQuery.ajax ({

type: "POST", // execută o cerere POST

contentType: "application/json; charset=utf-8",

url: "http://undeva.info/ArboreGenealogic/busaco",

data: "{...}", // date de intrare trimise serviciului

dataType: "json", // așteptăm răspunsul în format JSON

// funcție apelată la transferul cu succes

success: function(data) {

// preluăm datele, convertindu-le în HTML

$('.rezultat').html(data);

}

});

Page 60: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

acces (a)sincron la rezultatele oferitede un serviciu Web via API

Page 61: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Bun… Dar porcii verzi?

Page 62: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Am putea modela(pe baza unui automat)

comportamentul personajelor dintr-un joc electronic?

Page 63: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Deciziile din cadrul joculuipot fi luate folosind un automat

Page 64: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Orice joc interactioneazacu minim 1 jucator uman

Page 65: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Orice joc include ―jetoane‖ discrete– numite token-uri –

manipulate (in)direct de jucator(i)

Page 66: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Orice joc include ―jetoane‖ discrete– numite token-uri –

manipulate (in)direct de jucator(i)

aceste token-uri sunt gestionate intern de software

Page 67: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

La nivel conceptual, un joc e descris de jucatori + token-uri

Page 68: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Token-urile pot interactionacu alte token-uri ori cu jucatorul

Page 69: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)
Page 70: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Comportamentul token-urilorpoate fi descris de un automat

Page 71: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

automat asociat NPC-ului ―ghost‖

Page 72: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

sfericit slovit

sviu

sbolnav

coliziuni

automat descriind comportamentul porcilor verzi

≠lovituri

smort

lovituriletale

lovituri

Page 73: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

În ce alte contexte am putea recurge la automate?

Page 74: De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)

Dr. Sabin Buragawww.purl.org/net/busaco