Sunteți pe pagina 1din 46

TEHNOLOGII WEB ÎN REALIZAREA

SITE-ULUI PET SHOP

1
CUPRINS

2
INTRODUCERE

3
CAPITOLUL I

AVANTAJE ECONOMICE

Comerțul electronic joacă un rol esențial în avansarea tehnologiei informației, precum și


în comunicare. Acest lucru este valabil mai ales în domeniul economiei. În epoca globalizării
economiei, multe piețe au devenit progresiv internaționale și competitive. Chiar dacă pandemia
de Covid-19 conduce în continuare industriile din zonele puternic afectate să investească în
producția locală, deoarece comerțul global a fost blocat, comerțul electronic poate ajuta
economia la scară locală.

În plus, îmbunătățirile pe internet, împreună cu progresele în tehnologia informației și


progresul în logistică și livrări au permis aproape oricărei companii să cumpere, să vândă și să
facă legătura la scară globală. Acest lucru a dus la un interes neașteptat pentru comerțul
electronic în cadrul societăților. Cu toate acestea, deși comerțul electronic a dominat piața,
serviciile și comerțul online, aduc diverse beneficii, precum și dezavantaje majore.

Înțelegerea beneficiilor și a dezavantajelor este esențială, deoarece un beneficiu pentru


client s-ar putea traduce într-un dezavantaj pentru organizația de afaceri. Companiile prospere
sunt foarte conștiente de avantajele și dezavantajele înainte de a se aventura în orice decizie de
afaceri. Tehnologia evoluează enorm, astfel încât este posibil să asistăm la prevenirea defectelor
tehnologice în special în viitorul apropiat.

După cum citează Big Commerce, „comerțul electronic crește cu 23% de la un an la altul
și, potrivit specialistului de marketing, vânzările globale de comerț electronic sunt de așteptat să
depășească 29 de trilioane de dolari în 2022 – și acestea sunt doar statistici pentru sectorul de
retail”. Comerțul electronic a devenit o dinamică fundamentală a economiei de-a lungul anilor.
Capacitatea sa de a permite companiilor să se extindă la o gamă mai largă de consumatori,
precum și capacitatea sa de a permite clienților să facă cumpărături în mod convenabil, au
contribuit la creșterea și semnificația sa.

Caracterul practic al comerțului electronic l-a determinat să devină piața de retail cu cea
mai rapidă creștere. Pandemia Covid-19 a contribuit și mai mult la dezvoltarea comerțului

4
electronic. Pe măsură ce tot mai mulți oameni renunță la socializare și recurg la distanțare
socială, izolare, carantină sau evitarea locurilor publice sau a zonelor aglomerate, clienții au
apelat la o platformă convenabilă pentru a face achiziții, piața online. Astfel, numărul total de
clienți, care revin și cei care se încep pentru prima dată a prevalat.1

Deoarece pandemia Covid-19 este de așteptat să persistă în viitor, se așteaptă


proporțional ca piața comerțului electronic să fie martoră la îmbunătățiri suplimentare. Un studiu
a constatat că, odată cu situația actuală, consumatorii sunt mai predispuși să caute siguranță și
comoditate. Pe baza studiului, este posibil ca aceste trăsături și obiceiuri să se împingă în
perioada post-pandemie, iar studiul a estimat că comerțul electronic ar putea ajunge la 300 până
la 350 de milioane de cumpărători până în anul financiar 2025. În plus, un sondaj realizat de
UNCTAD, s-a constatat că pandemia a dus la o creștere a vânzărilor site-urilor de comerț
electronic. 2

Acțiunile investite în comerțul tradițional au devenit în general un pericol și sunt martorii


unui declin concomitent cu răspândirea COVID-19, iar acesta va fi un motiv puternic pentru
dorința fiecărui comerciant de pe aceste piețe tradiționale de a se îndrepta către comerțul prin
internet pentru a-și păstra restul acțiunilor și pentru a-și menține domeniul comercial și succesul
pe piață. Prin urmare, înțelegerea dinamicii, inclusiv a avantajelor și dezavantajelor, comerțului
electronic este elementară.

Beneficiile comerțului electronic pentru clienți.

Magazinele de comerț electronic sunt disponibile în orice moment. Clienții pot face
cumpărături la orice oră din orice zi din timpul anului. În acest caz, clienții, în special cei care de
obicei nu au timp la dispoziție pentru a face cumpărături convenționale, pot face orice achiziție
oricând prin vizitarea site-ului. Astfel de site-uri web facilitează cumpărăturile datorită
1
Bunnell, David (16 May 2001). "The eBay Business Model". The ebay Phenomenon: Business Secrets Behind the
World's Hottest Internet Company. John Wiley & Sons. pp. 71–81. ISBN 9780471436799.
2
Mcnair, Corey (29 January 2021). "Worldwide Retail and Ecommerce Sales: eMarketer's Updated Forecast and
New Mcommerce Estimates for 2022—2025". eMarketer. Insider Intelligence Inc.

5
designului lor convenabil. De exemplu, produsele sunt clasificate în categorii care ajută clienții
să aibă comenzi rapide. Mai mult, acest tip de cumpărături este perfect pentru persoanele care
lucrează ore lungi și nu își găsesc timp pentru a merge la magazinele cu amănuntul. Un bun
exemplu de astfel de site-uri web sunt AmazonFresh, Target și Walmart.

Fiind o modalitate foarte convenabilă de a face cumpărături, comerțul electronic a


devenit cel mai simplu și popular mod de a face cumpărături. Produsele pot fi comandate oriunde
pe planetă cu o simplă atingere pe dispozitivul mobil conectat la internet. Cu o modalitate atât de
simplă, consumatorii aleg fără efort mărfuri din diverse surse, fără constrângeri fizice.

Timpul înseamnă bani! Având avantajul de a fi rapid, comerțul electronic a facilitat


procedurile de cumpărare/vânzare. Un avantaj cheie al magazinelor cibernetice este economia de
timp. Cu alte cuvinte, în timp ce cumpără online, clienții nu ar avea nevoie de mai mult de 15
minute pentru a-și efectua achiziția. În plus, furnizorii sunt atât de atenți încât să livreze
produsele la ușile clienților în decurs de o săptămână.

Cu platformele de comerț electronic, consumatorilor li se oferă mai multe oportunități de


a vedea diferite puncte de preț și caracteristici și astfel alege opțiuni mai puțin costisitoare și
superioare.3 Compararea alegerilor într-un sistem de marketing convențional sau fizic poate fi
foarte dificilă, deoarece vizitarea tuturor magazinelor și solicitarea prețurilor poate fi obositoare
pentru clienți. Problema întrebării despre prețuri poate fi puțin jenantă pentru unii clienți, iar alții
nici măcar nu îndrăznesc să întrebe despre prețul unui anumit articol. Cu toate acestea, cu
cumpărăturile online, totul este un instrument la îndemână și clar în fața utilizatorilor.

Comerțul electronic oferă un istoric al achizițiilor clienților, disponibil oricând este


necesar, cu o cantitate imensă de date. Un client nu vede doar informațiile detaliate relevante în
câteva secunde, dar este și capabil să-și revizuiască achizițiile anterioare. Prin urmare, le permite
clienților să caute informații despre marfă, să compare costurile și beneficiile și eventual să
evalueze valoarea acesteia înainte de a efectua achiziția. Acest lucru este foarte greu de văzut
într-un magazin convențional, deoarece o cantitate atât de mare de date este dificil și uneori
imposibil de afișat clienților.

3
DeLone, William H.; McLean, Ephraim R. (8 December 2014). "Measuring e-Commerce Success: Applying the
DeLone& McLean Information Systems Success Model". International Journal of Electronic Commerce. 9 (1): 31–
47.

6
Comerțul electronic are o gamă largă de mărfuri și facilități, consumatorii pot vedea o
gamă variată de produse și servicii pentru a alege cele mai bune dintre ele, spre deosebire de
sistemul tradițional de marketing, se poate vedea doar un stoc limitat. Într-un magazin
convențional obișnuit, clienții s-ar putea pierde în timp ce se plimbă de la culoar la altul căutând
mărfuri. Cu toate acestea, cu serviciile de comerț electronic, clienții pot căuta în categoriile de
mărfuri sau pot profita de instrumentul de căutare al paginii web și pot găsi în cel mai scurt timp
produsul dorit.

Beneficii pentru companii

Magazinele convenționale impun furnizorilor limitări care sunt întotdeauna costisitoare și


inaccesibile. De exemplu, dacă clienții trebuie să obțină un anumit articol din București și
locuiesc în Brașov, vor trebui săconducă o distanță mare și vor irosi mulți bani pentru a obține
ceea ce au nevoie. În mod similar, dacă comercianții vor să-și expună produsele în alt oraș, vor
trebui să deschidă noi filiale și să plătească bani în plus și să depună eforturi suplimentare. Cu
comerțul electronic, acest tip de limitări nu au loc de găsit. Folosind comerțul electronic,
companiile își pot mări piața la piețele din întreaga țară și din întreaga lume, cu investiții mai
mici. Cu alte cuvinte, o companie poate găsi fără efort clienți suplimentare, dealeri de top și
asociați corporativi corespunzători în întreaga lume.4

Afacerile de E-Commerce au costuri operaționale semnificativ mai mici și o calitate mai


bună a serviciilor, în comparație cu magazinele actuale. Nu există personal de angajat și de
recompensat, nici chirie și are o cheltuială fixă de funcționare redusă.Comerțul electronic
beneficiază de administrarea aprovizionării de tip „pull”. În acest tip de management, o
procedură de afaceri începe în momentul în care o cerere provine de la un client și utilizează o
metodă de „producție just in time”. Acest lucru face ca compania să efectueze tranzacții de
afaceri mai rapid și la costuri operaționale mai mici, sporind eficiența companiei.

4
Bakos, Yannis (2001). "The Emerging Landscape for Retail E-Commerce". Journal of Economic Perspectives. 15
(1): 69–80

7
A viza oamenii potriviți este un factor cheie în promovarea serviciilor de comerț
electronic. Furnizorii online colectează o marecantitatea de date ale consumatorilor pentru a se
asigura că vizează publicul potrivit pentru produsele lor. De exemplu, dacă promovează un
produs orientat spre bărbați, ei sunt capabili să vizeze un sex și să obțină mai multe angajamente
și, ca rezultate, să obțină mai multe achiziții. Același lucru este și în cazul promovării altor
servicii personalizate pentru diferite grupe de vârstă.

