TITLETITLE (trebuie să fie în header) [311081]

NEGOCCI – Site de anunțuri publicitare

Lucrare de licență

CUPRINS

Capitolul 1. Introducere ……………………………………………………………………………………..3

Capitolul 2. [anonimizat] ……………………………………………..4

Capitolul 3. Tehnologiile utilizate ……………………………………………………………………..5

Limbajul HTML …………………………………………………………………………………..5

CSS …………………………………………………………………………………………………… 9

PHP ………………………………………………………………………………………………….. 10

MySQL …………………………………………………………………………………………….. 15

Javascript ……………………………………………………………………………………………19

jQuery…………………………………………………………………………………………………21

Drupal ………………………………………………………………………………………………. 22

Redis ………………………………………………………………………………………………… 25

Apache SOLR …………………………………………………………………………………… 25

Capitolul 4. Specificațiile aplicației ……………………………………………………………….. 26

Schema bloc a sistemului. Scurta descriere a aplicației …………………………… 26

Interfața cu utilizatorul ……………………………………………………………………….. 27

Capitolul 5. Proiectarea în detaliu ………………………………………………………………….. 34

Arhitectura aplicației ………………………………………………………………………….. 34

Descrierea componentelor aplicației …………………………………………………….. 35

Capitolul 6. Concluzii ………………………………………………………………………………………. 38

Simple optimizări ……………………………………………………………………………………. 38

Ce s-a realizat …………………………………………………………………………………………. 38

Direcții de dezvoltare ………………………………………………………………………………. 39

Bibliografie ………………………………………………………………………………………………………… 40

Capitolul 1. [anonimizat]. [anonimizat]. [anonimizat]-ul să fie de folos pentru oricine vrea să cumpere sau să vândă ceva.

Capitolul 2. [anonimizat] s-a [anonimizat]:

Design:

[anonimizat]zvoltă un design simplu (iar prin simplu nu înteleg banal) dar care totuși pune la îndemâna utilizatorului tot ce are nevoie pentru a naviga cu placere.

Structră:

Din punct de vedere al structurii site-ul implementează în mare ce se găsește în general pe site-urile de anunțuri, cu excepția faptului că introduce un tip nou de reclamă, reclama video (opțiune neimplementată încă, dar face parte din planuriile de viitor).

Performanță:

Cel mai impresionant model la acest capitol este Facebook-ul. Nu putem sa nu remarcăm cât este de performant la așa dimensiune a aplicației și la așa număr mare de utilizatori (~1,310,000,000 utilizatori activi)

Capitolul 3. Tehnologiile utilizate

. Limbajul HTML

Prescurtarea HTML vine de la Hypertext Markup Language; HTML reprezintă un limbaj de marcare pe care browser-ele îl înțeleg și cu ajutorul căruia pot fi afișate paginile web. HTML a fost dezvoltat de Tim Berners Lee la CERN în 1989. HTML este un limbaj bazat pe SGML (Standard Generalized Markup Language), o așa numită aplicație a acestuia. HTML a fost inițial văzut ca o posibilitate pentru fizicienii care utilizează calculatoare diferite, sa schimbe între ei informații cu ajutorul internetului. Erau prin urmare necesare câteva condiții esențiale: independența de platformă (forma să nu schimbe de la un calculator la altul), posibilități hypertext și structurarea documentelor. Hypertext se traduce prin faptul că orice cuvânt, frază, imagine, sau element al documentului văzut de un utilizator poate face referință la un alt document, sau chiar la paragrafe din interiorul aceluiași document, fapt care ușurează mult navigarea între părțile componente ale unui document sau între multiple documente. Structurarea riguroasă a documentelor permite convertirea acestora dintr-un format în altul, precum și interogarea unor baze de date înglobând aceste documente.

În primii ani de evoluție HTML a evoluat lent în principal pentru că îi lipseau posibilitățile de a reda publicații electronice profesionale; limbajul permitea controlul asupra font-urilor dar nu permitea inserarea graficii, în 1993 NCSA a îmbogățit limbajul pentru a permite inserarea graficii și a construit primul navigator grafic: Mosaic. Au urmat apoi contribuții ad-hoc ale diverselor firme care au adus tot felul adăugiri limbajului HTML astfel încât, în 1994 limbajul părea scăpat de sub control.

Standardul oficial HTML este dat de World Wide Web Consortium (W3C), care este afiliat la Internet Engineering Task Force. W3C a enunțat câteva versiune ale specificației HTML printre care HTML 2.0, HTML 3.0, HTML 3.2 și HTML 4.0, HTML 4.01 XHTML 1.0, HTML5 și cel mai recent XHTML5.

Structura documentelor HTML.

Documentele HTML sunt fișiere ce conțin texte și care primesc extensia .htm, .html.

Componența unui document HTML este:
1. versiunea HTML a documentului;
2. zona head cu etichetele <head> </head>;
3. zona body cu etichetele <body> </body> sau <frameset> </frameset>;

Pentru o înțelegere mai bună și ușurare a muncii se pot lăsa spații între liniile documentelor. Spațiile libere vor fi ignorate de către browser în momentul interpretării. Tot ceea ce se găsește între tag-urile <title> va fi titlul documentului, acesta va apărea în momentul vizionării documentului în bara pentru titlu.

TAG-uri HTML.

Elemente de bază

Tip document: <HTML></HTML> (început și sfârșitul fișierului html)

Titlu: <TITLE></TITLE> (trebuie să fie în header)

Header: <HEAD></HEAD> (informații descriptive, cum ar fi titlul)

Corp: <BODY></BODY> (corp pagină)

Definiție structurală

Divizare: <DIV></DIV>

Divizare cu aliniere: <DIV ALIGN=LEFT|RIGHT|CENTER></DIV>

Format de prezentare

Îngroșat: <B></B>

Înclinat: <I></I>

Subliniat: <U></U>

Centru: <CENTER></CENTER>

Mărime font: <FONT SIZE=?></FONT>

Culoare font: <FONT COLOR="#$$$$$$"></FONT>

Link-uri și grafică

Link către alt document:<A HREF="URL"></A>

Link către un target: <A HREF="URL#***"></A>

Fereastra țintă: <A HREF="URL" TARGET="***|_blank|_self |_parent

|_top"></A>

Dimensiuni: <IMG SRC="URL" WIDTH=? HEIGHT=?>

Chenar: <IMG SRC="URL" BORDER=?>

Inserare obiect: <EMBED SRC="URL">

Divizori

Paragraf: <P></P>

Aliniere text: <P ALIGN=LEFT|CENTER|RIGHT></P>

Linie nouă: <BR>

Linie orizontală:<HR>

Liste

Liste meniu: <MENU><LI></MENU>

