Platforma Web Pentru Studenti
Cuprins:
NOTIUNI iNTRODUCTIVE ……………………………………………………1
Prezentarea Lucrării …………………………………………………..0
Analiza de proiectare ……………………………………………………D
Scopul Aplicației…………………………………………………………D
Publicul țintă………………………………………..…………………D
Analiza business…………………………………………………….D
Tema aplicatiei…………………………………………………..D
Probleme rezolvate…………………………………………………………D
Analiza SWOT……………………………………………………D
Project Management în ONG-uri……………………………………….D
Etapele unui proiect…………………………………………………D
Feedback……………………………………………………..……D
Branding………………………………………………………………
INTRODUCERE ÎN APLICAȚII WEB MODERNE……………………………20
Tehnologii ………………………………………………………….D
HTML5 …………………………………………………………………..D
CSS3……………………………………………………………………D
PHP………….…………………………………………………………..D
MySQL………………………………………………………………
WAMP ………………………………………………………….
Open Source…………………………………………………………….D
Evoluția limbajului php …………………………………………..D
Fire de execuție ………………………………………………..D
Arhitectura si principii REST ………………………………
JSON …………………………………………………………..
Arhitectura aplicației ………………………………………………….….36
Schema conceptuală a bazei de date……………………………………..D
Data-binding în HTML…………………………………………D
Extinderea limbajului HTML cu ajutorul directivelor…………..D
$scope………………………………………………………………D
CSS frameworks………………………………………………………..D
Bootstrap ……………………………………………………………………D
Prezentarea aplicației …………………………………………………44
Implementarea unui ciclu request – response………………………D
Logica interfeței grafice ………………………………………………..D
CONCLUZII…………………………………………………………………….D
Bibliografie……………………………………………………………………….
NOȚIUNI INTRODUCTIVE
1.1 Prezentarea Lucrării
Această lucrare conține informații despre câteva dintre tehnologiile cele mai des folosite în dezvoltarea aplicațiilor web care se doresc a fi cât mai de folos utilizatorilor în activitătile desfășurate zi de zi. În plus, prezintă și un exemplu de aplicație web care este construită cu ajutorul tehnologiilor respective și este de foarte mare utilitate în cadrul ONG-urilor.
Prezenta lucrare este structurată pe 5 capitole, astfel:
Noțiuni introductive.
Cuprinde argumentarea utilității aplicației care face subiectul acestei lucrări dar și o serie de analize realizate înainte de momentul dezvoltării aplicației și teoria managementului de proiect care stă la baza dezvoltării logicii acesteia.
Introducere în Aplicații WEB moderne .
Cuprinde detalii referitoare la tehnologiile și conceptele folosite în dezvoltarea aplicației și chestiuni mai generale care stau la baza dezvoltării oricărei aplicații web moderne. În plus, se găsesc și informații despre evoluția limbajului PHP, fire de execuție, arhitectură și principii REST și Json.
Arhitectura Aplicației
În acest capitol sunt informații despre logica organizării bazei de date și despre framework-urile folosite pe partea de back-end dar și pe cea de front-end.
Prezentarea Aplicației
Capitolul cuprinde informații referitoare la funcționalitatea aplicației cât și detalii tehnice care stau la baza implementării funcționalităților respective.
Concluzii
Capitolul curent conține concluziile trase pe parcursul dezvoltării aplicației de față dar și modul în care această va fi dezvoltată pe viitor dar.
1.2. Analiza de proiectare
1.2.1 Scopul Aplicației
Scopul principal al aplicației Sniff Events este acela de a facilita promovarea proiectelor din cadrul ONG-urilor. Din experiența mea în voluntariat și din managerierea unui proiect la nivel național, este dificil să faci informația sa ajunga la grupul țintă, întrucât nu există încă un loc, online sau offline unde să poți promova ideea pe care o susții. Astfel, am ajuns la concluzia că o asemenea aplicație ar îmbunătăți procesul de promovare al proiectelor din cadrul ONG-uri .
În plus, prin această aplicație îmi propun ca studenții să fie informați într-un mod cât se poate de simplu de oportunitățile și evenimentele adresate lor, prin crearea unei pagini a fiecărui eveniment în parte, unde se pot regăsi: tipul proiectului (social, carieră, distracție etc.), adresă (cu hartă), asociația care îl organizează, perioadă și programul, cât și feedback-ul primit din partea altor useri.
Utilizând această aplicație, un ONG poate avea următoarele beneficii:
Vizibilitate, atât la nivel de facultate, cât și pe plan național
Posibilitatea de a creea evenimente și de a adaugă date esențiale(locație, program etc.)
Posibilitatea de a edita sau șterge evenimentele create.
Moderatorul unui ONG poate adaugă și alți moderatori, iar aceștia pot edita sau șterge toate proiectele ONG-ului respectiv.
Orice moderator al unui ONG poate aprobă sau șterge Feedback-ul primit la evenimentele create.
Utilizând această aplicație, studenții pot avea următoarele beneficii:
Vizualizarea tuturor evenimentelor pe o singură platformă;
Găsirea tuturor detaliilor evenimentului pe pagina acestora ( locație, ora începerii și ora terminării, program);
Posibilitatea de a da Feedback unui eveniment înainte sau dupa acestuia;
Vizualizarea evenimentelor în funcție de tematica acestora ( Educațional, Carieră, Distracție, etc.).
Având în vedere cele de mai sus, este clară diferențierea unor roluri în cadrul platformei, în funcție de proiecte, astfel încât fiecare user să aibă sau nu anumite drepturi în modificarea conținuturilor.
Există astfel 3 tipuri de roluri:
Administrator
Moderator
User
Orice user este la bază student, având posibilitatea să devină Moderator (dacă deține o funcție de conducere sau în PR-ul ONG-ului din care face parte), de Administrator (dacă dorește să se ocupe de buna funcționalitate a aplicației) sau nici un rol, având permisiuni de bază. Un Administrator nu poate face parte dintr-o organizație, acesta fiind neutru, iar un Moderator poate avea permisiunea de a programa evenimente pentru o singură organizație.
Permisiunile sau drepturile, cum sunt numite mai sus, sunt urmatoarele:
Orice utilizator(logat sau nu) poate vedea proiecte existențe.
Doar Moderatorii și Administratorii pot adaugă Moderatori.
Orice User poate deveni Moderator.
Un Administrator nu poate deveni Moderator.
Administratorii pot adaugă alți Administratori.
Moderatorii sau Administratorii pot creea și mai apoi edita sau șterge evenimente.
Orice user care înscrie un ONG, devine Moderator al acelui ONG.
Doar Administratorii pot aproba evenimente.
Administratorii și Moderatorii pot aproba feedback, cu mențiunea că Moderatorii au permisiunea doar la propriile evenimente.
Orice user poate oferi feedback pentru un proiect.
Mod de creere a evenimentelor:
Fiecare ONG poate avea un prim Moderator, utilizatorul ce inscrie asociația, sau nu, în cazul în care aceasta este creată de un Administrator. Atât Administratorii cât și Moderatorii pot adauga alți Moderatori.
Aceștia pot crea evenimente completând urmatoarele câmpuri: numele proiectului, asociația ce il organizează, tipul proiectului (Educațional, Carieră, Social. Distracție, Concurs sau Intern), o scurtă descriere, o culoare (aceasta este importantă pentru creearea unui brand awareness), pagina de Facebook, data și ora începerii și terminării evenimentului, locația și programul (cu ora de început și sfârșit).
După completarea acestor câmpuri, evenimentul poate fi salvat ca draft (în eventualitatea în care nu se cunosc încă toate datele) sau publicat (și trimis spre aprobare Administratorilor).
1.2.2 Publicul țintă.
Aplicația Sniff Events este o aplicație de promovare, dedicată în mod special studenților și ONG-urilor. Un plus pe care aceasta aplicație îl aduce, spre deosebire de alte aplicații de acest tip, este acela că are funcționalități care ajută ONG-urile să își promoveze evenimentele, iar studenții de a îi ține informați în ceea ce privește oportunități dedicate lor.
O problemă foarte des întâlnită în aria voluntariatului și a ONG-urilor este cea de a distribui informația, în mediul online fără a abuza prea mult de rețelele existențe de socializare(ex: Facebook, Twiteer etc.) și în mediul offline prin distribuirea de materiale promoționale (care sunt destul de costisitoare).
O altă problemă, ar fi din perspectiva grupului vizat, și anume studenții. Ca și student pentru a afla informații despre evenimentele de interes, trebuie să cauți periodic pe diferite site-uri, blog-uri, grupuri ale rețelelor de socializare, lucru ce consumă mult timp. în acest mod, folosind platforma Sniff Events, un student poate gasi toate înformatiile organizatorice ce țin de evenimentele ce le sunt adresate în mod direct.
Aplicația Sniff Events rezolvă astfel o serie de probleme existente în sfera ONG-urilor, probleme care nu sunt acoperite de alte aplicații ( de exemplu platformele Facebook, Twitter, Eventim etc.) si este utilă tocmai pentru faptul că este gratuită și se adresează în mod special studenților.
Tipuri de utilizatori pe platformă:
Administrator:
poate adauga alți Administratori, Moderatori sau Useri;
poate creea, edita, șterge și aproba sau respinge evenimente;
nu poate fi membru al unei organizații;
poate vedea statistici generale.
Moderator:
poate să creeze evenimente pentru organizația din care face parte;
poate sa adauge alți moderatori;
poate fi moderator pentru o singură organizație;
poate sa aprobe feeback doar pentru proiectele făcute de organizația lui.
User:
poate să devina membru al unei organizații;
poate să dea feedback.
1.3. Analiza de business
1.3.1 Tema aplicatiei
Aplicația Sniff Events este o aplicație web, gratuită, de promovare a proiectelor, creată special pentru utilizarea în cadrul organizațiilor.
Un element implementat care diferențiază această aplicație de altele deja existente și relativ asemănătoare, precum Eventim, Cinemagia, Eventbrite sau Metropotam.ro este posibilitatea de a oferi feedback unui eveniment. Pe lângă această, atât înscrierea cât și creerea de evenimente, practic orice beneficiu al aplicației este complet gratuit.
Toate tipurile de utilizatori, anume Moderator și Administrator se pot ocupa de creerea și editarea de evenimente, în timp ce utilizatorul tip User poate doar să vizualizeze evenimentele deja create și publicate.
Scopul principal al aplicației Sniff Events este să creeze o comunitate a ONG-urilor din România, unde acestea își pot promova evenimentele dedicate grupului țintă, și anume studenții.
Mai mult de atât, cu ajutorul sistemului de feedback, membrii ONG-urilor pot trage concluzii în urma evenimentului, obținând o opinie externă, astfel descoperind ce ar putea imbunătăti pe viitor pentru a crește calitatea proiectelor.
1.3.2 Probleme rezolvare
Aplicația Sniff Events este concepută în principal pentru ONG-urilor, dar poate fi folosită pentru promovarea proiectelor personale sau a oricărui tip de organizație. Problemele abordate în vederea rezolvării sunt: promovarea directă și gratuită a proiectelor grupului tintă, obținerea unui feedback extern din partea participanților la proiecte, regăsirea într-un singur loc a tuturor proiectelor dedicate studenților, cu toate datele necesare. Această aplicație pune bazele unei viitoare comunităti a ONG-urilor prin organizarea într-un mod ușer-friendly a tuturor informațiilor .
Scopul principal al aplicației este imbunătătirea procedeului în care se face promovare din cadrul proiectelor în ONG-uri. Nu există momentan o aplicație în acest domeniu care în mod special să rezolve problemele cu care un ONG se confruntă, acestea fiind diferite de alte cadre de lucru .
Ce mai mari probleme cu care ONG-urile se confruntă în momentul de fata sunt urmatoarele:
promovarea gratuia a evenimentelor.
ajungerea cu informația la grupul țintă.
primirea unui feedback extern.
creare evenimentelor într-un timp minim.
1.3.3 Analiza SWOT
Despre Analiza SWOT:
Masura în care un proiect este necesar si posibil de realizat se va efectua o analiză SWOT. Aceasta ne va fi ajutor în descoperirea diferitelor niveluri din mediului organizației și din mediului exterior acesteia ce ar putea influenta succesul sau încheierea proiectului.
Analiza SWOT (abreviata din engleză Strengths, Weaknesses, Opportunities și Threats) functioneaza ca o radiografie a unui proiect si inventariază calitățile dar și slăbiciunile (punctele tari și punctele slabe) ale proiectului, ale mediului în care acesta se va dezvolta, a tuturor elementelor atât interne cât și externe ce pot influența executarea lui. Punctele tari și punctele slabe țin de mediul intern al proiectului, iar oportunitățile și amenințările țin de mediul extern al acestuia.
Toți factorii sunt notați fără a se face conexiuni și fără a fi influențați întrei ei, urmând să se facă o evaluare a lor.
Practic,scopul analizei SWOT este următorul:
se vor folosi punctelor tari în favoarea proiectului
se vor eliminarea sau reducerea pe cât posibil punctelor slabe
se vor fructifica oportunitătile
se vor evalua amenintările
1.4 Project Management în ONG-uri
Proiectul este reprezent de o serie de activităti efectuate într-o perioadă delimitată de timp, ce sunt planificate și controlate de către unul sau mai mulți manageri. Activitățile au ca scop producerea unei schimbări pozitive a situației beneficiarilor organizației. .
Managerul de proiect are la dispoziție anumite resurse pentru a putea realiza scopul propus. Aceste resurse, utilizate eficient din punct de vedere calitativ și cantitativ, vor permite atingerea scopului. Resursele indispensabile dar și accesibile unui manager ar fi următoarele:
Resurse de timp,
Resurse financiare (bugetul alocat proiectului)
Resurse umane (membrii echipei de proiect),
Resurse informaționale (informațiile, cunoștințele cu privire la cadrul proiectului etc) ,
Resurse materiale (bunurile și echipamentele)
Resursele reprezintă un beneficiu cât și o constrângere. De multe ori, ele functionează invers proporțional: când avem informații, nu este nevoie de atâția bani; când avem timp, nu avem nevoie de atâția membrii în echipă.
Este imporant ca fiecare proiect să se ghideze după un set de reguli de bază. Deși pe toată durată de viață a proiectelor, apăr evenimente imprevizibile, de exemplu, criza economică la nivel internațional, creșterea inflației, acestea pot fi factori de risc în ducerea acestuia la bun sfârșit, prin urmare, sunt necesare măsuri suplimentre.
1.4.1 Etapele unui proiect
Toate proiectele trec prin multiple faze, începând cu analiză nevoilor până la evaluarea finală a acestora, când s-a ajuns la atingerea tuturor obiectivelor propuse. Este foarte important să se cunoască în detaliu ciclului proiectului. Majoritatea organizațiilor desfășoară în paralel diverse proiecte, a căror perioadă de activitate deseori se intersectează și se suprapune. Ciclul de proiect garantează introducerea tuturor elementelor pe perioadă de viață proiectelor.
Așa cum am menționat puțin mai devreme, fazele prin care trece orice proiect sunt următoarele:
A. Concepție
B. Planificare
C. Implementare
D. Evaluare
Concepție:
Scopul acestei faze este conceperea( și înțelegerea de către toți membrii echipei) elementelor ce caracterizează proiectul, caracteristici absolut necesare în luarea deciziei într-o organizației. în unele cazuri aceste sunt transmise și finanțatorului. Fază a doua începe, doar dacă decizia este una pozitivă și constă în planificarea detaliată și organizarea. Dacă decizia este negativă, proiectul se termină înainte de se face investiții majore din fondurile organizației.
Planificare:
Planificarea este esentială pe durată de viață a proiectului, și se realizează răspunzand la urmatoarele întrebări :
Ce va trebui să facem?
Când va trebui să facem?
Unde va trebui să fie făcut?
De către cine va trebui să fie făcut?
Cum va trebui făcut?
Cu ce resurse va trebui să fie făcut?
Conform Principiului lui Pareto, 80 de procente din consecințele sau rezultatele unui fenomen sunt generate de 20 de procente din cauze. Acest principiu este aplicat la tot mai multe aspecte ale afacerii, ale muncii și ale vieții. Cel mai frecvent acesta se regăsește în management.
Implementare:
Implementarea proiectului reprezintă faza în care se realizează tot ce a fost planificat în etapa anterioară. Că și în restul etapelor, în cea de implementare apar o serie de provocări, printre care și următoarele:
Respectarea cu strictețe a obiectivelor propuse.
Managementul resurselor umane și formarea echipei
Coordonarea echipei și organizarea acesteia.
împărțirea responsabilitătilor
Asumarea deciziilor astfel încât proiectul să se finalizeze cu încadrarea în timp, în bugete și cu atingerea obiectivelor propuse
Monitorizarea respectării etapelor și a task-urile asumate și evaluarea acestora.
Menținerea contactului cu partenerii.
Evaluare:
Un proiect se finalizează cu etapa de evaluare. Evaluarea reprezintă tragerea unor concluzii privind progresul sau regresul înregistrat în ceea ce privește atingerii obicetivelor stabilite.
Un proiect poate fi considerat de succes dacă a respectat următoarele cerințe:
s-a încadrat în resurse,
s-a încadrat în timpul stabilit inițial,
a ajuns la nivelul de performanță dorit.
Evaluarea finală ar trebui să se axeze pe următoarelor lucruri: resurse investite, activităti organizate, rezultate obținute și impactul proiectului.
1.4.2 Feedback
Cuvântul “feedback” este un termen preluat din limba engleză, în traducere înseamnă “reactie inversă”. Acesta reprezintă o componentă esențială a comunicării, este un răspuns transmis de receptor către emițător și nu trebuie folosit că o critică, ci ca un sfat. Modul și felul în care sunt transmise acest răspunsuri influentează comportamentul și acțiunea celor care le receptionează.
Feedback-ul trebuie să fie specific, descriptiv, făcut cadou, iar acesta să mentioneze faptele, nicidecum general, evaluativ și folosit că o descărcare nervoasă. Acesta are scop schimbarea de comportamente.
Feedback-ul are rolul de a îi ajuta pe oameni să fie atenți la modul în care acționează și să se perfecționeze,să învețe dar și să își dezvolte latura de soft skills.Este recomandat ca după primirea feedback-ului acesta să fie studiat cu atenție pentru a putea medită la modul în care trebuie schimbat comportamentul și viziunea despre proiect.
Feedback-ul pentru a putea fi considerat eficient trebuie să ajute la conștientizarea acțiunilor și să indice modul în care comportamentul ar trebui schimbat.Feedback-ul trebuie oferit într-un mod suportiv dar și delicat.înainte de a oferii un feedback trebuie reflectat la modul în care acesta va ajuta respectiva persoană să evolueze,și să învețe.
1.4.3 Branding
Branding-ul a apărut încă din evul mediu când oamenii își marcau bovinele cu fierul încins pentru a ști a cui aparțin.în engleza din perioada evului mediu termenul de brending a fost definit ca procesul de ardere al unei mărci pe corpul unui grup de animale. Procesul prin care o marca capata in timp o anumita perceptie, fie ca este vorba de un produs, serviciu sau organizatie ce se adreseaza unei mase de oameni, se numeste branding.
Brand recognition este părerea pe termen lung pe care ți-ai format-o despre un anumit produs. Adică in momentul in care auzi de un produs, ai deja intiparit in minte o idee si știi exact ce asteptari ai de la marca respectiva.
Partea pozitiva este că dacă brand-ul este întipărit foarte bine ca fiind unul pozitiv in minte, in probabilitatea de a aparea evenimente negative, dăunatoare brand-ului, acestea pot fi scuzate sau înțelese de catre consumatori.
Partea negativa este că in eventualitatea aparitiei unor evenimente negative, ce dăunează brandu-lui, exista sanse foarte mari ca acestea sa fie ținute minte un timp mai indelungat decât lucrurile pozitive, și cu mare dificultate pot fi uitate . Un eveniment negativ v-a șterge toate evenimentele pozitive din mintea consumatorului.
Cateva din partile pozitive ale branding-ului sunt urmatoarele:
Face diferențiă intre un produsul de altele din aceeași categorie ;
Oferă o garantie față de schimbările ce au loc pe piață;
Construieste o relație de încredere cu consumatorii;
Dacă brand-ul este unulputernic, nu mai este necesara investitia în procesele de marketing; consumatorii vor fi cei care vor promova produsul altor consumatori, crescand numarul acestora;
Acesta va creea loialitate (consumatorii, dacă au o impresie pozitiva, exista sanse foarte ridicate ca acestia sa prefere produsele brand-ului respectiv in detrimentul celorlalte);
2.INTRODUCERE ÎN APLICAȚII WEB MODERNE
Acest capitol cuprinde detalii despre tehnologiile și conceptele folosite în dezvoltarea aplicației dar și elemente generale care stau la bază dezvoltării oricărei aplicații web moderne. în plus, se regăsesc informații despre istoricul limbajului PHP, thread-uri, servicii web bazate pe arhitectură REST și o comparație între XML și Json.
Se poate observă o evoluție treptat a web-ului , aplicațiilor web și comunității web de la apariția internet-ului la web 2.0 și la viziunea web-ului semantic lucru ce face necesară renunțarea la abordarea de tip ad-hoc și adoptarea proiectării web.
2.1 Tehnologii
Aplicațiile web sunt software-uri complexe, ce necesită o dezvoltare sistematică, cuantificabila pentru realizarea cerințelor și specificațiilor implementării și a întreținerii lor. Din punct de vedere al istoricului dezvoltării și complexitătii putem distinge mai multe tipuri de aplicații web, cum ar fi : orientate pe documente, interactive, tranzacționale și altele .
Fiecare aplicație web are cerințele ei particulare, care pot fi abordate prin diferite servicii și utilități.
2.1.1 HTML5
HTML5 este un limbaj definit pentru prezentarea conținutului informatic destinat World Wide Web. Este tehnologia care stă la bază Internetului.
Este acum la al cincelea upgrade al standardului HTML, creat în 1990. în 1997 a fost standardizat ca HTML4 pentru a îmbunătăți limbajul cu un suport pentru recentele apariții multimedia. Pe lângă toate funcționalitățile implementate în HTML, creatorii au vrut să îl mențină și un limbaj ușor de citit pentru oameni, computere și alte device-uri.
HTML5 aduce noi îmbunatatiri din punct de vedere sintactic: elemente ca <video>, <audio>, <header> și <canvas>. Integrează conținutul SVG care înlocuiește tag-ul <object>. Aceste noi modificări au fost făcute pentru lucra cu conținut grafic și media pe web fără a mai fi nevoie de plugin-uri sau API-uri. Alte îmbunătățiri au fost aduse tag-urilor <section>, <article>, <header> și <nav> pentru a imabogatii conținutul semantic al documentelor. Alte noi atribute au fost introduse, în schimb altele au fost scoase. Altele au fost redefinite, standardizate ca : <a>, <menu>.
HTML5 definește și acțiunile necesare în privința documentelor invalide, sintaxa erorilor putând fi tratată uniform în toate browserele.
2.1.2. CSS3
(2) CSS (Cascading Style Sheets) este un standard pentru formatarea elementelor unui document HTML. Stilurile se pot atașa elementelor HTML prin intermediul unor fișiere externe sau în cadrul documentului, prin elementul <style> / atributul style. CSS se poate pentru formatarea elementelor XHTML, XML SVGL.
CSS3 reprezintă un upgrade ce aduce câteva atribute noi și ajută la dezvoltarea noilor concepte în webdesign.
Unele dintre cele mai importante module noi adăugate acestui standard pentru formatarea elementelor HTML aduc un plus considerabil în dezvoltarea activităti webdesign.
Mai jos sunt prezente în listă cele mai importante module adăugate în CSS3:
Selectors
Box Model
Backgrounds and Borders
Image Values and Replaced Content
Text Effects
2D/3D Transformations
Animations
Multiple Column Layout
User Interface
Deși au apărut unele deficiențe de compatibilitate între browsere, majoritatea proprietătilor CSS3 au fost implementate cu succes în variantele browserelor noi.
2.1.3 PHP
(3) PHP este un limbaj de programare care lucrează în backend. Numele PHP provine din limbă engleză PHP: Hypertext Preprocessor. Acesta era inițial folosit pentru producerea de pagini web dinamice. în prezent se folosește înglobat în codul HTML dar și separat. începând cu versiunea 4.3 el o să poată fi folosit în CLI.
Este un limbaj de programare web open-source si server-side. Acesta vine cu versiuni pentru majoritatea serverelor si sistemelor de operare. In ziua de astazi il gasim folosit pe 20 de milioane de site-uri web si 1 milion de servere web. Limbajul PHP este disponibil sub licenta PHP.
Istoria ne spune ca initial limbajul se gasea sub numele de Personal Home Page. Initial PHP-ul a fost conceput in 1994 drept o extensie a limbajului Perl, limbaj server-side. A fost folosit pentru o serie de scopuri cum ar fi: generarea unui curriculum vitae sau umarirea numarului de utilizatori ai unui site. Dupa vara anului 1998, proiectul a luat amploare sub denumirea de PHP 3.0, denumire data de Zeev Suraski și Andi Gutmans, care mai apoi au rescris baza limbajului luand nastere Zend Engine. In mai 2000 a fost lansat PHP 4.0, ruland pe Zend Engine 1.0.
2.1.4. MySQL
(4) MySQL, produs de compania suedeza MySQL AB, distribuit sub licenta GNU, este un sistem de gestiune al bazelor de date. Un popular SGBD open-soure, la ora actuala este cheia WAMP (Windows, Apache, MySQL,PHP).
MySQL este folosit foarte des cu PHP, acestia doi formand un duo care poate fi aplicat in orice limbaj major. Cu ajutorul API-urilor, MySQL poate fi aplicat in numeroase limbaje de programare cum ar fi: C, C++, C#, Java, PHP, Python, etc.
Pentru a interactiona cu alte limbaje de programare cum ar fi ASP sau Visual Basic, bazele de date MySQL au nevoie de o interfata de tip ODBC. Insa exista si cai mult mai usoare de a folosi bazele de date, pe aceasta cale intervine .NET. Exista componente care sunt gratuite: MyVBQL.
Figura 2.1.4.1 WAMP cuprinde și MySQL (4)
Licența GNU GPL nu permite încorporarea MySQL în softuri comerciale; cei care doresc să facă acest lucru pot achiziționa, contra cost, o licență comercială de la compania producătoare, MySQL AB.
MySQL este componentă integrată a platformelor LAMP sau WAMP (Linux/Windows-Apache-MySQL-PHP/Perl/Python). MySQL ca si aplicatie web este la fel de populara ca si PHP cu care este adesea combinat, de aici si denumirea de “DUO-ul Dinamic”. În unele cărți de specialitate este precizat faptul ca MySQL este mai ușor de invățat și folosit decât multe din aplicațiile de gestiune a bazelor de date, un exemplu ar putea fi comanda de iesire : “exit” sau “quit”.
Pentru administrarea bazelor de date MySQL se poate folosi linia de comandă sau se poate descarca de pe internet o interfata grafica MySQL: Administrator sau Query Browser. Un alt instrument de management al acestor baze de date este aplicația gratuită, scrisă în PHP, phpMyAdmin.
2.1.5. WAMP
Termenul de WAMP provine de la abrevierea a trei aplicatii open source combinate cu Microsoft Windows: Windows/Apache/MySQL/PHP/Python/Perl.
(6) Apache este un server HTTP de tip open source. Apache a jucat și joacă un rol important în dezvoltarea webului, fiind folosit în prezent în circa 65.2 % din paginile web. Cuvântul apache provine de la renumitele triburi de amerindieni, apași.
Apache este un server web cu o contribuție notabilă la dezvoltatea World Wide Web-ului. Apache a fost prima alternativă viabilă la Netscape Communications Corporation, și a evoluat rapid în funcționalitate și performanță devenind un rival pentru alte servere web bazate pe Unix.
Apache este dezvoltat de o comunitate deschisă de programatori sub emblema Apache Software Foundation. Aplicația este disponibilă pentru o mare varietate de sisteme de operare incluzând Unix, FreeBSD, Linux, Solaris, Novell NetWare, Mac OS X, Microsoft Windows si OS/2.
Serverul Apache este un software gratuit și open source, acest a vrut ca inca din 1996 sa fie cel mai popular server de HTTP. Cu toate că în noiembrie 2005 a început să piardă din cota de piață, în aprilie 2008 Apache stătea încă la baza a peste 50 % din siturile web, iar în iunie 2013 a ajuns la 65.2%.
Principalul competitor al serverului Apache este Microsoft Internet Information Services (IIS), urmat de Sun Java System Web Server al companiei Sun Microsystems și multe altele, cum ar fi Zeus Web Server.
Apache este folosit de unele din cele mai mari site-uri din lume, astfel, motorul de căutare folosit de Google folosește o versiune modificată de Apache numită Google Web Server, iar proiectele Wikimedia si Wikipedia rulează tot pe un server Apache.
2.1.6 Open Source
(7) Termenul „Open Source” caracterizeaza practica de creation&development a unor produse si este folosit pentru a permite accesul userilor in vedea producerii sau dezvoltarii, permițând ca acestia să acceseze si sa lucreze la procesul de producție sau dezvoltare. “Open Source” tradus “Sursa Deschisa” este definit de către unii specialiști ca fiind un concept filozofic.
In viata reala, “open source” este aplicat in toate domeniile ce produc sau dezvolta produse, nu numai in dezvoltarea programelor software, asa cum se crede ca aceasta notiune este specifica zonei IT.
2.2. Evoluția limbajului php
(3) PHP 5
Pe 13 iulie 2004 a fost lansat PHP 5, cu Zend Engine II, ce a adus și o orientare obiect mai pronunțată și suportând mai multe caracteristici ale acestui tip de programare.
PHP 5 aduce mai multe noutăți față de versiunea 4:
Suport îmbunătățit pentru OOP
Introduce extensia PDO – PHP Data Objects, care definește o modalitate facilă și consistentă de accesare a diferitelor baze de date
Imbunătățiri de performanță
Suport îmbunătățit pentru MySQL și MSSQL
Suport nativ pentru SQLite
Suport SOAP integrat
Iteratori pentru date
Controlul erorilor prin tratarea de excepții
La sfârșitul lui 2007 doar versiunea 5.x mai era întreținută, deoarece în data de 13 iulie 2007, PHP Group a anunțat că PHP4 va fi scos din uz pe 31 decembrie 2007. Dezvoltarea la PHP 6 a început în decembrie 2007 și urma sa fie scos pentru utilizare odată cu scoaterea din uz a PHP4.
PHP 6
PHP 6 are următoarea lista de update-uri:
îmbunătățirea suportului pentru Unicode
desfiintarea pentru totdeauna funcților precum register_globals și magic_quotes, și a variabilelor in genul $HTTP_*_VARS
utilizarea lui var va ridica o anuntionare E_STRICT, iar acesta va fi un alias public
se va face suport pentru int pe 64 biți.
taguri tip ASP sunt retrase pentru totdeauna.
din distribuția principală vor face parte XMLReader, XMLWriter, Fileinfo
nu vor mai face parte din distribuția principală urmatoarele pachete: Freetype1, GD1, mime_magic
nu mai este disponibila funcția ereg()
instanțierea obiectelor prin referină (& new Obiect()) generează o eroare E_STRICT.
erorile tip E_STRICT sunt incluse în E_ALL.
adăugarea instrucțiunii goto permite salturi la un alt bloc de comenzi.
namespace, import, și goto devin cuvinte rezervate.
accesarea caracterelor într-un șir (string) se face prin operatorul []. {} se scoate din uz ( ex: $str[42] funcționează, $str{42} nu funcționează)
constantele FILE_BINARY și FILE_TEXT devin disponibile pentru folosirea în funcții de citire/scriere fișiere
foreach va suporta array multi dimensional: foreach($a as $b => list($c, $d))
pentru operatorul ternar expresia pentru valoarea true nu mai este obligatorie ($a = $s ?: ‘b’; // returns $a = $s;)
opțiunea safe_mode si opetatorul and au fost înlăturate.
funcția microtime() returnează un float.
zend.ze1_compatibility_mode a fost înlăturat.
In urma unui studiu facut de Netcraft în luna aprilie a anului 2002, folosind noua din cele 37 de milioane de domenii detine pentur cercetare in studii, PHP este in topul celor mai utilizare limbaje de programare server-side.
2.3. Fire de execuție
(7) Conceptul de fir de execuție (en: thread) este definit ca cea mai mică unitate de procesare ce ofera posibilitatea de a fi programată spre execuție de sistemul de operare. Acesta este utilizat în programare pentru a optimiza rularea programelor, ruland sectiuni diferite de cod în paralel în interiorul aceluiași proces. Adesea, aceste portiuni de cod ce alcatuiesc corpul threadurilor, nu sunt total independente și în anumite cazuri, exista posibilitatea de ca un thread să trebuiască să ramana in așteptare, pana cand se execuța instructiunile dintr-un alt thread, in scopul de a fi posibila continuarea rularii propriilor instrucțiuni. Sincronizarea threadurilor este denumirea tehnicii de mai sus, ce consta in asteptarea executiei instructiunilor unui alt thread, înainte de a continua propria execuție.
Exista o diferența intre threaduri si clasicele procese gestionare de sisteme de operare cu multitasking, diferența fiind spre deosebire de threaduri asociate unui proces, procesele nu folosesc aceasi spatiu de adresare.
De obicei procesele sunt independente, fata de threaduri, ce pot fi asociate unui singur proces. Procesele depoziteaza un număr mare de informații de stare, in timp ce threadurile dintr-un proces impart aceeași memorie, stare si orice alta resursa. Procesele pot interacționa numai prin mecanisme de comunicare interproces oferite de catre sistemul de operare (semnale, semafoare, cozi de mesaje și altele asemenea)., Threadurile comunică prin modificarea variabilelor asociate procesului și pot sa se sincronizese prin mecanismele proprii, intrucat impart același spatiu de adresare. Este mai accelerat schimbul de informație dintre threaduri decât între procese.Pentru a evita diverse probleme ce pot aparea in urma faptului ca sunt impartite unele resurse, firele de executie si procese se pot sincroniza. Fiecare fir de executie este programat sa îmbunatateasca utilizarea procesorului si are o anumita sarcina
Stările unui fir de execuție
Esentialele stări ale unui fir de execțuie sunt urmatoarele: Activ, Pregătit și Blocat. Pe langa cele enumerate mai sus, procesele mai au și starea specifică Repaus (Sleep). Dacă un proces este eliminat din memoria RAM, toate firele de execuție ale acestuia vor fi oprite, deoarece se aflau în același spațiu de memorie ca și procesul respectiv.
Schimbarea unei stări
Crearea: In momentul in care un proces este pornit, este creeat un thread pentru proces-ul respectiv, urmand ca thread respectiv sa poate crea și gestiona mai multe threaduri, acestia având pointeri spre instrucțiunile specifice fiecaruia.
Blocarea: In momentul in care un thread este in asteptarea unui alt thread, primul fiind blocat – este salvat în stivă pointerul spre el. Funcția de blocare ofera posibilitatea de a fi apelata, si din interior dar și din exterior.
Deblocarea: Un thread blocat are posibilitatea de a fi deblocat in urma unei comenzi externe.
O metoda mai putin eficienta este ca in locul blocarii/deblocarii threadurilor, acestea sa primeasca prioritati de executie. Inficienta acesteia consta in faptul ca procesorul va transmite de la un de la un thread la altul, operatie ce sa face sa se ocupe cicli de procesor, in schimb, vor fi evitate anumite greseli de programare ce prin doua sau mai threaduri vor trebui sa se aștepte între ele, asadar blocându-se procesul cu totul (deadlock).
Finalizarea: Când un thread este finalizat, memoria alocata acestuia va fi elibera.
2.4. Arhitectura si principii REST
Figura 2.4.1 – Schema arhitecturii REST
(8) Representational State Transfer (REST) reprezinta un tip de arhitectura software pentru sisteme hipermedia distribuite, precum world wide web(www). In lucrarea de doctorat scrisa de Roy Fielding, unul dintre autorii de baza a specificațiilor protocolului HTTP, si anume "Architectural Styles and the Design of Network- based Software Architectures", apare pentru prima ora termenul “REST”.
Acesta face referinta la o colecție de principii arhitecturale într-o rețea ce pune accentul pe modul de definire și in care sunt adresate resursele.REST caracterizeaza orice interfață ce transmite date prin HTTP fără un nivel adițional de mesagerie cum ar fi SOA sau folosirea sesiunilor prin cookie-uri HTTP.
Exista posibilitatea de dezvoltate a sistemelor software in acord cu stilul arhitectural REST, fara sa fie nevoie utilizam HTTP si sa folosim WWW. Urmand structura arhitectural RPC (remote procedure call), exista posibilitatea de a dezvolta software ce utilizeaza HTTP si XML, care sa nu urmeze principiile REST.
Principii REST
Resurse
Existenta resurselor reprezinta un concept esential legat de arhitectura REST. Resursa reprezinta o entitate ce permite a fi stocata intr-un calculator si permite sa fie reprezentata printr-un șir de biți: rezultatul in urmari executarii unui algoritm, o linie a unei baze de date sau chiar un document. Resursa poate fi reprezentata si prin lucruri concrete, obiecte fizice precum un fruct, un conpt abstract precum, teama, dar adesea astfel de reprezentari ale resurselor sunt sub asteptarile noastre. Exista atasat un identificator global (un URI) pentru toate resursele. Clientii si serverele, reprezentand componentele retelei, pentru a manipula resursele, comunica printr-o interfata standardizata(HTTP) si fac schimb de reprezentari ale resurselor(documentele care transportă informațiile).
Adresabilitate
Orice aplicație se poate adresabilă doar dacă contine aspecte interesante legate de setul său de date ca și resurse. Resursele sunt expuse prin URI-uri, prin urmare o aplicație este adresabilă daca expune un URI pentru orice informație folositoare. De obicei, daca aplicatia contine un set de date cu real interes, se ajunge la un număr foarte mare de URI-uri.
Adresabilitatea reprezinta o proprietate necesara unei aplicații web. Permite userilor să utilizeze aplicațiile web în moduri diferite, pe care developerii nu le-au luat in considerare. Pe baza acestui principiu, clientii pot beneficia de diverse avantaje ale acestei arhitecturi, in ceea de priveste dezvoltarea serviciilor web. Serviciile REST-RPC sunt o imbinare intre adresabilitate si modelul programării bazat pe apeluri de funcții.
Fără stare
Atunci cand oricare cerere HTTP este intampinata intr-o izolare totala, vorbim despre lipsa starii. In momentul in care un user face o cerere HTTP. In momentul in care clientul face o cerere HTTP, intrucat serverul intotdeauna nu pune baza pe cererile anterioare, clientul trebuie sa inglobeaze informatiile necesare astfel incat sa indeplineasca cererea respectiva.
Concret, putem sa consideram lipsa stării în termeni de adresabilitate. Adresabilitatea ne constrange să aratam toate informațiile folositoare ca și resursă cu un URI propriu.
Trebuie sa fixam resurse si stari posibile pe care le poate detine serverul, daca vrem sa respectam principiul lipsei starii. In cazul cererilor, nu este necesar din partea clientului sa aduca serverul intr-o anumita stare, pentru a il face pe acesta mai receptiv.
Reprezentări
In momentul in care impartim aplicația în resurse, automat se măreste zona de interacțiune cu clienții. Userii au posibilitatea de a face URI potrivit pentru a avea acces la datele de interes, dar resursele nu sunt date, acestea fiind doar conceptia arhitectului cum se pot imparti datele.
Resursa este reprezentata de informatia trimisa de un server web, sub forma de octeti, intr-un anumit format de fisier.
*******
O resursă este o sursă de reprezentări, iar o reprezentare este formată din date despre starea curentă a unei resurse.
Unele resurse sunt chiar date cum ar fi o listă de buguri deschise.
Serverul ar putea prezenta lista bugurilor deschise printr-un document XML, o pagină web sau text simplu. Valoarea vânzărilor din trimestrul al treilea-lea poate fi reprezentat numeric sau printr-un grafic. Pentru orice resursă putem alege între mai multe tipuri de reprezentări.
Interfața uniformă
În spațiul World Wide Web, sunt doar câteva acțiuni pe care le poți face cu o resursă. HTTP oferă patru metode de bază pentru cele mai comune operații:
Returnarea unei reprezentări a unei resurse: HTTP GET
Crearea unei noi resurse: HTTP PUT unui nou URI, or HTTP POST unui URI existent
Modificarea unei resurse: HTTP PUT unui URI existent
Ștergerea unei resurse: HTTP DELETE
Siguranța și idempotența
Pentru dezvoltarea unui serviciu web folosim ca interfață uniformă HTTP, astfel obținem două proprietăți folositoare si sigure, cererile GET și HEAD. Iar cererile GET, HEAD, PUT și DELETE sunt idempotente.
O cerere GET sau HEAD se face pentru a citi anumite date, nu pentru a schimba ceva pe server. Clientul poate face o cerere GET sau HEAD de zece ori, iar resursa se comportă de parcă nu s-ar fi făcut nici o cerere. Faptul că o cerere este sigură inseamna că doar se returnează o reprezentare a resursei. Un client poate avea posibilitatea de a trimite cereri GET și HEAD asupra unui URI, fără a se întâmpla ceva nedorit.
Idempotența este un pic mai greu de perceput decât siguranța. Ideea vine din matematică, unde o operație este idempotentă dacă are același efect chiar dacă o aplici de mai multe ori. Multiplicarea unui număr cu zero este idempotentă: 2 ×0 ×0 ×0 este acelasi lucru cu 2 ×0. Prin analogie, o operație asupra unei resurse este idempotentă dacă, o singură cerere este similara cu o serie de cereri identice facute. A doua cerere și următoarele lasă resursa în aceeași stare pe care o avea după prima cerere.
2.5 JSON
JSON reprezinta o prescurtare din limba engleză pentru JavaScript Object Notation, și este un format de reprezentare și interschimb de date între aplicații informatice. Este un format text folosit pentru reprezentarea obiectelor și a altor structuri de date și este ustilizat de cele mai multe ori pentru a trimite date structurate prin rețea, procesul numindu-se serializare.
Formatul JSON a fost standardizat prin RFC 4627, creat fiind de Douglas Crockford. Application/json reprezinta tipul de media ce trebuie să îl transmită un document JSON. Extensia fișierelor JSON este .json. JSON este alternativa mai simplă, mai facilă a limbajul XML. Frumusetea formatului JSON vine din faptul că este un subgrup al limbajului JavaScript.
Datele dintr-un format JSON pot fi prelucrate intr-un mod mai simplu in JavaScript, iar PHP are incluse functii speciale pentru lucrul cu JSON (precum json_encode() si json_decode()). Multumita acestor caracteristici, JSON este tot mai ales si utilizat in programele cu transfer de date intre aplicatii, mai ales in tehnologia Ajax, tinand locul de cele mai multe ori formatului XML.
JSON
3. Arhitectura aplicației
Deoarece am dezvoltat aceasta aplicatie respectand arhitectura REST, in acest capitol o sa va prezint arhitectura aplicatiei din cele doua perspective.
Perspectiva 1: Arhitectura Aplicatiei – Server Side (Figura 3.1)
Perspectiva 2: Arhitectura aplicatiei – Web Client side (Figura 3.2)
Server
Partea de server este reprezentată de aplicația scrisa in PHP care comunică cu o bază de date MySQL. Deoarece folosesc WAMP (Apache Server), accesarea bazei de date se face cu ajutorul interfeței phpMyAdmin. Alegerea unui sistem de gestionare a bazelor de date cu care pot lucra din PHP nu a fost una foarte grea, deoarece cele două tehnologii au fost create pentru a lucra impreună.
Figura 3.1. Arhitectura Aplicației – Server Side
Client
Pe partea de client am folosit Angular JS, un framework de javascript care lucrează cu servicii web de tip REST. Acest tip de servicii se numește RESTfull. Framework-ul este construit pe modelul arhitectural MVVM (Model -> View -> ViewModel) și cu ajutorul lui se pot cere date de la server folosind protocolul HTTP. După primirea răspunsului în format JSON, aplicația de AngularJS parsează datele cu ajutorul unui Controller și le afișează în pagina web.
Figura 3.2. Arhitectura Aplicației – Web Client Side
Model-View-Viewmodel (MVVM) este un design model utilizat în ingineria software. A fost creat ca o metodă de particularizare a modelului de prezentare creat de Martin Fowler. Asemănător cu modelul MVC adică Model-View-Controller, acesta ajută în dezvoltarea interfeței cu utilizatorii a platformelor moderne web: HTML5, Windows Presentation Foundation și Silverlight.
Acesta este alcătuit din trei părti și anume: un Model, un View și un ViewModel. Structura MVVM este un upgrade al structurii MVC, fiind foarte asemănătoare,însă ea conferă un plus de ușurință în utilizarea XAML și WPF (Windows Presentation Foundation) datorită cuplării datelor cât mai aproape de Model.
Modelul se referă efectiv la datele care se prelucrează dar și la accesarea acestora. într-un model se pot accesa obiecte care citesc informații dintr-o bază de date. View-urile se referă la partea vizuală, la elementele interfeței grafice: butoane, grafice, ferestre și altele. în cazul MVVM un designer poate lucra la partea grafica a aplicației modificând doar View-ul, iar logica din spatele aplicației rămâne neafectată. ViewModel este un model pentru View, acesta realizând și binding-ul datelor între View și Model. ViewModel realizează schimbul de informații între formatul Model și formatul View și păsarea de comenzi dinspre View în Model. ViewMode tratează proprietățile, comenzile și abstractizarile public, iar datele din ViewModel sunt la un nivel conceptual spre deosebire de cele din Model.
ViewModel spre deosebire de View, are sens bidirecțional de comunicare, acesta comunicând și cu View și cu Model, cel din urmă comunicând doar cu ViewModel. Dintre cele trei menționate, doar Model interacționează cu bază de date. O diagramă a acestul model puteți vedea în Figura 3.3 de mai jos.
Figura 3.3 Modelul Arhitectural MVVM
Acest model este foarte des folosit datorită funcționalităților lui, două dintre ele fiind Data Template-urile și Resursele de Sistem. Template-urile folosesc View asupra unui obiect din ViewModel.
De-a lungul timpului AngularJS a fost apropiat de o versiune client-side a MVC-ului, dar în urma multor îmbunătățiri acesta este acum mai apropiat de MVVM. $Scope poate fi asociat cu un ViewModel introdus printr-un Controller.
3.1 Schema conceptuală a bazei de date:
3.2. Data-binding in HTML
Termenul de data binding se refer la sincronizarea datelor dintre view și model. în majoritatea cazurilor sistemul de templating funcționează într-un singur sens, adică propagarea datelor se face de la model la view, însă în angular există conceputul de "two-way data binding" ceea ce înseamnă că în aplicațiile AngularJS datele sunt sincronizate automat între model și view. Modul în care implementează Angular “legatura de date” te lasă să tratezi modelul că “singura sursă de adevar” din aplicație. View-ul este proiecția modelului în orice moment. Când modelul se schimbă, view-ul reflectă schimbarea, și vice-versa. Deoarece view-ul este proiecția modelului, controllerul poate fi tratat separat, ceea ce face ca aplicația să fie mult mai ușor de testat cu ajutorul testelor unitare, acest lucru fiind un avantaj destul de puternic în față altor frameworkuri.
3.2.1 Extinderea limbajului HTML cu ajutorul directivelor
AngularJs introduce conceptul de directivă, aceasta nu este nimic altceva decât un tag care exinde conceptul de HTML. O directivă este un “tag/atribut" html propriu. Ele sunt cele mai importante elemente din framework, acesta bazându-se în totalitate pe directive. Toate directivele puse la dispoziție de angular încep cu cuvântul cheie "ng", iar exemple sunt o mulțime (ng-app, ng-controller, ng-model, ng-click etc).
Mai jos sunt prezentate cateva exemple de directive:
<input ng-model="foo">
<div ng-controller="Controller">
<my-dir></my-dir>
<svg>
<circle ng-attr-cx="{ { valoare } }"></circle>
</svg>
3.2.2. $scope
Scopul este un storage de informații preluate de la model ca mai târziu informația să poată fi utilizată de controlere, directive, etc. Dacă va întrebați de ce e așa de important acest "$scope", ei bine acesta are propriul sau patern și anume observer, cu alte cuvine când o proprietate a acestuia a fost schimbată întregul obiect este înștiințat. De aici și funcționalități ca modificarea unui input care duce la schimbare unei întregi interfețe "în timp real". Scopurile sunt ierarhice, cu alte cuvine un scop copil are toate informațiile din părinte, însă în angular nu e obligatoru ca scopurile să fie serializate, ele pot fi și izolate.
3.3 CSS Frameworks
Aceste framework-uri conțin stiluri predefinite: stiluri și aspecte de tabele, butoane, panouri și toate acestea fiind foarte ușor de modificat. Aceste funcționalități te ajută să nu pleci de la 0 cu un proiect, acestea te ajută cu o bază de utilităti foarte ușor integrabile în orice aplicație.
3.3.1 Bootstrap
Pentru folosirea Bootstrap va trebui să descărcăm arhiva acestui framework, aceasta poate fi găsită pe site-ul propriilor dezvoltatori. înăuntru putem găsi trei foldere care conțin fișiere pentru pictograme, pentru stilizarea paginilor. Acest framework ajută foarte mult încă de la începutul aplicației, prin organizarea cât și stilizarea elementelor din pagină, a textului, tabelelor și altor elemente.
Site-urile concepute la nivel înalt folosesc acest framework, acesta fiind mereu up to date cu tot ce înseamnă Dezvoltare Web. Platforma de unde se poate procură Bootstrap este: http://getbootstrap.com.
4.Prezentarea aplicației
Acest capitolul cuprinde informatii despre functionalitatea aplicatiei cat si detalii tehnice care au stat la baza implementarii functionalitatilor respective.
4.1 Implementarea unui ciclu request – response
Implementarea componentei de login:
HTML
Pentru inceput, acesta este codul HTML al functiei login. In pagina sunt prezente cele doua text box input-uri pentru email si parola, carora le este alocat un model. La apasarea butonului de login, este apelata functia login() din controller trimitind ca parametrii obiectul creat de cele doua modele pentru email si parola.
Login Angular Controller
Actiune se muta in controller. Odata cu apasarea tastei de login, se apeleaza funcția din $scope.login care la randul ei apeleaza o functie din loginService.
User.php
Acesta este fisierul php care contine clasa User. In functia publica login se realizează interogarea bazei de date pentru verificarea userului și a parolei. Tot din această funcție se transmite și mesajul de eroare sau succes.
4.2 Logica interfeței grafice
Logica interfetei grafice a fost construita astfel incat sa fie usor utilizabila de catre user, oricat de putin familiarizat ar fi acesta cu aplicatia.
Voi prezenta in continuare functionalitatile aplicatiei.
Login & Home
Platforma este accessibila nu doar useri-lor inregistrati ci si celor care nu sunt inregistrati. Prima pagina a aplicatiei este reprezentata de partea de Inregistrare sau Login si partea in care sunt expuse Evenimentele. Logarea se face pe baza de e-mail si parola.
2. Dashboard
Dashboard-ul este fereastra unde sunt afișate evenimentele care trebuiesc aprobate, graficele din care reies numarul de proiecte pe categorii, pe organizații. Trei submeniuri, unul pentru evenimente, unul pentru utilizatori și altul pentru organizații.
3. Adăugarea unui eveniment
Orice moderator al unei asociații poate adăuga, salva ca draft și publica evenimente.
Pentru crearea unui eveniment trebuiesc introduse: Numele evenimentului, asociația din care face parte, domeniul de interes, data și ora in care acesta se va desfașura precum și locația acestuia.
In cazul in care unul sau mai multe câmpuri este lasat gol, o eroare ne va atenționa.
Dupa crearea evenimentului, este nevoie ca acesta sa fie aprobat de catre administrator din meniul Evenimente,
4. Feedback
De asemenea aplicația are in componența ei funcția de feedback, care iți rezervă dreptul de a-ți exprima opinia despre un eveniment sau mai multe. Bineințeles, poți opta sa lași feedback anonim sau semnat.
Le fel ca la crearea de evenimente, un admin trebuie să iti accepte feedback-ul. Apoi acesta va apărea pe pagina evenimentului.
5. Adaugarea utilizatorilor
Aplicația conține o funcție de adaugat utilizator. Un utilizator moderator sau admin poate adăuga alt utilizator pe funcția de moderator, insă un moderator sau simplu utilizator nu poate adăuga pe funcția de admin nici un alt utilizator. Alte funcții de utilizatori sunt: mobile și business.
Ștergerea și editarea drepturilor de utilizator. Ca administrator poti sterge utilizatori si edita drepturi din submeniul Utilizatori.
6. Functii ale administratorului
De asemenea, ca admin poti sterge, salva in draft, edita, aproba si publica evenimente.
5. Concluzii
Cu ocazia creării platformei am aprofundat studiul despre noile tehnologii informatice. Această platformă are un design atractiv și o structură organizată bine, poate fi ușor accesată și pot fi găsite ușor toate informațiile pe care le caută cei interesați de evenimentele/proiectele care au loc. Aici pot fi găsite informații, chiar și o arhivă a evenimentelor din anii precedenți, descriere, locații si a programului.
Având în vedere că platforma este destinată spre a ușura informarea studenților, pentru a afla toți oricând doresc detalii despre evenimentele la care pot participa, am în vedere pentru dezvoltarea acesteia în următorii 2 ani următoarele:
aplicația să poată fi accesată și utilizată și de pe telefoanele mobile (android, ios și windows phone)
introducerea unui sistem de recomandare pe bază tipului de proiecte preferate de useri, dar și a orașelor din care fac parte, dar și a faculatii/domeniului ales ( de exemplu, pentru un proiect pe antreprenoriat tehnologic național, grupul în mod special vizat este alcătuit din userii ce selectează că domenii de interes informatică, bussines, matematică, inginerie etc.);
posibilitatea de a se înregistra ca participant la un eveniment, iar alți utilizatori cu cont sa aiba posibilitatea sa vadă toți participanții înregistrați la eveniment;
introducerea unui nou rol “bussines” ( se va creea un cont cu parolă pentru compania x, iar aceasta va putea vedea câți utilizatori folosesc platforma și vor putea să creeze evenimente organizate în cadrul companiei).
dezvoltarea unui design mai atractiv și interactiv pentru aplicație și introducerea animațiilor
Inițial pentu această platformă, am vrut să mai adaug și alte puncte, dar la o analiză mai atentă a acestora, am ajuns la concluzia că nu sunt necesare. Aceste sunt:
Am vrut să inserez un chat; acesta nu ar fi fost relevant întrucât scopul principal al platformei este de a îngloba evenimente, iar userii vor folosi Sniff Events pentru găsi evenimente, pentru comunicare folosind telefoanele mobile sau chat-urile unor platfome cunoscute precum Facebook, WhatsUp etc.;
Am vrut să inserez un forum unde userii să pună întrebări, iar la acestea putând să răspundă orice alt ușer; întrucât am introdus câmpuri pentru toate datele esențiale participării la un poriect și noțiunea de feedback(unde utilizatorii pot trimite impresii despre eveniment, iar ceilalți ușeri pot vizualiza feedback-urile aprobate), introducerea unui forum, ar fi irelevantă.
Bibliografie
HTML5 – http://ro.wikipedia.org/wiki/HTML5
CSS3 – http://ro.wikipedia.org/wiki/Cascading_Style_Sheets
PHP – http://ro.wikipedia.org/wiki/PHP
MySQL – http://ro.wikipedia.org/wiki/MySQL
Figura 2.1.4.1 – http://ro.wikipedia.org/wiki/MySQL#/media/File:LAMP_software_bundle.svg
Apache Server – http://ro.wikipedia.org/wiki/Apache_%28server%29
Thread-uri – http://ro.wikipedia.org/wiki/Fir_de_execu%C8%9Bie
Servicii web bazate pe arhitectura REST – http://profs.info.uaic.ro/~alaiba/mw/index.php?title=Servicii_web_bazate_pe_arhitectura_REST
JSON – https://ro.wikipedia.org/wiki/JSON
Fundamentele managementului de proiect – suport de curs, FDSC, 2005
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: Platforma Web Pentru Studenti (ID: 150124)
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.
