• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)
 

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

on

  • 2,965 views

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 ...

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.

Statistics

Views

Total Views
2,965
Views on SlideShare
2,440
Embed Views
525

Actions

Likes
1
Downloads
11
Comments
0

6 Embeds 525

http://www.worldit.info 277
http://fiistudent.wordpress.com 220
http://codeshout.ro 15
http://feeds.feedburner.com 9
http://twitter.com 2
http://incampus.ro 2

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului) De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului) Presentation Transcript

    • Dr. Sabin Buragawww.purl.org/net/busaco
    • validarea formularelor Web porcii verzi
    • Cum putem valida datele introduse de utilizator?
    • prenumele & numele vor include doar litereadresa de email are forma cont@subdomeniu.domeniu, unde domeniu e compus din 2—4 litere
    • $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 corectecho (Numele e corect...);
    • prenumele & numele vor include doar litere (inclusiv caracterele albe + cratima)primul caracter trebuie scris cu majuscula
    • Am putea folosi ―ceva‖mai flexibil & ―evoluat‖?
    • litera majuscula slitere sstart final de cuvânt ≠ litere≠ majusculesau ≠ litere scorect seroare
    • litera majuscula slitere sstart final de cuvânt ≠ litere≠ majusculesau ≠ litere scorect seroare automat (finit determinist)
    • litera majuscula slitere sstart final de cuvânt ≠ litere≠ majusculesau ≠ litere scorect seroare automat (finit determinist)
    • Automatele pot fi folositepentru verificarea corectitudinii din punct de vedere sintactic
    • Cum putem reprezentasimbolic un automat?
    • Sstart -> Majusc SlitereSstart -> DiferitDeMajusc SeroareSlitere -> Litera SlitereSlitere -> Final ScorectSlitere -> DiferitDeLitere SeroareScorect -> Seroare -> Majusc -> [A-Z]Litera -> [a-zA-Z]... gramatica
    • generalizând, avem:Neterminal -> Neterminal TerminalNeterminal -> meta-caractere (simboluri)Terminal -> caractere “reale” X -> Y specificând regula de productie gramatica
    • Specificarea la nivel de program a unor tipuri particulare degramatici se face via expresii regulate (regular expressions – regex)
    • Expresii regulate pattern-uri textualeconform unor reguli precise, li se pot ―potrivi‖ texte
    • Expresii regulatecaractere ―reale‖ vs. meta-caractere uzual, meta-caracterele substituie operatori ―speciali‖
    • . 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]
    • ? 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} ≡ ?
    • d o cifră: [0-9]w un caracter alfanumeric: [0-9_a-zA-Z]s un spațiu alb: [trn f]D orice exceptând cifre: [^0-9]W caracter ne-alfanumeric: [^0-9_a-zA-Z]S orice exceptând spații: [^tnr f]b limitele unui cuvântB orice alt context decât limitele unui cuvânt (interiorul unui cuvânt)A începutul unui șirZ sfârșitul unui șir
    • Expresia desemnând adresa de e-mail: .+@.+.(.){2,4}
    • .+ .+ simbolul @ sstart ssub sdom simbolul . orice orice altceva (.){2,4} oricealtceva altceva seroare scorect
    • Expresia desemnând adresa de e-mail: .+@.+.(.){2,4}Hm… valori ca -@@.74 sunt considerate corecte!
    • 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
    • test () match ()replace () split ()
    • var expr = new RegExp ("^[A-Z]?[a-z]+$");$(mesaj).className = expr.test (valoare) ? corect : eroare; expresii regulate – limbajul JavaScript
    • Am putea valida structura documentelor XML?
    • <!-- 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>
    • Folosind gramatici (automate), putem valida documentele XML:DTD (Document Type Definition) RELAX NG
    • <!-- 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 persoana id ID #REQUIRED gen (M|F) #IMPLIED >]>
    • <!-- 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 persoana terminal id ID #REQUIRED gen (M|F) #IMPLIED >]> neterminal
    • Alte scenarii de utilizare a automatelor?
    • Transportul datelor prin Internet
    • protocol ț ținterfata (API) sistem de transmisie la nivel fizic: fir, wireless,...
    • Stabilirea & eliberarea conexiunii sunt guvernate de un automat
    • automatul TCP (Transmission Control Protocol)
    • automatul TCP (Transmission Control Protocol)
    • (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_WAITcomanda netstat permite ―spionarea‖ starilor curente pentru fiecare conexiune TCP
    • Software bazat pe servicii Web
    • Software bazat pe servicii Web paradigma REST(REpresentational State Transfer)
    • Servicii Websoftware oferind o functionalitate anume
    • Servicii Webtraduceri, curs valutar, meteo, cartografiere, statistici, stocare,…
    • Servicii Webutilizate de alte aplicatii/servicii
    • recurgerea la servicii multiple – mash-up
    • Rezultatul unei procesari (efectuate de un serviciu Web)conduce la obtinerea unei reprezentari a unei resurse
    • Rezultatul unei procesari (efectuate de un serviciu Web)conduce la obtinerea unei reprezentari a unei resurse resursa = blog, fotografie, flux de stiri, program etc.
    • Rezultatul unei procesari (efectuate de un serviciu Web)conduce la obtinerea unei reprezentari a unei resurse reprezentare = HTML, JPEG, PNG, RSS, SVG,…
    • Reprezentarea e specificata via tipuri MIMEtext/html, image/png, application/xhtml+xml
    • Reprezentarile aceleasi resurse– desemnate de un URI unic – pot fi multiple
    • Resursa specificata de http://vremea.la/galaciuc/ poate fi reprezentata de:un document HTML – accesat de un browser Web un flux Atom – utilizat de alte servicii un document SVG – pentru listare
    • Resursa specificata de http://vremea.la/galaciuc/ poate fi reprezentata de:un document HTML – accesat de un browser Web un flux Atom – utilizat de alte servicii un document SVG – pentru listare fiecare reprezentare are asociat un URL
    • Clientii (navigatoare Web, player-e,…) interactioneaza cu reprezentarile resurselor via verbe ―acceseaza‖ – GET ―modifica‖ – POST ―sterge‖ – DELETE …
    • Orice accesare a unei reprezentariplaseaza aplicatia – ori clientul Web –intr-o stare ce va fi schimbata in urma unui transfer de date (accesarea altei reprezentari)
    • GET smesajsindex POSTGET seditor sflux Web-ul ca un automat
    • http://blog.info/mesajhttp://blog.info/ GET smesaj sindex reprezentare2 (XHTML) reprezentare1 (XHTML) POST GET http://blog.info/mesaj/edit http://blog.info/stiri seditor sflux reprezentare3 (XHTML) reprezentare4 (Atom)
    • Transferul se realizeaza prin protocolul HTTPReprezentarea e modelata in HTML, JSON , XML (sau alt format) si indicata prin MIME Adresabilitatea se rezolva via URI
    • // invocarea asincronă (Ajax) a unui serviciu Web via jQueryjQuery.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); }});
    • acces (a)sincron la rezultatele oferite de un serviciu Web via API
    • Bun… Dar porcii verzi?
    • Am putea modela (pe baza unui automat)comportamentul personajelor dintr-un joc electronic?
    • Deciziile din cadrul joculuipot fi luate folosind un automat
    • Orice joc interactioneazacu minim 1 jucator uman
    • Orice joc include ―jetoane‖ discrete – numite token-uri –manipulate (in)direct de jucator(i)
    • Orice joc include ―jetoane‖ discrete – numite token-uri –manipulate (in)direct de jucator(i)aceste token-uri sunt gestionate intern de software
    • La nivel conceptual, un joc e descris de jucatori + token-uri
    • Token-urile pot interactionacu alte token-uri ori cu jucatorul
    • Comportamentul token-urilorpoate fi descris de un automat
    • automat asociat NPC-ului ―ghost‖
    • sfericit ≠lovituri coliziuni slovit lovituri lovituri sbolnav letale sviu smortautomat descriind comportamentul porcilor verzi
    • În ce alte contexte am putea recurge la automate?
    • Dr. Sabin Buragawww.purl.org/net/busaco