Fundaluri și culori

Imagine fundal: <BODY BACKGROUND="URL">

Culoare fundal: <BODY BGCOLOR="#$$$$$$">

Culoare text: <BODY TEXT="#$$$$$$">

Culoare link-uri: <BODY LINK="#$$$$$$">

Link-uri vizitate :<BODY VLINK="#$$$$$$">

Caractere speciale(trebuie să fie minuscule)

Caractere speciale: &#?; < &lt; > &gt; & &amp; " &quot;

Marcă înregistrată:&reg;

Copyright: &copy;

Spațiu neignorat: &nbsp;

Form-uri

Definire form: <FORM ACTION="URL" METHOD=GET|POST></FORM>

Câmp input:<INPUT TYPE="TEXT|PASSWORD|CHECKBOX|RADIO|IMAGE|

|HIDDEN">

Valoare câmp: <INPUT VALUE="***">

Dimensiune câmp:<INPUT SIZE=?>

Dimensiune maximă:<INPUT MAXLENGTH=?>

Listă de selecție: <SELECT></SELECT>

Nume listă: <SELECT NAME="***"></SELECT>

Număr de opțiuni: <SELECT SIZE=?></SELECT>

Opțiune: <OPTION>

Opțiune implicită: <OPTION SELECTED>

Dimensiune fereastră input text: <TEXTAREA ROWS=? COLS=?></TEXTAREA>

Nume fereastră: <TEXTAREA NAME="***"></TEXTAREA>

Spațiere text: <TEXTAREA WRAP=OFF|VIRTUAL|PHYSICAL></TEXTAREA>

Tabele

Definire tabel: <TABLE></TABLE>

Chenar tabel: <TABLE BORDER=?></TABLE>

Spațiu între celule:<TABLE CELLSPACING=?>

Spațiu față de marginea celulei:<TABLE CELLPADDING=?>

Linie tabel : <TR></TR>

Celulă tabel: <TD></TD>

Aliniere: <TD ALIGN=LEFT|RIGHT| CENTER|MIDDLE|BOTTOM VALIGN=TOP
|BOTTOM|MIDDLE>

Culoare fundal celulă:<TD BGCOLOR="#$$$$$$">

Header tabel: <TH></TH>

Aliniere: <TH ALIGN=LEFT|RIGHT|CENTER|MIDDLE|BOTTOM VALIGN=TOP

|BOTTOM|MIDDLE>

Pe câte coloane să se întindă:<TH COLSPAN=?>

Pe câte linii să se întindă: <TH ROWSPAN=?> [Teo09]

Ferestre

Ferestre document: <FRAMESET></FRAMESET>

Dimensiune margini:<FRAMESET BORDER=?>

Culoare margine: <FRAMESET BORDERCOLOR="#$$$$$$">

URL afișat în fereastră:<FRAME SRC="URL">

Nume fereastră: <FRAME NAME="***"|_blank|_self| _parent|_top>

Neredimensionabil: <FRAME NORESIZE>

Culoare margine: <FRAME BORDERCOLOR="#$$$$$$">

. CSS

CSS (Cascading Style Sheet) provine din engleză și este un standard pentru formatarea elementelor unui document HTML (formatare text, background sau aranjare în pagină), utilat pentru îmbunătățirea paginilor Web.

CSS vine cu un nou standard, și anume printr-un singur fișier – să fie controlat întreg aspectul proiectului Web. CSS permite stabilirea proprietăților pentru elementele HTML utilizând o gamă uriașă de valori, având la dispoziție peste 100 de proprietăți. CSS este un instrument avansat destinat proiectanților Web pentru crearea de site-uri Web profesionale care nu pot fi construite folosind atribute HTML obișnuite.

Stilurile se pot atașa documentelor HTML prin intermediul unor fișiere externe sau în cadrul documentului, prin elementul <Style> și/sau atributul Style. O foaie de stil fiind un set de reguli. CSS se poate utiliza și pentru formatarea elementelor XHTML. Beneficiile sintaxei CSS sunt:

formatarea este introdusă într-un singur loc pentru tot documentul;

editarea rapidă a etichetelor;

datorită introducerii într-un singur loc a etichetelor se obține o micșorare a codului

paginii, implicit încărcarea mai rapidă a acesteia.

Sintaxa CSS este structurată pe trei nivele:

inline (proprietățile etichetelor din documentul HTML);

embeded (informația introdusă în blocul head);

externă (reprezentat de comenzile aflate în pagini separate).

Folosirea unui fișier extern este foarte practicată deoarece poate fi utilizat în mai multe situații (mai multe fișiere HTML pot folosi același fișier CSS), eliminând timpul necesar introducerii codului corespunzător în fiecare pagină și totodată editarea loc într-un singur loc pentru mai multe fișiere. Extensia acestor fișiere este .css.

Legătura paginilor HTML cu fișierele externe CSS se face prin introducerea următoarei linii: <link rel="stylesheet" type="text/css" href="fișier_css.css">

Atributele indică următoarele:

rel: fișierul este tip stylesheet;

type: tip text ce conține comenzi CSS;

href: fișierul sau adresa fișierului CSS.

Comenzile CSS embeded sunt cele găzduite oriunde între perechea de etichete <head> și </head> conform sintaxei:

<style type="text/css">

<!- … comenzi CSS …–>
</style>

style -specifică unde începe și unde se termină blocul CSS iar type este folosit

pentru a ascunde de browser-ele vechi, care nu cunosc sintaxa CSS, conținutul blocului style.

Comenzile CSS inline sunt cele mai folosite, ele suprascriind orice alte comenzi CSS. Sunt amplasate în interiorul etichetelor HTML aflate în zona BODY și au sintaxa:

<etichetă HTML style="codul CSS dorit">

…textul sau obiectul asupra căruia este aplicat codul CSS…

</etichetă HTML>

Clasele CSS

Clasele permit stilizarea anumitor tag-uri sau elemente din codul (X)HTML, diferențiat. Similar cu metoda "inline". Excepția în cazul claselor constă în faptul că stilurile pot fi schimbate prin schimbarea foii de stil. Astfel se poate folosi același selector în fișierul (X)HTML și totuși va arăta diferit, în funcție de foaia de stil utilizată.

Exemplu:

p {

font-size: small;

color: #FFFFFF;

}

. Limbajul PHP

PHP (hypertext preprocessor) este un limbaj de programare server – side foarte popular. Popularitatea sa a crescut neîncetat de la an la an.

Familiaritatea: sa este una foarte ușoară combinând sintaxele unor din cele mai populare limbaje Perl sau C;

Simplitatea: sintaxa limbajului este destul de liberă, nu este nevoie de includere de biblioteci sau de directive de compilare, codul PHP inclus într-un document executându-se între marcajele speciale;

