ef lucr. dr. mat. Crețulescu Radu Absolvent: Severin Alexandru Specializarea Calculatoare – Sibiu, 2018 – UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU… [628493]
UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU
FACULTATEA DE INGINERIE
DEPARTAMENTUL DE CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEI
PROIECT DE DIPLOMĂ
Îndrumător:
Ș
ef lucr. dr. mat. Crețulescu Radu
Absolvent: [anonimizat], 2018 –
UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU
FACULTATEA DE INGINERIE
DEPARTAMENTUL DE CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEI
2Performant – postarea automată a
campaniilor pe Facebook
ș
i Instagram
Îndrumător:
Ș
ef lucr. dr. mat. Crețulescu Radu
Absolvent: [anonimizat], 2018 –
1
Cuprins
1.
Prezentarea temei…………………………………………………………3
2.
No
ț
iuni teoretice………………………………………………………….4
2.1. Sistemul de operare macOS
2.2. Sublime Text 3
2.3. PHP
2.3.1. Istoria PHP, începuturi
2.3.2. PHP 3
2.3.3. PHP 5
2.3.4. PHP 7
2.4. HTML
2.5. CSS
2.6. JavaScript
2.7. MVC
2.7.1. Model
2.7.2. View
2.7.3. Controller
2.8. Laravel Framework
2.8.1. Ce este un framework
2.8.2. Laravel
2.8.3. Func
ț
ionalită
ț
i ale Laravel
2.8.3.1. Rutarea
2.8.3.2. Middleware-ul
2.8.3.3. Autentificarea si înregistrarea
2.8.3.4. Sistemul de cacheing
2
2.8.3.5. Queue
2.8.3.6. Eloquent ORM
2.8.3.7. Artisan
2.9. MySQL
3.
Implementarea temei de proiect…………………………………………….
4.
Concluzii
5.
Bibliografie
1. Prezentarea temei
Tema
de
licenta
se
numeste
“
2Performant
–
postarea
automată
a
campaniilor
pe
Facebook
ș
i Instagram
”.
LOREM IPSUM DOLOR SIT AMET PLM
3
2. No
ț
iuni t eoretice
Primii pa
ș
i pe care tr ebuie sa ii facem pentru dezvoltare unei aplica
ț
ii sunt foarte importan
ț
i,
deoarece, din acest moment, fiecare decizie ne poate influen
ț
a în mod pozitiv sau negativ
productivitatea
ș
i punerea în aplicare a tot ceea ce ne propunem. De aceea am ales cu foarte mare
aten
ț
ie tehnologiile folosi te în realizarea proiectului, pe care o sa le prezint în continuare.
2.1. Sistemul de operare macOS – High Sierra
După cum era de a
ș
teptat, prima decizie pe care am fost nevoit sa o fac, era sa îmi aleg
sistemul de operare în care o sa dezvolt aplica
ț
ia, am ales macOS [1] , deoarece acesta este
printre cele mai stabile sisteme de operare, iar un programator are nevoie de un sistem stabil
ș
i
făcut pentru developeri. În macOS este foarte u
ș
or de setat
ș
i configurat toate programele
ș
i
softurile de care avem nevoie
ș
i nu în ultimul rând este cel mai ferit sistem de operare de către
viru
ș
i, datorită proceselor de verificare prin care trec programele aflate în appStore.
macOS este sistemul de operare dezvoltat
ș
i comercializat de gigantul american Apple Inc.
începând cu anul 2001. Ca si utilizare pe scară mondială pentru calculatoarele desktop si laptop,
macOS este situat pe pozi
ț
ia secundă, după sistemul de operare Windows, dezvoltat de către cei
de la Microsoft. Sistemul de operare Windows conduce deta
ș
at în acest top, având undeva la
88.87% din toată pia
ț
a, iar macOS aproximativ 8.06%. Aceste statistici sunt calculate pentru anul
2017 . Mai jos pute
ț
i vede a
ș
i celelalte sisteme de operare, ordona te după share-ul din pia
ț
ă.
Fig.1 SO – share market (
https://goo.gl/DRXayy
)
4
macOS este a doua versiune de sistem de operare a celor de la Apple, prima s-a numit Mac OS,
care a fost lansată în anul 1984, iar ultima versiune, Mac OS 9, a fost lansata în anul 1999.
Versiuena desktop, s-a numit OS X 10.0
ș
i a fost lansată în luna martie a anului 2001. Pe
parcursul anilor OS X a ajuns de la versiunea 10.1 pană la 10.9 ‘Mavericks’ lansată în anul 2013,
ca mai apoi, în anul 2016, noua versiunea sa se numească macOS Yosemite. Versiunea de
macOS High Sierra a luat na
ș
tere în septembrie 2017.
După lansarea originală, a macOS, au existat mai multe versiuni, acestea fiind:
●
OS X 10.0 Cheetah – 24 Martie, 2001
●
OS X 10.1 Puma – 25 Septembrie 2001
●
OS X 10.2 Jaguar – 24 August 2001
●
OS X 10.3 Panther – 24 Octombrie 2003
●
OS X 10.4 Tiger – 29 Aprilie 2005
●
OS X 10.5 Leopard – 26 Octombrie 2007
●
OS X 10.6 Snow Leopard – 28 August 2009
●
OS X 10.7 Lion – 20 Iulie 2011
●
OS X 10.8 Mountain Lion – 25 Iulie 2012
●
OS X 10.9 Mavericks – 22 Septembrie 2013
●
macOS Yosemite – 16 Octombrie 2014
●
macOS El Capitan – 8 Iunie 2015
●
macOS Sierra – 12 Iunie 2016
●
macOs High Sierra – 25 Septembrie 2017
2.2. Sublime Text 3
Sublime Text[2] este un editor de text foarte complex
ș
i bine structurat pentru cod, markup
ș
i proză, este cross-platfo rm, iar dacă vreodată trebuie să te mu
ț
i, de pe Windows pe macOS, nu
o să găse
ș
ti prea multe di feren
ț
e. Primul release a fost în 18 Ianua rie 2008
ș
i a fost dezvoltat de
5
către Jon Skinner
ș
i Will Bond, este scris în limbajele C++
ș
i Python ceea ce ii conferă stabilitate
ș
i performan
ț
e maxime în realizarea task-urilor.
Sublime este rapid
ș
i bog at în func
ț
ii, cu suport pentru practic fie care limbaj de programare, de
la C++, Python, PHP până la Javascript, nu are o limitare din acest punct de vedere. Acesta
acceptă selec
ț
ii multiple, pliere cod, legături tastatură, macro-uri, editare pe ecran
ș
i proiecte.
Sublime Text are, de asemenea, un fullscreen mod, care arata grozav pe ecranele mari. Acesta
rulează pe Linux, Windows
ș
i macOS, iar aceea
ș
i licen
ț
ă o po
ț
i folosi pe toate platformele.
Caracteristici
ș
i func
ț
ionalită
ț
i:
–
Panouri, grupuri
ș
i moduri de afi
ș
are: Programul oferă un număr de moduri de afi
ș
are,
inclusiv panouri care pot afi
ș
a până la patru fi
ș
iere simultan, precum
ș
i moduri de ecran
complet
ș
i fără dis tragere, care arată doar un fi
ș
ier fără niciunul din meniurile
suplimentare din jurul acestuia.
–
Selectarea coloanelor
ș
i editare multi-select: Această caracteristică permite utilizatorilor
să selecteze simultan coloane întregi sau să plaseze mai mult de un cursor în text, ceea ce
permite editarea simultană. To
ț
i cursorii se comport ca
ș
i cum ar fi unul singur in text.
–
Completare automata: Sugerează utilizatorului func
ț
ii, variabile, clase din interiorul
proiectului sau chiar
ș
i func
ț
ii preconfigurate ale limbajul ui folosit în cod.
–
Afi
ș
area sintaxei
ș
i afi
ș
area contrastului ridicat: Fundalul întunecat al programului este
destinat să reducă intensitatea
ș
i să mărească contrastul cu textul, astfel ochii sunt
proteja
ț
i mai bine
ș
i nu obosesc la fel de repede
–
Goto Anything: Această caracteristica este folosită pentru a deschide fi
ș
ierele cu doar
câteva apăsări de taste
ș
i pentru a sări imediat la simboluri, linii sau cuvinte.
–
Pluginuri, pachete, API: Are foarte multe plugin-uri, care sporesc productivitarea
programatorului. În plus, realizarea unui plugin nou este extrem de simplă, ele se
realizează cu ajutorul limbajului de programare Python.
–
Istorie persistentă: În momentul în care redeschizi un proiect, po
ț
i da undo la un fi
ș
ier
pană la ultima versiune a sa.
6
–
Salvare automata: încearcă să împiedice utilizatorii să-
ș
i piardă munca, prin salvarea
automata a fi
ș
ierelor.
2.3. PHP
Cea mai importantă decizie în realizarea unui proiect este alegerea limbajului de programare
principal, pentru mine a fost una destul de u
ș
oară, deoarece am avut prilejul sa lucrez cu PHP[3]
încă din timpul liceului, as putea spune ca i-l stăpânesc foarte bine, dar
ș
i pentru că este cel mai
folosit limbaj de programare folosit pentru aplica
ț
iile web. Inclusiv denumirea populara a PHP
este “personal home page”, am putea spune că este făcut exclusiv pentru dezvoltarea de software
web.
PHP: Hypertext Preprocessor
(sau pur
ș
i simplu PHP) este un limbaj de server-side
scripting, adică toată procesarea este făcută de server, spre deosebire de javascript care este
client-side, conceput pentru dezvoltarea de aplica
ț
ii web. Acesta a fost ini
ț
ial creat de Rasmus
Lerdorf în 1994, iar în continuare este intre
ț
inut
ș
i dezvoltat de către PHP GROUP.
Ce poate face PHP-ul ?
Orice! PHP se concentrează pe server-side scripting, astfel incât să
poată recep
ț
iona datele di n formulare, generarea unui con
ț
inut dinamic al paginii sau trimiterea
ș
i
primirea de module cookies.
Exista trei domenii în care se pot folosi scripturi PHP :
–
Server-side scripting: Acesta este principalul domeniu pentru PHP. Ave
ț
i nevoie de trei
lucruri pentru a face acest lucru: parser-ul PHP (modul CGI sau server), un server web
ș
i
un browser web.
–
Command line scripting: Pute
ț
i face un script PHP pentru al rula fără niciun server sau
browser. Ave
ț
i nevoie doar de parser-ul PHP pentru al utiliza în acest mod. Acest tip de
utilizare este ideal pentru scripturile executate în mod regulat folosind cron-uri (Linux)
sau Task Scheduler (pe Windows). Aceste scripturi pot fi folosite
ș
i pentru sarcini simple
de procesare a textului.
7
–
Aplicatii Desktop: Alegerea PHP pentru a crea aplica
ț
ii desktop, cu interfa
ț
ă grafică, nu
este cea mai buna alegere, însă cu extensia PHP-GTK ave
ț
i
ș
i această posibilitate.
2.3.1. Istoria PHP, începuturi
Rasmus Lerdorf, in 1994, a scris mai multe programe CGI (Common Gateway Interface) in
C, pe care le folosea pentru a-
ș
i men
ț
ine pagina sa personala la zi . El le-a extins pentru a putea
lucra cu formulare web
ș
i pentru a putea lucra cu baze de date, numind această colec
ț
ie de
programe PHP / FI adică "Personal Home Page / Forms Interpreter". La începuturi, PHP, nu a
fost gândit ca un nou limbaj de programare, el crescând organic, mai multi programatori
contribuiau la adăugarea de func
ț
ionalitati noi. O echipă de dezvoltare a început să se formeze
ș
i, după luni de lucru
ș
i testări beta, a lansat oficial PHP / FI 2 în noiembrie 1997. Din cauză că a
avut mai mul
ț
i contribuito ri, fără ca cineva să respecte ni
ș
te standarde, s-a ajuns la denumirea
incoerentă a func
ț
iilor
ș
i la ordonarea inconsecventă a parametrilo r lor.
2.3.2. PHP 3
Rasmus Lerdorf, împreună cu Zeev Suraski
ș
i Andi Gutmans
au rescris parser-ul în 1997
ș
i
au format baza pentru PHP 3, schimbând numele limbii în acronimul recursiv PHP: Hypertext
Preprocessor.Ulterior, testarea publică a PHP 3 a început
ș
i lansarea oficială a venit în iunie
1998. Suraski
ș
i Gutmans au început apoi o nouă rescriere a nucleului PHP, producând Zend
Engine în 1999. Ei au fondat, de asemenea, Zend Technologies în Ramat Gan, Israel.
2.3.3. PHP 5
La mijlocul anului 2004, mai exact pe 14 iulie, a fost lansat PHP 5, rulând cu Zend Engine
II. PHP 5 a inclus func
ț
ii noi, precum suport îmbunătă
ț
it pentru programarea orientată pe obiecte
(OOP), extensia PHP Data Objects (PDO) (care define
ș
te o interfa
ț
ă u
ș
oară
ș
i consistentă pentru
accesarea bazelor de date)
ș
i numeroase îmbunătă
ț
iri ale performan
ț
ei. PHP 5.6 este ultimul
update
ș
i versiune stabila a PHP, aceasta o sa beneficieze de update-uri de securitate pana la
sfar
ș
itul lui 2018.
2.3.4. PHP 7
Între anii 2014-2015 a fost dezvoltată o noua versiune de PHP majora, numita PHP 7, sărind
peste versiunea de PHP 6, care a fost un experiment pe care nu l-au lansat niciodată. Principalul
8
obiectiv, a fost rescrierea ZEND Engine, pentru a cre
ș
te performan
ț
ele
ș
i a mări viteza de
procesare a PHP 7. Fa
ț
ă de versiunile anterioare, PHP 7, este de două ori mai rapid, după cum
putem observa în graficele de mai jos. Datorita acestul update major, nu doar codul va rula mai
rapid, dar
ș
i necesitatea d e servere va fi mai mică pentru acela
ș
i număr de utilizatori în cazul
PHP 5.
Fig. 2 – Requesturi pe secunda . WordPress (
https://goo.gl/QjuyeD
)
9
Fig. 3 – Requesturi pe secunda . Laravel & Zend Framework (
https://goo.gl/QjuyeD
)
După aceste grafice, care am putea spune că vorbesc de la sine, m-am hotărât să folosesc în
proiectul meu, PHP 7, care de departe este cel mai rapid
ș
i stabil dintre toate versiunile de PHP.
Mai jos putem vedea
ș
i procentajul în alegerea developerilor, când se decid ce limbaj de
programare să folosească pentru aplica
ț
ii web.
Fig. 4 – Utilizarea limbajelor de programare pentru site-uri web (
https://goo.gl/Vqx5BB
)
10
PHP conduce în acest clasament
ș
i datorită framework-urilor sau CMS-uri (content manage
sistem) open-source, dezvoltate special pentru PHP, ca WordPress, Zend Framework, Laravel,
Joomla, dar
ș
i datorită un or site-uri care au fost construite în PHP, precum Facebook sau
Wikipedia. Acestora li se mai poate adăuga
ș
i faptul ca sintaxa PHP este foarte u
ș
or de în
ț
eles
ș
i
folosit în program, dar
ș
i faptul ca există o comunitate foarte mare care ajuta la rezolvarea unor
probleme.
WordPress este cel mai popular sistem de gestionare a site-urilor web (CMS) sau blogging
utilizat pe Web, fiind folosit de peste 30% din primele 10 milioane de site-uri web.
Am decis să folosesc framework-ul Laravel, deoarece acesta are o documenta
ț
ie foarte bună
ș
i pe
lângă asta este
ș
i structura t foarte intuitiv, folose
ș
te conceptul de Model-View-Controller.
2.4. HTML
Hypertext Markup Language (HTML) este limbajul standard pentru crearea de pagini web
ș
i aplica
ț
ii web. Împreună cu CSS
ș
i JavaScript formează o triadă de tehnologii de bază pentru
World Wide Web. A fost dezvoltat de catre Tim Berners-Lee în anul 1992, care are
ș
i titulatura
de inventatorul Word Wide Web-ului (WWW).
Ce face HTML-ul:
–
reprezintă limbajul Hyper Text Markup Language
–
descrie structura de bază a unei pagini Web
–
este format din grupuri de elemente
–
elementele sunt structurate in tipuri tag-uri
–
Tag-urile reprezinta bucati de continut, cum ar fi:
–
<!DOCTYPE html> declaratia tipului de document, acesta fiind HTML 5
–
<html> este elementul root, care incorporează restul elementelor de
HTML
–
<head> aici sunt adăugate toate tag-urile care afi
ș
ează informa
ț
ii despre
pagina web, cum ar fi titlu, descriere, cuvinte cheie s.a.m.d.
11
–
<title> reprezintă titlul paginii pe care navigam
–
<body> reprezintă tot con
ț
inutul pe care i-l vedem în pagină, aici o sa fie
adăugate toate celelalte tag-uri HTML
–
h1, h2, h3, h4, h5, h5 : reprezintă titluri de rubrici din pagină
–
p : folosit pentru paragrafe
–
Browserele web nu afi
ș
ează tag-urile HTML, ci le cite
ș
te
ș
i le interpretează
pentru a putea afi
ș
a con
ț
inutul în pagina
HTML5
Este cea mai nouă
ș
i complexă versiune a HTML
ș
i a fost conceput pentru a putea face
absolut orice i
ț
i dore
ș
ti în mediul web, fără a fi necesară instalare a de pluginuri pentru
browser-ul folosit. Versiunea 5.0 fost lansată în 28 Octombrie 2014, ca mai apoi sa fie
imbunătă
ț
ită an de an, aju ngând la versiunea HTML 5.3, lansata în 2017.
Poate reda absolut orice, de la fi
ș
iere audio la fi
ș
iere video, pana la crearea de anima
ț
ii sau chiar
de aplica
ț
ii foarte comple xe, cum ar fi jocurile. Este cea mai buna alternativa pentru Flash, care
ș
tim foarte bine ca este de stul de instabil din punct de vedere al securită
ț
ii
ș
i de aceea companiile
mari au renun
ț
at treptat la Flash, în detrimentul HTML 5.
2.5. CSS
CSS sau Cascading Style Sheets a fost creat pentru a putea descrie browser-ului, modul în
care se afi
ș
ează si arată e lementele de HTML în cadrul paginii.
Totul a început când a apărut HTML 3.2, deoarece, ini
ț
ial HTML, a fost creat doar pentru a
descriere browser-ului web care este con
ț
inutul paginii nu
ș
i cum să arate, iar în versiunea 3.2 se
regăseau
ș
i tag-uri ca ‘fon t’ sau ‘color’, care defineau font-ul textului respectiv culoarea acestuia,
astfel era foarte greu pentru un developer, deoarece acesta era nevoit să adauge aceste informa
ț
ii
despre font
ș
i culoare în t oate paginile HTML, era un co
ș
mar. CSS i
ț
i u
ș
urează munca foarte
mult, deoarece acela
ș
i fi
ș
ier de CSS poate fi folosit în mai multe pagini de-o data, iar
12
proprietă
ț
ile CSS pot fi ap licate în acela
ș
i timp mai multor tag-ur i de HTML, care poate au
caracteristici identice, deci mai pu
ț
in cod scris, aplicat mai multor elemente.
În 17 decembrie 1996, primele specifica
ț
ii CSS erau recomandate de consor
ț
iul Word Wide
Web (W3C), astfel formatarea stilurilor era scoasă din con
ț
inutul paginii HTML.
CSS-ul are 3 păr
ț
i de baz ă:
●
Selectorul – face referin
ț
ă la tag prin nume, id sau clasă
●
Proprietatea – partea care arată ce trebuie modificat
●
Valoarea – indică modul de prezentare
2.6. JavaScript
A fost creat de către Brendan Eich, programator la acea vreme la Netscape Communications
Corporate, în septembrie 1995
ș
i a durat doar 10 zile să dezvolte acest limbaj, care pe atunci se
numea Mocha. Ini
ț
ial a fo st dezvoltat pentru browser-ul web Netscape Navigator
ș
i apoi a
devenit cunoscut ca
ș
i Liv eScript. Mai târziu denumirea acestuia se schimba iară
ș
i, în JavaScript,
multi spun ca pe vremea respectiva ar fi fost o mi
ș
care tactica de marketing, deoarece
ș
i în acea
perioada era foarte cunoscut publicului, limbajul de programare Java, a celor de la Oracle, al
ț
ii ar
spune ca această denumire vine de la faptul ca browserul Netscape putea rula
ș
i Java. Datorită
acestei denumiri
ș
i în ziua de azi există o confuzie foarte mare intre Java
ș
i JavaScript, chiar dacă
cele două limbaje nu au nimic în comun.
JavaScript a fost dezvoltat pentru a face mai interesanta experienta user-ului în navigarea
paginilor web
ș
i crearea d e efecte vizuale
ș
i interactive.
Încă din 1996, importan
ț
a JavaScript a devenit atât de mare încât a fost nevoie de crearea
unei institu
ț
ii interna
ț
ionale care să se ocupa cu standardele de sc ripting a JavaScript, numita
13
ECMA (European Computer Manufacturers Association), care
ș
i astăzi este responsabilă cu
dezvoltarea limbajului.
Popularitatea JavaScript a crescut de la an la an, ajungând în anul 2016 să fie folosit de
aproximativ 92% din totalul de site-uri web, printre care se numără
ș
i gigantii internetului,
Google, Facebook sau Amazon. Datorită JavaScript, astăzi, interac
ț
iunea dintre utilizator
ș
i
website este mult mai avansată
ș
i plăcută, de exemplu, fără JavaScript, notificările real-time sau
mesageria online a Facebook nu ar fi posibile.
În zilele noastre JavaScript se afla peste tot, dacă cea mai comună parte este cea de
client-side scripting
ș
i fără ea nu am putea interac
ț
iona în atâtea feluri cu paginile web sau a ne
juca jocuri online, de câ
ț
iva ani au apărut
ș
i aplica
ț
ii care rulează server-side scripting, cum ar fi
Node.js. JavaScript a devenit atât de folosit, încât po
ț
i scrie aplica
ț
ii de mobile, pentru android
ș
i
iOS, nativ, cu ajutorul React-Native.
După părerea mea, JavaScript este cel mai folosit limbaj de programare, deoarece este u
ș
or
de învă
ț
at, foarte inovativ
ș
i fiind în majoritatea cazurilor client-s ide scripting acesta se folose
ș
te
de resursele utilizatorului pentru a rula,
ș
i nu de cele a serverului web. Astfel încât, dacă userul
beneficiază de un device performant
ș
i rularea JavaScript va merge conform a
ș
teptărilor. Am
putea spune că dacă stăpâne
ș
ti foarte bine JavaScript, ai putea face orice fel de aplica
ț
ie, de la
aplica
ț
ii web la mobile, d e la front-end la back-end cu un singur limbaj de programare.
2.7. MVC
MVC (model-view-controller), a apărut la sfâr
ș
itul anilor 1970
ș
i este un
ș
ablon arhitectural
folosit în industria de software development (inclusiv web development). Această modalitate de
lucru reu
ș
este cu succes i zolarea păr
ț
ii logice de interfa
ț
a proiectului, rezultând în aplica
ț
ii
extrem de u
ș
or de modifi cat. În organizarea MVC, modelul reprezinta informa
ț
ia (datele) de care
are nevoie aplica
ț
ia, view erul corespunde cu elementele de interfa
ț
ă, iar controller-ul reprezinta
sistemul comunicativ
ș
i decizional ce procesează datele informa
ț
ionale, făcând legătura intre
model
ș
i view.
14
Fig. 5 – Diagrama MVC (
https://goo.gl/NTX9qR
)
2.7.1. Model
Modelul este numele dat de stocarea permanentă a datelor utilizate în proiectarea generală.
Trebuie să permită accesul pentru ca datele să fie vizualizate sau să fie colectate
ș
i scrise,
ș
i
reprezintă puntea dintre componenta View
ș
i componenta Controller.
Modelul nu are nicio legătură sau cunoa
ș
tere a ceea ce se întâmplă cu datele pe care acesta le
procesează
ș
i le trimite la celelalte componente.Nu solicită
ș
i nu caută răspunsuri din partea
celorlalte păr
ț
i, scopul său unic este de a procesa datele în memoria sa permanentă sau de a căuta
ș
i de a pregăti date care s ă fie transmise de-a lungul celorlalte păr
ț
i.
Modelul, totu
ș
i, nu poate fi rezumat simplu ca bază de date sau ca o poartă către un alt sistem
care gestionează procesul de procesare a datelor. Modelul trebuie să ac
ț
ioneze ca un gatekeeper
al datelor în sine, fără să pună întrebări, ci să accepte toate cererile care i se întâmplă. Deseori,
15
cea mai complexă parte a sistemului MVC, componenta Model este de asemenea vârful
întregului sistem, deoarece fără acesta nu există o legătură între Controller
ș
i View.
2.7.2. View
View-ul se ocupă de afi
ș
area datelor, practic această parte a programului va avea grijă de
cum vede end-userul informa
ț
ia procesată de controller. O dată ce func
ț
iile sunt executate de
model, View-ului îi sunt oferite rezultatele, iar acesta le va trimite către browser. In general
viewul este o mini-aplica
ț
ie ce ajută la randarea unor informa
ț
ii, având la bază diverse
template-uri.
Pentru a implementa corect conceptul de MVC nu trebuie să existe nicio interac
ț
iune între
modele
ș
i views: toată log ica este manipulată de controllers.
De asemenea, este important să re
ț
inem că partea de View nu este dată niciodată de către
controller. A
ș
a cum am m en
ț
ionat când discutam modelul, nu exi stă o rela
ț
ie directă între View
ș
i Controller fără Model î ntre ele.
2.7.3. Controller
Reprezinta creierul aplica
ț
iei. Aceasta face legătura intre Model
ș
i View, intre ac
ț
iunile
userului
ș
i partea decizion ală a aplica
ț
iei. În func
ț
ie de nevoile utilizatorului, controller-ul
apelează diverse functii definite special pentru sec
ț
iunea de site în care se află userul. Func
ț
ia se
va folosi de model pentru a prelucra (extrage, actualiza) datele, după care informa
ț
iile noi vor fi
trimise către view, care mai apoi le va afi
ș
a.
2.8. Laravel framework
16
2.8.1. Ce este un framework
Un framework software, în programarea pe calculator, este o abstrac
ț
ie a codului comun,
oferind func
ț
ionalită
ț
i generice care pot fi rescrise sau folosite de către programator.
Framework-ul este construit astfel încât, vine deja cu unele func
ț
ionalită
ț
i gata pregătite pentru a
fi folosite, de exemplu librărie pentru lucrul cu bazele de date. Acest tip de instrument te ajuta sa
refolose
ș
ti cod, testat
ș
i de către al
ț
i utilizatori, între
ț
inut de obicei de comunită
ț
i relativ mari. De
obicei nu este indicat sa modifici codul de baza al unui framework, dacă cumva ai nevoie de alta
func
ț
ionalitate a unei libr arii, este indicat să o mo
ș
tene
ș
ti
ș
i abia apoi să îi modifici proprietă
ț
ile.
Un framework îndepline
ș
te următoarele:
–
facilitează lucrul cu tehnologii complexe
–
aceasta leagă împreună o grămadă de obiecte / componente discrete în ceva mai
util
–
obligă programatorul să implementeze codul într-un mod care promovează o
codificare consecventă, uniformă, mai pu
ț
ine bug-uri
ș
i aplica
ț
ii mai flexibile
–
oricine poate testa cu u
ș
urin
ț
ă
ș
i depana codul, chiar dacă acesta nu este scris de
ei, prin modul în care te face sa scrii cod
Când vorbim de un framework, vorbim de un set de caracteristici prin care se define
ș
te cu
adevărat
ș
i atunci putem s pune că un framework este:
–
Wrapper
(un pachet de proprietati):
–
simplifică interfa
ț
a unei tehnologii
–
reduce sau elimina task-urile repetitive
–
creste flexibilitatea aplica
ț
iei prin abstractizare
–
reutilizează cod
–
Arhitectura
:
–
gestionează o colec
ț
ie de obiecte / functionalitati
–
codul urmează niste standarde de design pattern
–
Metodologie
:
17
–
un set de practici, proceduri
ș
i reguli folosite în crearea unei librării
–
codul urmează niste standarde de design pattern
Wrapper-ul
Fig. 6 – Diagramă Wrapper (
https://goo.gl/5StqZf
)
Un wrapper este un mod de reambalare a unei func
ț
ii sau a unui set de func
ț
ii (legate sau
nu) pentru a atinge unul sau mai multe din următoarele obiective:
–
simplificarea utilizării codului
–
îmbunătă
ț
irea fun c
ț
ionalită
ț
ii de bază
–
colectarea proceselor discrete într-o asociere logică (un obiect)
Arhitectura
18
Fig 7. Arhitectura framework (
https://goo.gl/5StqZf
)
O arhitectura con
ț
ine o colec
ț
ie de func
ț
ionalită
ț
i pregătite pentru a putea fi utilizate, care
respecta standardul de scriere a codului, design pattern. Arhitecturile pot fi
ș
i sunt utile deoarece
ele creează o structura reutilizabilă (o colecte de obiecte/func
ț
ionalită
ț
i), astfel creste în mod
evident productivitatea unui programator.
Metodologia
Fig. 8 Metodologia unui framework (
https://goo.gl/5StqZf
)
Analizând cuvantul metodologie, în engleza ‘Methodology’ este format din doua cuvinte:
– ‘method’ care înseamnă o cale bine stabilită în a face/rezolva ceva
– ‘ology’ un set de reguli care sunt aplicate, testate
ș
i dovedite în rezolvarea unor task-uri
Dacă o arhitectura se ocupă de asocierea dintre metode/func
ț
ionalită
ț
i, o metodologie se
ocupă cu interac
ț
iunea di ntre acestea, prima fiind o rela
ț
ie pasivă, cea din urma fiind o activitate
derulata.
În PHP sunt o multitudine de framework-uri, care te ajuta sa realizezi proiectele propuse
într-un termen mult mai scurt. De la framework-uri simple care i
ț
i oferă câteva func
ț
ionalită
ț
i de
bază în realizarea unui site, cum ar fi micro-framework-ul Slim (
https://goo.gl/hmwXao
) până la
framework-uri foarte complexe care i
ț
i pun la dispozi
ț
ie o serie de func
ț
ionalită
ț
i mult mai mult
19
decât utile unui programator. De aceea aveam de ales între Phalcon (
https://goo.gl/TdGGx4
) care
de departe este cel mai rapid framework PHP, este scris în C
ș
i are o interfa
ț
ă pentru a putea
utiliza codul în PHP
ș
i framework-ul Laravel (
https://goo.gl/g8HyaS
), care nu este la fel de rapid
ca Phalcon, dar care are o comunitate foarte mare de developeri
ș
i care i
ț
i pune la dispozi
ț
ie
absolut toate uneltele necesare pentru a crea un site. Laravel are
ș
i o documenta
ț
ie foarte
elaborată din care po
ț
i învă
ț
a rapid modul în care func
ț
ionează, de aceea m-am decis ca în
proiectul meu, sa folosesc acest framework.
2.8.2. Laravel
Laravel[4] este printre cele mai cunoscute
ș
i utilizate framework-uri PHP, în ziua de azi,
ș
i
a luat na
ș
tere în Iunie 201 1, atunci cănd Taylor Otwel, programator .net la vremea respectivă,
lucra la un proiect în CodeIgniter, când a observat că acest framework este foarte limitat în
adăugarea de noi func
ț
ionalită
ț
i sau de extinderea acestora. Avea nevoie de mai mult, de mai
multă libertate în a scrie cod, iar CodeIgniter nu îi satisfăceau aceste nevoi
ș
i nici
design-patter-ul aplica
ț
iei nu era cel mai elegant, asa ca s-a decis să facă un framework dedicat
nevoilor unui programator, rezolvând astfel problemele cu care se confruntau programatorii PHP
în acea perioadă. A început pas cu pas, în primă fază, a implementat un sistem simplu de rutare,
respectând pattern-ul unui MVC (model-view-controller), ca mai apoi să adauge noi
func
ț
ionalită
ț
i, necesare pentru construirea unui site într-un mod c at mai rapid
ș
i simplu. În mai
2013 a lansat versiunea 4 a Laravel, cand a implementat un sistem foarte elegant de adăugare a
librăriilor PHP, Composer (
https://goo.gl/sv7SZM
), acest sistem a fost adoptat rapid de
comunitatea PHP. Astăzi toate librăriile pot fi instalate cu acest sistem.
An de an, începând cu versiunea 3 de Laravel, acesta a continuat inoveze
ș
i să fie votat
ș
i ales cel
mai bun framework PHP, deoarece îndepline
ș
te aproape toate necesită
ț
ile
ș
i nevoile unui
developer web.
Laravel i
ț
i pune la d ispozi
ț
ie un adevărat arsenal de instrume nte pentru a putea dezvolta
rapid
ș
i fără bătăi de cap aplica
ț
ii web, cum ar fi o ma
ș
ină virtuală, ‘Homestead’, gata
configurată cu toate software-urile necesare pentru a începe dezvoltarea unei aplica
ț
ii:
–
sistemul de operare Ubuntu 18.04
20
–
toate versiunile de PHP: 7.2, 7.1, 7.0 si 5.6
–
sistem de management al bazelor de date: MySql, Sqlit3, MariaDB (optional)
–
server virtual pentru web: Nginx, Apache (optional)
–
composer, necesar pentru instalarea pachetelor PHP
–
sistem de cacheing: Redis, Memcached
–
sistem de cautare avansata cum ar fi ElasticSearch (optional)
–
sistem pentru mail-uri
–
si multe alte instrumente utile
Din acest motiv am ales să folosesc Laravel, pentru că i
ț
i ocupă foarte pu
ț
in timp pentru a
putea începe efectiv să lucrezi
ș
i să dezvol
ț
i o aplica
ț
ie, deoarece nu i
ț
i mai pierzi timpul cu tot
felul de programe, cu instalări peste instalări, configurări de PHP, de MySql, de creare de server
web, plus că Laravel Homestead func
ț
ionează la fel pe orice sistem de operare, fie Linux, macOs
sau Windows. Cred ca acestea au convins
ș
i pe al
ț
ii
ș
i astfel, Laravel, a ajuns numărul unu în
topul preferin
ț
elor dezvol tatorilor de aplica
ț
ii web cu PHP.
Fig. 9 Anvergura Laravel (
https://goo.gl/MYgQVb
)
21
2.8.3. Func
ț
ionalită
ț
i ale Laravel
2.8.3.1. Rutarea
Cele mai simple rute Laravel acceptă un URI
ș
i ‘Closure’ – o func
ț
ie de callback, oferind o
metodă foarte simplă
ș
i expresivă de definire a rutelor:
Fig. 10 Rutarea in Laravel
Rutarea vă permite să înregistra
ț
i rute care răspund la orice cerere HTTP:
Fig. 11 Rute pentru orice cerere HTTP
Bineîn
ț
eles că există
ș
i rute mult mai complexe, care necesita par ametrii obligatorii / op
ț
ionali în
URI sau rute care sunt atribuite unor Controlere. Pot spune că orice fel de rutare de care avem
nevoie se regăse
ș
te în rut area Laravel.
2.8.3.2. Middleware-ul
Oferă un mecanism pentru filtrarea
ș
i controlul cererilor de HTTP care intră în aplica
ț
ie. De
exemplu, în aplica
ț
ie pres upunem ca avem o sec
ț
iune în care au acces doar persoanele
autentificate, astfel creem un middleware care este atribuit tuturor rutelor vizibile utilizatorilor
autentifica
ț
i. Dacă un use r este neautentificat acest middleware nu îl lasă pe utilizator sa acceseze
22
aceste pagini
ș
i astfel este redirec
ț
ionat către ruta în care se poate autentifica. Putem spune ca
middleware-ul este un fel de sistem de protec
ț
ie prin care putem verifica toate cererile pe care un
utilizator le face pe aplica
ț
ie
ș
i astfel, dacă îndepline
ș
te toate regulile stabilite, îl lăsam să
continue ac
ț
iunea făcută s au îl blocam. Middleware-ul mai poate fi folosit si pentru a spori
securitatea website-ului adăugând astfel în header-ele request-urilor diverse valori care pot fi
verificate la request-urile viitoare, astfel, dacă valorile respective nu corespund cu cele adăugate
de noi, putem sa ne dam seama că acel request nu este corect astfel încât îl putem stopa.
Fig. 12 Rutare cu middleware
2.8.3.3. Template-ul Blade
Este sistemul de template-ing preferat de Laravel pentru afi
ș
area paginilor în aplica
ț
ie.
Toate fi
ș
ierele de tip ‘Bla de’ sunt compilate în cod PHP
ș
i stocate în memoria cache până când
acestea sunt modificate, astfel aceste fi
ș
iere nu sunt generate on-the-fly ci sunt gata pentru a
putea fi folosite de aplica
ț
ie, ceea ce asigura performanta maximă. Fi
ș
ierele ‘Blade’ utilizează
extensia .blade.php
ș
i de obicei sunt salvate în directorul ‘resources/views’ din aplica
ț
ie. Acest
sistem i
ț
i oferă posibilitat ea de a crea layere care apoi le po
ț
i extinde în alte fi
ș
iere ‘Blade’, astfel
po
ț
i structura în mod eleg ant template-ul HTML.
23
Fig. 13 Exemplu de fisier ‘Blade’
2.8.3.4. Autentificarea si înregistrarea
Laravel oferă un sistem complet de autentificare a utilizatorului, doar cu o simplă comandă
‘php artisan make:auth’ i
ț
i crează tot sistemul de autentificare, care include:
–
rutarea, crearea de rute pentru înregistrare, logare
ș
i resetare de parolă
–
crearea de pagini cu formulare, care includ aceste ac
ț
iuni
–
tabelele MySQL necesare pentru stocarea informa
ț
iilor unui user
–
modelul care lucrează cu aceste tabele
Astfel în mai pu
ț
in de cât eva secunde ai un sistem foarte bine pus la punct de înregistrare a unui
utilizator.
2.8.3.5. Sistemul de cacheing
Laravel vine gata configurat cu un API care i
ț
i permite să folose
ș
ti printre cele mai comune
sisteme de cacheing pentru web. Toate aceste configura
ț
ii le putem găsi în fi
ș
ierul
‘config/cache.php’, unde putem opta pentru ce driver să folosim:
–
fi
ș
iere, toate datel e sunt stocate ca
ș
i obiecte serializate în sistemul de fi
ș
iere
–
MySQL, datele sunt salvate in tabela ‘cache’, la fel, ca si obiecte serializate
–
redis, acesta este favoritul meu
–
memcached
24
2.8.3.6. Sistemul de mailing
Laravel pune la dispozi
ț
ia dezvoltatorului un sistem simplu pentru configurarea API-ului
pentru trimiterea de mailuri, de la ter
ț
e, cum ar fi SwiftMailer, Mailgun, SParkPost, Amazon
SES până la serviciile standard ca SMTP
ș
i func
ț
ia de mail a PHP, ‘sendmail’, ceea ce vă
permite rapid trimiterea de mail-uri din aplica
ț
ie.
2.8.3.7. Queue
Acestea sunt foarte utile în momentul în care rezolvăm unele task-uri care necesita timp
foarte mare de execu
ț
ie sau când nu avem nevoie de răspunsul imediat al unor task-uri. Să ne
imaginam că utilizatorul nostru este într-o sec
ț
iune din site, în care trebuie să încarce câteva
imagini, care sunt procesate de server
ș
i care necesită resurse destul de mari. Astfel, după ce
utilizatorul urcă acele imagini, nu este necesar să a
ș
teptăm ca acele imagini să fie procesate, ci îl
redirec
ț
ionăm în următoa rea pagină
ș
i abia după ce procesul este finalizat, îl notificăm dacă este
cazul că acest proces a luat sfâr
ș
it. Avantajul este că dacă cumva a intervenit o eroare în
procesarea task-ului, noi putem seta pentru fiecare Queue de câte ori să reîncerce să finalizeze
acel proces. Dacă după aceste reîncercări tot nu a func
ț
ionat cu succes, tot acest proces este
salvat în DB, ca mai apoi, noi sa îl putem vizualiza mai târziu
ș
i după caz putem să rezolvam
problema.
2.8.3.8. Eloquent ORM
vAcesta oferă implementare simplă
ș
i utilă pentru lucrul cu bazele de date. Fiecărei tabele
de bază de date trebuie să îi atribuim un fi
ș
ier ‘Model’, prin care ORM-ul va
ș
ti să interac
ț
ioneze
cu acestea. Modelele ne permit să facem toate ac
ț
iunile necesare, să căutam, să inserăm, să
edităm sau să
ș
tergem din tabelele noastre.
2.8.3.9. Artisan
Artisan-ul este o interfata de linie de comanda inclusa in Laravel. Contine o varietate de
comenzi care te pot ajuta in construirea aplicatiei. De exemplu comenzi pentru crearea de rute,
25
modele, evenimente, managementul cache-ului. Pe langa comenzile prestabilite, iti ofera
posibilitatea de a-ti crea propriile comenzi, de exemplu poate vrem ca la fiecare deployment al
codului sa se trimită un mail tuturor developerilor, astfel de lucruri sunt realizabile cu ajutorul
Artisan.
2.9. MySQL
O bază de date este o aplica
ț
ie separată care stochează o colec
ț
ie de date. Fiecare bază de
date are unul sau mai multe API-uri distincte pentru crearea, accesarea, gestionarea, căutarea
ș
i
replicarea datelor pe care le de
ț
ine. În prezent, folosim sisteme de management al bazelor de date
rela
ț
ionale (RDBMS) pen tru stocarea
ș
i gestionarea volumului m are de date. Acestea se numesc
baze de date rela
ț
ionale d eoarece toate datele sunt stocate în tabele diferite, iar rela
ț
iile se
stabilesc utilizând chei primare sau alte chei cunoscute sub numele de chei externe.
MySQL este poate cel mai cunoscut sistem, open-source, pentru lucrul cu bazele de date
rela
ț
ionale. A fost dezvol tat de către echipa suedeza MySQL AB în 23 mai 1995, dar de ca
ț
iva
ani este de
ț
inut de către g igantul Oracle Corporation. MySQL are o istorie strâns legată de cea a
PHP, deoarece odată cu anvergura PHP-ului s-a dezvoltat
ș
i acest sistem, ajungând astăzi cel mai
folosit sistem pentru bazele de date. Nu este folosit compatibil doar cu PHP, ci API-ul MySQL
este disponibil pentru majoritatea limbajelor de programare, de la Python, Perl pânp la C sau
C++. Sunt foarte multe aplica
ț
ii/CMS-uri/Framework-uri care folosesc ca
ș
i driver default pentru
baza de date, MySQL-ul, printre care: Laravel, WordPress, Drupal, phpBB, Joomla. De
asemenea MySQL este folosit
ș
i în aplica
ț
ii foarte mari, cum ar fi Facebook, Twiter sau chiar
Youtube, am putea spune ca nu are limite, atâta timp cat structura bazei de date este creata
corect.
Principalele caracteristici a unei baze de date:
–
bază de date – este o colec
ț
ie de tabele, cu date aferente.
26
–
tabel
–
este
o
matrice
cu
date.
Un
tabel
într-o
bază
de
date
arată
ca
o
foaie
de
calcul
simplă.
–
coloană – con
ț
ine date de acela
ș
i tip.
–
redundan
ț
ă – stoca rea datelor de două ori pentru a face sistemul mai rapid.
–
cheie
primară
–
este
unică
ș
i
nu
poate
apărea
de
două
ori
într-un
singur
tabel.
Cu
o
cheie,
pute
ț
i găsi doar un rând.
–
cheie străină – este legătura dintre două tabele.
–
cheie
compusă
–
este
o
cheie
care
constă
in
mai
multe
coloane,
deoarece
o
coloană
nu
este suficient de unică.
–
index – permite unei interogări să preia eficient datele dintr-o bază de date.
Pentru
a
putea
lucra
mai
u
ș
or
cu
MySQL
am
folosit
programul
‘sequel
Pro’,
care
de
departe
este
cel
mai
bine
gândit
program
pentru
manageuirea
unei
baze
de
date
MySQL,
dar
care
este
disponibil
doar
pe
sistemul
de
operare
macOS.
Acesta
i
ț
i
permite
atât
conectarea
standard
(cu
user, parola si host), dar
ș
i conexiuni mai securizate, prin Socket sau prin SSH.
Fig. 14 – Conexiune MySQL in Sequel Pro
27
4. Implementarea temei de proiect
fdsfsdfs
28
5. Bibliografie
[1] –
https://en.wikipedia.org/wiki/MacOS
[2] –
https://www.sublimetext.com/
[3] –
https://en.wikipedia.org/wiki/PHP
[4] –
https://laravel.com/docs/5.6
[5] –
[6] –
[7] –
[8] –
[9] –
[10] –
[11] –
[12] –
29
30
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: ef lucr. dr. mat. Crețulescu Radu Absolvent: Severin Alexandru Specializarea Calculatoare – Sibiu, 2018 – UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU… [628493] (ID: 628493)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
