Serviciu Web de Agregare Automata a Informatiilor
Cuprins
1. Introducere
1.1 Motivația alegerii temei
Trăim în era informației. În prezent majoritatea informațiilor sunt prezentate și transmise doar în forma digitală. Cantitatea informației noi generate zilnic este enormă și este în continuă creștere. Valoarea informațiilor noi poate să fie foarte imporantă și accesul rapid la aceste informații poate să constituie o necesitate imediată.
Timpul disponibil al oamenilor scade continuu iar volumul de lucru este în continuă creștere. Direcția în care evoluează timpul disponibil în care oamenii trebuie să proceseze volume mari de informații potențial importante duce la o previzibilă incapacitate de îndeplinire a sarcinii de procesare.
Din acest fapt rezultă că metodele de rezolvare a sarcinilor legate de procesare a volumelor mari de informații noi potențial importante trebuiesc reorganizate în metode care fac o posibilă de îndeplinit aceste sarcini valoroase. După analiza metodelor inițiale și evaluarea rezultatelor analizelor, concluziile care constituie elementele vitale ale reorganizării metodelor constă în următoarele fapte:
scurtarea duratei timpului de colectare a informațiilor prin accelerarea vitezei ce preluare
filtrarea inițială rapidă a informațiilor adunate
procesarea și marcarea informațiilor cheie
Pentru a îndeplini sarcinile de procesare a informațiilor prin metodele optimizate sintetizate, cu mulți ani în urma au fost dezvoltate sisteme inteligente denumite agregatoare, care au avut aspecte de bază ideile compuse și enumerate anterior.
1.2 Tema
Agregatoarele sunt sisteme care au ca și scop adunarea, procesarea și stocarea volumelor mari de informații. Aceste sisteme analizează și sortează informațiile adunate și procesate care au fost stocate anterior. Rezulatele finale sunt stocate și pregătite pentru transmitere sau preluarea și procesarea finală de către utilizatorii finali.
Informațiile alese pentru adunare și stocare au fost adresele de accesare și proprietățile acestora, care fac parte din categoria știrilor, articolelor și evenimentelor site-urilor și portalelor de știri, evenimente și bloguri. Acestea au fost definite în interiorul sistemului. Primul pas fiind deci adunarea și stocarea informațiilor în mod automat și programat periodical.
Pentru adresarea separată a diferitor segmente de public cu interese specifice, informațiile sunt redate pe mai multe portale speciale adresate persoanelor care fac parte din segmentul specific de interese. Astfel soluția găsită pentru posibilitatea realizării unui astfel de sistem combinat a fost folosirea unei arhitecturi felxibile de sisteme de portale.
Pentru a fi posibilă accesarea, marcarea și păstrarea acestor acțiuni și marcaje ale utilizatorii sistemului, era necesară implementarea unei soluții de gestionare și interacțiune nominală de utilizatori.
Pentru posibilitatea și disponibilitatea de accesare de pe mai multe dispozitive de calcul și de variațiunile acestora, cum ar fi calculatoarele, laptopurile, tabletele sau telefoanele mobile, interfața finală a sistemului a fost implementată cu tehnologii și modalități care permit o felxibilitate mare pentru a face față compatibilității necesare de funcționare în aceeași mod pe dispozitive diferite. Totodată această implementare, care face față utilizării compatibile, poate duce și la posibilitatea de utilizare și în situații de mobilitate sau în situații cu acces limitat la resursele disponibile.
1.3 Obiectivele dorite
Conceptele și elementele practice a sarcinilor sistemului de agregare automată a informațiilor sunt multe și specializate. Însă după analiza acestor sarcini pot fi concluzionate un set de obiective care prin necesitate pot fi într-un final sintetizate în ordinea următoare:
colectarea diferitor informații de știri, articole sau evenimente de la diferite frunizori prin diferitele metode puse la dispoziție de aceștia
automatizarea colectării informațiilor menționate și programarea acestei acțiuni pe perioadele definite
stocarea, filtrarea și gestionarea volumelor mari de informații colectate în urma adunării automate
permiterea redării, interacțiunii, marcării și stocării acestei acțiuni de către sistem a utilizatorilor nominali
păstrarea compatibilității pentru interacțiunea și folosirea optimă a sistemului de către utilizatorii pe o varietate largă de dispozitive de calcul disponibile
administrarea sistemului complet printr-o interfață de administrare specială accesibilă exclusiv doar prin metode ce sunt în concordanță cu normele de securitate a datelor
optimizarea sistemului pentru a mări performanțele acestuia și a păstra un nivel mare de satisfacție și utilizare succesivă a utilizatorilor
dispunerea sistemului pe un server prin care având toate resursele necesare disponibile, acesta să fie deschisă pentru utilizarea publică prin internet
Scopul final este elaborarea unui sistem care să asigure un serviciu complet de agregare automată completă a informațiilor precum sunt știrile, articolele sau evenimentele, în funcție de preferințele utilizatorilor. Acest serviciu să fie accesibil utilizării publice prin internet pentru orice utilizator interesat de serviciile și posibilitățile oferite.
Avantajul ce oferă folosirea acestui sistem este câștigul de timp și energie salvată, sistemul preluând mulți pași minore ale utilizatorilor și reducând volumul acestora prin folosirea tehnologiilor implementate și combinate.
2. Tehnologii folosite în realizarea aplicației
Acest proiect are ca și scop dezvoltarea unei servicii de internet, care să servească utilizatorii în mod automat și cu o interfață dinamică. Pentru a îndeplini aceste obiective, a fost folosită o combinație creativă între tehnologiile HTML, CSS, JavaScript, PHP, MySQL și RSS.
2.1. HTML
HTML este limbajul predominant utilizat în crearea paginilor web. „Hypertext” se referă la faptul că textul obișnuit este îmbogățit cu caracteristici suplimentare, cum ar fi formatarea textului, adăugarea de imagini, conținutul multimedia sau legături cu alte documente. Acesta este o metodă de marcare destinată prezentării documentelor text pe o singură pagină, utilizând un software de redare specializat, numit agent utilizator HTML, cel mai bun exemplu de astfel de software fiind browserul web. Acesta furnizează mijloacele prin care conținutul unui document poate fi adnotat cu diverse tipuri de metadate și indicații de redare.
HTML este acronimul pentru Hyper Text Mark-up Language și este limbajul care stă la baza structurii de bază a paginilor web. Paginile HTML sunt formate din etichete sau tag-uri și au extensia .html sau .htm. În marea lor majoritate aceste etichete sunt pereche, una de deschidere <eticheta> și alta de închidere </eticheta>, mai există și cazuri în care nu se închid, atunci se folosește <eticheta /> browserul interpretează aceste etichete afișând rezultatul pe ecran. HTML-ul nu este un limbaj case sensitiv (nu face deosebirea între litere mici și mari). Pagina principală a unui domeniu este fișierul index.html respectiv index.htm. Această pagină este setată a fi afișată automat la vizitarea unui domeniu. [1]
„Markup” este procesul prin care textului simplu îi sunt adăugate caracteristici suplimentare. Fiecare simbol de marcare (markup) este utilizat pentru a specifica browser-ului cum să prezinte informația reprezentată de textul simplu. Fiind un limbaj independent de platformă, relativ structurat și având facilitatea de a realiza legături cu alte documente, HTML se dovedește de a fi un limbaj foarte bun pentru reprezentarea documentelor pe internet. Documentele HTML sunt documente în format de text simplu și prin urmare pot fi create cu orice editor de texte. Au fost dezvoltate convertoare care permit formatarea HTML al documentelor generate (și formatate) cu alte editoare. Evident conversiile nu pot să păstreze decât parțial formatările anterioare deoarece limbajul HTML este încă incomplet. HTML este construit din etichete numite taguri, care sunt delimitate la început de „<” și la final de „>”. HTML-ul poate să descrie, până la un punct, înfățișarea și semantica unui document, dar poate de asemenea să și includă limbaje de scripting care afectează comportamentul browsere-lor web sau ale altor procesoare HTML. Elementele de marcare (markup) sunt construite din următoarele entități: elemente, atribute, tipuri de date și referințe caracter.
Pentru elaborarea proiectului a fost ales folosirea limbajului HTML5 datorită avantajelor pe care acesta le oferă față de versiunile anterioare. Totodată s-a dorit și folosirea celor mai noi tehnologii existente pentru a oferi cea mai bună compatibilitate la sinergia cu celelalte tehnologii folosite, cum ar fi CSS3, JavaScript și PHP.
Avantajele folosirii tehnolgiei HTML5 constituie printre altele elementele noi introduse prin urma cercetării și evaluării nevoilor utilizatorilor și posibilităților tehnice, de care acestea dispun, care contribuie cu mult la ridicarea performanțelor și satisfacției utilizatorilor finali. Aceste elemente sunt de exemplu tagurile de <header>, <footer>, <article>, <section> și elementele de navigare precum <nav>. Alte atribute ale elementelor dau posibilitate de exemplu la standardizarea conținutului prin folosirea recomandăriilor stabilite de comunitatea de standardizare structurală, prin schemele standardizate, pe care acesta le creează, editează, întreține și le pune accesibile prin http://www.schema.org.
Elementele noi din HTML5 care au fost folosite și menționate anterior mai consituie un mare avantaj la indexarea conținutului paginilor de către motoarele de căutare. Motoarele de căutare adună tot conținutul de pe paginile accesibile, le stochează și le ordonează după conținutul acestuia folosind algoritmi puternici de o complexitate foarte ridicată. Aceste pagini indexate individuale la urmă primesc o valoare. Toate paginile accesibile prin internet indexate de motoarele de căutare, care corespund criteriilor de căutare a utilizatorilor, sunt afișate în ordinea descrescătoare a valorilor obținute în urma evaluării. Portivit informațiilor publicate de companiile deținătoare a celor mai mari motoare de căutare, algoritmii de căutare folosesc în mare parte și căutarea în contextul semantic al conținutului. Căutarea semantică înseamnă faptul că se caută și prin familiile lexicale și sinonimile cunvintelor conținutului indexat. Elementele acestora contribuie la avantajele căutării semantice prin despărțirea și secționarea conținutului de pe paginile indexate. Acesta inseamnă practic că sunt separate contextual secvențele de informații, de exemplu grupul de navigare față de grupul de conținut. Astfel prioritizând valoarea informațiilor și a secvențelor de conținut.
Unul dintre marile avantaje ale folosirii limbajului HTML este structura dinamică a paginilor, care se pot manipula prin documentele și seturile de stiluri din fișierele CSS. Împreună, documentele HTML și documentele CSS alcătuiesc o interfață dinamică și funcțională din punct de vedere a flexibilității de afișare și interacționare a întregii platforme. Această dinamică practică inseamnă concret că interfața portalurilor se afișează automat compatibil cu majoritatea echipamentelor de calcul care au instalate și rulează browsere, cum ar fi calculatoarele, laptopurile, tabletele sau telefoanele mobile.
2.2. CSS
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> și/sau atributul style. Evaluarea acestora are loc în felul următor:
prima dată se aplică stilurile specificate implicit (“inline styles”, prin atributul style)
se aplică stilurile specificate în partea de <head> al documentului (“internal styles”, prin elementul <style>)
se aplică regulile din fișiere externe incluse (fișiere cu extensia .css în cele mai multe cazuri, “external style sheets”).
Din procesul de evaluare (“rendering”) se rezumă că acesta se poate accelera mult prin eliminarea primelor două etape, folosind numai fișierele externe pentru definirea stilurilor. În acest fel, lângă accelerarea procesului de rendering, se poate separa cât mai bine partea de informație (“data”, HTML în cazul acesta) de la informație legată de apariția acestora (“metadata”, informație despre informație, CSS în cazul respectiv), ideea originală a introducerii de Cascading Style Sheets. [2]
Cascading Style Sheets (CSS) a apărut ca o soluție propusă de W3C (World Wide Web Consortium – comunitate online fondată de inventatorul web-ului) pentru rezolvarea unei probleme. În versiunea 3.2 a HTML au apărut tag-urile pentru font și culoare iar acest lucru a creat mari probleme companiilor care aveau deja site-uri destul de voluminoase. Modificarea tuturor paginilor era un proces de durată și destul de costisitor. Pentru a rezolva această problemă, W3C a propus crearea unor fișiere externe care să conțină proprietățile atașate tag-urilor HTML – fișierele CSS. Folosirea unui singur fișier CSS pentru setarea proprietăților mai multor tag-uri HTML din pagini diferite a rezolvat problema introdusă de tag-urile pentru font și culoare. Începând cu HTML 4.0 acest lucru a fost posibil. În momentul acesta toate browserele suportă folosirea fișierelor CSS. Pe scurt CSS-ul definește modul în care sunt afișate tag-urile HTML în cadrul paginilor web. [3]
CSS-ul este gândit să aibă o sintaxă relativ simplă. O "instrucțiune" CSS este alcătuită din 2 elemente: un selector și lista de declarații cuprinsă între acolade. Declarațiile, la rândul lor, sunt alcătuite din 2 elemente: o proprietate și o valoare asociată proprietății. Declarațiile se separă prin punct și virgulă.
În cazul ultimei declarații, folosirea punctului și virgulei la sfârșit nu este absolut necesară dar este recomandată pentru a evita problemele generate de editarea ulterioară a documentului.
Stilurile HTML pot fi aplicate într-o pagină web în trei moduri:
Încapsulate (embedded): stilurile sunt incluse în documentul asupra căruia se aplică, și anume în secțiunea <head> a documentului. Prin includerea lor în antetul documentului, stilurile rămân invizibile pentru vizitatorul paginii.
Legate (linked): stilurile sunt definite în fișiere separate de documentul HTML. Documentul face apel la foaia de stiluri prin intermediul etichetei <link>. Folosirea acestui tip de stiluri face posibilă utilizarea aceleiași foi de stil pentru documente diferite. De asemenea, este posibilă aplicarea mai multor foi de stiluri pentru același document.
In-line: stilurile sunt incluse ca atribute în cadrul etichetelor HTML din document. Aceasta înseamnă că ele vor afecta doar elementul asupra căruia sunt aplicate. Este o modalitate mai puțin utilizată deoarece contrazice principiul general al stilurilor, acela de a simplifica și de a face mai lizibil codul documentului HTML.
Sintaxa definițiilor de stil este, în general, aceeași, indiferent de modul cum sunt ele aplicate. Cele trei tipuri de stiluri pot fi, de asemenea, combinate în cadrul aceluiași document. Relațiile dintre diferitele tipuri de stiluri realizează efectul de cascadă care dă numele acestei metode.
Stiluri încapsulate
Crearea unui astfel de stil se realizează folosind eticheta <style> </style>. Eticheta <style> este o etichetă container, deci este obligatorie prezența etichetei de închidere </style>. Între cele două etichete se introduc definițiile de stil. Eticheta de stil este plasată în antetul documentului adică în secțiunea <head>.
Stiluri legate – foi de stiluri externe
Stilurile incluse în pagină se aplică elementelor prezente în respectivul document HTML, reducând dimensiunea codului și efortul de a defini fiecare element în parte. Această idee se poate extinde la nivelul mai multor documente care pot beneficia, toate, de aceleași stiluri, reunite într-o foaie de stiluri externă.
Avantajul folosirii foilor de stiluri externe este dublu. Pe de-o parte ele se pot aplica la nivelul mai multor documente HTML, realizând astfel o legătură de stil între ele, lucru deosebit de util la construirea paginilor web. Pe de altă parte, același document poate folosi foi de stiluri diferite, oferind vizitatorului posibilitatea de a opta pentru unul sau altul dintre ele, în funcție de propriile preferințe.
O foaie de stiluri este un fișier text care conține regulile de stil definite în aceeași manieră folosită la stilurile incluse în pagină. Odată creată o foaie de stiluri, ea trebuie salvată cu extensia .css. Aceste fișiere de stiluri pot fi stocate oriunde începând de la orice director separat care face parte din proiect sau în același director dar și pe orice alt domeniu sau server extern de găzduire.
Stiluri in-line
Stilurile in-line sunt salvate chiar din corpul documentelor HTML, față de stilurile încapsulate și de foile de stiluri externe. În această variantă ele se aplică prin folosirea atributului style în asociere cu etichetele HTML. Aceste definiri se aplică numai asupra elementelor incluse între etichetele care au asociat atributul style. Utilitatea stilurilor in-line este aceea că fiind definite chiar în cuprinsul documentului, definițiile lor sunt mai prioritare decât cele din stilurile încapsulate sau externe. În felul acesta, dacă într-un document avem un anumit element particular căruia dorim să-i dăm un alt stil decât cel prevăzut în foaia de stil externă, putem aplica acelui element un stil in-line care se va referi strict la el.
2.3. JavaScript
JavaScript este un limbaj de programare orientat pe obiecte, care ne ajută să oferim paginilor un caracter mai dinamic și interactiv.
JavaScript a fost dezvoltat de Netscape Corporation pentru a fi utilizat în browserul Netscape Navigator. Un script JavaScript poate fi plasat direct în pagina web, fiind executat de browser împreună cu documentul web care-l conține. JavaScript este un limbaj interpretat, ca și Perl, care vine inclus în browserele moderne. Codul sursă poate fi inclus în pagina web sau poate fi pus în fișiere separate la care se fac referiri din paginile aplicațiilor web. [4]
Scripturile JavaScript pot fi incluse în pagina web în două moduri:
prin intermediul etichetei <script> </script>
prin intermediul unei proceduri eveniment
Pe orice pagină web este foarte simplu să includem în document orice script dorim prin intermediul etichetei <script>.
O altă modalitate de a include un script în pagină este salvarea acestuia ca și un fișier extern și apelarea sa prin intermediul atributului src al etichetei <script>.
Scripturile integrate în cadrul paginilor web sunt evaluate după ce încărcarea paginii s-a încheiat, dar înainte ca aceasta să fie afișată. Pe de altă parte, scripturile stocate ca și fișiere separate externe sunt evaluate înaintea tuturor scripturilor in-line (adică a celor incluse în pagină). Funcțiile definite în cadrul scripturilor nu sunt executate automat la încărcarea paginilor, ci abia atunci când acestea sunt apelate, fie prin eticheta <script> fie printr-o procedură eveniment.
Motivul este faptul că există browsere care nu recunosc și nu pot executa scripturile JavaScript. Dacă un document web care conține cod JavaScript este încărcat într-un asemenea browser, în loc ca scriptul să fie executat, este afișat în pagină întregul cod, ceea ce nu este de dorit. Așa că după cum se știe, comentariile fiind ignorate de browser, astfel ca includerea codului JavaScript între etichetele de comentariu va duce la ignorarea acestei părți a documentului. Excepție fac browserele care recunosc JavaScript și care vor identifica prezența JavaScript și vor executa scriptul.
Cea mai des întâlnită utilizare a JavaScript este în scriptarea paginilor web. Programatorii web pot îngloba în paginile HTML script-uri pentru diverse activități cum ar fi verificarea datelor introduse de utilizatori sau crearea de meniuri și alte efecte animate. Browserele rețin în memorie o reprezentare a unei pagini web sub forma unui arbore de obiecte și pun la dispoziție acestor obiecte script-urilor JavaScript, care le pot citi și manipula. Arborele de obiecte poartă numele de Document Object Model sau DOM. Există un standard W3C pentru DOM-ul pe care trebuie să îl pună la dispoziție un browser, ceea ce oferă premiza scrierii de script-uri portabile, care să funcționeze pe toate browserele. În practică, însă, standardul W3C pentru DOM este incomplet implementat. Deși tendința browserelor este de a se alinia standardului W3C, unele din acestea încă prezintă incompatibilități majore, cum este cazul Internet Explorer.
O tehnică de construire a paginilor web tot mai întâlnită în ultimul timp este AJAX, abreviere de la „Asynchronous JavaScript and XML”. Această tehnică constă în executarea de cereri HTTP în fundal, fără a reîncărca întreaga pagină web și actualizarea doar a anumitor porțiuni ale paginii, prin manipularea DOM-ului documentului. Tehnica AJAX permite construirea unor interfețe web cu timp de răspuns mic, întrucât operația (costisitoare de timp) de încărcare a unei pagini complete HTML este în mare parte eliminată.
jQuery este o platformă de dezvoltare JavaScript, concepută pentru a ușura și îmbunătăți procese precum traversarea arborelui DOM în HTML, managementul inter-browser al evenimentelor, animații și cereri tip AJAX. jQuery a fost gândit să fie cât mai mic posibil, disponibil în toate versiunile de browsere importante existente și să respecte filosofia "Unobtrusive JavaScript". [5]
jQuery se poate folosi pentru a rezolva o varietate largă de cerințe și probleme specifice programării web:
selecții de elemente în arborele DOM folosind propriul motor de selecții open source Sizzle, un proiect născut din jQuery
parcurgere și modificarea arborelui DOM (incluzând suport pentru selectori CSS 3 și XPath simpli)
înregistrarea și modificarea evenimentelor din browser
manipularea elementelor CSS
efecte și animații
cereri tip AJAX
utilități – versiunea browser-ului, funcția each
Plugin-urile sau extensiile sunt unele dintre cele mai interesante aspecte ale jQuery. Arhitectura sa permite programatorilor să dezvolte subaplicații bazate pe biblioteca principală care extind funcțiile de bază jQuery cu funcții specifice plugin-ului. În acest fel biblioteca principală poate ocupa foarte puțin spațiu, iar extensiile necesare în anumite pagini web pot fi încărcate la cerere, doar când este nevoie de ele. Există un set de extensii principale, numit jQuery UI (jQuery User Interface). jQuery UI oferă un set de extensii pentru interactivitatea de bază, efecte mai complexe decât cele din biblioteca de bază și teme de culori. Avantajul jQuery UI față de alte extensii este că dezvoltarea și testarea acestor componente se face în paralel cu dezvoltarea bibliotecii principale, minimizând riscul de incompatibilitate
Pentru aplicația a fost folosită JavaScript, librăria jQuery și librăria jQuery UI.Cei din urmă au fost implementate pentru a oferi dinamică și interacțiune interfeței utilizator. Acesta oferă compatibilitate AJAX între diferite browsere și la manipularea anumitor elemente în funcție de interacțiunea utilizator. Din librăria jQuery UI au fost folosite funcțiile de interacțiune dinamică pentru manipulalrea elementelor din timpul interacțiunii active cu utilizatorii sistemului.
2.4. PHP
Pentru mediul de dezvoltare și limbajul de programare pe partea de server a fost ales să fie folosit limbajul PHP. Acesta este un limbaj foarte răspândit ca și limbaj de programare pe partea de server. Popularitatea acestui mediu de dezvoltare vine în primul rând din cauza că folosirea și instalarea acestuia este gratuită față de alte medii de dezvoltare care se pot folosi legal contra cost la prețuri relativ mari. Al doilea motiv pentru care mediul de programare și limbajul PHP este foarte larg răspândit și foarte popular între companiile și dezvoltatorii aplicațiilor web, este că acesta oferă un mediu de dezvoltare și de rulare a aplicațiilor dezvoltate foarte puternic și stabil. Cele mai mari avantaje pot fi considerate suportul puternic pentru programarea orientată pe obiecte, sisteme și tehnologii implementate pentru posibilități de cache-ing și nu în ultimul rând, stilul de structurare a limbajului de programare care oferă o utilizare simplificată pentru dezvoltatorii care o folosesc.
Denumirea PHP provine din acronimul englez recursiv Personal Home Page Tools Hypertext Preprocessor, iar limbajul se consideră o versiune avansată și orientată pe obiectele limbajului de programare PERL (chiar fiind scris de către programatorul PERL, Rasmus Lerdorf). Fiind un produs cu distribuire liberă și un proiect open-source, PHP este cel mai popular limbaj de server-side pentru crearea paginilor HTML dinamice (motorul PHP se rulează pe peste un milion de servere web). Lângă avantajele funcționale (familiaritatea, simplitatea, eficiența, securitatea și flexibilitatea) constituie un avantaj și faptul că este gratuit. Limbajul dispune și de o pagină web oficială și actualizată zilnic, având una dintre cele mai mari comunități de programatori din lume.
PHP a fost început în 1994 ca o extensie a limbajului server-side Perl, și apoi de o serie de CGI-uri compilate de către Rasmus Lerdorf, pentru a genera un curriculum vitae și pentru a urmări numărul de vizitatori ai unui site. Apoi a evoluat în PHP/FI 2.0, dar proiectul open-source a început să ia amploare după ce Zeev Suraski și Andi Gutmans, de la Technion au lansat o nouă versiune a interpretorului PHP în vara anului 1998, această versiune primind numele de PHP 3.0. Tot ei au schimbat și numele în acronimul recursiv de acum, până atunci PHP fiind cunoscut ca Personal Home Page Tools. Apoi Suraski și Gutmans au rescris baza limbajului, producând astfel și Zend Engine în 1999. În mai 2000 a fost lansat PHP 4.0, având la bază Zend Engine 1.0. 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 este simplu de utilizat, fiind un limbaj de programare structurat, ca și C-ul, Perl-ul sau începând de la versiunea 5 chiar Java, sintaxa limbajului fiind o combinație a celor trei. Datorită modularității sale poate fi folosit și pentru a dezvolta aplicații de sine stătătorare, de exemplu în combinație cu PHP-GTK sau poate fi folosit ca Perl sau Python în linia de comandă. Probabil una din cele mai importante facilități ale limbajului este conlucrarea cu majoritatea bazelor de date relaționale, de la MySQL și până la Oracle, trecând prin MS Sql Server, PostgreSQL, sau DB2.
PHP poate rula pe majoritatea sistemelor de operare, de la UNIX, Linux, Windows, sau Mac OS X și poate interacționa cu majoritatea servereler web. Codul PHP este interpretat de serverul web și generează un cod HTML care va fi văzut de utilizatorul final, clientului -browserului- fiindu-i transmis doar cod HTML. [6]
Numele de Hypertext Preprocessor sau PHP nu spune prea multe despre ce este. Este un limbaj asemănător cu C sau Perl, cu variabile, constante, șiruri, string-uri și alte tipuri de date, cu instrucțiuni de control și funcții, cu obiecte și alte lucruri necesare oricărui limbaj, care interpretează cod scris pe server și returnează cod HTML pentru pagini web. HTML este un format static, care este salvat în fișiere apelate din browsere pentru a fi vizualizate. Însă atunci când se dorește crearea dinamică a fișierului HTML trebuie folosit pe server un limbaj de scripting: PHP, Perl, ASP sau altele. Din paginile respective se pot interoga baze de date, folosi informații din alte fișiere sau chiar de pe alte site-uri, folosi emailuri sau alte date stocate în diverse modalități, iar în final se construiește o pagina HTML pasată și vizualizată în browser. PHP este transparent pentru vizitatori, ceea ce rezultă fiind HTML.
Nu există compilare în PHP, codul rămâne sub forma de cod sursă pe server fiind interpretat la fiecare cerere. Se instalează librăriile PHP-ului care știu să funcționeze cu serverul web oricare e acela, iar la cererea unui fișier cu extensia .php (de obicei, pentru că pot fi folosite și alte extensii) va fi chemat PHP-ul care interpretează codul specific, dintre tagurile PHP-ului, rezultând HTML. Iar în browser-ul clientului nu ajunge deloc cod PHP ci doar HTML. Așa că parolele sau codul utilizatorilor rămân de nemodificate sau nevăzute pe server. Principiul este la fel și cu alte limbaje pentru internet, server-side: ASP, Perl, ColdFusion, etc.
PHP se execută doar pe server și nu interacționează cu utilizatorul final decât sub forma de HTML sau JavaScript. Codul PHP este marcat cu câteva tag-uri speciale. Cel mai adesea este folosit:
<?php … cod PHP … ?> dar se poate scrie și doar <? … cod PHP … ?>
Codul PHP poate fi amestecat oriunde în pagina HTML, doar trebuie să rezulte cod HTML, cu structura unui document HTML.
PHP este un limbaj des folosit la sistemele CMS. Un sistem de administrare a conținutului, sau CMS (în limba engleză Content Management System) este un sistem software creat pentru automatizarea cât mai deplină a gestiunii conținutului, în special a paginilor web. Scopul este de a reduce sau elimina intervenția programatorilor la editarea și administrarea paginilor proprii. CMS-ul facilitează organizarea, controlul și publicarea de documente sau alt tip de conținut, cum ar fi imagini și resurse multimedia. Un CMS facilitează adesea crearea de documente în comun. Un "CMS web" este un CMS cu facilități adiționale pentru ușurarea publicării conținutului pe diversele pagini web.
Date fiind complexitatea site-urilor web și inexistența unui model standard, definirea unitară a CMS, precum și a părților sale componente, este foarte greu de realizat. Granițele dintre portale, sisteme CMS, DMS (Document Management System – Sistem de Administrare a Documentelor) și ECS (E-commerce Systems – Sisteme de Comerț Electronic) nu sunt evidente și acestea adesea se suprapun.
Sistemele de administrare a conținutului web sunt folosite adesea pentru stocarea și controlul documentelor cum ar fi articole, manuale tehnice sau de alte naturi, ghiduri de vânzări și broșuri de marketing. Un CMS poate avea următoarele funcții:
crearea și transferul de documente și material multimedia
identificarea utilizatorilor cheie și a rolului lor în gestionarea conținutului
atribuirea de roluri și responsabilități diferitelor categorii de conținut
definirea de sarcini de lucru, adesea cuplate cu trimiterea de mesaje în funcție de eveniment, astfel încât managerii de conținut sunt informați automat când intervin schimbări ce îi privesc
urmărirea și organizarea mai multor versiuni ale aceluiași element de conținut
publicarea conținutului într-o bibliotecă, pentru a sprijini accesul la conținut. În ultima vreme biblioteca (bază de date) este o parte tot mai importantă a sistemului; ea poate fi ușor interogată.
La alegerea limbajului și mediului de programare pe partea de server a fost ales intenționat PHP datorită experienței personale, a ușurinței cu care se lucrează cu limbajul de programare specificat și a suportului accentuat pentru programarea orientată pe obiecte.
2.5. MySQL
MySQL este un sistem de gestiune a bazelor de date relațional, produs de compania suedeză MySQL AB și distribuit sub Licența Publică Generală GNU. Este cel mai popular SGBD open-source la ora actuală. Are cea mai largă răspândire la nivel internațional, fiind compatibil și foarte des utilizat împreună cu tehnologiile sistemelor ce deservesc aplicațiile paginilor web, un exemplu fiind limbajul PHP. [7]
Deși este folosit foarte des împreună cu limbajul de programare PHP, cu MySQL se pot construi aplicații în orice limbaj major. Există multe scheme API disponibile pentru MySQL ce permit scrierea aplicațiilor în numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum are fi: C, C++, C#, Java, Perl, PHP, Python, FreeBasic, etc. Fiecare dintre acestea folosește un tip spefic API. O interfață de tip ODBC denumită MyODBC permite altor limbaje de programare ce folosesc această interfață, să interacționeze cu bazele de date MySQL cum ar fi ASP sau Visual Basic. În sprijinul acestor limbaje de programare, unele companii produc componente de tip COM/COM+ sau .NET (pentru Windows) prin intermediul cărora respectivele limbaje să poată folosi acest SGBD mult mai ușor decât prin intermediul sistemului ODBC. Aceste componente pot fi gratuite (ca de exemplu MyVBQL) sau comerciale.
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). Popularitatea sa ca aplicație web este strâns legată de cea a PHP-ului care este adesea combinat cu MySQL și denumit Duo-ul Dinamic. În multe cărți de specialitate este precizat faptul că MySQL este mult mai ușor de invățat și folosit decât multe din aplicațiile de gestiune a bazelor de date, ca exemplu comanda de ieșire fiind una simplă și evidentă: „exit” sau „quit”.
Pentru a administra bazelor de date MySQL se poate folosi modul linie de comandă sau, prin descărcare de pe internet, o interfață grafică: MySQL Administrator și MySQL Query Browser. Un alt instrument de management al acestor baze de date este aplicația gratuită, scrisă în PHP, phpMyAdmin.
Bazele sistemului MySQL au fost puse în 1979, o dată cu instrumentul pentru baze de date UNIREG, creat de Michael "Monty" Widenius pentru compania suedeză TcX. în 1994, TcX a început să caute un server SQL pentru a-1 utiliza la dezvoltarea aplicațiilor web. Compania a testat unele servere comerciale, dar toate s-au dovedit a fi prea lente pentru tabelele de mari dimensiuni ale firmei. De asemenea, compania a examinat mSQL, dar acestuia îi lipseau anumite caracteristici obligatorii pentru TcX. În consecință, Monty a început să programeze un server nou. interfața de programare era proiectată în mod explicit pentru a fi similară celei folosite de mSQL, deoarece pentru mSQL erau disponibile numeroase instrumente gratuite, iar prin utilizarea unei interfețe similare aceleași instrumente puteau fi folosite pentru MySQL, cu un efort minim de portare.
În 1995, David Axmark de la Detron HB a început să facă presiuni pentru ca TcX să lanseze MySQL pe internet. De asemenea, David lucra la documentație și a determinat MySQL să construiască folosind utilitarul GNU Configure. MySQL 3.11.1 a fost dat lumii întregi în 1996, sub formă de distribuție binară pentru Linux și Solaris. în prezent, MySQL funcționează pe mult mai multe platforme și este disponibil atât în formă binară, cât și sursă.
MySQL nu este un proiect Open Source, deoarece este necesară o licență în anumite condiții. Totuși, MySQL se bucură de o amplă popularitate în comunitatea Open Source, deoarece termenii de licență nu sunt foarte restrictivi. În esență, MySQL este în general gratuit, dacă nu doriți să obținem profit prin vânzarea sistemului sau a unor servicii care necesită utilizarea acestuia.
Popularitatea sistemului MySQL nu este limitată la comunitatea Open Source. Da, rulează pe calculatoare personale (într-adevăr, o bună parte din programarea cu MySQL are loc pe sisteme Linux ieftine). Dar MySQL este portabil și rulează pe sisteme de operare comerciale, precum Solaris, Irix și Windows și pe echipamente care merg până la servere de întreprindere. În plus, performanțele sale rivalizează cu acelea ale oricărui sistem de baze de date cu care dorim să îl comparăm și poate manipula baze de date de mari dimensiuni, cu milioane de înregistrări.
MySQL apare foarte clar în imaginea care se desfășoară dinaintea ochilor noștri: sisteme de operare disponibile gratuit, care rulează pe echipamente puternice, dar necostisitoare, punând la dispoziția unui număr de oameni mai mare ca oricând o putere substanțială de prelucrare a datelor și alte caracteristici, pe o varietate de sisteme mai largă ca oricând. Această „coborâre" a barierelor economice în ceea ce privește prelucrarea automată a datelor pune soluții puternice pentru baze de date la dispoziția unui număr fără precedent de mare de persoane și instituții. Instituții care în trecut se mărgineau să viseze la a exploata în folos propriu puterea unui SGBDR cu performanțe ridicate au acum această posibilitate, la un preț foarte redus. Utilizarea bazelor de date este tot mai frecventă și la nivel individual. Oameni care nu se gândeau niciodată că vor folosi baze de date încep să ia în considerare tot felul de utilizări ale acestora, din moment ce procurarea unui sistem de baze de date este facilă – de exemplu, stocarea și accesul la rezultatele unor cercetări genealogice, urmărirea și întreținerea colecțiilor de diferite tipuri (fluturi, mărci poștale, cărți de joc cu jucători de baseball etc.), asistența în demararea unei afaceri sau furnizarea de posibilități de căutare pentru site-uri web personale.
În cadrul acestui proiect a fost aleasă folosirea MySQL în primul rând pentru puterea și performațele acestui sistem. Alte avantaje oferite de acest sistem au fost ușurința cu care se poate lucra cu acesta și stabilitatea mare pe care acesta oferă la lucrul cu volume mari de date, atât la stocharea acestora cât și la procesarea lor.
2.6. RSS
RSS este un standard de distribuire dinamică a conținuturilor, care pot fi de exemplu știri, articole, rapoarte, notificări, comunicate etc. Numele îi revine din abrevierea Really Simple Syndication. Această tehnologie a fost publicată la începutul anilor 1995 de către Ramanathan V. Guha. [8]
În principiu un document RSS este un text simplu în format XML. Formatul special de XML al RSS este relativ simplu de citit sistemelor automate dar și utilizatorilor umani, acesta având o schemă simplă. Această schemă simplă este alcătuită în principiu de o listă de elemente care poate să conțină proprietăți cum ar fi titlu, descriere, referire către pagina originală sau datele de creare și publicare. Prin această structură simplă standardizată fiecare tip de conținut poate fi pus la dispoziție, publicată și preluată de oricine la orice oră.
Tehnologia RSS este foarte des folosită de companiile, agențiile, portalele web sau blogurile producătoare de conținut. Scopul folosirii este de a pune la dispoziție publică informațiile noi create. Avantajele și beneficiile apar la fiecare dintre participanți.
Avantajul furnizorilor de conținuturi prin RSS este că informațiile noi publicate apar instant în lista de informații în stuctura XML. Scopul furnizorilor de conținut este de a răspândi informația cât mai repede și la cât mai multe persoane posibile pentru a le trasmite mesajele dorite. Furnizorii folosesc intenționat tehnologia RSS pentru că din experiență știu că este preferat și de utilizatorii și de cititorii acestora. Totodată este și foarte eficientă și chiar și ieftină implementarea și menținera acestei tehnologii.
Pe de altă parte și cititorii preferă tehnologia RSS pentru că și ei benificiază de avantajele tehnologiei. Primul avantaj este considerat viteza de trasmisie a informațiilor noi. De la momentul publicării unor informații într-un document RSS acesta poate să ajungă chiar în câteva secunde sau în doar câteva minute către utilizatorii sau cititorii interesați de aceste informații. Al doilea avantaj se consideră economia de timp pe care utilizatorii îl economisesc prin faptul că nu trebuie să intre periodic la paginile web a fiecărui furnizor. Acesată sarcină fiind preluată de la cititorii de informații le scutește de foarte multă pierdere de timp și energie. Un al treilea avantaj constituie posibilitatea de personalizare a documentelor RSS. Aplicațiile special create de citire a conținuturilor RSS dispun de stilizări proprii și permit și personalizarea listărilor de către cititori, astfel încât acestora să le fie mai pe plac și interfața prin care citesc informațiile. Un al patrulea avantaj constituie beneficiul de performanță care vine din simplificarea datelor care intră în structura documentului XML. Acesta rezultă o mărime relativ scăzută deoarece în document intră doar textul informațiilor.
În acest proiect de asemenea a fost folosită tehnologia RSS. Acesta este principala sursă de preluare a informațiilor în mod automat. Asemenea altor aplicații sau sisteme specializate, sistemul de preluare automată a informațiilor preia documentele de XML de la mulți alți furnizori. Această preluare este un proces automat programat periodic. Prin preluarea programată automată. Conținuturile preluate datorită structurii standardizate ale acestor informații sunt foarte ușor introduse în sistem, stocate și redate de către toți utilizatorii interesați de aceste informații.
Pe lângă preluarea datelor din sursele RSS, sistemul mai dispune și de un generator propriu de RSS, care având beneficiile și beneficiind de popularitatea acestei tehnlogii oferă un acces direct și avantajos către utilizatorii lor.
2.7. Smarty
Smarty este un motor de șabloane scris în PHP. Mai exact, acesta se bazează pe conceptul de separare a părților componente a paginilor web. Rolul acestuia este de a asigura o modalitate de gestionare, pentru a separa logica și sistemul din partea serverului cu cea a aplicației front-end. Această idee este cea mai bine descrisă într-o situație în care dezvoltatorul aplicației și proiectantul interfeței sunt persoane sau grupuri de persoane diferite. Prin separarea celor doua aplicații și a altor concepte implementate de sistemul Smarty, acesta oferă avantaje foarte mari din punctul de vedere a simplificării procesului de dezvoltare, deoarece oferă posibilitatea de dezvoltare independentă a aplicației pe partea serverului de dezvoltarea aplicațiilor front-end. Acest avantaj inseamnă și că se pot efectua modificări independente pentru cele două părți separate. [9]
Prin logica și structura implementată a despărțirii celor două părți, deasemenea beneficiem și de o logică foarte asemănătoare a arhitecturii MVC (model-view-controller). Pentru a prezenta structura aplicației Smarty și asemănarea cu arhitectura MVC se poate urmări schema simplificată din Figura 2.7. [10]
Figura 2.7. Arhitectura de organizare a sistemului Smarty [10]
După cum se poate observa din figura prezentată, partea de controller este foarte bine separată de partea de front-end. Cele două părți se întâlnesc și sunt combinate de o instanță a motorului de șabloane, care după combinarea și rezolvarea sarcinilor rămase, generează rezultatul final și trimite acesta către browserul utilizatorului.
În practică, dezvoltarea oricărui aplicații folosind sistemul de șabloane Smarty poate fi separată din start pentru partea de server și partea de client. Dezvoltatorul care dezvoltă partea de server poate construi toate clasele și funcțiile de care acesta are nevoie. Opțional poate să opteze pentru folosirea unui motor sau tehnologii ce-i permite să lucreze cu baza de date și cu conținutul acestuia cu un sistem simplificat, specializat însă pe această funcționalitate. Acesta ar putea fi înlocuitorul modelului din arhitectura model-view-controller, celelalte două părți fiind regăsite în logica despărțită implementată în sistemul Smarty.
Dezvoltatorul părții de server are de dezvoltat toate funcționalitățile și tratarea erorilor ce pot apărea pe parcursul rulării sistemului. Acesta are ca și scop final și servirea seturilor de rezultate cerute de partea de front-end pentru afișarea acestora. Acest lucru se realizează în primul rând prin instanțierea unei entități speciale necesare a sistemului de șabloane, de exemplu prin sintaxa $smarty = new Smarty();. După ce există deja instanța necesară, acestuia îi mai trebuiesc doar atrubuite valorile și seturile de valori ce urmează să fie afișate în continuare. Pentru realizarea acestei comenzi se poate apela comanda următoare:
$smarty->assign(‘identificator’, $valori);.
După ce toate valorile au fost asignate și au fost completate toate serviciile necesare, vine rândul generării și afișării rezultatului final prin partea care seamănă cu partea view din arhitectura model-view-controller. Executarea acestuia este declanșată cu o comandă specială care arată astfel: $smarty->display(‘template’);
Dezvoltatorul părții de front-end are de dezvoltat partea integrală, cea care este trimisă la browserul clientului în momentul afișării paginilor web. Acesta are de construit toate paginile HTML, foile de stiluri CSS, funcțiile JavaScript și rezolvarea compatibilităților pentru browsere, iar în final optimizarea paginilor pentru a atinge performanțe mai mari și un nivel înalt de satisfacere a utilizatorilor. Acestea sunt pașii generali pe care au de luat în considerare și de îndeplinit dezvoltatorii front-end al paginilor web.
În cazul dezvoltării paginilor web în sistemul Smarty, dezvoltatorii au avantajul de a despărți părțile componente ale paginilor în așa numite template-uri. Aceste template-uri sunt bucăți de coduri scrise în fișiere separate, cum ar fi părțile componente generale, ca și <header>, <nav>, <footer> etc. Avantajul înpărțirii paginilor web pe componentele ce o alcătuiesc este că dezvoltarea poate fi separată pe bucăți, adică mai mulți dezvoltatori pot lucra pe o singură pagină simultan, fiecare lucrând pe segmentul lui, care se află în template-ul lui separat.
O particularitate a sistemului Smarty este aceea care constituie modul în care acesta preia valorile sau setul de valori pregătit de controller-ul acestuia. Anterior am văzut exemplul cum se creează o instanță a motorului se șabloane, deasemenea cum se atribuie o valoare care este apoi accesibilă în template-urile corespunzătoare. Aceste valori transmise din controller pot fi preluare în template-urile corespunzătoare în cel mai simplu mod posibil, prin referirea directă către identificatorul acestuia. Pentru a prezenta acest exemplu folosim comanda de afișare a unei valori din sistemul Smarty, adică acolada de deschidere “{“ și acolada de închidere “}”, iar exemplul de afișare a unei valori asignate din controller-ul corespunzător poate fi: {$identificator};
O concluzie importantă este că, demonstrând cât de ușor se poate dezvolta o aplicație prin sistemul de șabloane Smarty, este că și la orice modificare necesară câștigăm timp pentru faptul că fiind despărțite partea de controller cu partea de template, la orice eventuală modificare necesară este de ajuns să facem modificări doar în partea corespunzătoare.
În acest proiect a fost folosit versiunea Smarty 3.1.21, cea mai modernă versiune publicată în momentul dezvoltării sistemului. Fiind cea mai nouă versiune totodată este și cea mai stabilă dezvoltată și pusă la dispoziție de către grupul de dezvoltatori ai acestuia. Pe lângă stabilitatea oferită, versiunea 3 este și o versiune cu o performanță mai înaltă față de versiunea anterioară din seria Smarty 2.
2.8. Configurări server
Dintre multe elemente cheie ale sistemului merită descrise configurările pentru arhitectura de multi-portale. Un portal adesea inseamnă un site web special conceput care conține multe informații adunate din aceeași domeniu. Conceptul de multi-portale inseamnă că având unul sau mai multe baze de date și o singură instanță de coduri sursă, care singura instanță de coduri de sursă permite rularea și servirea cu succes a tuturor operațiunilor și cerințelor tuturor clienților ale mai multor portale. Eventual portalele pot avea și domenii web independente. Această realizare arhitecturală a fost posibilă datorită succesiunii a mai multor setări speciale, unele fiind setări speciale ale serverului de găzduire, unele implementări ale mediului de programare până la atribute speciale la nivelul bazei de date.
La nivelul setărilor de server prima setare cheie a fost adăugarea mai multor domenii la aceeași server web. Această setare s-a realizat în doi pași, primul fiind directarea adreselor web către serverul care găzduiește al aplicației, prin setarea acelorași servere de nume la fiecare domeniu. Pentru dezvoltarea sistemului au fost folosite două domenii de TLD (top level domain), acestea fiind http://www.noutatioradea.tk și http://www.noutaticluj.tk. S-a folosit extensia .tk pentru că este un domeniu de internet de nivel superior, pentru Tokelau și pentru că acesta este cunoscut ca fiind un domeniu de internet oferit după alegere chiar și gratuit.
O altă setare importantă a fost făcută la furnizorul de găzduire web. Furnizorul ales dispune de serviciul numit „domenii parcate”, care inseamnă că având un plan de găzduire cu un domeniu de internet, lângă acesta mai putem „parca”, adică să atașăm, și alte domenii de internet. Prin această setare realizăm că mai multe domenii de internet independente sunt trimse către aceeași server și aceeași sistem pentru a deservi toate cerințele.
La nivelul serverului web au fost efectuate și mai multe setări al sistemului Apache legate de tratare a rezolvării URL-urilor în documentul htaccess. Acest document printre multe altele poate să conțină definiții pentru rescriere și înlocuire a adresei complete prin care ajung cerințele, astfel asigurând posibilitatea de mascare a căilor absolute către fișierele fizice ale aplicației.
Între codurile surse ale aplicației a fost creată o funcție specială de autoconfigurare. Legătura acestuia cu arhitectura de multi-portale este aceea de a stabili și de a defini constantele instanței ale aplicației portalului în mod automat în funcție de domeniul de internet prin care care ajung cerințele la aplicație. Funcția de autoconfigurare este o funcție relativ simplă dar cu atât mai importantă. La sosirea oricărei cerințe această funcție simplă verifică domeniul de internet prin care sosește cerința și apoi selectează dintr-o listă definită ce valori să definească la constantele cheie pentru instanța aplicației. În cazul în care nu se găsește domeniul de internet în lista domeniilor definite, acesta blochează aplicația și se afișează un mesaj de eroare. Această blocare este și o măsură de securitate și de protecție a sistemului pentru a proteja datele confidențiale și pentru a asigura consistența și buna funcționare a întregului sistem.
Arhitectura de multi-portale a necesitat o abordare specială și la nivelul bazei de date. Această abordare specială este de fapt o soluție simplă care constă în adăugarea unei coloane speciale în mai multe dintre tabelele folosite, denumit portal_id. Această coloană definește foarte simplu și exact aparținerea datelor la portalele specifice.
Există tratări și la nivelul codului sursă. Putem să ne întâlnim des cu atributele, constantele sau variabilele de portal_id. Acestea se folosesc pentru evidențierea portalelor individuale pe parcursul executării funcțiilor și metodelor aplicației.
3. Prezentarea și implementarea aplicației
3.1 Prezentarea aplicației
Aplicația a fost dezvoltată pornind de la un prototip folosit de mine cu mult timp în urmă. De atunci rolul aplicației este de a servi mai mulți utilizatori, acesta fiind o schimbare de scop care a determinat dezvoltarea unu nou sistem independent.
După cum se poate observa din Figura 3.1. (Schema de prezentare a aplicației), acest serviciu este alcătuit din punct de vedere structural din 3 părți coponente:
furnizorii: punctul de pornire al unui agregator este sursa de informații, fară surse de informații nu se poate aduna conținut ce să fie agregat. Aplicația având un sistem complex, acesta are dezvoltate metode pentru preluarea datelor de la mulți furnizori diferiți
aplicația completă de agregare: este alcătuită din arhitectura combinației tehnologiilor diferite care compun un sistem complex, datele din baza de date și pentru buna funcționare și mentenanța datelor este nevoie și de un administrator al aplicației
utilizatorii aplicației: sunt beneficiarii direcți ale serviciilor oferite de întreaga aplicație. Aceștia au pregătite informațiile căutate înainte să ajungă să le consume. Utilizatorii au acces la informațiile agregate tot timpul, la orice oră, în orice zi.
Figura 3.1. Schema de prezentare a aplicației
3.2 Structura bazei de date
Baza de date folosită este MySQL. Aplicația a fost proiectată și dezvoltată pentru a face față și să poată îndeplini multe servicii, unele mai simple iar altele mai complexe. Arhitectura codurilor sursă conține multe clase speciale, metode, funcții și comenzi structurale. Această arhitectură complexă ar fi incapabilă de funcționare fără o componentă esențială, adică baza de date și tabelele necesare funcționării.
La proiectarea bazei de date au fost analizate toate entitățile și tipurile de date care aveau să intre în structura bazei de date. După analizele primare ale bazei de date au fost efectuate normalizările necesare. După mai multe normalizări a fost stabilită structura finală a bazei de date. Acesta are structura de 8 tabele interconectate, schema fiind prezentată în Figura 3.2.
Figura 3.2. Structura bazei de date
Structura bazei de date este o structură normalizată alcătuită din 8 tabele. Toate aceste tabele conțin entitățile și proprietățile întregului sistem. Aceste 8 tabele, rolul și proprietățile acestora sunt:
feed: tabela dedicată stocării și interogării tuturor entităților de tip feed, care reprezintă informațiile individuale pentru știrile, evenimentele, articolele sau oricărui tip de conținut agregat în sistem. Acesta stochează și proprietățile cum ar fi date de înregistrare, furnizor, titlu sau adresă internet
feed_properties: această tabelă a fost creată pentru a stoca înregistrările interacțiunilor și marcajelor utilizatorilor, acestea fiind considerate proprietăți definite
portal: folosit pentru a stoca entitățile și proprietățile de portale. Folosit de asemenea cu scopul grupării înregistrărilor din tabela feed
property: tabela care conține definițiile proprietăților. Conceptul de proprietăți a fost introdus în urma aplicării normalizărilor. În locul introducerii coloanelor opționale, care sunt posibile să nu fie folosite, proprietățile individuale sunt introduse împreună cu indentificatorul utilizatorului în tabela de feed_properties
provider: rolul tabelei este de a stoca entitățile furnizorilor de conținut. În această tabelă sunt stocate și proprietățile importante ale furnizorilor. Pe baza acestor proprietăți știe sistemul de exemplu prin ce adresă de internet să preia conținutul care urmează să fie agregat. De asemenea în locul acesta se definește ce metodă dezvoltată pentru preluarea și extragerea informațiilor să fie folosită, fiindcă pe lângă metodele clasice de furnizare a conținutului, cum ar fi RSS, au fost dezvoltate și metode proprii de preluare a conținutului
provider_category: este o tabelă de categorie pentru gruparea furnizorilor. Această grupare se consideră și o organizare structurală a acestora, deoarece filtrarea furnizorilor se poate face și prin alegerea categoriei furnizorilor
user: tabela utilizatorilor conține înregistrările tuturor utilizatorilor înregistrați în sistem. Din cauza faptului că sistemul a fost conceput să funcționeze mai mult pe baza- și pentru a servi interesele utilizatorilor individuale, aceasta este unul dintre cele mai importante tabele. Tot în această tabelă se stochează și adresele de email, numele, prenumele și parolele encriptate ale utilizatorilor.
user_providers: este tabela care are rolul simplu de a stoca preferințele utilizatorilor pe care acesta le-a selectat în timpul setării filtrelor. La fiecare selectare a unui furnizor de către un utilizator se reîmprospătează legăturile utilizatorului cu furnizorii selectați.
3.3 Interfața utilizator
Interfața utilizator constituie frontul de întâlnire al interacțiunii aplicației cu utilizatorii finali. Întreaga arhitectură și toate tehnologiile folosite au scopul de a asigura o interfață stabilă, funțională impecabil și foarte simplu și ușor de folosit.
Din punct de vedere al organizării ierarhice a directoarelor sistemului, acesta a fost organizată într-un mod funcțional conform Figurii 3.2.1. (Structura ierarhică a directoarelor).
Figura 3.3.1. Structura ierarhică a directoarelor
După cum se poate observa, cele două interfețe sunt alocate în directorul apps, acestea fiind interfața utilizator în directorul frontend și interfața de administrare în directorul backend. Cele două interfețe au structuri identice, deoarece folosesc aceeași arhitectură standardizată stabilită la începutul dezvoltării sistemului. Acestea conțin fiecare câte 3 subdirectoare, acestea fiind pages, templates și templates_c.
Motorul de șabloane folosit scris în PHP este Smarty. Acesta are o arhitectură de structură a organizării compusă din două părți, anume partea de template-uri și partea de compilatoare sau controller-e. Prin această arhitectură se poate folosi o tehnologie foarte asemănătoare cu cea a arhitecturii MVC.
Arhitectura MVC se poate regăsi în cadrul proiectului în următoarele locuri. Elementele de modele constituie clasele proprii scrise pentru entitățile independente ale bazei de date, practic fiecare tabelă are clasa lui independentă. View-urile pot fi considerate template-urile alocate în directoarele template. În acest director fiecare fișier constituie o parte componentă sau o întreagă pagină a interfeței utilizator. Componentele de cotroller sunt considerate fișierele PHP din directorul pages. Fiecare dintre aceste fișiere deservește o pagină, dacă pagina respectivă are nevoie de controller dedicat în afara celui comun.
Revenind la interfața utilizator, acesta este generat în limbajul HTML5. Această tehnologie a fost aleasă pentru avantajele pe care acesta le oferă. Pentru stilizare a fost folosit CSS3, care are mai multă flexibilitate, efecte și stiluri mai numeroase față de CSS2. Împreună, aceste două limbaje compun interfața utilizator, care prin browserele utilizatorilor redau conținutul generat într-o formă responsivă, acest lucru însemnând că se poate vizualiza și interacționa cu conținutul paginilor web la fel de bine pe aproape fiecare dispozitiv care are acces la internet și are instalat un browser pe el, cum ar fi calculatoarele, laptopurile, tabletele, telefoanele mobile sau alte dispozitive de calcul inteligente. Resposibilitatea interfeței utilizator se poate observa foarte bine pe imaginea din Figura 3.3.2. Compatibilitatea interfeței utilizator.
Figura 3.3.2. Compatibilitatea interfeței utilizator
Această interfață dinamică care deservește utilizatorii finali are ca și pagina principală și prima poziție a meniului pagina de listare a articolelor. Această listare este motorul aplicației.
În partea stângă a fost poziționată o coloană în care au fost introduse filtrele listării. Există două tipuri de filtre, anume filtrul furnizorilor și filtrul proprietății de starea de citire a articolelor. Filtrul de furnizori are rolul de a oferi posibilitatea alegerii furnizorilor ale căror articole să apară în listarea din partea dreaptă. La modificarea listei selectate a furnizorilor, pe lângă modificarea acestor setări în instanța de sesiune a utilizatorilor, în aceeași timp cu salvearea alegerii, această listă selectată este asociată instant și în baza de date cu entitatea utilizatorului, astfel orice setare sau modificare făcută în lista de filtre a furnizorilor devine setarea implicită pe fiecare dispozitiv folosit de către același utilizator.
Pe lângă lista furnizorilor mai apare în partea stângă încă o listă de filtre, anume a proprietăților stărilor de citire a articolelor. Acest filtru funcționează pe baza marcajelor utilizatorilor. Mai exact oferă posibilitatea de a reda articolele citite, necitite sau toate articolele din listarea articolelor. Comparativ cu filtrul furnizorilor, acest filtru se salvează doar în instanța activă a utilizatorului.
Partea principală a listării articolelor este chiar listarea articolelor. Pentru utilizatorii neautentificați, această listare conține doar proprietățile articolelor ca și titlul, adresa de internet către aceste articole, data preluării sau publicării articolelor și numele furnizorului original. Pentru utilizatorii autentificați, pe lângă elementele anterioare mai apare și o linie care conține patru comenzi speciale asociate articolului listat.
Cele patru comenzi ale listării sunt comanda de marcare a articolelor ca și citit sau necitit, comanda pentru afișarea sau ascunderea detaliilor articolului, cum ar fi numărul de accesare al aceluiași articol de către utilizator, adresa de internet exactă și eventual o scurtă descriere sau conținut despre articol. Ultimele două comenzi din această listă sunt comanada pentru marcare ca și favorit al articolului și eliminarea definitivă a articolului respectiv din listarea utilizatorului.
Comanda de marcare a articolului ca și articol favorit este o comandă simplă și instantă, acesta având prima dată rolul de a evidenția articolul dorit și pe lângă evidențierea din listare, acesta mai apare și în listarea articolelor marcate ca și articole favorite. Marcarea unui articol ca și articol favorit este simplă și reversibilă. În comparație, comanda de eliminare din listarea principală este definitivă și irevesibilă. Aceste 4 comenzi pentru marcare a articolelor de către utilizatori este prezentată în Figura 3.3.3. Comenzile articolelor.
Figura 3.3.3. Comenzile articolelor
Din punct de vedere tehnic, toate acțiunile de marcare a articolelor utilizatorilor sunt executate cu cerințe prin tehnologia AJAX. Acest lucru înseamnă că după trimiterea unei comenzi de către utilizator, această comandă se execută în fundal în mod asincron, iar în acest timp utilizatorul poate să continue activitatea dorită fără întrerupere sau reîncărcarea paginii pe care acesta se află. Folosirea tehnologiei AJAX oferă și avantajul că acesta este mai rapidă, față de retransmiterea întregii pagini de către server, astfel economisind și resursele sistemului și menține un volum de trafic mai scăzut pe rețele de telecomunicații al utilizatorului.
Un alt element important al paginilor de listare este secțiunea de paginare. Acesta are rolul de a duce și de a afișa pagina cu rezultatele selectate de către utilizator, în cazul în care sunt prea multe articole de afișat sau în cazul în care utilizatorul vrea să sară la alte articole, în secțiunea de listare fiind implicit afișate câte 20 de rezultate.
Alte pagini ale interfeței utilizator sunt pagina de articole favorite, pagina de selectare și modificare a furnizorilor proprii, pagina publică a furnizorilor, pagina de statistici, paginile de înregistrare și autentificare. Pe lângă aceste pagini independente, pe interfața utilizator mai apar și butoanele pentru comanda de schimbare a limbii, acestea fiind poziționate în partea dreaptă sus, la aceeași nivel cu logoul din antet.
Paginilie de furnizori și furnizorii mei conțin descrieri ale furnizorilor alese la dezvoltarea aplicației și disponibile utilizatorilor. Pe pagina furnizorii mei, utilizatorii își pot alege furnizorii ale căror articole doresc să vizualizeze în listarea principală, doar că mai au o referire către pagina de detaliere a furnizorului respectiv.
Pagina de statitici este o pagină publică. Acesta este accesibil atât utilizatorilor înregistrați și autentificați precum și pentru orice utilizator neînregistrat. O parte a paginii de statistici se poate vizualiza pe Figura 3.3.4. Statisticile aplicației.
Figura 3.3.4. Statisticile aplicației
3.4 Interfața de administrare
Aplicațiile mari lucrează cu volume mari de date de diferite tipuri. Volumurile mari de date sunt importante să fie tratate corespunzător. Pe lângă volumele mari de date sunt necesare și adminsitrarea utilizator, a resurselor de sistem, a furnizorilor și a comenzilor speciale.
Aplicația de agregare automată a informațiilor, acest proiect, pe lângă interfața utilizator mai are și o interfață de administrarea complet independentă (Figura 3.3). Dacă interfața utilizator deservește strict utilizatorii comuni și informațiile publice, interfața de administrare are rolul de gestionare a datelor cu caracter special, confidențial sau de a deservi la executarea comenzilor speciale.
Figura 3.4. Interfața de administrare
Această interfață diferă față de interfața de utilizator, dar ambele au fost construite cu aceeași tehnică de compatibilitate pentru afișarea pe diferite dispozitive, rezolvată prin CSS.
Meniul și structura interfeței de administrare a fost proiectată să fie cât mai simplă și intuitivă. Fiecare entitate mare care poate să necesite adminstrare a fost introdusă în meniu și a primit o pagină separată.
Elementele meniului și a structurii sunt paginile pentru portale, a furnizorilor, a categoriilor furnizorilor, a utilizatorilor, a translatărilor și a comenzilor speciale. Fie vorba de orice pagină, acestea au rolul de a asigura funcționalitatea clasică, adică operațiunile de listare, vizualizare, adăugare, editare și ștergere.
Din punctul de vede al funționalității, interfața de administrare funcționează doar pentru utilizatorii înregistrați și autentificați în sistem care au drept de acces. Comparativ cu interfața utilizator, design-ul paginilor este simplistă și fără efecte de interfață, deoarece în cazul acesta nu vorbim de nevoile de satisfacere al utilizatorilor, este vorba strict de o interfață de administrare obiectivă.
3.5 Serviciile aplicației
Scopul acestui proiect este de a dezvolta o aplicație care să ofere un serviciu care să servească utilizatorii acestuia în cel mai simplu mod posibil, cum a fost deja specificat în motivația alegerii temei.
Principalul serviciu al aplicației este de a reda utilizatorilor informațiile agregate despre care aceștia sunt interesați. Acest serviciu este realizat într-un mod complex.
În primul rând, pentru a oferi furnizarea acestui serviciu este nevoie de stabilitate. Prin stabilitatea serviciului, utilizatorilor acestuia îi oferă încredere, ceea ce este foarte important pentru că aceștia să folosească în continuare această aplicație. Pentru a oferi în continuitate informațiile de care utilizatorii sunt interesați, este nevoie de importarea continuă a tuturor informațiilor, cu o frecvență relativ mare. Această automatizare de importare periodică a informațiilor se realizează prin comenzile speciale ale aplicației.
Cealaltă parte pentru asigurarea furnizării serviciului principal al aplicației este redarea informațiilor adunate. Pentru a crește valoarea serviciului oferit, interfața utilizator și paginile de listare, redarea informațiilor este completată prin servicii și posibilități adiționale, cum ar fi filtrarea rezultatelor după furnizori, după proprietățile articolelor sau a marcajelor utilizatorilor, cum ar fi de exemplu marcajul de articol favorit.
Pricipalul serviciu fiind redarea pe interfața utilizator a informațiilor agregate, aplicația mai oferă și un serviciu de redare a informațiilor agregate printr-o metodă externalizată, anume printr-un flux RSS.
Redarea informațiilor prin fluxul externalizat în format RSS este un serviciu dezvoltat în cadrul acestui proiect, acesta fiind un serviciu secundar (Figura 3.5. Serviciul de generare flux RSS).
Prin acest serviciu oferit, utilizatorii pot prelua sau vizualiza informațiile redate de această aplicație dezvoltată printr-un orice alt cititor obișnuit de RSS. Astfel de cititoare pot fi aplicații de internet sau aplicații software de pe calculatoare, laptopuri, tablete sau telefoane mobile.
Figura 3.5. Serviciul de generare flux RSS
3.6 Comenzile speciale ale aplicației
Interfața de administrare servește pentru gestionarea informațiilor de sistem, fie informații despre portalele setate, despre utilizatorii aplicației sau despre orice alt tip de informație stocată în sistem. Gestionarea acestor informații se poate face manual prin operațiunile clasice de listare, adăugare, editare sau ștergere.
Aceste posibilități de gestionare sunt importante pentru a menține toate informațiile importante la zi, dar pe lângă aceste operațiuni simple, interfața de administrare mai conține o pagină separată pentru comenzile speciale ale aplicației (Figura 3.6. Comenzile speciale ale aplicației).
Comenzile speciale ale aplicației sunt serviciile sau comenzile automate sau complexe care de obicei nu ar putea fi executate manual sau nu merită să fie executate de către operatorii umani. Unele dintre aceste comenzi sunt programate să se execute periodic destul de des iar altele sunt create pentru a fi pornite manual ori de câte ori este nevoie ca acestea să fie executate.
Figura 3.6. Comenzile speciale ale aplicației
În această aplicație au fost introduse trei comenzile speciale care au fost plasate pe o pagină independentă. Aceste trei comenzi speciale sunt:
importarea noilor articole de la toți furnizorii
exportarea translatărilor din fișierul sursă CSV în locul special destinat în cadrul clasei de translatări Translations
generarea fișierelor minimizate al fișierelor de stil CSS originale, independent atât pentru interfața utilizator cât și pentru interfața de adiministrare.
Prima comandă specială, cea pentru importarea noilor articole de la toți furnizorii este cea mai complexă comandă, care pe lângă posibilitatea de a fi pornită manual, este de asemenea programată să fie executată automat periodic în fiecare oră.
Exportarea translatărilor din fișierul sursă CSV trebuie executată după fiecare adăugare, editare sau ștergere al acestui fișier, pentru că altfel translatările nu ajung în clasa dedicată acesteia și sistemul nu are acces la ele.
Comanda specială pentru generarea independentă a fișierelor CSS minimizate trebuie executată de fiecare dată când au fost făcute modificări în fișierul de stil CSS original, separat pentru interfața utilizator și separat pentru interfața de administrare.
3.7 Translatarea paginilor
Sistemul a fost inițial construit ca și o aplicație complexă în limba engelză. În timpul dezvoltării aplicației, la un moment dat a fost adăugată pe lista posibilelor îmbunătățiri posibilitatea de translatare a întregii pagini pe mai multe limbi, dar programată în viitorul indepărtat. Avantajul translatării paginilor web, mai ales în acest caz unde putem vorbi de o arhitectură multi-platformă este că potențialii utilizatori se adună după numărul cunoscătorilor limbii în care au fost făcute translatările și sunt disponibile paginile.
Limbile alese pentru translatare au fost limbile cunoscute cel mai bine de mine, anume limba engleză, romană și maghiară. Sistemul de translatări a fost dezvoltat pe o tehnică de concepție proprie. Această tehnică implementează translatarea paginiilor și tuturor elementelor de pe interfața utilizatorilor, la fel și pe interfața de aministrare, în trei pași simpli. Singura parte a conținutului paginilor care nu este tradusă este conținutul dinamic, adică informațiile care provin prin preluare și sunt introduse în mod automat în baza de date. Cele trei pași din care se compune tehnica de concepție proprie sunt:
înlocuirea tuturor textelor destinate afișării pentru utilizatori cu o sintaxă simplă care trece textul care urmează să fie translatat printr-o verificare și înlocuire dintr-o listă generată ulterior și schimbată cu textul în limba setată de utilizator
crearea unei liste, în fiecare limbă, cu fiecare text care se afișează pe interfața utilizatorilor. Această listă este salvată într-un fișier de tip CSV pentru o gestionare mai simplă și structurată
exportarea listei de translatări în clasa specială Translations. Acesta are o parte de definire dinamică. Prin executarea unei fișiere dedicatei acestui serviciu, se iau toate translatările din fișierul CSV și se rescrie dinamic clasa Translations adaugând noile translatări în locurile special destinate
Această tehnică simplă de translatare a conținutului de text de pe toate paginile asigură utilizatorilor un nivel de confort și de satisfacție crescută. În felul acesta, portalele primesc atenție și apreciere din partea utilizatorilor, fapt ce poate să crească numărul utilizatorilor.
În cazul în care o translatarea nu a fost introdusă în lista de translatări sau nu a fost exportată în clasa specială, acesta apare pe interfața utilizatorilor cu o culoare roșie, ceea ce semnalizează ncecesitatea ca textul respectiv trebuie să fie translatat.
Schimbarea limbii interfeței utilizatorilor se poate face foarte ușor cu un singur click. De pe orice pagină utilizatorii pot schimba limba întregii inerfețe folosind iconițele limbilor poziționate în antetul paginilor în zona logoului.
3.8 Optimizările sistemului
Optimizările sistemelor sunt importante deoarece cu cât este mai complex un sistem, cu atât poate să fie mai neperformant sau să producă defecte.
Sistemele complexe sunt compuse din mai multe părți. Asta și inseamnă definiția cuvântului complex. Când un sistem este alcătuit din unul sau doar câteva componente, efectele optimizărilor făcute pot fi resimțite direct proporțional. În cazul sistemelor complexe cu mai multe componente, posibilitățile sunt mai multe, iar efectele optimizărilor pot crește performanțele sistemului, având impresia unei îmbunătățiri asemănătoare cu efectul de cascadă, adică performanța poate crește exponențial.
În cazul aplicațiilor web, conceptele de optimizare au fost formulate pe parcursul a mai multor ani din urmă. Principiul aplicațiilor web este de a genera conținutul pe partea server, acesta să fie trimis prin internet către utilizatorul final, iar la sosire aceste date să fie redate prin browserul utilizatorului, în cazul acesta. Cele trei părți componente ale procesului descris au fiecare tehnicile lor de optimizare. Fie vorba de optimizările pe partea de server sau pe partea de utilizator, în timpul realizării acestui proiect, a fost acordată atenție și timp dedicat optimizării proceselor și a părților componente ale sistemului. Prin urma acestor optimizări sau îmbunătățiri făcute, s-au simțit creșteri majore de perfomanță comparativ cum au fost înaintea implementării acestor modificări.
Pentru partea de server, posibiliățile optimizării au fost găsite la baza de date inițial proiectată, la oragnizarea comenzilor ce se execută la servirea cerințelor și la sistemul de generare a conținutului final. Despre optimizarea bazei de date a fost descrisă deja optimizările făcute prin reorganizarea și reproiectarea stocării diferitor proprietăți. Alte optimizări ale bazei de date au constituit indexarea coloanelor necesare ale tabelelor existente. Optimizările generării conținutului final constituie și sistemul de șabloane implementat, Smarty. Acesta are încorporată și logica de folosire a memoriei de tip cache pentru a stoca șabloanele compuse. Alte avantaje considerate optimizări au fost folosirea puternică a obiectelor instanțiate din clasele proprii prin programarea orientată pe obiecte.
Cea mai complexă optimizare proprie pentru inerfața utilizator a fost implementarea unei clase special concepute pentru comprimarea fișierelor de stil CSS. Această clasă a fost denumită CSSMinimizer. Logica implementată acestei tehnici a fost de a prelua fișierele CSS finale scrise atât pentru interfața utilizator cât și pentru interfața de administrare și a le compresa cât de mult posibil, de exemplu prin scoaterea liniilor noi sau a spațiilor albe oricum neimportante și scrierea rezultatului optimizat într-un fișier nou. Acest fișier nou generat este apoi folosit în locul fișierului original. Prin folosirea acestei metode în medie fișierele de stil CSS au fost minimizate cu peste 20% din mărimea originală. Astfel s-a scurtat timpul în care browserul descarcă aceste fișiere și le și interpretează mai repede, câștigând cu această optimizare creșterea performanței în două locuri simultan.
Alte modificări simple, dar cu efect, au fost comprimarea JavaScript-urilor folosite și optimizarea codurilor HTML. Aceste mici modificări au contribuit la rândul lor la creșterea generală a performanței aplicației finale.
3.9 Aspecte de securitate
Începând de la proiectarea sistemului, au fost luate în considerare aspectele de securitate necesare pentru asigurarea unui nivel corespunzător de îndeplinire a principiilor etice și de siguranță.
Aceste aspecte au fost analizate și soluționate în multe locuri ale aplicației cum ar fi formularele cu datele utilizatorilor, acțiunile manuale de autentificare și de deconectare sau acțiunile automatizate de autentificare.
Primul loc unde a fost asigurată securitatea și protecția datelor protejate ale sistemului a fost modulul de înregistrare al utilizatorilor. După ce utilizatorii introduc datele personale și declanșează acțiunea de salvare a acestor date, trimiterea informațiilor se face printr-o metoda prin care nu se poate vedea nici un detaliu al acestor informații, acestea fiind văzute doar de browser-ul utilizatorului și de aplicația de pe server. Salvarea acestor informații, cum ar fi parola, se face prin encriptarea informațiilor originale cu o metodă capabilă de o encriptare într-o singură direcție, acestea fiind salvate în acest fel pentru a corespunde normelor generale de etică a standardelor stocării informațiilor personale ale utilizatorilor.
După ce informațiile utilizatorilor au fost deja introduse în sistem, acesta are posibilitatea de autentificare pentru a avea acces la toate serviciile aplicației. Sesiunea de autentificare este stocată doar pe serverul aplicației, acesta oferind o protecție crescută față de incercăile de manipulare a acestor date importante, deci asigurând un grad crescut de securitate împortriva atacurilor sau încercărilor utilizatorilor de a ajunge în locuri protejate și destinate doar administratorilor aplicației. Un alt avantaj al stocării informațiilor sesiunii de autentificare al utilizatorilor pe serverul aplicației este gradul crescut de performanță, fapt care se datorează stocării acestor informații temporale direct pe server, împreuna cu restul resurselor aplicației.
Cea mai creativă și particulară soluție implementată ca și soluție de asigurare a securității a fost metoda de autoautentificare a utilizatorilor. Această acțiune este inițializată la orice acțiune de autentificare la care utilizatorul a specificat că dorește să-i fie asigurată autoautentificarea lui la vizitările ulterioare ale paginilor web ale aplicației. Această autoautentificare este asigurată de o bucată de informație trimisă și păstrată în browser-ul utilizatorului. Această bucată de informație este numită hash și în implementarea actuală acesta este o combinație a numărului de indentificare a utilizatorului în cadrul aplicației, o parte a parolei în forma encriptată și o parte dinamică, toate acestea fiind amestecate pentru a asigura un nivel mai înalt de securitate. În cazul în care la o vizitare ulterioară sistemul primește un hash corect de la browser-ul utilizatorului, acesta este automat autentificat în sistem. Avantajul utilizatorului prin utilizarea metodei de autoautentificare este ca acesta nu trebuie să introducă informațiile de autentificare, astfel îi este ușurată procesul de folosire a serviciilor.
Prin implementarea acestor metode legate de aspectele de securitate, aplicația beneficiază de protecție crescută fața de încercările de forțare a intrărilor persoanelor sau roboților neautorizate la părțile destinate exclusiv administratorilor aplicației, astfel asigurând siguranța crescută al întreguli sistem.
Concluzii
Scopul lucrării prezente era dezvoltarea unei aplicații proprii care deși a necesitat combinarea diferitelor tehnologii și are complexitatea crescută, rezultatul final obținut este un serviciu simplu, ce își îndeplinește sarcinile proiectate și este ușor de folosit utilizatorilor finali. Aplicația dezvoltată își îndeplinește sarcinile, acest lucru fiind testat și demonstrat de mine, dar și de alți utilizatori care au avut rolul de a testa întreaga funcționalitate a aplicației.
Prin folosirea servicului oferit de aplicație, utilizatorii își îndeplinesc atribuțiile în timp mai scurt, în mod mai simplu, economisind energie în acest fel și totodată având la dispoziție și soluții pentru posibilități complementare.
Aplicația dezvoltată adună informațiile selectate în mod automat, programat periodic și fără întreruperi. Aceste informații sunt stocate în structura optimizată în baza de date și retrase în mod performant. Afișarea și interacțiunea finală are loc într-un mediu sigur și stabil.
Pe parcursul și după finalizarea dezvoltării aplicației au fost evaluate și posibilele optimizări și îmbunătățiri care nu erau luate în cosiderare la proiectarea sistemului, dar fiind considerate optimizări benefice sau îmbunătățiri care aduceau valoare adăugată față de considerațiile primare. Acestea au fost deasemenea incluse în procesul de dezvoltare. Aceste îmbunătățiri au fost de exemplu introducerea translatărilor pentru paginile aplicației, afișarea detaliilor sau a unor fragmente ale informațiilor adunate. Optimizări și imbunătățiri se consideră și optimizarea codului sursă, folosirea puternică a memoriei cache sau chiar și dezvoltarea unei servicii proprii pentru minimizarea a conținutului foilor de stil din fișiere CSS.
Serviciul oferit de această aplicație este într-adevăr un serviciu ce oferă o valoare crescută și folosirea lui este benefic utilizatorilor, deoarece prin folosirea acestuia utilizatorii finali câștigă timp și economisesc energie, serviciul preluând multe dintre sarcinile acestora.
Bibliografie
[1] „HyperText Markup Language – Wikipedia”
http://ro.wikipedia.org/wiki/HyperText_Markup_Language [Citat 16 Mai 2015]
[2] „Introducere in Cascading Style Sheets”
http://spidersolutions.ro/blog/introducere-in-cascading-style-sheets/27 [Citat 20 Mai 2015]
[3] „Introducere in CSS3, noi tehnici CSS | Design19”
http://www.design19.ro/blog/web-design/css3-tehnici-noi [Citat 20 Mai 2015]
[4] „JavaScript – Wikipedia”
http://ro.wikipedia.org/wiki/JavaScript [Citat 24 Mai 2015]
[5] „jQuery – Wikipedia”
http://ro.wikipedia.org/wiki/JQuery [Citat 24 Mai 2015]
[6] „PHP – Wikipedia”
https://ro.wikipedia.org/wiki/Php [Citat 6 Iunie 2015]
[7] „MySQL – Wikipedia”
http://ro.wikipedia.org/wiki/MySQL [Citat 6 Iunie 2015]
[8] „MySQL – Wikipedia”
https://en.wikipedia.org/wiki/RSS [Citat 6 Iunie 2015] ]
[9] „All About Smarty”
http://www.smarty.net/about_smarty [Citat 13 Iunie 2015]
[10] „Template Engine, esențial pentru dezvoltarea de site-uri și aplicații web”
http://gianlucacrema.com/template-engine-indispensabili-per-lo-sviluppo-siti-applicazioni-web [Citat 13 Iunie 2015]
DECLARAȚIE DE AUTENTICITATE A
LUCRĂRII DE FINALIZARE A STUDIILOR
Titlul lucrării: Serviciu WEB de agregare automată a informațiilor
Autorul lucrăriit: Kocs András-Szebásztián
Lucrarea de finalizare a studiilor este elaborată în vederea susținerii examenului de finalizare a studiilor organizat de către Facultatea de Inginerie Electrică și Tehnologia Informației din cadrul Universității din Oradea, sesiunea iulie a anului universitar 2015.
Prin prezenta, subsemnatul Kocs András-Szebásztián, [anonimizat],
declar pe proprie răspundere că această lucrare a fost scrisă de către mine, fără nici un ajutor neautorizat și că nici o parte a lucrării nu conține aplicații sau studii de caz publicate de alți autori.
Declar, de asemenea, că în lucrare nu există idei, tabele, grafice, hărți sau alte surse folosite fără respectarea legii române și a convențiilor internaționale privind drepturile de autor.
Oradea,
Data Semnătura
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: Serviciu Web de Agregare Automata a Informatiilor (ID: 150443)
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.