Locația este o problemă de care proprietarul unei afaceri de comerț electronic nu își face
niciodată griji în conducerea unei afaceri. Tot ce este necesar sunt dispozitive electronice, cum ar
fi laptopuri sau telefoane mobile și conexiune la internet. Prin urmare, comerțul electronic
simplifică procesele de afaceri cu mai multă viteză și eficiență.

8
CAPITOLUL II

LIMBAJUL HTML5 ȘI REGULILE CSS3

2.1. Limbajul HTML5

HTML5 este un limbaj de marcare folosit pentru structurarea și prezentarea conținutului


pe World Wide Web. Este a cincea și ultima 5 versiune HTML majoră care este o recomandare a
World Wide Web Consortium (W3C). Specificația actuală este cunoscută ca standard de viață
HTML. Este întreținut de Web HypertextApplication Technology Working Group (WHATWG),
un consorțiu format din principalii furnizori de browsere (Apple, Google, Mozilla și Microsoft).

HTML5 a fost lansat pentru prima dată într-o formă publică pe 22 ianuarie 2008, cu o
actualizare majoră și starea „Recomandare W3C” în octombrie 2014. Obiectivele sale au fost să
îmbunătățească limbajul cu suport pentru cele mai recente caracteristici multimedia și alte funcții
noi; pentru a menține limbajul atât ușor de citit de către oameni, cât și în mod consecvent înțeles
de computere și dispozitive, cum ar fi browsere web, parsere etc., fără rigiditatea XHTML; și să
rămână compatibil cu programele mai vechi. HTML5 este destinat să includă nu numai HTML 4,
ci și XHTML 1 și DOM Level 2 HTML.

HTML5 include modele detaliate de procesare pentru a încuraja implementări mai


interoperabile; extinde, îmbunătățește și raționalizează markupul disponibil pentru documente și
introduce interfețe de marcare și de programare a aplicațiilor (API) pentru aplicații web
complexe. Din aceleași motive, HTML5 este, de asemenea, un candidat pentru aplicațiile mobile
multiplatformă, deoarece include funcții concepute pentru dispozitivele cu putere redusă.

Sunt incluse multe caracteristici sintactice noi. Pentru a include și gestiona în mod nativ

conținut multimedia și grafic, noi   <video> ,  <audio>  and  <canvas>  elemente au fostadăugate,

5
Cimpanu, Catalin (29 May 2019). "Browser vendors Win War with W3C over HTML and DOM standards".
ZDNet.

9
secțiunileextensibile sunt

implementatenativprin <summary>...</summary>  and  <details>...</details>  maidegrabădecâtsă


depindă de CSS sau JavaScript, și a fostadăugat, de asemenea, suportpentruconținutul de
graficăvectorialăscalabilă (SVG) și MathML pentruformulelematematice. Pentru a
îmbogățiconținutul semantic al documentelor, noielemente de structură a paginii, cum ar

fi  <main> ,  <section> ,  <article> ,  <header> ,  <footer> ,  <aside> ,  <nav> , and  <figure>  au
fostadăugate.Au fostintrodusenoiatribute, uneleelementeșiatribute au fost eliminate, iaraltele
precum <a>, <cite>și<meniu> au fostmodificate, redefinitesaustandardizate. API-urile și
Document Object Model (DOM) sunt acumpărțifundamentale ale specificației HTML5, 6și
HTML5 definește, de asemenea, mai bine procesareaoricărordocumenteinvalide.

Web HypertextApplication Technology Working Group (WHATWG) a început să


lucreze la noul standard în 2004. La acel moment, HTML 4.01 nu fusese actualizat din 2000, iar
World Wide Web Consortium (W3C) se concentra asupra dezvoltărilor viitoare pe XHTML 2.0.
În 2009, W3C a permis expirarea statutului grupului de lucru XHTML 2.0 și a decis să nu o
reînnoiască.

Fundația Mozilla și Opera Software au prezentat o lucrare de poziție la un workshop


World Wide Web Consortium (W3C) în iunie 2004, concentrându-se pe dezvoltarea de
tehnologii care sunt compatibile cu browserele existente, inclusiv un proiect inițial de
specificație pentru web Formulare 2.0. Atelierul s-a încheiat cu un vot – 8 pentru, 14 împotrivă –
pentru continuarea lucrărilor pe HTML. Imediat după atelier, WHATWG a fost înființat pentru a
începe lucrul pe baza acelui document de poziție și a fost anunțată, de asemenea, un al doilea
proiect, Web Applications 1.0. Cele două specificații au fost ulterior fuzionate pentru a forma
HTML5. Specificația HTML5 a fost adoptată ca punct de plecare al lucrării noului grup de lucru
HTML al W3C în 2007.

În timp ce unele caracteristici ale HTML5 sunt adesea comparate cu Adobe Flash, cele
două tehnologii sunt foarte diferite. Ambele includ funcții pentru redarea audio și video în
paginile web și pentru utilizarea graficelor vectoriale scalabile. Cu toate acestea, HTML5 în sine

6
Tkacz, Ewaryst; Kapczynski, Adrian (2009). Internet – Technical Development and Applications. Springer
Science+Business Media. p. 255. ISBN 9783642050190.

10
nu poate fi folosit pentru animație sau interactivitate – trebuie completat cu CSS3 sau JavaScript.
Există multe capabilități Flash care nu au o contraparte directă în HTML5.

Capacitățile interactive ale HTML5 au devenit un subiect de atenție mass-media în jurul


lunii aprilie 2010după ce CEO-ul de atunci al Apple Inc., Steve Jobs, a emis o scrisoare publică
intitulată „Gânduri despre Flash”, în care a concluzionat că „Flash-ul nu mai este necesar pentru
a viziona videoclipuri sau a consuma orice fel de conținut web” și că „noile standarde deschise
create în era mobilă, precum HTML5, vor câștiga”.

Acest lucru a stârnit o dezbatere în cercurile de dezvoltare web, sugerând că, în timp ce
HTML5 oferă funcționalități îmbunătățite, dezvoltatorii trebuie să ia în considerare suportul
variat al browserului din diferitele părți ale standardului, precum și alte diferențe de
funcționalitate dintre HTML5 și Flash.La începutul lunii noiembrie 2011, Adobe a anunțat că va
întrerupe dezvoltarea Flash pentru dispozitive mobile și va reorienta eforturile de dezvoltare a
instrumentelor care utilizează HTML5.7La 25 iulie 2017, Adobe a anunțat că atât distribuția, cât
și suportul Flash vor înceta până la sfârșitul anului 2020. Adobe însuși a întrerupt oficial Flash pe
31 decembrie 2020 și tot conținutul Flash a fost blocat să ruleze în Flash Player începând cu 12
ianuarie 2021.

Conflict W3C și WHATWG

W3C a cedat autoritatea asupra standardelor HTML și DOM către WHATWG pe 28 mai
2019, deoarece a considerat că a avea două standarde este dăunătoare. Standardul de viață
HTML este acum autorizat. Cu toate acestea, W3C va participa în continuare la procesul de
dezvoltare a HTML.

Înainte de cedarea autorității, W3C și WHATWG au fost caracterizate ca ambele lucrând


împreună la dezvoltarea HTML5,[10] și totuși și în scopuri diferite încă de la separarea din iulie
2012. Standardul W3C „HTML5” a fost bazat pe instantanee (HTML5, HTML5.1 etc.) și static,

7
Terzi, Nuray (2011). "The impact of e-commerce on international trade and employment". Procedia - Social and
Behavioral Sciences. 24: 745–753.

11
în timp ce „standardul de viață HTML” WHATWG este actualizat continuu. Relația fusese
descrisă ca fiind „fragilă”, chiar o „ruptură” și caracterizată prin „ceartă”.

În cel puțin un caz, și anume conținutul permis al elementului <cite>, cele două
specificații s-au contrazis direct reciproc (din iulie 2018), definiția W3C permițând o gamă mai
largă de utilizări decât definiția WHATWG.Secțiunea „Introducere” din specificația WHATWG
(editată de Ian „Hixie” Hickson) critică W3C, de ex. „Notă: deși le-am cerut să nu mai facă acest
lucru, W3C republică și unele părți ale acestei specificații ca documente separate.” În
subsecțiunea „Istoric”, acesta prezintă W3C ca fiind rezistent la planurile HTML 5 originale ale
lui Hickson și WHATWG, apoi urcându-se cu întârziere (deși Hickson controla și specificațiile
W3C HTML 5). Indiferent, indică o divizare filozofică majoră între organizații.

Timp de câțiva ani, ambele grupuri au lucrat apoi împreună. În 2011, totuși, grupurile au
ajuns la concluzia că au obiective diferite: W3C dorea să publice o versiune „terminată” a
„HTML5”, în timp ce WHATWG dorea să continue să lucreze la un Standard de viață pentru
HTML, menținând continuu specificația. mai degrabă decât să-l înghețe într-o stare cu probleme
cunoscute și să adauge noi funcții după cum este necesar pentru a evolua platforma.

De atunci, WHATWG a lucrat la această specificație (printre altele), iar W3C a copiat
corecțiile făcute de WHATWG în documentul lor (care are și alte modificări).Cele două entități
au semnat un acord pentru a lucra împreună la o singură versiune de HTML la 28 mai 2019.W3C
a propus o încredere mai mare pe modularitate ca parte cheie a planului pentru a face progrese
mai rapide, adică identificarea caracteristicilor specifice, fie propuse, fie deja existente în
specificații, și avansarea lor ca specificații separate. Unele tehnologii care au fost definite inițial
în HTML 5 sunt acum definite în specificații separate.

Grup de lucru pentru aplicații web – Mesaje web, lucrători web, stocare web, WebSocket,
evenimente trimise de server, componente web(aceasta nu făcea totuși parte din HTML 5);
Grupul de lucru pentru aplicații web a fost închis în octombrie 2015, iar rezultatele sale au fost
transferate Grupului de lucru pentru platforme web (WPWG).

12
Unele funcții care au fost eliminate din specificația originală HTML 5 au fost
standardizate separat ca module, cum ar fi Microdata și Canvas. Specificațiile tehnice introduse
ca extensii HTML 5, cum ar fi marcajul Polyglot, au fost, de asemenea, standardizate ca module.
Unele specificații W3C care erau inițial specificații separate au fost adaptate ca extensii sau
funcții HTML 5, cum ar fi SVG. Unele caracteristici care ar fi putut încetini standardizarea
HTML 5 au fost sau vor fi standardizate ca specificații viitoare.

