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


Recommended