Your SlideShare is downloading. ×
0
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 ...
$nume = $_REQUEST[nume];$lungime = strlen ($nume);for ($i = 0; $i < $lungime; $i++) {     if (!este_litera (nume[$i])) {  ...
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                                 ...
litera                   majuscula                                      slitere        sstart                             ...
litera                   majuscula                                      slitere        sstart                             ...
Automatele pot fi folositepentru verificarea corectitudinii  din punct de vedere sintactic
Cum putem reprezentasimbolic un automat?
Sstart    ->   Majusc SlitereSstart    ->   DiferitDeMajusc SeroareSlitere   ->   Litera SlitereSlitere   ->   Final Score...
generalizând, avem:Neterminal    -> Neterminal TerminalNeterminal    -> meta-caractere (simboluri)Terminal      -> caracte...
Specificarea la nivel de program     a unor tipuri particulare degramatici se face via expresii regulate    (regular expre...
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: ...
?     0 sau maxim 1 apariții: (web)?*     zero sau mai multe apariții: .*+     minim 1 sau mai multe apariții: [0-9a-z]+{…...
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   ...
Expresia desemnând adresa de e-mail:         .+@.+.(.){2,4}
.+                                        .+               simbolul @  sstart                    ssub                     ...
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 =~       /(@.*@)|(.....
test () match ()replace () split ()
var expr = new RegExp ("^[A-Z]?[a-z]+$");$(mesaj).className = expr.test (valoare)                ? corect : eroare;       ...
Am putea valida structura  documentelor XML?
<!-- arbore genealogic --><arbore>    <persoana id="busaco" gen="M">         <prenume>Sabin-Corneliu</prenume>         <ma...
Folosind gramatici (automate), putem valida documentele XML:DTD (Document Type Definition)           RELAX NG
<!-- DTD pentru validarea arborelui genealogic --><!DOCTYPE arbore [     <!ELEMENT   arbore     (persoana+)>     <!ELEMENT...
<!-- DTD pentru validarea arborelui genealogic --><!DOCTYPE arbore [     <!ELEMENT   arbore     (persoana+)>     <!ELEMENT...
Alte scenarii de utilizare    a automatelor?
Transportul datelor prin Internet
protocol          ț                                    ținterfata (API)        sistem de transmisie la nivel fizic:       ...
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...
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...
Rezultatul unei procesari   (efectuate de un serviciu Web)conduce la obtinerea unei reprezentari            a unei resurse...
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...
Resursa specificata de       http://vremea.la/galaciuc/          poate fi reprezentata de:un document HTML – accesat de un...
Clientii (navigatoare Web, player-e,…)   interactioneaza cu reprezentarile           resurselor via verbe           ―acces...
Orice accesare a unei reprezentariplaseaza aplicatia – ori clientul Web –intr-o stare ce va fi schimbata in urma          ...
GET       smesajsindex                                 POSTGET                                seditor          sflux      ...
http://blog.info/mesajhttp://blog.info/                                    GET                 smesaj          sindex     ...
Transferul se realizeaza prin protocolul HTTPReprezentarea e modelata in HTML, JSON , XML   (sau alt format) si indicata p...
// invocarea asincronă (Ajax) a unui serviciu Web via jQueryjQuery.ajax ({    type: "POST",      // execută o cerere POST ...
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 g...
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                 ...
În ce alte contexte am putea    recurge la automate?
Dr. Sabin Buragawww.purl.org/net/busaco
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)
De la validarea formularelor Web la porcii verzi (utilizarea automatelor in contextul Web-ului)
Upcoming SlideShare
Loading in...5
×

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

2,803

Published on

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.

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,803
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Dr. Sabin Buragawww.purl.org/net/busaco
  2. 2. validarea formularelor Web porcii verzi
  3. 3. Cum putem valida datele introduse de utilizator?
  4. 4. prenumele & numele vor include doar litereadresa de email are forma cont@subdomeniu.domeniu, unde domeniu e compus din 2—4 litere
  5. 5. $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...);
  6. 6. prenumele & numele vor include doar litere (inclusiv caracterele albe + cratima)primul caracter trebuie scris cu majuscula
  7. 7. Am putea folosi ―ceva‖mai flexibil & ―evoluat‖?
  8. 8. litera majuscula slitere sstart final de cuvânt ≠ litere≠ majusculesau ≠ litere scorect seroare
  9. 9. litera majuscula slitere sstart final de cuvânt ≠ litere≠ majusculesau ≠ litere scorect seroare automat (finit determinist)
  10. 10. litera majuscula slitere sstart final de cuvânt ≠ litere≠ majusculesau ≠ litere scorect seroare automat (finit determinist)
  11. 11. Automatele pot fi folositepentru verificarea corectitudinii din punct de vedere sintactic
  12. 12. Cum putem reprezentasimbolic un automat?
  13. 13. Sstart -> Majusc SlitereSstart -> DiferitDeMajusc SeroareSlitere -> Litera SlitereSlitere -> Final ScorectSlitere -> DiferitDeLitere SeroareScorect -> Seroare -> Majusc -> [A-Z]Litera -> [a-zA-Z]... gramatica
  14. 14. generalizând, avem:Neterminal -> Neterminal TerminalNeterminal -> meta-caractere (simboluri)Terminal -> caractere “reale” X -> Y specificând regula de productie gramatica
  15. 15. Specificarea la nivel de program a unor tipuri particulare degramatici se face via expresii regulate (regular expressions – regex)
  16. 16. Expresii regulate pattern-uri textualeconform unor reguli precise, li se pot ―potrivi‖ texte
  17. 17. Expresii regulatecaractere ―reale‖ vs. meta-caractere uzual, meta-caracterele substituie operatori ―speciali‖
  18. 18. . 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]
  19. 19. ? 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} ≡ ?
  20. 20. 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
  21. 21. Expresia desemnând adresa de e-mail: .+@.+.(.){2,4}
  22. 22. .+ .+ simbolul @ sstart ssub sdom simbolul . orice orice altceva (.){2,4} oricealtceva altceva seroare scorect
  23. 23. Expresia desemnând adresa de e-mail: .+@.+.(.){2,4}Hm… valori ca -@@.74 sunt considerate corecte!
  24. 24. 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
  25. 25. test () match ()replace () split ()
  26. 26. var expr = new RegExp ("^[A-Z]?[a-z]+$");$(mesaj).className = expr.test (valoare) ? corect : eroare; expresii regulate – limbajul JavaScript
  27. 27. Am putea valida structura documentelor XML?
  28. 28. <!-- 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>
  29. 29. Folosind gramatici (automate), putem valida documentele XML:DTD (Document Type Definition) RELAX NG
  30. 30. <!-- 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 >]>
  31. 31. <!-- 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
  32. 32. Alte scenarii de utilizare a automatelor?
  33. 33. Transportul datelor prin Internet
  34. 34. protocol ț ținterfata (API) sistem de transmisie la nivel fizic: fir, wireless,...
  35. 35. Stabilirea & eliberarea conexiunii sunt guvernate de un automat
  36. 36. automatul TCP (Transmission Control Protocol)
  37. 37. automatul TCP (Transmission Control Protocol)
  38. 38. (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
  39. 39. Software bazat pe servicii Web
  40. 40. Software bazat pe servicii Web paradigma REST(REpresentational State Transfer)
  41. 41. Servicii Websoftware oferind o functionalitate anume
  42. 42. Servicii Webtraduceri, curs valutar, meteo, cartografiere, statistici, stocare,…
  43. 43. Servicii Webutilizate de alte aplicatii/servicii
  44. 44. recurgerea la servicii multiple – mash-up
  45. 45. Rezultatul unei procesari (efectuate de un serviciu Web)conduce la obtinerea unei reprezentari a unei resurse
  46. 46. Rezultatul unei procesari (efectuate de un serviciu Web)conduce la obtinerea unei reprezentari a unei resurse resursa = blog, fotografie, flux de stiri, program etc.
  47. 47. Rezultatul unei procesari (efectuate de un serviciu Web)conduce la obtinerea unei reprezentari a unei resurse reprezentare = HTML, JPEG, PNG, RSS, SVG,…
  48. 48. Reprezentarea e specificata via tipuri MIMEtext/html, image/png, application/xhtml+xml
  49. 49. Reprezentarile aceleasi resurse– desemnate de un URI unic – pot fi multiple
  50. 50. 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
  51. 51. 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
  52. 52. Clientii (navigatoare Web, player-e,…) interactioneaza cu reprezentarile resurselor via verbe ―acceseaza‖ – GET ―modifica‖ – POST ―sterge‖ – DELETE …
  53. 53. 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)
  54. 54. GET smesajsindex POSTGET seditor sflux Web-ul ca un automat
  55. 55. 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)
  56. 56. Transferul se realizeaza prin protocolul HTTPReprezentarea e modelata in HTML, JSON , XML (sau alt format) si indicata prin MIME Adresabilitatea se rezolva via URI
  57. 57. // 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); }});
  58. 58. acces (a)sincron la rezultatele oferite de un serviciu Web via API
  59. 59. Bun… Dar porcii verzi?
  60. 60. Am putea modela (pe baza unui automat)comportamentul personajelor dintr-un joc electronic?
  61. 61. Deciziile din cadrul joculuipot fi luate folosind un automat
  62. 62. Orice joc interactioneazacu minim 1 jucator uman
  63. 63. Orice joc include ―jetoane‖ discrete – numite token-uri –manipulate (in)direct de jucator(i)
  64. 64. Orice joc include ―jetoane‖ discrete – numite token-uri –manipulate (in)direct de jucator(i)aceste token-uri sunt gestionate intern de software
  65. 65. La nivel conceptual, un joc e descris de jucatori + token-uri
  66. 66. Token-urile pot interactionacu alte token-uri ori cu jucatorul
  67. 67. Comportamentul token-urilorpoate fi descris de un automat
  68. 68. automat asociat NPC-ului ―ghost‖
  69. 69. sfericit ≠lovituri coliziuni slovit lovituri lovituri sbolnav letale sviu smortautomat descriind comportamentul porcilor verzi
  70. 70. În ce alte contexte am putea recurge la automate?
  71. 71. Dr. Sabin Buragawww.purl.org/net/busaco
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×