Caracteristici

Markup

HTML 5 introduce elemente și atribute care reflectă utilizarea tipică pe site-urile web
moderne. Unele dintre ele sunt înlocuiri semantice pentru utilizările obișnuite ale elementelor
bloc generice (<div>) și inline (<span>), de exemplu <nav> (bloc de navigare pe site-ul web),
<footer> (de obicei referindu-se la partea de jos a paginii web sau la ultimele rânduri de cod
HTML) sau <audio> și <video> în loc de <obiect>. 8 Unele elemente depreciate din HTML 4.01
au fost renunțate, inclusiv elemente pur de prezentare, cum ar fi <font> și <center>, ale căror
efecte au fost de mult înlocuite de foile de stil în cascadă mai capabile. Există, de asemenea, un
accent reînnoit pe importanța JavaScript-ului la nivelul clientului utilizat pentru a crea pagini
web dinamice.

Sintaxa HTML 5 nu se mai bazează pe SGML, în ciuda asemănării markupului său. Cu


toate acestea, a fost proiectat pentru a fi compatibil cu versiunea anterioară cu analiza obișnuită a
versiunilor mai vechi de HTML. Vine cu o nouă linie introductivă care arată ca o declarație de
tip de document SGML, <!DOCTYPE html>, care declanșează modul de randare conform
standardelor. Din 5 ianuarie 2009, HTML 5 include și Web Forms 2.0, o specificație WHATWG
separată anterior.

8
ICAMD.org Finalcut Silverlight Films that Videographers share Quicktime in a Flash: Video on the Web using
HTML5 and other Codecs

13
API-uri legate de HTML5

Pe lângă specificarea markupului, HTML 5 specifică interfețe de programare a


aplicațiilor (API) care pot fi utilizate cu JavaScript. Interfețele existente Model Object Document
(DOM) sunt extinse și caracteristicile de facto documentate. Există, de asemenea, noi API-uri,
cum ar fi:

Redare media temporizată;

Offline;

Conținut editabil;[106]

Trageți și plasați;

Istorie;

Înregistrarea tipului MIME și a operatorului de protocol;

Microdate;

Mesaje web;

Stocare web – un cadru de stocare pereche cheie-valoare care oferă un comportament similar cu
cookie-urile, dar cu o capacitate de stocare mai mare și un API îmbunătățit.

Nu toate tehnologiile de mai sus sunt incluse în specificația W3C HTML 5, deși sunt în
specificația HTML WHATWG. Unele tehnologii conexe, care nu fac parte nici din specificația
W3C HTML 5, nici din specificația WHATWG HTML, sunt următoarele. W3C publică
specificații pentru acestea separat:

Geolocalizare;

IndexedDB – un magazin ierarhic cheie-valoare indexat (fost WebSimpleDB);

Fișier – un API destinat să gestioneze încărcările și manipularea fișierelor;


14
Directoare și sistem – un API menit să satisfacă cazurile de utilizare ale stocării pe partea
clientului care nu sunt bine deservite de bazele de date;

File Writer – un API pentru scrierea în fișiere din aplicații web;

Web Audio – un API JavaScript de nivel înalt pentru procesarea și sintetizarea audio în aplicații
web;

ClassList.

API de criptare web

WebRTC

Web SQL Database – o bază de date SQL locală (nu mai este întreținută);9

HTML 5 nu poate oferi animație în paginile web. JavaScript sau CSS3 suplimentare sunt
necesare pentru animarea elementelor HTML. Animația este, de asemenea, posibilă folosind
JavaScript și HTML 4 și în cadrul elementelor SVG prin SMIL, deși suportul browser-ului
pentru acesta din urmă rămâne neuniform din 2011.

XHTML 5 (HTML 5 serializat în XML)

Documentele XML trebuie să fie difuzate cu un tip media de Internet XML (numit adesea
„tip MIME”), cum ar fi application/xhtml+xml sau application/xml, și trebuie să respecte sintaxa
strictă și bine formată a XML. XHTML 5 este pur și simplu date HTML 5 serializate în XML
(adică HTML 5 limitat la X). Cerințele stricte ale HTML, de exemplu, fără etichete neînchise),
trimise cu unul dintre tipurile media XML. HTML care a fost scris pentru a se conforma atât cu
specificațiile HTML, cât și cu XHTML și, prin urmare, produce același arbore DOM, indiferent
dacă este analizat ca HTML sau XML, este cunoscut sub numele de markuppoliglot.Nu există
DTD pentru XHTML5.

9
Web SQL Database". World Wide Web Consortium.

15
Eroare de manipulare

HTML 5 este conceput astfel încât browserele vechi să poată ignora în siguranță noile
constructe HTML 5.Spre deosebire de HTML 4.01, specificația HTML 5 oferă reguli detaliate
pentru lexare și parsare, cu intenția ca browserele compatibile să producă aceleași rezultate
atunci când parsează sintaxa incorectă. Deși HTML 5 definește acum un comportament
consistent pentru documentele „sup de etichete”, acele documente nu sunt conforme cu
standardul HTML 5.10

2.2. Reguli CSS3

CascadingStyleSheets (CSS) este un limbaj pentru foi de stil folosit pentru a descrie
prezentarea unui document scris într-un limbaj de marcare precum HTML. CSS este o tehnologie
de bază a World Wide Web, alături de HTML și JavaScript.CSS este conceput pentru a permite
separarea prezentării și a conținutului, inclusiv aspectul, culorile și fonturile. Această separare
poate îmbunătăți accesibilitatea conținutului; oferă mai multă flexibilitate și control în
specificarea caracteristicilor de prezentare; permiteți mai multe pagini web să partajeze
formatarea prin specificarea CSS-ului relevant într-un fișier .css separat, ceea ce reduce
complexitatea și repetarea conținutului structural; și permiteți ca fișierul .css să fie stocat în
cache pentru a îmbunătăți viteza de încărcare a paginii între paginile care partajează fișierul și
formatarea acestuia.

Separarea formatării și a conținutului face, de asemenea, posibilă prezentarea aceleiași


pagini de marcare în stiluri diferite pentru diferite metode de randare, cum ar fi pe ecran, în

10
Percentage of Web sites Using HTML5". binvisions. 30 September 2011.

16
tipărire, prin voce (prin browser sau cititor de ecran bazat pe vorbire) și pe baza Braille.
dispozitive tactile. CSS are și reguli pentru formatare alternativă dacă conținutul este accesat pe
un dispozitiv mobil.11

Numele în cascadă provine din schema de prioritate specificată pentru a determina ce


regulă de stil se aplică dacă mai multe reguli se potrivesc cu un anumit element. Această schemă
de prioritate în cascadă este previzibilă.Specificațiile CSS sunt menținute de World Wide Web
Consortium (W3C). Tipul Internet media (tip MIME) text/css este înregistrat pentru utilizare cu
CSS prin RFC 2318 (martie 1998). W3C operează un serviciu gratuit de validare CSS pentru
documente CSS.Pe lângă HTML, alte limbaje de marcare acceptă utilizarea CSS, inclusiv
XHTML, XML simplu, SVG și XUL.

Sintaxă

CSS are o sintaxă simplă și folosește un număr de cuvinte cheie în limba engleză pentru a
specifica numele diferitelor proprietăți de stil.O foaie de stil constă dintr-o listă de reguli. Fiecare
regulă sau set de reguli constă dintr-unul sau mai mulți selectori și un bloc de declarare.

Selector

În CSS, selectorii declară căreia parte a markupului se aplică un stil prin potrivirea
etichetelor și a atributelor din marcajul în sine.Selectorii se pot aplica la următoarele:

- toate elementele de un anumit tip, de ex. anteturile de al doilea nivel h2


- elemente specificate prin atribut, în special:
- id: un identificator unic în document, identificat cu un prefix hash de ex. #id

11
Web-based Mobile Apps of the Future Using HTML 5, CSS and JavaScript". HTMLGoodies. 23 July 2010

17
- clasă: un identificator care poate adnota mai multe elemente dintr-un document,
identificat cu un prefix punct de ex. .numele clasei
- elemente în funcție de modul în care sunt plasate în raport cu altele în arborele
documentului.

Clasele și ID-urile fac distincție între majuscule și minuscule, încep cu litere și pot
include caractere alfanumerice, cratime și caractere de subliniere. O clasă se poate aplica oricărui
număr de instanțe ale oricărui element. Un ID poate fi aplicat doar unui singur element.

Pseudo-clasele sunt folosite în selectoarele CSS pentru a permite formatarea bazată pe


informații care nu sunt conținute în arborele documentului. Un exemplu de pseudo-clasă utilizată
pe scară largă este :hover , care identificăconținutuldoaratuncicândutilizatorul „indică” elementulvizibil,
de obiceiținândcursorul mouse-uluipesteacesta. Este atașat la un selector ca

în a:hover  sau  #elementid:hover .O pseudo-clasăclasificăelementeledocumentului, cum

arfi :link  sau  :visited ,întimpce un pseudo-element face o selecție care poateconsta din elementeparțiale,

cum ar fi  ::first-line  sau  ::first-letter .[6]

Selectoarele pot fi combinate înmaimultemoduripentruaobține o mare


specificitateșiflexibilitate. Selectoriimultipli pot fi unițiîntr-o listădistanțatăpentru a
specificaelementeledupălocație, tip de element, id, clasăsauoricecombinație a acestora.

Ordineaselectoareloresteimportantă. De exemplu,  div .myClass {color: red;}  se


aplicătuturorelementelorclaseimyClass care sunt îninteriorulelementelor div,

întimpce .myClass div {color: red;}  se aplicătuturorelementelor div care se


aflăîninteriorulelementelorclaseimyClass. Acestlucru nu trebuieconfundat cu

identificatoriiconcatenați, cum ar fi  div.myClass {color: red;}  care se aplicăelementelor div din


clasamyClass.

Următorultabeloferă un rezumat al sintaxeiselectorului care indicăutilizareașiversiunea


CSS care aintrodus-o.

Bloc de declarație

18
Un bloc de declarațiiconstădintr-o listă de declarațiiîntreacolade. Fiecaredeclarațieîn sine
constădintr-o proprietate, douăpuncte (:) și o valoare. Dacăîntr-un bloc existămaimultedeclarații,
trebuieintrodus un punctșivirgulă (;) pentru a separafiecaredeclarație. Se poatefolosi un
punctșivirgulăopționaldupă ultima (sausingură) declarație.12