Eficiența: PHP-ul se folosește de mecanisme de alocare a resurselor foarte necesare unui mediu multiutilizator așa cum este Web-ul;

Securitate: PHP-ul pune la dispoziția programatorului un set flexibil și eficient de măsuri de siguranță;

Flexibilitatea: fiind apărut din necesitatea dezvoltării Web-ului, PHP a fost modularizat pentru a ține pasul cu dezvoltarea diferitelor tehnologii.

Gratuitatea: este probabil cea mai importantă caracteristică a PHP-ului. Dezvoltarea PHP-ului sub licența open-source a determinat adaptarea rapidă a PHP-ului la nevoile Web-ului, eficientizarea și securizarea codului.

PHP s-a născut sub forma unui mic utilitar care avea scopul rezolvării unei simple probleme particulare. În 1995 Rasmus Lerdorf și-a publicat CV-ul în pagina sa web. Pentru ca să poată urmări cine i-a vizitat pagina, el a introdus în pagină un tag special și a scris în Perl un script CGI care să colecteze informații despre vizitatori, acest cod la numit PHP (Personal Home Page). Mai târziu în cadrul unui proiect de serviciu, a trebuit să realizeze o interfață între clienții de pe web și o bază de date. A recurs la aceeași idee: tag-uri HTML proprii, procesate de un script CGI, care le înlocuia cu conținutul ce trebuia inserat în pagină, numind aceste tag-uri: “Form Interpreters” (FI), folosite pentru interogarea bazei de date. A reunit codul PHP cu FI și l-a publicat sub numele de PHP/FI.

PHP este un limbaj de script care funcționează alături de un server Web. Dacă pe serverul web se află un script similar, clientul nu va primi decât rezultatul execuției script-ului, fără a avea nici o posibilitate de acces la codul care a produs rezultatul.

Există trei domenii principale unde sunt folosite scripturile PHP:

Scripturi ce rulează pe server. Acesta este cel mai tradițional și cel mai important

pentru PHP. Ai nevoie de trei lucruri pentru a face să meargă. Interpretorul PHP (CGI sau modul de server), un server de web și un navigator de web. E nevoie ca serverul de web să fie pornit, cu o conexiune PHP instalată. Poți accesa rezultatul programelor PHP cu un navigator prin intermediul serverului de web.

Scripting la linia de comandă. Poți face ca PHP să ruleze fără a fi nevoie de server și

de browser, ci doar de interpretorul PHP. Această metodă este ideală pentru scripturile ce vor fi executate regulat folosind cron (task scheduler în Windows), sau sarcini simple de procesare a textelor. Vezi secțiunea despre Folosirea PHP-ului în linie comandă pentru mai multe informații.

Scrierea de aplicații ce rulează de partea clientului în mod grafic (GUI). Probabil

că PHP nu este limbajul cel mai bun de a scrie aplicații cu ferestre pentru Windows sau alte sisteme de operare, dar dacă cunoști PHP foarte bine și vrei să folosești niște facilități avansate a PHP-ului în aplicațiile tale ce rulează de partea clientului poți totuși folosi PHP-GTK pentru a scrie astfel de programe. De asemenea ai posibilitatea de a scrie aplicații ce rulează pe platforme diferite folosind această metodă.

Una dintre cele mai puternice și importante facilități în PHP este suportul său pentru o gamă larga de baze de date. Scrierea unei pagini de Web ce interacționează cu o bază de date este destul de simplă.

Tipuri de date, Variabile, Constante, Operatori

PHP recunoaște ușor tipurile variabilelor, iar sintaxa de definire a acestora are structură foarte simplă. Toate variabilele, în PHP încep cu semnul dolar($). Nu contează ce tip

de variabilă folosiți. PHP reține tipul informației stocate în variabilă.

Tipuri de date

Tipurile de date cele mai folosite în PHP sunt următoarele:

boolean;

integer;

floating-points;

string;

array;

null.

Variabile

O variabilă este un container special pe care îl puteți defini și care, apoi, va putea păstra o valoare, cum ar fi un număr, un șir de caractere, un obiect, un vector sau variabilă booleană. Variabilele sunt elemente fundamental ale programării, fără ele, am fi forțați să codificăm static toate valorile din scripturile noastre.

Toate variabilele sunt precedate de semnul dolar ( $ ). Numele variabilelor este case-sensitive, adică ține cont de litere mari sau mici. Numele unei variabile trebuie să înceapă cu o literă sau liniuță de subliniere ( _ ) urmată de oricâte litere, cifre sau liniuțe de subliniere.

În PHP este permisă atribuirea unei valori prin referință. Aceasta înseamnă că noua variabilă va fi o referință spre variabila originală. Modificarea variabilei noi va duce la

modificarea celei originale, și invers. Această atribuire are loc mult mai rapid, iar efectul se observă mai ales în structuri care se repetă. Pentru o astfel de atribuire se folosește semnul (&) în fața valorii atribuite.

Constante

Constanta este un identificator pentru o valoare simplă. Cum spune și numele, valoarea acesteia nu se modifică pe durata execuției scriptului. Numele constantei este case-sensitive, ca și în cazul variabilelor. Pentru a lucra cu o valoare care se dorești a fi neschimbată pe toată durata execuției scriptului se va defini o constantă utilizând funcția PHP predefinită define().

Exemplu de declarare a constantei: define(“Nume_Constanta”, 42);

Constantele pot conține numai date de tipul: boolean, integer, floating-point și string.

Există cateva diferențe între constante și variabile:

– constantele nu au semnul dolar ( $ ) în față;

– constantele pot fi definite și accesate oriunde;

– constantele nu pot fi redefinite.

Structuri de control

Structurile de control sunt scheletul limbajelor de programare. PHP are incluse structurile de control necesare funcționării unui limbaj.

Programele PHP iau decizii prin evaluarea unor expresii condiționale și execută instrucțiuni bazate pe rezultatele acestor evaluări.

Instrucțiunea IF

$a= ”value ” ;

if ($a > value1)

{

//Instructions

}

Instrucțiunile switch, break și default

Instrucțiunea if vă permite să luați o decizie în două sensuri. Pentru a putea lua o decizie în mai multe sensuri, puteți folosi mai multe instrucțiuni if , else sau elseif. Cu toate

acestea, când doriți ca programul dumneavoastră să aleagă dintr-un set de alternative care pot fi reprezentate prin valori întregi, instrucțiunea switch este o opțiune mai convenabilă.

switch($numar) {

case(1): instr1;

break;

case(2): instr2;

break;

case(3): instr3;

break;

default: Invalid code;

Structura while

Majoritatea script-urilor PHP vor conține cicluri. Pentru a folosi o buclă anterior condiționată vom utiliza structura while. Sintaxa acestei proceduri este:

while (conditie) instrucțiune

Efectul acestei structuri este executarea instrucțiunii atât timp cât valoarea expresiei condiție este true. Trebuie observat faptul că este posibil ca instrucțiunea să nu fie executată niciodată. Și pentru această structură avem la dispoziție o sintaxă alternativă și anume:

while (condiție):

grup instrucțiuni

endwhile;

Structura do – while

Uneori, dorim să folosim bucle posterior condiționate. În acest scop, în PHP avem la dispoziție structura do – while a cărei sintaxă este:

do instructiune while (conditie);

Singura diferență față de structura while este faptul că valoarea condiției este determinată, de fiecare dată, după executarea instrucțiunii. Ca urmare, instrucțiunea va fi executată cel puțin o dată. Nu există o sintaxă alternativă pentru această structură.

Structura for

O alternativă pentru utilizarea buclelor este structura repetitivă for. Sintaxa este:

for (expresie #1; expresie #2; expresie #3)

instructiune

Prima expresie este evaluată o singură dată, înainte de începerea execuției ciclului. Instrucțiunea este executată cât timp cea de-a doua expresie are valoarea true. De fiecare dată, după executarea instrucțiunii, este evaluată cea de-a treia expresie. Oricare dintre cele trei expresii poate lipsi; în cazul în care o expresie lipsește, se consideră că ea are valoarea true.

. 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 (Sistem de Gestiune a Bazelor de Date) open – source.

Este folosit foarte des împreună cu 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, fiecare dintre aceste limbaje folosind un tip specific API.

O bază de date este o colecție structurată de date, un program ce poate stoca o cantitate foarte mare de informații și o poate organiza într-un format ce este ușor accesibil în mod direct sau de către un alt program.

Cele mai des întâlnite operații cu bazele de date sunt:

În MySQL spațiul alocat pe discul serverului este în funcție de tipul de date. Câteva din tipurile de date folosite în bazele de date MySQL sunt:

Comenzi asupra tabelelor

Tabelele sunt cele mai importante obiecte dintr-o bază de date relațională. Toate datele sunt stocate în tabele organizate sub formă de linii și coloane, astfel fiecare tabelă corespunde unei relații din schema relațională a bazei de date.

Proiectarea unei baze da date presupune, stabilirea colecției de tabele și a descrierii tabelelor împreună cu toate proprietățile asociate. Înainte de crearea unei noi tabele trebuie luate o serie de decizii de proiectare referitoare la:

tipurile de date care vor fi stocate în tabelă;

coloanele tabelei și tipul de dată pentru fiecare coloană;

coloanele care acceptă sau nu valori NULL;

constrângeri, reguli, valori implicite;

indecșii necesari coloanelor care formează cheia primară sau sunt parte a unei chei străine.

După ce baza de date a fost proiectată se vor crea tabelele ce o conțin și în care se vor stoca datele.

Crearea efectivă a tabelelor

Pentru a crea o tabelă în baza de date ne vom folosi de următoarea sintaxă:

CREATE TABLE[nume_baza_de_date.[proprietar].|proprietar.]nume_tabel({<def_coloana> |<constrangere_tabela>}[, n]);

Coloanele sunt separate prin virgulă iar fiecare coloană va avea un nume și tip.

nume_baza_de_date – este numele bazei de date în care vom crea noua tabelă;

proprietar – este numele utilizatorului care va fi proprietarul tabelei;

nume_tabel – este numele tabelei pe care o vom crea;

def_coloană – se referă la definiția completă a unei coloane împreună cu constrângerile impuse asupra sa;

constrângere_tabela – se referă la constrângerile tabelei; [Luk07]

Ștergerea unei tabele

Ștergerea unei tabele se face prin comanda DROP TABLE. Sintaxa instrucțiunii de ștergere este următoarea:

DROP TABLE nume_tabela;

Introducerea în tabelă

Insert este comanda prin care se face introducerea uneia sau mai multor înregistrări într-o tabelă a unei baze de date.

Sintaxa comenzii insert este următoarea:

INSERT [INTO] nume_tabela (coloana_1, coloana_2,…, coloana_n) VALUES ('valoare_1', 'valoare_2', …, 'valoare_n');

INTO – este cuvânt cheie opțional;

nume_tabela – este numele tabelei în care se face inserarea;

coloana_1 – coloana în care se face inserarea;

VALUES – precede lista de valori de inserat. În această listă trebuie să existe câte o valoare pentru fiecare coloană specificată în lista de coloane.

Ștergerea înregistrărilor

Ștergerea unei înregistrări sau a tuturor înregistrărilor se face utilizând comanda DELETE, având următoarea sintaxă:

DELETE [ FROM ] {nume_tabela } [FROM { <sursa_tabela> }[ ,…n ]] [ WHERE { <conditie_cautare> }]

FROM – este un cuvânt cheie opțional care precede numele tabelei din care se face ștregerea.

nume_tabela – este numele tabelei din care se face ștergerea;

FROM sursa_tabela – prin această instrucțiune se poate specifica o cuplare de mai multe tabele;

WHERE – un cuvânt cheie prin care sunt specificate condițiile prin care se identifică înregistrările care urmează a fi șterse;

<conditie_cautare> – reprezintă orice condiție care poate fi inclusă în clauza WHERE;

Selectarea unui tabel

Utilizând comanda SELECT vom putea selecta un tabel în care se vor face modificările dorite. Instrucțiune SELECT are următoarea sintaxă:

SELECT [ ALL | DISTINCT ][ TOP n [ PERCENT] ] { * | {nume_tabel | alias_tabel}.* | {nume_coloana | expresie | IDENTITYCOL | ROWGUIDCOL } [[AS] alias_coloana] | alias_coloana = expresie } [ , n]

ALL – înregistrările duplicat pot sa apară în relația rezultat. ALL este opțiunea implicită;

DISTINCT – se elimină înregistrările duplicat din relația duplicat;

TOP n [PERCENT] – sunt returnate numai primele n înregistrări din rezultat, iar dacă se specifică și cuvântul cheie PERCENT, atunci vor fi returnate numai primele n procente din totalul înregistrărilor găsite în tabelă;

nume_coloana – este numele unei coloane;

nume_tabel | alias_tabel.* – se include în rezultat numai atributul din tabela specificată;

expresie – poate fi un număr de coloană, o constantă, o funcție, orice combinație a acestora realizată prin operatori sau un SELECT imbricat;

IDENTITYCOL – returnează coloana cu proprietatea IDENTITY; dacă în clauza FROM sunt referite mai multe tabele care au un atribut de tip IDENTITY, atunci IDENTITYCOL se va prefixa cu numele tabelei corespunzătoare, sub forma

Tabela. IDENTITYCOL.

ROWGUIDCOL – returnează coloana cu valorile identificatorului global unic de înregistrare pentru tabelele care au proprietatea ROWGUIDCOL.

alis_coloana – este un nume alternativ cu care se poate înlocui numele unui atribut, poate fi folosit în clauza ORDER BY, dar nu și în clauza WHERE.

Modificarea structurii unui tabel

Instrucțiunea ALTER TABLE permite modificarea definiției unei tabele realizând orice combinație a următoarelor categorii de operații:

modificare definiției unei coloane sau constrângeri;

adăugarea sau ștergerea unei coloane sau constrângeri;

activarea sau dezactivarea unei constrângeri sau a unui trigger;

Javascript

JavaScript (JS) este un limbaj de programare orientat obiect. Este folosit mai ales pentru introducerea unor funcționalități în paginile web, codul Javascript din aceste pagini fiind rulat de către browser. Limbajul este binecunoscut pentru folosirea sa în construirea siturilor web, dar este folosit și pentru acesul la obiecte încastrate (embedded objects) în alte aplicații.

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 aceste 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 toată pagina web, și actualizarea numai anumitor porțiuni ale paginii prin manipularea DOM-ului paginii. Tehnica AJAX permite construirea unor interfețe web cu timp de răspuns mic, întrucît operația (costisitoare ca timp) de încărcare a unei pagini HTML complete este în mare parte eliminată.

Elementele de bază ale limbajului

Comentarii

Sintaxa unui comentariu este aceeași ca și în C++ și multe alte limbaje:

// Scurt, o linie de comentariu

/ * Acesta este un lung, multi-linie de comentariu

despre script-ul meu. Mai, într-o zi minunată * /

/ * Comentarii / * nu pot fi imbricate * / Eroare de sintaxa * /

Câteva din tipurile de date

Nedefinit

Valoarea de "undefined" este atribuită la toate variabilele neinițializate, și, de asemenea, într-un context boolean, valoarea undefined este considerat o valoare de fals.

var test ; // variabila declarata, dar nu este definita

Null

Spre deosebire de nedefinit, nul este de multe ori setat pentru a indica faptul că ceva a fost declarat, dar a fost definit pentru a fi gol. Într-un context boolean, valoarea nulă este considerată o valoare de fals în JavaScript.

String

Un string (sau șir) în Javascript este o secvență de caractere cuprinsă între ghilimele duble sau single.

var greeting = "Hello, world!" ;

var anotherGreeting = 'Greetings, people of Earth.' ;

Puteți accesa caractere individuale dintr-un șir utilizând charAt metoda (furnizate de String.prototype ). Aceasta este metoda preferată atunci când accesarea de caractere individuale din cadrul unui șir, pentru că, de asemenea, funcționează non-moderne browsere:

var h = greeting. charAt ( 0 ) ;

Boolean

JavaScript oferă un tip de date Boolean cu valorile true și false. Operatorul returnează șirul "boolean" pentru aceste tipuri de primitive.

Atunci când este utilizat într-un context logic, 0 , -0 , null , NaN , undefined , iar șir vid ( "" ) evaluează în false din cauza constrângerii automate.

Array

Un „Array” (sau „tablou”, „matrice”) este un obiect JavaScript proiectat pentru a stoca valori de date indexate de chei întregi.

Matricea, spre deosebire de tipul de obiect de bază, se patentează cu metode si proprietati pentru a ajuta programatorul în sarcini de rutină (de exemplu, join , slice , și push ).

var myArray = [ ] ; // Creează o variabilă nouă array cu numele myArray

myArray. push ( "hello world" ) ; // Completează valoarea de index 0 cu valoarea "hello world"

jQuery

jQuery este o bibleotecă 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. Biblioteca a fost lansată in 2006 de către John Resig.

Sintaxa jQuery este adaptata pentru a SELECTA unul sau mai multe elemente HTML si pentru a efectua o ACTIUNE asupra elementului (elementelor) selectat(e).
Sintaxa de baza este: $(selector).action()
– semnul dolar – $ – pentru a defini jQuery
– un selector – (selector) – pentru a gasi (interoga, eng: find, query) elementul HTML
– o actiune – action() – care va fi efectuata asupra elementului (elementelor) HTML selectat(e)

Exemple de sintaxe:
$(this).hide() – ascunde elementul HTML curent.
$("#test").hide() – ascunde elementul cu id="test".
$("p").hide() – ascunde toate elementele de tip <p> (paragraf).
$(".test").hide() – ascunde toate elementele cu clasa="test".

jQuery utilizeaza o combinatie intre XPath (utilizat pentru a naviga printre elementele si atributele intr-un document XML) si sintaxa selctorului CSS.

Drupal

Drupal este un software liber, „open source” de management al conținutului (CMS ) scris în PHP și distribuit sub GNU General Public License. Este folosit de cel puțin 2,1 % din toate site-urile web la nivel mondial, de la blog-uri personale, la magazine online, site-uri guvernamentale, siteuri de prezentare sau chiar retele sociale. Instalare standard de Drupal, cunoscut sub numele de Drupal Core, conține caracteristicile esentiale pentru sistemele de management al conținutului. Acestea includ înregistrarea contui de utilizator, managementul meniurilor, fluxuri RSS, teme grafice personalizabile, și administrarea si crearea de tipuri de continut.

Instalarea de bază Drupal poate fi folosit ca un site web de prezentare, un singur – sau multi-user blog, un forum pe internet sau un site de comunitate pentru conținutul generat de utilizator. Din ianuarie 2013, există mai mult de 20100 module gratuite gratuite cunoscute sub numele de module contribuite, disponibile pentru a modifica și extinde capabilitățile de bază ale Drupal și a adăuga noi caracteristici sau personaliza comportamentul Drupal și aspectul sau.

Prin aceste module si prin designul modular, Drupal este cel mai versatil sistem de tip open source pentru managementul conținutului. Drupal este, de asemenea, descris ca o platforma web pe baza careia se pot crea diverse aplicatii web cunoscute si sub denumirea de distributii Drupal. Deși Drupal oferă o interfață de programare sofisticată pentru dezvoltatori sau programatori, Drupal este foarte accesibil si celor fără cunoștințe de programare care doresc sa foloseasca instalarea bază a Drupalui și sa isi administreze propriul site.

Drupal ruleaza pe orice platforma de calcul care suportă atât un server web capabil să ruleze PHP (inclusiv Apache , IIS , Lighttpd , Hiawatha , Cherokee sau Nginx ) și o bază de date (cum ar fi MySQL, MongoDB, MariaDB, PostgreSQL , SQLite sau chiar Microsoft SQL Server). Drupal 6 necesită minim PHP 4.4.0, în timp ce Drupal 7 necesită minim PHP 5.2.5. Urmatoarea versiune de Drupal, este Drupal 8.

Argumente PRO Drupal

Drupal este ușor de instalat și configurat;

Administrarea conținutului este ușor de realizat – începe totuși cu un tutorial simplu pentru a înțelege cum functionează Drupal; după o oră-două, esti gata să adaugi sute de pagini, poze, fișiere, comentarii la articole. E mai bine decât sa te înscrii la cursuri de HTML și PHP, nu?

Editarea conținutului e cât se poate de facilă dacă se folosește un editor HTML.

oferă foarte multe functionalități: poți avea pe site câmp de căutare integrat în site, blog, articole sortate pe categorii, opțiunea de autentificare a utilizatorilor pe site, meniu, logo, zone pentru noutăți, anunțuri sau ultimele articole publicate, RSS feed etc.

Este flexibil: poți folosi Drupal pentru a crea un forum, un blog, un site tip wiki, un site de prezentare sau unul pentru o comunitate de utilizatori.

Este o soluție foarte bună pentru site-urile cu utilizatori și comunități.

Drupal este orientat spre SEO – linkurile sunt ușor de citit, există module care îți permit să adaugi descriere și cuvinte cheie pentru fiecare pagină în parte, poți genera harta site-ului în format XML.

Folosind modulul de statistici, poți afla câte afișări are fiecare pagină în parte și alte statistici folositoare. În plus, poate fi integrat cu alte instrumente gen Google Analytics.

Funcționalitățile, layout-ul și designul sunt foarte ușor de personalizat.

În fiecare zi se adaugă pe drupal.org module și teme noi pe care le puteți folosi gratuit. În plus, module deja existente sunt updatate, revizuite sau îmbunătățite.

funcționalitățile inițiale pot fi extinse. Pe drupal.org (Modules) vei găsi o listă uriașă de module care îți permit să adaugi la siteul tău functionalități diverse: să trimiți newslettere, să îți faci galerii de imagini, să adaugi sondaje de opinie etc.

modul în care arată siteul poate fi complet modificat. Pe drupal.org vei găsi zeci de teme (Themes) pe care le poți instala pe site pentru a face să arate cum îți place.

Poți modifica orice linie de cod în funcție de nevoi.

Utilizatorii pot avea roluri și permisiuni diferite

Conținutul adăugat pe site poate fi împărțit pe categorii (folosind modulul Taxonomy) și structurat prin intermediul meniului.

Drupal este scris în limbaj PHP, un limbaj de programare popular și accesibil. Marele avantaj este ca programatorii PHP sunt mai ieftini și mai ușor de găsit, așa că dacă vei dori să personalizezi anumite module, nu te va costa o avere.

Drupal este într-o continuă dezvoltare, existând mereu update-uri care să rezolve eventuale chestiuni de securitate.

Drupal este prieten cu web 2.0 și include încă de la instalare opțiuni pentru comentarii, forumuri, blogging.

Conținutul poate fi sindicalizat. Orice categorie sau secțiune din site poate fi publicată și ca feed RSS.

Cele mai importante module folosite (în afară de cele folosite implicit de Drupal):

Panels

Modulul Panels pune la dispoziția administratorului posibilitatea de a crea „layout-uri” personalizate. Este o unealtă „drag and drop” folosită practic pentru creare de pagini.

Views

Views este unul dintre cele mai importante module pentru Drupal, tot ce face este să aducă conținut din baza de date, dar în foarte multe feluri, se poate folosi foarte ușor din interfața de administrare.

Private message

Aces modul pune la dispoziția utilizatorul opțiunea de a trimite mesaje private catre ceilalți utilizatori ai site-ului.

Apache SOLR search

Acest modul integreaza în Drupal platforma de căutare Apache SOLR. Se poate folosi pentru a înlocui modulul de cautare folosit implicit de Drupal.

Redis

Modulul Redis integrează în Drupal sistemul de caching Redis.

Location

Acest modul face posibil ca o locație Geografică să fie asociată cu o entitate din Drupal.

Entity Reference

Acest modul crează un nou tip de câmp, care să facă o referintă înspre o altă entitate.

Entity Construction kit

Crează un sistem de modelare de date cu interfață grafică pentru a crea noi entități, dar pune la dispoziție și niște clase pentru a se putea folosi cu ușurință din cod lucrul cu entiățiile.

Redis

Redis este un „advanced key-value store” de asemnea „open source” . Este unul dintre cele mai puternice si mai cunoscute sisteme de caching.

Redis este scris în ANSI C și funcționează în cele mai multe sisteme POSIX, cum ar fi Linux, OS X fără dependențe externe. Linux și OSX sunt cele două sisteme de operare în care Redis este dezvoltat și cel mai mult testat și este recomandat să se utilizeze Linux pentru implementare.

Nu există suport oficial pentru Windows, dar Microsoft dezvoltă și menține o versiune experimentală de Redis.

Redis se poate folosi în următoarele limbaje de programare: ActionScript,  C, C++, C#, Clojure, Common, Lisp, Dart, Erlang, Go, Haskell, Haxe, Io, Java, JavaScript (Node.js), Lua, Objective-C, Perl, PHP, Pure Data, Python, R, Ruby, Scala, Smalltalk and Tcl.

Apache SOLR

Apache SOLR este o platformă de căutare creată de Apache Lucene, de asemenea „open source” și este unul dintre cele mai importante unelte de căutare folosite în domeniul web. Solr este scris în Java și rulează ca un server „standalone” de căutare „full-text”.

Capitolul 4. Specificațiile aplicației

Schema bloc a sistemului. Scurtă descriere a aplicației

Fig. 4.1 Relațiile între componentele sistemului

Aplicația realizată reprezintă un site destinat tuturor celor ce vor să cumpere sau să vandă vre-un bun. Printr-o interfață intuitivă utilizatorul chiar dacă nu este logat are mai multe opțiuni:

Poate să vadă orice anunț, dar fară detalii despre autor.

Poate adăuga și edita un nou anunț.

Poate trimite direct din aplicație un e-mail cu un anunț ce ar putea fi de interes pentru un cunoscut.

Poate face share unui anunț pe cele mai cunoscute rețele de socializare.

Un utilizator logat are mai multe posibilitați pe lângă cele ale unui utilizator neautentificat:

Poate vedea detalii despre autorii anunțurilor.

Poate vedea o listă cu anunțurile publicate.

Poate face bid la un anunț si vedea o listă cu toate anunțurile la care a facut bid.

Are posibilitatea de a adăuga in watchlist un anunț si urmării apoi intr-o listă evoluția prețurilor la anunțul respectiv.

Are posibilitatea de a trimite mesaje private celorlați utilizatori.

Interfața cu utilizatorul

În momentul în care server-ul răspunde cererii clientului Web se va încărca pagina principală ilustrată în figura (fig. 4.2.1).

Fig. 4.2.1 Pagina principală a aplicației

Interfața din figura (fig. 4.2.1) este formată din mai multe părți. În partea de sus a paginii se află un „header” ce cuprinde imaginea de profil a utilizatorului (daca acesta și-a setat-o; daca nu, cea din figură), un link catre corespondența cu ceilalți utilizatori, numele site-ului, un link de unde se adaugă un anunț nou si caseta de căutare. Apoi un „sub-header” unde avem un buton care deschide un meniu cu toate categoriile anunțurilor si titlul paginii. Puțin mai jos, pe centru este afișat conținutul principal, anunțurile (menționez ca imaginile anunțurilor din figură sunt de test), dar deasupra anunțurilor avem un text care ne afișeaza tot timpul locatia anunturilor, în dreapta textului este un buton care deschide un „popover” care permite utilizatorului să filtreze și să sorteze anunțurile după: locație, data când au fost postate si prețul.

Fig. 4.1.2 Pagina unui anunț

În figura 4.2.2 este prezentată pagina care se vede când se deschide un anunț. Avem imaginiile anunțului intr-un „slider”, cele trei butoane din sus-stânga paginii pentru: trimis e-mail, distribuire pe rețelele de socializare si adăugare in watchlist; Sub imaginiile anunțului avem descrierea anunțului, numele de utilizator si imaginea autorului, un buton care permite trimiterea unui mesaj privat autorului, prețul si cel mai important, butonul „Negocci” care deschide o fereastra (fig. 4.2.3) din care se poate face o oferta de preț acestui enunt.

Fig. 4.2.3 Fereastra „Negocci”

În figura 4.2.4 este prezentată pagina „My ads”, unde utilizatorul logat poate să vadă anunțurile adăugate de el. Pagina afișează (de la sânga la dreapta) :

Imaginea principală a anunțului.

Titlul;

O parte din descriere;

Prețul ales;

Numărul de vizualizări;

Numărul de oferte;

Timpul rămas până la expirare. Implicit anunțurile sunt valabile 30 de zile.

Figura 4.2.4 mai arată și meniul utilizatorului (stânga sus)

Fig 4.2.4 Pagina „My ads”

Figura 4.2.5 prezintă pagina „My Bids”. În această pagină se afișează toate anunțurile la care utilizatorul curent a făcut vre-o ofertă de preț. Dacă acesta a făcut mai multe oferte de preț la același anunț atunci anunțul va fi afișat de câte ori s-a făcut oferta doar cu prețul corespunzător diferit.

Mai concret, pagina afișează:

Din nou, imagine, titlu și o parte din descriere;

Prețul oferit de utilizator în paranteză;

Prețul cerut de autorul anunțului;

Un indicator de oferte printr-o săgeată ce poate avea trei culori:

Roșie, dacă există cel puțin o ofertă sub prețul cerut cu condiția să nu fie nici una peste prețul cerut;

Verde, dacă există cel puțin o ofertă peste prețul cerut;

Neagră, dacă toate ofertele de preț sunt la fel cu prețul cerut (puțin probabil);

Figura mai afișează și meniul categoriilor de anunțuri.

Fig. 4.2.5 Pagina „My Bids”

Figura 4.2.6 afișează pagina „Watchlist”. Această pagină listează toate anunțurile pe care utilizatorul curent și le-a adăugat în lista de preferințe. Pagina afișează:

Din nou, imaginea, titlu și o parte din descriere;

Prețul cerut de autorul anunțului;

Acel îndicator de preț;

Un buton de ștergere din „watchlist”;

Figura mai prezintă meniul cu link-urile de adăugare a unui anunț.

Fig. 4.2.6 Pagina „Watchlist” sau „Favorites”

Figura 4.1.7 prezintă pagina de setări. Împărțită în trei categorii, această pagină oferă posibilitatea utilizatorului să iși seteze datele personale care vor apărea pe site și anumite preferițe pe care le are în legătură cu notificările pe care le va primi.

Fig. 4.2.7 Pagina „Settings”

Figura 4.2.8 prezintă pagina de corespondență, „Messages and Notifications”, în interiorul ei, utilizatorul poate să vadă mesajele private pe care le-a primit, mesajele pe care le-a trimis, notificările primite din partea aplicației și poate să trimită un mesaj privat unui alt utilizator.

Fig. 4.2.8 Pagina de corespondență

Figura 4.2.9 prezintă o parte din pagina de adăugare a unui anunț. Această pagină contține un formular prin care, după ce este completat de utilizator, se adaugă un nou anunț în baza de date. Formularul are mai multe câmpuri, dintre care specificăm:

Locatie – este un textfield integrat cu Google Places Autocomplete, pentru a fi mai ușor pentru utilizator să seteze locația pentru anunțul introdus.

Număr de telefon – este din nou un textfield, dar care validează numărul de telefon introdus funcție de țara aleasă.

Imagine – utilizatorul are posibilitatea să aleagă până la opt imagini pentru anunțul său, din care prima va fi considerată imaginea principală.

Negociabil – utilizatorul poate stabili dacă prețul este negociabil sau nu.

Categoria anunțului

Fig. 4.2.9 O parte din pagina de adăugare a unui anunț.

Capitolul 5. Proiectarea în detaliu

Arhitectura aplicației

Aplicația realizată reprezintă un site de anunțuri publicitare. Prin intermediul său un utilizator poate să cumpere sau să vandă un anumit bun. Toate componentele din figura 5.1 vor fi explicate în subcapitolul următor, iar în cele ce urmează este prezentată arhitectura aplicației pentru a facilita înțelegerea modului în care funcționează aplicația:

Fig. 5.1 Componentele aplicației

5.2 Descrierea componentelor aplicației

Pagina principală – este pagina unde se afișează toate anunțurile, fără nici un fel de filtrare, fiind multe, pe viitor se va implementa încarcarea doar a câtorva anunțuri iar restul vor fi încarcate pe un „eveniment” de scroll in funcție de câte vrea utilizatorul sa vadă.

Pentru construcția acestei pagini s-a folosit un „panel” în interiorul căruia este un „view” care practic listează din baza de date toate anunțurile.

Pentru acea structură „pinterest” se folosește o bibleotecă numită jMasonry care tot ce face este să gasească locul potrivit pentru fiecare anunț folosind urmatorul apel:

var ads_wrapper = $(".page-ads .pane-ads-panel-pane-ads-listing .view-content");

ads_wrapper.imagesLoaded(function(){

ads_wrapper.masonry({

itemSelector : '.views-row',

columnWidth: function( containerWidth ) {

return containerWidth / 4;

},

isAnimated: true,

});

});

Pagina anunțului – este pagina de cel mai mare interes, este anunțul propriu-zis. Este de asemenea creată folosind un „panel” dar in interiorul lui avem un „slider” cu imaginiile anunțului, pentru slider s-a folosit bibleoteca Flexslider, unu dintre motivele pentru care am ales această bibleotecă este că sliderul rezultat este „responsive”.

„Negocci” – este o pagină modală deschisă cu ajutorul bibleotecii Bootstrap, în care este un formular prin care se face o ofertă de preț anunțului curent.

„Mesaj către autor” – este o pagină cu un formular din care se trimite un mesaj privat autorului anunțului privat.

„Pagina tuturor anunțurilor unui utilizator” – este o pagină identică cu pagina principală din punct de vedere a construcției și design-ului doar că anunțurile sunt filtrate după autorul anunțului curent.

Meniu categorii anunțuri – este un „dropdown menu” folosind din nou bibleoteca Bootstrap care afișează toate categoriile din care poate face parte un anunț. Când se dă „click” pe vre-una dintre categorii se deschide o pagina la fel ca și pagina principală în care sunt filtrate anunțurile după categoria aleasă.

Meniu user – este un „popover” de asemenea folosind bibleoteca Bootstrap în care sunt afișate următoarele opțiuni pentru un utilizator autentificat:

Pagina „My Bids” – este o pagină contruită cu un „panel” și un „view” în care se listează toate anunțurile la care utilizatorul logat care a făcut o ofertă. Dacă sunt mai multe oferte la același anunț se va lista anunțul de mai multe ori doar cu prețuri diferite.

Pagina „My Ads” – pagină construită la fel ca cea anterioară doar că „view-ul” listează toate anunțurile adăugate de utilizatorul logat.

Pagina „Favorites” – pagină construită la fel, diferit este faptul că „view-ul” listează toate anunțurile pe care utilizatorul și le-a adăugat în „watchlist” dând click pe acel „tick” al unui anunț.

Pagina „Settings” – pagina de setări ale utilizatorului, pagină creată utilizând „tabs” tot din Bootstrap.

Link „Sign Out”

Pagina de adăugare anunț – este pagina cu formularul de adăugare a unui anunț. Este o pagină generată de Drupal dar peste care s-a intervenit prin funcția „hook_form_alter()”.

Pagina de corespondență – este creată utilizând modulul din Drupal Private Message, dar peste care s-a intervenit cu mai multe modificări pentru a arăta cum s-a dorit să arate.

Pagina de „Log In” – este o pagină generată de Drupal în care sunt trei sub-pagini: pagina cu formularul de logare, pagina cu formularul de resetare a parolei și pagina de înregistrare pe site.

Entități utilizate:

CAPITOLUL 6. Concluzii

Simple optimizări

Optimizarea este foarte importantă în dezvoltarea unei aplicații indiferent de mediul în de programare în care a fost realizată. Utilizând PHP, majoritatea timpului în care un utilizator așteaptă atunci când utilizează o aplicație Web provine din timpii de conectare și de descărcare.

În cele ce urmează vor fi prezentate câteva optimizări simple ce se vor face simțite din punctul de vedere al timpilor de conectare și descărcare:

reducerea conexiunilor la baza de date; conectarea la o bază de date este de multe ori cea mai lentă parte a fiecărui script;

reducerea numărului de interogări și optimizarea acestora;

folosirea a cât mai puține fișiere javascript și css;

încercarea de a se duce tot conținutul din memoria ram și nu din serverul MySQL;

folosirea imaginilor redimensionate;

folosirea funcției „t()” pentru afișarea șirurilor de caractere statice, în acest fel vor putea fi traduse din interfață.

folosirea „metatags” pentru optimizare SEO.

Ce s-a realizat

Aplicația prezentată în paginile de mai sus este un site create în Drupal, beneficiind de tot ce pune cms-ul inițial la dispoziție; faptul că partea de login (creare cont, login și resetare parolă) și partea de administrare a site-ului sunt deja făcute și sunt făcute foarte bine, constituie un mare avantaj pentru programator.

Pentru ca unii din utilizatori să poată beneficia de anumite facilități în plus față de cei care doar vizitează site-ul, este nevoie de o înregistrare a datelor personale în baza de date a aplicației, aceasta fiind într-o versiune beta tot ce trebuie să facă înițial un utilizator este să își seteze adresa de e-mail (fig 6.1), după care va primi un mesaj în care se specifică ce are de făcut în continuare.

Fig 6.1 Pagina de „Sign Up”

Un alt avantaj pentru crearea unei aplicații în Drupal este optimizarea SEO pe care cms-ul o are implicit, dar pe lângă aceasta se mai pot face și alte setări pentru ca aplicația rezultată să fie și mai bine găsită de motoarele de căutare.

De asemnea, avantaje sunt și în trimiterea de scrisori electronice, aceasta realizându-se foarte simplu din interfața de administrare pusă la dispozitie de Drupal.

Direcții de dezvoltare

Aplicației i se poate atașa o gama largă de servicii pe lângă cele existente deja. Un prim serviciu ar putea fi un forum de discuții unde utilizatorii să poate înteracționa, o altă idee implementabilă este trimiterea de sms-uri, de exemplu, daca un alt utilizator a făcut o ofertă de preț mai bună unui anunț s-ar putea să dureze ceva timp până când e-mailul trimis să poată fi văzut, dar daca se primește un mesaj pe telefonul mobil, utilizatorul a cărui preț știe că s-a făcut o ofertă de un mai mare interes decât a lui. Idea de „rating” este un alt lucru care cel mai probabil va fi implementată pe viitor.

Bibliografie

http://www.php.net

http://www.w3schools.com/html/default.asp

http://www.w3schools.com/js/default.asp

http://www.w3schools.com/jquery/default.asp

http://www.w3schools.com/php/default.asp

http://www.w3schools.com/sql/default.asp

http://drupal.ro/

https://www.drupal.org/project/panels

https://www.drupal.org/project/views

https://www.drupal.org/project/entityreference

https://www.drupal.org/project/privatemsg

https://www.drupal.org/project/location

https://www.drupal.org/project/eck

http://redis.io/

http://en.wikipedia.org/wiki/Redis

http://lucene.apache.org/solr/

http://en.wikipedia.org/wiki/Apache_Solr

http://en.wikipedia.org/wiki/JQuery

http://en.wikipedia.org/wiki/JavaScript

http://www.codebox.ro/forum

http://drupal.ro/ro/drupal/de-ce-sa-alegi-drupal

Similar Posts