Proprietățile sunt specificateînstandardul CSS. Fiecareproprietate are un set de


valoriposibile. Uneleproprietăți pot afectaorice tip de element, iaraltele se
aplicănumaiunoranumitegrupuri de elemente.

Valorile pot fi cuvintecheie, cum ar fi „center” sau „moștenire”, sauvalorinumerice, cum


ar fi 200px (200 pixeli), 50vw (50% din lățimeaferestrei de vizualizare) sau 80% (80% din
lățimeaelementuluipărinte). Valorile de culoare pot fi specificate cu cuvintecheie (de exemplu,
„roșu”), valorihexazecimale (de exemplu, #FF0000, abreviatși ca #F00), valori RGB pe o scară
de la 0 la 255 (de exemplu, rgb(255, 0, 0)), valori RGBA care specificăatâtculoarea,
câtșitransparența alfa (de ex. rgba(255, 0, 0, 0,8)) sauvalori HSL sau HSLA (de ex. hsl(000,
100%, 50%), hsla(000, 100%, 50%, 80 %)).

Unități de lungime

Valorilenumericediferite de zero care reprezintămăsuriliniaretrebuiesăincludă o unitate de


lungime, care este fie un cod alfabetic, fie o abreviere, ca în 200px sau 50vw; sau un
semnprocentual, ca în 80%. Uneleunități – cm (centimetru); în (inch); mm (milimetru); pc (pica);
șipt (punct) – sunt absolute, ceeaceînseamnăcădimensiunearedată nu depinde de structurapaginii;
altele – em (em); ex (ex) și px (pixel) – sunt relative, ceeaceînseamnăcăfactori precum
dimensiuneafontuluiunui element părinte pot afectamăsurarearedată.

Aceste opt unități au fost o caracteristică a CSS 1 și au


fostpăstrateîntoaterevizuirileulterioare. Modulul de valorișiunități CSS propus de nivelul 3,
dacăesteadoptat ca recomandare W3C, vafurnizașapteunități de lungimesuplimentare: ch; Q;
rem; vh; vmax; vmin; șivw.

12
W3C CSS2.1 specification for rule sets, declaration blocks, and selectors". World Wide Web Consortium. 7 June
2011

19
Utilizare

Înainte de CSS, aproapetoateatributele de prezentare ale documentelor HTML


erauconținuteînmarcajul HTML. Toateculorilefonturilor, stilurile de fundal, aliniereaelementelor,
chenareleșidimensiuniletrebuiaudescriseîn mod explicit, adeseaîn mod repetat, în HTML. CSS le
permiteautorilorsă mute o mare parte din acesteinformațiiîntr-un alt fișier, foaia de stil,
rezultândun HTMLconsiderabilmaisimplu.

De exemplu, titlurile (elementele h1), subtitlurile (h2), sub-subtitturile (h3), etc., sunt
definite structural folosind HTML. Înimprimareși pe ecran, alegereafontului, mărimea,
culoareașiaccentulpentruacesteelementeeste de prezentare.Înainte de CSS, autorii de documente
care doreausăatribuieastfel de caracteristicitipografice, de exemplu, tuturortitlurilor h2
trebuiausărepetemarcajul de prezentare HTML pentrufiecareaparițieaacelui tip de titlu.
Acestlucru a făcutdocumentelemaicomplexe, maimarișimaipredispuse la erorișimaidificil de
întreținut. CSS permiteseparareaprezentării de structură.

CSS poatedefiniculoarea, fontul, aliniereatextului, dimensiunea, marginile, spațierea,


aspectulșimultealtecaracteristicitipograficeșipoate face acestlucru independent
pentruvizualizările pe ecranșiimprimate. CSS definește, de asemenea, stiluri non-vizuale, cum ar
fi viteza de citireșiaccentulpentrucititorii de text auditiv. W3C a renunțatacum la
utilizareatuturormarkupurilor HTML de prezentare.13

Surse

Informațiile CSS pot fi furnizate din diverse surse. Acestesurse pot fi browserul web,
utilizatorulșiautorul. Informațiile de la autor pot fi clasificateîncontinuareîn inline, tip media,
importanță, specificitateaselectorului, ordinearegulilor, moștenireașidefinițiaproprietății.
Informațiile de stil CSS pot fi într-un document separatsau pot fi încorporateîntr-un document
HTML. Pot fi importatemaimultefoi de stil. Pot fi aplicatediferitestiluriînfuncție de dispozitivul
de ieșireutilizat; de exemplu, versiunea pe ecranpoate fi destul de diferită de versiuneatipărită,
astfelîncâtautorii pot adaptaprezentareaîn mod corespunzătorpentrufiecaremediu.
13
W3C HTML Working Group. "HTML 5. A vocabulary and associated APIs for HTML and XHTML". World
Wide Web Consortium.

20
Foaia de stil cu ceamai mare prioritatecontroleazăafișareaconținutului. Declarațiile care
nu sunt setateînsursa cu ceamai mare prioritate sunt transmiseuneisurse cu prioritateinferioară,
cum ar fi stilul de agent utilizator. Procesul se numeștecascadă.Unuldintreobiectivele CSS este
de a permiteutilizatorilor un control mai mare asupraprezentării. Cineva care
considerăcătitlurileitaliceroșii sunt greu de cititpoateaplica o altăfoaie de stil. Înfuncție de
browser și de site-ul web, un utilizatorpoatealegedintrediferitefoi de stilfurnizate de
designerisaupoateeliminatoatestilurileadăugateșipoatevizualiza site-ul folosindstilul implicit al
browseruluisaupoatesuprascriedoarstilul de titluroșu italic fără a modificaalteatribute.

Moştenire

Moștenireaeste o caracteristicăcheieîn CSS; se bazează pe relațiastrămoș-descendent


pentru a funcționa. Moștenireaestemecanismulprin care proprietățile sunt aplicate nu numaiunui
element specificat, ci șidescendențiloracestuia. Moștenirea se bazează pe arboreledocumentelor,
care esteierarhiaelementelor XHTML dintr-o paginăbazată pe imbricare. Elementeledescendente
pot moștenivalorileproprietăților CSS de la orice element strămoș care le include. În general,
elementeledescendentemoștenescproprietăți legate de text, darproprietățile lor legate de casetă nu
sunt moștenite. 14

Proprietățile care pot fi moștenite sunt culoarea, fontul, spațierealiterelor,


înălțimealiniilor, stilullistă, aliniereatextului, indentareatextului, transformareatextului,
vizibilitatea, spațiulalbșispațiareacuvintelor. Proprietățile care nu pot fi moștenite sunt fundal,
chenar, afișare, float șiclar, înălțimeșilățime, margine, înălțimeșilățimeminimășimaximă, contur,
depășire, umplutură, poziție, decor text, aliniereverticalăși z -index.

Moștenireapoate fi folosităpentruaevitadeclarareaanumitorproprietăți din nouși din


nouîntr-o foaie de stil, permițând CSS maiscurt.Moștenireaîn CSS nu esteacelașilucru cu
moștenireaînlimbaje de programarebazate pe clasă, undeesteposibilsă se defineascăclasa B ca „ca
„clasa A, dar cu modificări”. Cu CSS, esteposibilsăstilați un element cu „clasa A, dar cu

14
Meyer, Eric A. (2006). Cascading Style Sheets: The Definitive Guide (3rd ed.). O'Reilly Media, Inc. ISBN 0-596-
52733-0.

21
modificări”. Cu toateacestea, nu esteposibilsă se definească o clasă B CSS astfel, care arputea fi
apoiutilizatăpentru a stilamaimulteelementefără a fi nevoiesărepețimodificările.

CAPITOLUL III

ELEMENTE ALE LIMBAJULUI JAVASCRIPT ȘI JQUERY

3.1. Elemente ale limbajului JavaScript

JavaScript adesea abreviat JS, este un limbaj de programare care este una dintre
tehnologiile de bază ale World Wide Web, alături de HTML și CSS. Peste 97% dintre site-uri

22
web folosesc JavaScript pe partea client pentru comportamentul paginii web, încorporând adesea
biblioteci terțe. Toate browserele web majore au un motor JavaScript dedicat pentru a executa
codul pe dispozitivele utilizatorilor.

JavaScript este un limbaj de nivel înalt, adesea compilat just-in-time, care se conformează
standardului ECMAScript. Are tastare dinamică, orientare pe obiecte bazată pe prototip și funcții
de primă clasă. Este multi-paradigmă, care acceptă stiluri de programare bazate pe evenimente,
funcționale și imperative. Are interfețe de programare a aplicațiilor (API) pentru lucrul cu text,
date, expresii regulate, structuri de date standard și Modelul obiectului documentului (DOM).15

Standardul ECMAScript nu include nicio intrare/ieșire (I/O), cum ar fi facilități de rețea,


stocare sau grafică. În practică, browserul web sau alt sistem de rulare furnizează API-uri
JavaScript pentru I/O. Motoarele JavaScript au fost utilizate inițial numai în browserele web, dar
acum sunt componente de bază ale unor servere și ale unei varietăți de aplicații. Cel mai popular
sistem de rulare pentru această utilizare este Node.js.

Lucrările ambițioase privind limbajul au continuat câțiva ani, culminând cu o colecție


extinsă de completări și perfecționări oficializate odată cu publicarea ECMAScript 6 în 2015.
Crearea Node.js în 2009 de către Ryan Dahl a declanșat o creștere semnificativă a utilizării
JavaScript în afara browserelor web. Node combină motorul V8, o buclă de evenimente și API-
uri I/O, oferind astfel un sistem de rulare JavaScript autonom.

Începând cu 2018, Node fusese folosit de milioane de dezvoltatori, iar npm avea cele
mai multe module dintre orice manager de pachete din lume. Specificația schiță ECMAScript
este în prezent menținută în mod deschis pe GitHub, iar edițiile sunt produse prin intermediul
unor instantanee anuale regulate. Revizuirile potențiale ale limbii sunt verificate printr-un proces
cuprinzător de propunere. Acum, în loc de numerele ediției, dezvoltatorii verifică individual
starea funcțiilor viitoare.

Ecosistemul JavaScript actual are multe biblioteci și cadre, practici de programare


consacrate și o utilizare substanțială a JavaScript în afara browserelor web. În plus, odată cu
creșterea aplicațiilor cu o singură pagină și a altor site-uri web care folosesc JavaScript, au fost
create mai multe transpilere pentru a ajuta procesul de dezvoltare.
15
Flanagan, David (18 April 2011). JavaScript: the definitive guide. Beijing; Farnham: O'Reilly. p. 1. ISBN 978-1-
4493-9385-4.

23
JavaScript este limbajul de scriptare dominant pe partea client al Web-ului, cu 97% dintre
site-uri web care îl folosesc în acest scop. Scripturile sunt încorporate sau incluse din
documentele HTML și interacționează cu DOM. Toate browserele web majore au un motor
JavaScript încorporat care execută codul pe dispozitivul utilizatorului.

Exemple de comportament scriptat:

- încărcarea unui nou conținut de pagină web fără a reîncărca pagina, prin Ajax sau un
WebSocket. De exemplu, utilizatorii rețelelor sociale pot trimite și primi mesaje fără a
părăsi pagina curentă;
- animații ale paginilor web, cum ar fi decolorarea obiectelor înăuntru și în afara,
redimensionarea și mutarea acestora;
- jucând jocuri de browser;
- controlul redării conținutului media în flux;
- generarea de reclame pop-up;
- validarea valorilor de intrare ale unui formular web înainte ca datele să fie trimise către
un server web;
- înregistrarea datelor despre comportamentul utilizatorului, apoi trimiterea acestora către
un server. Proprietarul site-ului web poate folosi aceste date pentru analiză, urmărire a
reclamelor și personalizare;
- redirecționarea unui utilizator către o altă pagină.

Utilizarea JavaScript s-a extins dincolo de rădăcinile browserului său web. Motoarele
JavaScript sunt acum încorporate într-o varietate de alte sisteme software, atât pentru
implementări de site-uri web pe partea de server, cât și pentru aplicații non-browser. Încercările
inițiale de a promova utilizarea JavaScript pe partea de server au fost Netscape Enterprise Server
și Internet Information Services de la Microsoft,16 dar erau nișe mici. Utilizarea pe partea
serverului a început în cele din urmă să crească la sfârșitul anilor 2000, odată cu crearea Node.js
și a altor abordări.

Electron, Cordova, React Native și alte cadre de aplicație au fost folosite pentru a crea
multe aplicații cu comportament implementat în JavaScript. Alte aplicații non-browser includ

16
Clinick, Andrew (July 14, 2000). "Introducing JScript .NET". Microsoft Developer Network. Microsoft. Archived
from the original on November 10, 2017. Retrieved April 10, 2018

24
suport Adobe Acrobat pentru scriptarea documentelor PDF și extensiile GNOME Shell scrise în
JavaScript.

Următoarele caracteristici sunt comune tuturor implementărilor ECMAScript conforme,


cu excepția cazului în care se specifică în mod explicit altfel.

Imperativ și structurat

JavaScript acceptă o mare parte din sintaxa de programare structurată din C (de exemplu,
instrucțiuni if, bucle while, instrucțiuni switch, bucle do while etc.). O excepție parțială este
domeniul de aplicare: inițial JavaScript avea doar domeniul de aplicare al funcției cu var; apoi
blocarea domeniului a fost adăugată în ECMAScript 2015 cu cuvintele cheie let și const. La fel
ca C, JavaScript face o distincție între expresii și declarații. O diferență sintactică față de C este
inserarea automată a punctului și virgulă, care permite omiterea punctului și virgulă (care
termină declarațiile).

Scris slab

JavaScript este scris slab, ceea ce înseamnă că anumite tipuri sunt implicit turnate în
funcție de operația utilizată. Operatorul binar + transformă ambii operanzi într-un șir, cu excepția
cazului în care ambii operanzi sunt numere. Acest lucru se datorează faptului că operatorul de
adăugare se dublează ca operator de concatenare

Operatorul binar - transformă întotdeauna ambii operanzi într-un număr

Ambii operatori unari (+, -) alw

ays aruncă operandul la un număr

Valorile sunt turnate în șiruri de caractere ca următoarele:

- șirurile sunt lăsate așa cum sunt


- numerele sunt convertite în reprezentarea lor în șir
- matricele au elementele lor turnate în șiruri de caractere, după care sunt unite prin virgule
(,)
25
- alte obiecte sunt convertite în șirul [object Object] unde Object este numele
constructorului obiectului
- valorile sunt transformate în numere prin turnarea în șiruri și apoi prin turnarea șirurilor
în numere. Aceste procese pot fi modificate prin definirea funcțiilor toString și valueOf
pe prototip pentru string și, respectiv, numere.

JavaScript a primit critici pentru modul în care implementează aceste conversii, deoarece
complexitatea regulilor poate fi confundată cu inconsecvență. De exemplu, când se adaugă un
număr la un șir, numărul va fi turnat într-un șir înainte de a efectua concatenarea, dar când se
scădea un număr dintr-un șir, șirul este turnat la un număr înainte de a efectua scăderea.

Deseori menționat este și {} + [] rezultând 0 (număr). Acest lucru este înșelător: {} este
interpretat ca un bloc de cod gol în loc de un obiect gol, iar matricea goală este transformată într-
un număr de operatorul unar + rămas. Dacă înfășurați expresia în paranteze ({} + []), parantezele
sunt interpretate ca un obiect gol și rezultatul expresiei este „[object Object]” așa cum era de
așteptat.17

Tastare

JavaScript este tastat dinamic ca majoritatea altor limbaje de scripting. Un tip este asociat
cu o valoare mai degrabă decât cu o expresie. De exemplu, o variabilă legată inițial de un număr
poate fi reatribuită unui șir. JavaScript acceptă diferite moduri de a testa tipul de obiecte, inclusiv
tastarea tip rață.

În JavaScript, un obiect este o matrice asociativă, mărită cu un prototip; fiecare cheie


furnizează numele unei proprietăți obiect și există două moduri sintactice de a specifica un astfel
de nume: notația punct (obj.x = 10) și notația paranteze (obj['x'] = 10). O proprietate poate fi
adăugată, rebound sau ștearsă în timpul execuției. Cele mai multe proprietăți ale unui obiect (și
orice proprietate care aparține lanțului de moștenire prototip al unui obiect) pot fi enumerate
folosind o buclă for...in.
17
JavaScript quirks in one image from the Internet". The DEV Community. Archived from the original on October
28, 2019.

26
Funcțiile se dublează ca constructori de obiecte, împreună cu rolul lor tipic. Prefixarea
unui apel de funcție cu new va crea o instanță a unui prototip, moștenind proprietăți și metode de
la constructor (inclusiv proprietăți din prototipul Object). ECMAScript 5 oferă metoda
Object.create, permițând crearea explicită a unei instanțe fără a moșteni automat de la prototipul
Object (mediile mai vechi pot atribui prototipul la null).

Proprietatea prototipului constructorului determină obiectul utilizat pentru prototipul


intern al noului obiect. Se pot adăuga noi metode prin modificarea prototipului funcției utilizate
ca constructor. Constructorii încorporați în JavaScript, cum ar fi Array sau Object, au și
prototipuri care pot fi modificate. Deși este posibil să se modifice prototipul Object, este în
general considerată o practică proastă, deoarece majoritatea obiectelor din JavaScript vor
moșteni metode și proprietăți din prototipul Object și s-ar putea să nu se aștepte ca prototipul să
fie modificat.

Spre deosebire de multe limbaje orientate pe obiecte, nu există nicio distincție între
definiția unei funcții și definiția unei metode. Mai degrabă, distincția are loc în timpul apelării
funcției; atunci când o funcție este apelată ca metodă a unui obiect, cuvântul cheie local al
funcției este legat de acel obiect pentru acea invocare.

O funcție este de primă clasă; o funcție este considerată a fi un obiect. Ca atare, o funcție
poate avea proprietăți și metode, cum ar fi .call() și .bind(). 18 O funcție imbricată este o funcție
definită în cadrul unei alte funcții. Este creat de fiecare dată când funcția exterioară este invocată.
În plus, fiecare funcție imbricată formează o închidere lexicală: domeniul lexical al funcției
exterioare (inclusiv orice constantă, variabilă locală sau valoare de argument) devine parte din
starea internă a fiecărui obiect funcție interioară, chiar și după încheierea execuției funcției
externe. .JavaScript acceptă și funcții anonime.

JavaScript acceptă delegarea implicită și explicită. JavaScript acceptă nativ diverse


implementări bazate pe funcții ale modelelor Role, cum ar fi Traits și Mixins. O astfel de funcție
definește un comportament suplimentar prin cel puțin o metodă legată de cuvântul cheie this din
corpul funcției sale. Apoi, un rol trebuie să fie delegat în mod explicit prin apel sau aplicat
obiectelor care trebuie să prezinte un comportament suplimentar care nu este partajat prin lanțul
de prototipuri.
18
Properties of the Function Object". Es5.github.com. Archived from the original on January 28, 2013.

27
În timp ce delegarea explicită bazată pe funcții acoperă compoziția în JavaScript,
delegarea implicită are loc deja de fiecare dată când lanțul de prototip este parcurs, de exemplu,
pentru a găsi o metodă care ar putea fi legată de un obiect, dar care nu este deținută direct de
acesta. Odată ce metoda este găsită, este apelată în contextul acestui obiect. Astfel, moștenirea în
JavaScript este acoperită de un automatism de delegare care este legat de proprietatea
prototipului funcțiilor de constructor.

JavaScript se bazează de obicei pe un mediu de rulare (de exemplu, un browser web)


pentru a furniza obiecte și metode prin care scripturile pot interacționa cu mediul (de exemplu, o
pagină web DOM). Aceste medii sunt cu un singur thread. JavaScript se bazează, de asemenea,
pe mediul de rulare pentru a oferi posibilitatea de a include/import scripturi (de exemplu,
elemente HTML <script>).

Aceasta nu este o caracteristică a limbii în sine, dar este comună în majoritatea


implementărilor JavaScript. JavaScript procesează mesajele dintr-o coadă pe rând. JavaScript
apelează o funcție asociată cu fiecare mesaj nou, creând un cadru de stivă de apeluri cu
argumentele funcției și variabilele locale. Stiva de apeluri se micșorează și crește în funcție de
nevoile funcției.

Când stiva de apeluri este goală la finalizarea funcției, JavaScript trece la următorul
mesaj din coadă. Aceasta se numește bucla de evenimente, descrisă ca „rulare până la finalizare”,
deoarece fiecare mesaj este procesat complet înainte ca următorul mesaj să fie luat în
considerare. Cu toate acestea, modelul de concurență al limbajului descrie bucla de evenimente
ca neblocantă: intrarea/ieșirea programului este efectuată folosind evenimente și funcții de apel
invers. Aceasta înseamnă, de exemplu, că JavaScript poate procesa un clic de mouse în timp ce
așteaptă ca o interogare a bazei de date să returneze informații.19

Un număr nedefinit de parametri poate fi transmis unei funcții. Funcția le poate accesa
prin parametri formali și, de asemenea, prin obiectul argumente locale. Funcțiile variadice pot fi
create și folosind metoda bind. La fel ca multe limbaje de scripting, tablourile și obiectele
(matricele asociative în alte limbi) pot fi create fiecare cu o sintaxă de scurtătură succintă. De
fapt, acești literali formează baza formatului de date JSON. JavaScript acceptă, de asemenea,

19
Concurrency model and Event Loop". Mozilla Developer Network. Archived from the original on September 5,
2015

28
expresii regulate într-o manieră similară cu Perl, care oferă o sintaxă concisă și puternică pentru
manipularea textului, care este mai sofisticată decât funcțiile de șir încorporate.

JavaScript acceptă promisiuni și Async/wait pentru gestionarea operațiunilor asincrone.


Un obiect Promise încorporat oferă funcționalitate pentru gestionarea promisiunilor și asocierea
handlerilor cu rezultatul eventual al unei acțiuni asincrone. Recent, în specificația JavaScript au
fost introduse metode combinatoare, ceea ce le permite dezvoltatorilor să combine mai multe
promisiuni JavaScript și să facă operațiuni pe baza diferitelor scenarii.

Metodele introduse sunt: Promise.race, Promise.all, Promise.allSettled și Promise.any.


Async/wait permite ca o funcție asincronă, neblocante, să fie structurată într-un mod similar cu o
funcție sincronă obișnuită. Codul asincron, neblocant poate fi scris, cu o suprasarcină minimă,
structurat similar cu codul sincron tradițional, de blocare.

Din punct de vedere istoric, unele motoare JavaScript au acceptat aceste funcții non-
standard:

- clauze condiționale catch (cum ar fi Java)


- înțelegeri ale matricei și expresii generatoare (cum ar fi Python)
- expresii concise ale funcției (function(args) expr; această sintaxă experimentală a predat
funcțiile săgeților)
- ECMAScript pentru XML (E4X), o extensie care adaugă suport XML nativ la
ECMAScript (neacceptat în Firefox de la versiunea 21)

3.2. Elemente ale limbajului jQuery

jQuery este o bibliotecă JavaScript concepută pentru a simplifica traversarea și


manipularea arborelui DOM HTML, precum și gestionarea evenimentelor, animația CSS și Ajax.
Este un software gratuit, cu sursă deschisă, care utilizează licența permisivă MIT. Din mai 2019,

29
jQuery este folosit de 73% dintre cele mai populare 10 milioane de site-uri web. Analiza web
indică faptul că este cea mai răspândită bibliotecă JavaScript cu o marjă mare, având de cel puțin
3 până la 4 ori mai multă utilizare decât orice altă bibliotecă JavaScript.

Sintaxa jQuery este concepută pentru a facilita navigarea într-un document, selectarea
elementelor DOM, crearea de animații, gestionarea evenimentelor și dezvoltarea aplicațiilor
Ajax. jQuery oferă, de asemenea, capabilități pentru dezvoltatori de a crea pluginuri pe partea
superioară a bibliotecii JavaScript. Acest lucru le permite dezvoltatorilor să creeze abstracții
pentru interacțiune și animație la nivel scăzut, efecte avansate și widget-uri la nivel înalt cu
tematică. Abordarea modulară a bibliotecii jQuery permite crearea de pagini web dinamice și de
aplicații web puternice.20

Setul de caracteristici de bază jQuery — selecții de elemente DOM, traversare și


manipulare — activat de motorul său de selecție (numit „Sizzle” din v1.3), a creat un nou „stil de
programare”, fuzionarea algoritmilor și a structurilor de date DOM. Acest stil a influențat
arhitectura altor cadre JavaScript, cum ar fi YUI v3 și Dojo, stimulând ulterior crearea API-ului
Selectors standard. Mai târziu, acest stil a fost îmbunătățit cu o fuziune mai profundă a algoritm-
date într-un moștenitor al jQuery, cadrul D3.js.

Microsoft și Nokia oferă jQuery pe platformele lor. Microsoft îl include cu Visual Studio
pentru a fi utilizat în cadrele Microsoft ASP.NET AJAX și ASP.NET MVC, în timp ce Nokia l-a
integrat în platforma de dezvoltare a widget-urilor Web Run-Time. jQuery, în esență, este o
bibliotecă de manipulare Document Object Model (DOM). DOM-ul este o reprezentare cu
structură arborescentă a tuturor elementelor unei pagini Web. jQuery simplifică sintaxa pentru
găsirea, selectarea și manipularea acestor elemente DOM.

De exemplu, jQuery poate fi folosit pentru a găsi un element în document cu o anumită


proprietate (de exemplu toate elementele cu o etichetă h1), pentru a modifica unul sau mai multe
atribute ale acestuia (de exemplu, culoare, vizibilitate) sau pentru a-l face să răspundă la un
eveniment ( de exemplu un clic de mouse).

jQuery oferă, de asemenea, o paradigmă pentru gestionarea evenimentelor care depășește


selecția și manipularea elementului DOM de bază. Atribuirea evenimentului și definirea funcției

20
jQuery 3.5.0 Released!". jQuery Blog. April 10, 2020.

30
de apel invers se fac într-un singur pas într-o singură locație din cod. jQuery urmărește, de
asemenea, să încorporeze alte funcționalități JavaScript foarte utilizate (de exemplu, fade ins și
fade outs atunci când ascunde elemente, animații prin manipularea proprietăților CSS).

Principiile dezvoltării cu jQuery sunt:

- separarea JavaScript și HTML: Biblioteca jQuery oferă o sintaxă simplă pentru


adăugarea de gestionare a evenimentelor la DOM folosind JavaScript, mai degrabă decât
adăugarea de atribute de evenimente HTML pentru a apela funcții JavaScript. Astfel,
încurajează dezvoltatorii să separe complet codul JavaScript de marcajul HTML.
- concizie și claritate: jQuery promovează concizia și claritatea cu funcții precum funcții
„în lanț” și nume de funcții scurte.
- eliminarea incompatibilităților între browsere: motoarele JavaScript ale diferitelor
browsere diferă ușor, astfel încât codul JavaScript care funcționează pentru un browser
poate să nu funcționeze pentru altul. Ca și alte seturi de instrumente JavaScript, jQuery
gestionează toate aceste inconsecvențe între browsere și oferă o interfață coerentă care
funcționează în diferite browsere.
- extensibilitate: evenimentele, elementele și metodele noi pot fi adăugate cu ușurință și
apoi reutilizate ca plugin.

jQuery a fost creat inițial în ianuarie 2006 la BarCamp NYC de John Resig, influențat de
biblioteca anterioară cssQuery a lui Dean Edwards. În prezent este întreținut de o echipă de
dezvoltatori condusă de Timmy Willison (cu motorul de selecție jQuery, Sizzle, fiind condusă de
Richard Gibson).

jQuery a fost inițial licențiat sub CC BY-SA 2.5 și relicențiat cu licența MIT în 2006. La
sfârșitul anului 2006, a fost dublă licență sub licențe GPL și MIT. Deoarece acest lucru a dus la o
oarecare confuzie, în 2012, GPL-ul a fost renunțat și acum este licențiat numai sub licența MIT.

jQuery include următoarele caracteristici:

- selecții de elemente DOM utilizând motorul de selectare cu sursă deschisă multi-browser


Sizzle, un derivat al proiectului jQuery;
- manipularea DOM bazată pe selectori CSS care utilizează numele și atributele
elementelor, cum ar fi id și clasa, ca criterii pentru a selecta nodurile din DOM;

31
- evenimente;
- efecte și animații;
- ajax;
- obiecte amânate și Promise pentru a controla procesarea asincronă;
- analiza JSON;
- extensibilitate prin plug-in-uri;
- utilități, cum ar fi detectarea caracteristicilor;
- metode de compatibilitate care sunt disponibile nativ în browserele moderne, dar au
nevoie de alternative pentru browserele mai vechi, cum ar fi jQuery.inArray() și
jQuery.each();
- asistență între browsere;

jQuery 3.0 și versiunile mai noi acceptă „versiunile actuale-1” (adică versiunea stabilă
actuală a browserului și versiunea care l-a precedat) de Firefox (și ESR), Chrome, Safari și Edge,
precum și Internet Explorer 9 și mai noi. Pe mobil acceptă iOS 7 și versiunile ulterioare și
Android 4.0 și versiunile ulterioare.

Biblioteca jQuery este distribuită de obicei ca un singur fișier JavaScript care definește
toate interfețele sale, inclusiv funcțiile DOM, Evenimente și Ajax. Poate fi inclus într-o pagină
Web prin link-ul către o copie locală sau prin link-ul către una dintre numeroasele copii
disponibile de pe serverele publice. jQuery are o rețea de livrare de conținut (CDN) găzduită de
MaxCDN. Google în serviciul Google Hosted Libraries și Microsoft găzduiesc și biblioteca.21

Exemplu de conectare local a unei copii a bibliotecii (de pe același server care găzduiește
pagina Web):

<script src="jquery-3.5.1.min.js"></script>

Exemplu de conectare a unei copii a bibliotecii de la CDN-ul public al jQuery:

<script

src="https://code.jquery.com/jquery-3.5.1.min.js"

21
Microsoft Ajax Content Delivery Network". ASP.net. Microsoft Corporation. Retrieved April 15, 2019

32
integritate="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="

crossorigin="anonymous"></script>

jQuery oferă două tipuri de funcții, funcții utilitare statice și metode obiect jQuery.
Fiecare are propriul stil de utilizare. Ambele sunt accesate prin identificatorul principal al
jQuery: jQuery. Acest identificator are un alias numit $.Toate funcțiile pot fi accesate prin
oricare dintre aceste două nume.

Funcția jQuery este o fabrică pentru crearea unui obiect jQuery care reprezintă unul sau
mai multe noduri DOM. Obiectele jQuery au metode de manipulare a acestor noduri. Aceste
metode (uneori numite comenzi) pot fi înlănțuite, deoarece fiecare metodă returnează și un obiect
jQuery.

Accesul și manipularea mai multor noduri DOM în jQuery începe de obicei cu apelarea funcției
$ cu un șir de selecție CSS. Aceasta returnează un obiect jQuery care face referire la toate
elementele care se potrivesc din pagina HTML. $("div.test"), de exemplu, returnează un obiect
jQuery cu toate elementele div ale testului clasei. Acest set de noduri poate fi manipulat prin
apelarea unor metode pe obiectul jQuery returnat.

33
CAPITOLUL IV

ELEMENTE ALE LIMBAJULUI PHP ȘI BD MYSQL

4.1. Elemente ale limbajului PHP

PHP este un limbaj de scripting de uz general orientat spre dezvoltarea web. A fost creat
inițial de programatorul danez-canadian Rasmus Lerdorf în 1994. Implementarea de referință
PHP este acum produsă de The PHP Group. PHP a reprezentat inițial Pagina de pornire
personală[8], dar acum reprezintă inițialismul recursiv PHP: Hypertext Preprocessor.

Codul PHP este de obicei procesat pe un server web de un interpret PHP implementat ca
modul, daemon sau ca executabil CGI (Common Gateway Interface). Pe un server web,
rezultatul codului PHP interpretat și executat – care poate fi orice tip de date, cum ar fi datele
HTML generate sau imagini binare – ar forma întregul răspuns sau o parte a unui răspuns HTTP.
Există diverse sisteme de șabloane web, sisteme de gestionare a conținutului web și cadre web

34
care pot fi folosite pentru a orchestra sau facilita generarea acelui răspuns. În plus, PHP poate fi
folosit pentru multe sarcini de programare în afara contextului web, cum ar fi aplicații grafice de
sine stătătoare și controlul dronei robotizate. Codul PHP poate fi executat direct din linia de
comandă.22

Interpretul standard PHP, alimentat de Zend Engine, este un software gratuit lansat sub
Licența PHP. PHP a fost portat pe scară largă și poate fi implementat pe majoritatea serverelor
web pe o varietate de sisteme de operare și platforme. Limbajul PHP a evoluat fără o specificație
formală sau un standard scris până în 2014, implementarea originală acționând ca standard de
facto pe care și-au propus alte implementări. Din 2014, au continuat lucrările pentru a crea o
specificație PHP formală.

W3Techs raportează că, din ianuarie 2022, „PHP este folosit de 78,1% din toate site-urile
web al căror limbaj de programare pe server îl cunoaștem.” PHP versiunea 7.4 este cea mai
utilizată versiune. Suportul pentru versiunea 7.3 a fost renunțat la 6 decembrie 2021. PHP 8 a
fost lansat pe 26 noiembrie 2020. PHP 8 este o versiune majoră și are modificări radicale față de
versiunile anterioare. Noile funcții și modificări notabile includ compilare la timp și compilarea
just-in-time este acceptată în PHP 8.

Compilatorul JIT al PHP 8 poate oferi îmbunătățiri substanțiale de performanță pentru


unele cazuri de utilizare, în timp ce dezvoltatorul PHP Nikita Popov a declarat că îmbunătățirile
de performanță pentru majoritatea site-urilor web vor fi mai puțin substanțiale decât actualizarea
de la PHP 5 la PHP 7.23 Se așteaptă îmbunătățiri substanțiale mai mult pentru operațiunile de tip
matematic decât pentru cazurile de utilizare obișnuite pentru dezvoltarea web. În plus,
compilatorul JIT oferă potențialul viitor de a muta o parte de cod din C în PHP, datorită
îmbunătățirilor de performanță pentru unele cazuri de utilizare.

PHP 8 a introdus expresia potrivire. Expresia potrivire este similară conceptual cu o


instrucțiune switch și este mai compactă pentru unele cazuri de utilizare. Deoarece potrivirea este
o expresie, rezultatul acesteia poate fi prins într-o variabilă sau returnat dintr-o funcție.
„Atribute”, denumite adesea „adnotări” în alte limbaje de programare, au fost adăugate în PHP 8,
care permit adăugarea metadatelor la clase.

22
Introduction: What can PHP do?". PHP Manual. 2019-03-05.
23
Popov, Nikita. ""What's new in PHP 8.0?" Nikita Popov". PHP fwdays. 2021-12-11

35
PHP 8 include modificări pentru a permite sintaxe alternative, mai concise sau mai
consistente într-un număr de scenarii. De exemplu, operatorul nullsafe este similar cu operatorul
de coalescere nul ??, dar este folosit la apelarea metodelor.Următorul fragment de cod nu va
genera o eroare dacă getBirthday() returnează null:

$human_redable_date = $user->getBirthday()?->diffForHumans();

Promovarea proprietăților constructorului a fost adăugată ca „zahăr sintactic”, permițând


setarea automată a proprietăților clasei atunci când parametrii sunt transferați într-un constructor
de clasă. Acest lucru reduce cantitatea de cod boilerplate care trebuie scris. Alte modificări
minore includ suport pentru utilizarea ::class pe obiecte, care servește ca alternativă pentru
utilizarea get_class(); non-capturing capturi în blocurile try-catch; ajustări de sintaxă variabilă
pentru a rezolva inconsecvențele; suport pentru argumente numite; și suport pentru virgulele de
sfârșit în listele de parametri, ceea ce adaugă coerență cu suportul pentru virgulele de sfârșit în
alte contexte, cum ar fi în matrice.

Hărți slabe au fost adăugate în PHP 8. Un WeakMap conține referințe la obiecte, dar
aceste referințe nu împiedică astfel de obiecte să fie colectate de gunoi. Acest lucru poate oferi
îmbunătățiri de performanță în scenariile în care datele sunt stocate în cache; acest lucru este
deosebit de relevant pentru ORM.

Suportul pentru enumerări a fost una dintre cele mai proeminente caracteristici ale PHP
8.1. Enumerările permit dezvoltatorilor să impună în mod programatic stări în baza lor de cod.
Mai jos este un exemplu de enumerare:

<?php

namespace App\Enums;

enumerare InvoiceStatus: șir {

case draft = ‘draft’;

caz în curs = „în așteptare”;

36
case paid = ‘plătit’;

caz expired = ‘expirat’; }

După introducerea dezambalării matricei în PHP 7.4 cu chei numerotate consecutive,


PHP 8.1 a introdus suport pentru despachetarea matricei cu chei șir. PHP 8.1 a adăugat suport
pentru utilizarea „nou” în inițializatoare.

PHP este scris vag. Stochează numere întregi într-un interval dependent de platformă, fie
ca un întreg semnat pe 32, 64 sau 128 de biți, echivalent cu tipul lung de limbaj C. Numerele
întregi fără semn sunt convertite în valori semnate în anumite situații, ceea ce este un
comportament diferit față de multe alte limbaje de programare. 24
Variabilele întregi pot fi
atribuite folosind notații zecimale (pozitive și negative), octale, hexazecimale și binare.

Numerele în virgulă mobilă sunt, de asemenea, stocate într-un interval specific


platformei. Ele pot fi specificate folosind notația în virgulă mobilă sau două forme de notație
științifică. PHP are un tip boolean nativ care este similar cu tipurile boolean native din Java și C+
+. Folosind regulile de conversie de tip boolean, valorile diferite de zero sunt interpretate ca
adevărate și zero ca false, ca în Perl și C++.

Tipul de date nul reprezintă o variabilă care nu are valoare; NULL este singura valoare
permisă pentru acest tip de date. Variabilele de tip „resurse” reprezintă referiri la resurse din
surse externe. Acestea sunt de obicei create de funcții dintr-o anumită extensie și pot fi procesate
numai de funcții din aceeași extensie; exemplele includ fișiere, imagini și resurse de bază de
date.

Matricele pot conține elemente de orice tip pe care PHP le poate gestiona, inclusiv
resurse, obiecte și chiar alte matrice. Ordinea este păstrată în liste de valori și în hash-uri atât cu
chei, cât și cu valori, iar cele două pot fi amestecate. PHP acceptă și șiruri de caractere, care pot
fi folosite cu ghilimele simple, ghilimele duble, sintaxa nowdoc sau heredoc.

Funcționalitatea de bază de programare orientată pe obiecte a fost adăugată în PHP 3 și


îmbunătățită în PHP 4. Acest lucru a permis ca PHP să obțină o abstracție suplimentară, ușurând

24
"Integers in PHP, running with scissors, and portability". MySQL Performance Blog. March 27, 2007

37
sarcinile creative pentru programatori care folosesc limbajul. Gestionarea obiectelor a fost
complet rescrisă pentru PHP 5, extinzând setul de caracteristici și îmbunătățind performanța.

În versiunile anterioare de PHP, obiectele erau tratate ca tipuri de valori. Dezavantajul


acestei metode a fost că codul trebuia să folosească intens variabilele de „referință” PHP dacă
dorea să modifice un obiect care i-a fost transmis, mai degrabă decât să creeze o copie a acestuia.
În noua abordare, obiectele sunt referite prin mâner, și nu după valoare.

PHP 5 a introdus variabile și metode private și protejate pentru membri, împreună cu


clase abstracte, clase finale, metode abstracte și metode finale. De asemenea, a introdus un mod
standard de declarare a constructorilor și destructorilor, similar cu cel al altor limbaje orientate
pe obiecte, cum ar fi C++, și un model standard de gestionare a excepțiilor. În plus, PHP 5 a
adăugat interfețe și a permis implementarea mai multor interfețe. Există interfețe speciale care
permit obiectelor să interacționeze cu sistemul de rulare. Obiectele care implementează
ArrayAccess pot fi utilizate cu sintaxa matricei, iar obiectele care implementează Iterator sau
IteratorAggregate pot fi utilizate cu constructul limbajului foreach. Nu există nicio caracteristică
de tabel virtual în motor, astfel încât variabilele statice sunt legate cu un nume în loc de o
referință în timpul compilării.

Dacă dezvoltatorul creează o copie a unui obiect folosind clona cuvântului rezervat,
motorul Zend va verifica dacă a fost definită o metodă __clone(). Dacă nu, va apela un __clone()
implicit care va copia proprietățile obiectului. Dacă este definită o metodă __clone(), atunci
aceasta va fi responsabilă pentru setarea proprietăților necesare în obiectul creat. Pentru
comoditate, motorul va furniza o funcție care importă proprietățile obiectului sursă, astfel încât
programatorul poate începe cu o replică după valoarea obiectului sursă și poate suprascrie numai
proprietățile care trebuie modificate.

Vizibilitatea proprietăților și metodelor PHP este definită folosind cuvintele cheie public,
private și protected. Valoarea implicită este publică, dacă este folosit doar var; var este un
sinonim pentru public. Articolele declarate publice pot fi accesate oriunde. protejat limitează
accesul la clasele moștenite (și la clasa care definește elementul). private limitează vizibilitatea
numai la clasa care definește articolul. Obiectele de același tip au acces unul la membrii privați și
protejați ai celuilalt, chiar dacă nu sunt aceeași instanță.

38
4.2. Elemente ale limbajului BD MYSQL

MySQL este un sistem open-source de gestionare a bazelor de date relaționale


(RDBMS).[5][6] Numele său este o combinație între „My”, numele fiicei co-fondatorului
Michael Widenius[7] și „SQL”, abrevierea pentru Structured Query Language. O bază de date
relațională organizează datele în unul sau mai multe tabele de date în care tipurile de date pot fi
legate între ele; aceste relații ajută la structurarea datelor. SQL este un limbaj folosit de
programatori pentru a crea, modifica și extrage date din baza de date relațională, precum și
pentru a controla accesul utilizatorilor la baza de date.

Pe lângă bazele de date relaționale și SQL, un RDBMS precum MySQL funcționează cu


un sistem de operare pentru a implementa o bază de date relațională în sistemul de stocare al
unui computer, gestionează utilizatorii, permite accesul la rețea și facilitează testarea integrității
bazei de date și crearea de copii de siguranță.

MySQL este un software gratuit și cu sursă deschisă în conformitate cu termenii Licenței


publice generale GNU și este, de asemenea, disponibil sub o varietate de licențe proprietare.
MySQL a fost deținut și sponsorizat de compania suedeză MySQL AB, care a fost cumpărată de
Sun Microsystems (acum Oracle Corporation). În 2010, când Oracle a achiziționat Sun,
Widenius a bifurcat proiectul open-source MySQL pentru a crea MariaDB.25

MySQL are clienți autonomi care permit utilizatorilor să interacționeze direct cu o bază
de date MySQL folosind SQL, dar mai des, MySQL este folosit cu alte programe pentru a
implementa aplicații care au nevoie de capacitatea de baze de date relaționale. MySQL este o
componentă a stivei de aplicații web LAMP (și altele), care este un acronim pentru Linux,
Apache, MySQL, Perl/PHP/Python. MySQL este folosit de multe aplicații web bazate pe baze de
date, inclusiv Drupal, Joomla, phpBB și WordPress. MySQL este, de asemenea, utilizat de multe
site-uri web populare, inclusiv Facebook, Flickr, MediaWiki, Twitter și YouTube.
25
Sun Microsystems Announces Completion of MySQL Acquisition; Paves Way for Secure, Open Source Platform to
Power the Network Economy" (Press release). Sun Microsystems. 26 February 2008

39
MySQL este scris în C și C++. Analizorul său SQL este scris în yacc, dar folosește un
analizor lexical produs acasă. MySQL funcționează pe multe platforme de sistem, inclusiv AIX,
BSDi, FreeBSD, HP-UX, ArcaOS, eComStation, IBM i, IRIX, Linux, macOS, Microsoft
Windows, NetBSD, Novell NetWare, OpenBSD, OpenSolaris, OS/2 Warp, QNX, Oracle Solaris,
Symbian, SunOS, SCO OpenServer, SCO UnixWare, Sanos și Tru64. Există, de asemenea, un
port MySQL către OpenVMS.

Software-ul serverului MySQL însuși și bibliotecile client utilizează distribuția cu licență


dublă. Sunt oferite sub versiunea 2 GPL sau cu o licență proprietară. Asistența poate fi obținută
din manualul oficial. În plus, asistența gratuită este disponibilă în diferite canale și forumuri IRC.
Oracle oferă asistență plătită prin produsele sale MySQL Enterprise. Ele diferă în sfera
serviciilor și în preț. În plus, există o serie de organizații terțe care oferă suport și servicii.

MySQL a primit recenzii pozitive, iar recenzenții au observat că „performanță extrem de


bine în cazul mediu” și că „interfețele pentru dezvoltatori sunt acolo, iar documentația (ca să nu
mai vorbim de feedback în lumea reală prin intermediul site-urilor Web și altele asemenea) este
foarte, foarte bine”. De asemenea, a fost testat pentru a fi un „server de baze de date SQL rapid,
stabil și adevărat multi-utilizator, cu mai multe fire de execuție”.

MySQL este oferit în două ediții diferite: MySQL Community Server cu sursă deschisă și
Enterprise Server proprietar. MySQL Enterprise Server se diferențiază printr-o serie de extensii
proprietare care se instalează ca pluginuri de server, dar, altfel, partajează sistemul de numerotare
a versiunilor și este construită din aceeași bază de cod.

Caracteristici majore disponibile în MySQL 5.6:

- un subset larg de ANSI SQL 99, precum și extensii;


- suport multiplatform;
- proceduri stocate, folosind un limbaj procedural care aderă îndeaproape la SQL/PSM;
- declanșatoare;
- cursore;
- vizualizări actualizabile;
- online Data Definition Language (DDL) atunci când utilizați motorul de stocare InnoDB;
- schema de informare;

40
- schemă de performanță care colectează și agregează statistici despre execuția serverului
și performanța interogărilor în scopuri de monitorizare;
- un set de opțiuni pentru modul SQL pentru a controla comportamentul de rulare, inclusiv
un mod strict pentru a respecta mai bine standardele SQL;
- X/Open XA suport pentru procesarea tranzacțiilor distribuite (DTP); comitere în două
faze ca parte a acestui lucru, folosind motorul de stocare implicit InnoDB;
- tranzacții cu puncte de salvare când se utilizează motorul implicit de stocare InnoDB.
Motorul de stocare a clusterului NDB acceptă și tranzacții;
- conformitatea ACID atunci când se utilizează motoarele de stocare a clusterelor InnoDB
și NDB;
- suport SSL;
- interogarea în cache;
- sub-SELECT-uri (adică SELECT-uri imbricate);
- suport de replicare încorporat;
- replicare asincronă: master-slave de la un master la mai mulți sclavi sau mai mulți master
la un slave;
- replicare semi-sincronă: replicare de la master la slave unde masterul așteaptă replicarea;
- replicare sincronă: replicarea multi-master este furnizată în MySQL Cluster;
- virtual Synchronous: grupurile de servere MySQL autogestionate cu suport multi master
pot fi realizate folosind: Galera Cluster sau pluginul de replicare grup încorpora;
- indexarea și căutarea textului integral;
- bibliotecă de baze de date încorporată.

Când se utilizează unele motoare de stocare, altele decât cele implicite ale InnoDB,
MySQL nu respectă standardul SQL complet pentru unele dintre funcționalitățile implementate,
inclusiv referințele la chei străine. Constrângerile de verificare sunt analizate, dar ignorate de
toate motoarele de stocare înainte de versiunea MySQL 8.0.15.26

Până la MySQL 5.7, declanșatoarele sunt limitate la unul pentru acțiune/timing, ceea ce
înseamnă că cel mult un declanșator poate fi definit pentru a fi executat după o operație INSERT
și unul înainte de INSERT pe aceeași tabelă. Nu pot fi definite declanșatoare pentru vizualizări.

26
Wildeboer, Jan (5 January 2010). "Why I will not sign the MySQL petition". jan.wildeboer.net.

41
Funcțiile încorporate ale bazei de date MySQL, cum ar fi UNIX_TIMESTAMP() vor returna 0
după 03:14:07 UTC pe 19 ianuarie 2038.

MySQL poate fi construit și instalat manual din codul sursă, dar este mai frecvent instalat
dintr-un pachet binar, cu excepția cazului în care sunt necesare personalizări speciale. Pe
majoritatea distribuțiilor Linux, sistemul de gestionare a pachetelor poate descărca și instala
MySQL cu un efort minim, deși este adesea necesară o configurare suplimentară pentru a ajusta
setările de securitate și optimizare.

Deși MySQL a început ca o alternativă low-end la bazele de date proprietare mai


puternice, a evoluat treptat pentru a sprijini și nevoi la scară mai mare. Este încă cel mai frecvent
utilizat în implementările pe un singur server la scară mică sau medie, fie ca componentă într-o
aplicație web bazată pe LAMP, fie ca server de bază de date autonom. O mare parte din atractia
MySQL provine din relativa simplitate și ușurință de utilizare, care este activată de un ecosistem
de instrumente open source, cum ar fi phpMyAdmin. În intervalul mediu, MySQL poate fi scalat
prin implementarea lui pe un hardware mai puternic, cum ar fi un server multi-procesor cu
gigaocteți de memorie.

Există, totuși, limite ale cât de mult se poate scala performanța pe un singur server
(„scalare”), astfel încât la scară mai mare, sunt necesare implementări MySQL pe mai multe
servere („scaling out”) pentru a oferi performanță și fiabilitate îmbunătățite. O configurație tipică
high-end poate include o bază de date master puternică care se ocupă de operațiunile de scriere a
datelor și este replicată la mai mulți sclavi care se ocupă de toate operațiunile de citire.

Serverul master împinge continuu evenimente binlog către slavii conectați, astfel încât, în
caz de defecțiune, un slave poate fi promovat pentru a deveni noul master, minimizând timpul de
nefuncționare. Îmbunătățiri suplimentare în performanța poate fi obținută prin stocarea în cache a
rezultatelor interogărilor bazei de date în memorie folosind memcached sau prin descompunerea
unei baze de date în bucăți mai mici numite fragmente care pot fi răspândite într-un număr de
clustere de servere distribuite.

Oracle MySQL oferă o soluție de înaltă disponibilitate, cu o combinație de instrumente,


inclusiv routerul MySQL și shell-ul MySQL. Acestea se bazează pe Replicarea grupului,

42
instrumente open source. MySQL poate fi rulat și pe platforme de cloud computing, cum ar fi
Microsoft Azure, Amazon EC2, Oracle Cloud Infrastructure.

CAPITOLUL V

PREZENTAREA APLICAȚIEI PET SHOP

43
CAPITOLUL VI

GHIDUL SITE-ULUI PET SHOP

44
CONCLUZII

45
BIBLIOGRAFIE

46

S-ar putea să vă placă și