Dezvoltarea Unei Platforme E Learning
Cuprins:
Cap. 1: Concepte e-Learning
Prefata
Abordarea învățământului la distanță ca modalitate alternativă sau complementară de a face educație pornește de la asigurarea și respectarea unor criterii de calitate în ce privește aspectele pedagogice, academice, administrative, tehnice.
Conceptul pregătire pentru viață, care a constituit multă vreme un obiectiv major al sistemelor educative din întreaga lume, a devenit redundant în perspectiva deschisă de uriașele transformări din societate datorate schimbărilor tehnologice și economice. Cu treizeci de ani în urmă, educația pe tot parcursul vieții putea fi privită ca o opțiune pentru o vârstă cu mai mult timp liber. Acum a devenit o necesitate. Ofertele de educație și pregătire au devenit segmentate și diversificate, în acord cu variatele cereri ale consumatorilor care plătesc pentru module educative ajustate pe propriile nevoi.
Educația la distanță este doar o expresie a acestei noi orientări spre consumator a diverselor instituții de pregătire. Acumularea de credite și transferul, modularizarea cursurilor sunt părți ale aceleiași transformări de structură a sistemului de învățământ.
Rezultatele cercetărilor de până acum, realizate în țările cu tradiție în educația prin corespondență, relevă faptul că învățământul la distanță este la fel de eficient ca formele tradiționale de educație, cu condiția unei proiectări corespunzătoare. Spre exemplu, la cererea Federației Americane a Profesorilor și Asociației Naționale pentru Educație, Institutul pentru Politici Educaționale din Statele Unite a inițiat o cercetare privind eficacitatea educației la distanță, care s-a dorit a fi o analiză a "ceea ce ne spun cercetările în domeniu și ceea ce nu ne spun" (The Institute for Higher Education Policy. What’s the Difference? A Review of Contemporary Research on the Effectiveness of Distance Learning in Higher Education. 1999. [online] http://www.ihep.com, p. 6.). Raportul sugerează că multe dintre întrebările esențiale despre modul în care se realizează predarea-învățarea la distanță nu primesc răspuns. Este oare mai potrivită educația la distanță pentru anumite obiecte de învățământ decât pentru altele? Este mai potrivită pentru anumiți studenți? Care sunt cauzele abandonului în cadrul cursurilor la distanță? Sunt bibliotecile și sursele de informare suficiente? Ce elemente sunt necesare pentru ca un student să absolve cu succes un curs la distanță și cum pot fi evaluate acestea? Evaluarea studenților în clasele la distanță este diferită de evaluarea tradițională? Problemele administrative afectează calitatea instruirii la distanță?
Demersul cercetării asupra educației la distanță este departe de a fi clarificat problemele conturate de această formă de predare-învățare mereu în expansiune.
Oricum, noile tehnologii ale informației și comunicării au dat o mână de ajutor instituțiilor de învățământ superior în concentrarea asupra scopului esențial al instruirii. Realitatea ne indică o cerere masivă de cursuri în tehnologia învățământului deschis și la distanță, grefată pe o nevoie tot mai mare de educație continuă. Problema care se pune în aceste condiții este aceea de a crește eficiența programelor existente și proiectarea altora, pe baza unei teorii pedagogice a educației la distanță care să susțină practica la toate nivelele.
Educatia la distanta – definitii
Teoria pedagogică a învățământului la distanță pornește de la încercările de definire a educației la distanță. Istoric, educația la distanță însemna studiul prin corespondență, însă accepțiunile actuale tind să fie mai apropiate de metode de transmitere a materialelor susținute de tehnologii audio, video și (mai frecvent și deschizând mai multe posibilități) prin Internet.
În general, se vorbește despre educație la distanță atunci când profesorul și studentul (studenții) sunt separați prin distanță fizică și tehnologia (audio, video, rețele de calculatoare, material tipărit), îmbinată uneori cu comunicarea față în față, este folosită pentru instruire (Engineering Outreach Staff de la Universitatea Idaho – Distance Education at a Glance). Un alt numitor comun al definițiilor de până acum este caracteristica acestui sistem de a augmenta oportunitățile de învățare ale studenților, prin eliminarea obstacolelor de ordin spațial, temporal sau a impunerii unui ritm de învățare. Se asigură astfel posibilități de studiu unor categorii largi de persoane, fără întreruperea activității lor profesionale. Aceasta este de fapt și caracteristica principală, care face ca sistemul să fie deosebit de viabil pentru ciclurile superioare, pentru educația permanentă, pentru învățământul vocațional, și îl situează potențial printre cele mai solicitate tipuri de sisteme de educație ale viitorului.
O excelentă definiție cu valoare operațională o dă Consiliul pentru Educație și Instruire la Distanță: "Educația la distanță presupune înscrierea și studiul la o instituție de instruire, care asigură materialele didactice pregătite într-o ordine secvențială și logică pentru ca studenții să studieze pe cont propriu. La sfârșitul fiecărei etape, studentul trimite prin fax sau e-mail, către instructori calificați, produsul muncii sale spre corectare, clasare și orientare tutorială pe problemele temei de studiu. Sarcinile corectate sunt înapoiate, acest schimb asigurând o relație student-profesor personalizată." (Consiliul pentru Educație și Pregătire la Distanță – http://www.detc.org/)
Unii autori investesc cu semnificații deosebite interacțiunile dintre studenți, poate pentru că aceasta este una din direcțiile spre care sistemul de instruire la distanță își va depăși limitele. Alți autori accentuează rolul mediator al profesioniștilor educației – punerea în legătură a studenților cu resursele educaționale de oriunde din lume fiind considerat unul dintre cele mai importante avantaje ale educației la distanță prin Internet – în contextul actual al digitizării culturii, varietății surselor de informare și dificultății de orientare în câmpul informațional.
În sens larg, prin elearning (sau e-learning) se întelege totalitatea situatiilor educationale în care se utilizeaza semnificativ mijloacele tehnologiei informatiei si comunicarii. Termenul, preluat din literatura anglo-saxona, a fost extins de la sensul primar, etimologic, de învatare prin mijloace electronice, acoperind acum aria de intersectie a actiunilor educative cu mijloacele informatice moderne. Definit astfel, mai mult ca e-education, aria semantica a conceptului e-learning interfereaza cu si se suprapune indefinit variabil pe o multitudine de termeni ce surprind varietatea experientelor didactice ce pot beneficia de suport tehnologic: instruire asistata/ mediata de calculator, digital/ mobile/ online learning/ education, instruire prin multimedia etc. Sub denumirea de software didactic/ educational, o gama larga de materiale electronice (pe suport digital/ multimedia) sunt dezvoltate pentru a simplifica procesul de educatie: harti, dictionare, enciclopedii, filme didactice, prezentari în diverse formate, carti (e-books), teste, tutoriale, simulari, software ce formeaza abilitati, software de exersare, jocuri didactice etc. Computerul si materialele electronice/ multimedia sunt utilizate ca suport în predare, învatare, evaluare sau ca mijloc de comunicare (pentru realizarea unor sarcini individuale etc).
În sens restrâns, elearning reprezinta un tip de educatie la distanta, ca experienta planificata de predare-învatare organizata de o institutie ce furnizeaza mediat materiale într-o ordine secventiala si logica pentru a fi asimilate de studenti în maniera proprie. Medierea se realizeaza prin noile tehnologii ale informatiei si comunicarii – în special prin Internet. Internetul constituie atât mediul de distributie al materialelor, cât si canalul de comunicare între actorii implicati. Functional deocamdata doar la nivelul învatamântului superior si în educatia adultilor, sistemul de instruire prin Internet replica.
e-Learning – cadru conceptual
Cele mai durabile si mai eficiente inovatii sunt acelea pe care beneficiarul le-a asimilat, adica le-a adoptat pentru ca îi satisfac nevoile sale specifice. Sa luam în considerare ceea ce se întâmpla la nivelul concret al transformarilor produse de noile tehnologii ale informatiei si comunicarii:
În primul rând, observam convertirea continutului cultural din întreaga lume într-o forma digitala, facând astfel produsele disponibile oricui, oriunde si oricând. Retelele de comunicatii cu arie larga si de mare viteza, legând computerele din apartamente sau de pe pupitrele elevilor la biblioteci digitale de mare capacitate schimba conditiile culturale în care se desfasoara educatia. Izolarea este de domeniul trecutului si are loc o substitutie a insuficientei si perimarii informatiilor cu amploarea si arhisuficienta lor. Problemele educatiei se schimba profund, alternativa la o cunoastere insuficienta si costisitoare fiind gasirea strategiilor ce permit accesul nelimitat la cultura.
În al doilea rând, sunt dezvoltate multiple modalitati de a reprezenta informatii, de a simula interactiuni si a exprima idei, extinzând achizitiile inteligentei, alterând astfel spectrul civilizatiei, modificând cerintele participarii la cultura. Dezvoltarea epistemologica capata aspecte interesante. Gândirea relationeaza strâns cu limbajul, simbolizarea formala din matematica si logica fiind privita ca o extensie a variatelor forme lingvistice curente. Mediul digital extinde evident sfera, fiind folosit pentru a achizitiona informatii si pentru a exprima idei în diverse moduri – verbal, vizual, auditiv sau îmbinarea tuturor acestora. Ca rezultat, educatorilor le va fi din ce în ce mai dificil sa favorizeze manipularea limbajului verbal în detrimentul celorlalte modalitati de expresie.
În al treilea rând, oamenii exteriorizeaza diverse abilitati curente – de a calcula, de a scrie corect, a memora, a vizualiza, a compara, a selecta – în instrumentele digitale cu care lucreaza, dobândind astfel practic o adevarata maiestrie în ce priveste aceste abilitati, cândva rezultate ale educatiei. Tehnologiile digitale largesc potentialitatile personale. Procesoarele de texte, de exemplu, avertizeaza în cazul oricarui cuvânt scris incorect sau în cazul greselilor gramaticale, foile de calcul permit oricui sa faca rapid si corect calcule dupa formule extrem de complexe, bazele de date permit si celor cu slabe capacitati de memorare sa manipuleze seturi întregi de informatii. Diverse alte forme de instrumente de lucru specializate reduc nivelul aptitudinal necesar pentru a participa efectiv la o gama larga de activitati culturale.
Bibliotecile digitale, multimedia si abilitatile exteriorizate schimba sensibil perspectiva asupra practicii educationale. Introducerea Internetului este evenimentul ce precipita emergenta unei noi paradigme în educatie si formare. Convergenta, pe fondul schimbarilor majore din social, a unor factori cum ar fi: 1. dezvoltarea tehnologica, 2. noile teorii pedagogice si 3. împartirea responsabilitatii pentru educatie cu diverse alte institutii – duc la reliefarea unor caracteristici ce dau masura acestei paradigme:
fluiditatea rolurilor
curriculum orientat spre necesitatile particulare ale studentului
resurse distribuite
facilitati virtuale
lectii asincron.
Paradigma noua este strâns legata de efectele depasirii culturii tiparului, într-o societate a comunicarii generalizate. Internetul devine, pe zi ce trece, arbitrul accesului la educatie si cultura, iar forma cea mai potrivita de a veni în întâmpinarea nevoilor de cunoastere si formare continua este eLearning.
Modele de educatie la distanta
Spatiul limitat din institutii, precum si diverse dificultati întâmpinate de unii studenti, în jonctiune cu necesitatea pregatirii pe tot parcursul vietii ce conduce la o cerere de educatie sporita, conduc la luarea în considerare de catre institutiile traditionale a alternativelor învatamântului deschis si la dis si la distanta. Diverse modele de educatie la distanta pot fi adoptate, în functie de scopul urmarit, cererea de educatie si resursele disponibile:
1. Model de sine statator
Presupune o institutie exclusiv virtuala, care va asigura urmatoarele functii:
Dezvoltarea programelor educationale (inclusiv proiectarea materialelor pentru învatare)
Tutoriat si îndrumare
Producerea, stocarea si distribuirea materialelor pentru învatare
Administrare si probleme financiare
Marketing
Evaluare si acreditare
Argumentele pentru un sistem educational constituit exclusiv pe criteriul instruirii la distanta sunt urmatoarele:
Structurile administrative ale sistemelor educationale conventionale nu corespund dezvoltarii si managementului sistemelor la distanta.
Institutiile traditionale considera adesea educatia la distanta ca având rezultate inadecvate, asadar sunt rezervate în a le aloca resurse.
Cerintele studentilor la distanta pot fi mai bine satisfacute daca institutia este dedicata în întregime cerintelor acestora.
Caracteristicile populatiei tinta sunt total diferite în sistemul conventional fata de cel la distanta.
Pedagogia educatiei la distanta difera de cea a învatamântului traditional.
Aceste institutii se clasifica în doua tipuri: multi-sectional – asigura pregatire în mai multe domenii si uni-sectional – asigura pregatire într-un singur domeniu.
2. Departament de educatie la distanta în cadrul unei institutii de învatamânt existente.
Argumentele pentru un asemenea sistem bimodal sunt:
Materialele suport pentru învatare pregatite de cadrele didactice pot servi în egala masura studenti interni si externi de campus.
Materialele de autoinstruire încurajeaza învatarea independenta a ambelor categorii de studenti.
Studentii pot opta pentru unul sau altul dintre sisteme.
Studentii la distanta beneficiaza de traditia si renumele institutiei si se supun standardelor acesteia.
Cadrele didactice sunt încurajate pentru practicarea unui învatamânt mai interactiv.
3. Structuri cooperative
Diverse institutii lucreaza în comun, atât în activitatea de educare cât si în îndeplinirea celorlalte functii ce le revin (productie si distributie de suport pentru învatare, administrative etc.). Aceste institutii nu înscriu studenti în mod direct, ci ofera servicii pentru institutiile de învatamânt propriu-zise.
4. Structuri hibride
Ca rezultat al îmbinarii diverselor structuri din modelele descrise anterior.
În afara descriptorilor modelelor de educatie la distanta de mai sus, care poarta cu sine gradul de aplicabilitate practica în varii situatii, se mai pot enumera câtiva factori care influenteaza alegerea unei structuri:
Scopul educatiei. Daca se urmareste pefectionarea cadrelor didactice în sensul familiarizarii cu prevederile reformei învatamântului, atunci optiunea ar putea fi pentru un model de sine statator sau dual, unisectional.
Necesitatile pentru educatie. O universitate deschisa este cea mai buna solutie pentru cerinte mari.
Resurse disponibile – umane, fizice si financiare.
Gradul autonomiei si controlului – dependente de orientarea si sustinerea de la nivelul politicilor educationale.
În general, institutiile educative prefera adoptarea unui sistem bimodal de organizare, prin proiecte specifice care creaza o institutie virtuala în cadrul uneia traditionale. Efectele sunt evidente în timp relativ scurt – o universitate înscriind de zeci de ori mai multi studenti decât pot încape în salile sale de curs – dar efectele pe termen lung sunt cele vizate, institutiile cu traditie ocupând un loc în spatiul educativ de mâine, spatiul virtual, catre un viitor al "universitatilor fara sedii, legate (mai întâi) de oameni si de idei". (Dumitru Oprea, rectorul Universitatii "Al.I.Cuza" din Iasi – martie 2000)
Tipuri de educatie la distanta
Educatia la distanta nu este un fenomen nou în câmpul educational, ci constituie o modalitate de predare si învatare cunoscuta si practicata de cel putin o suta de ani.
Educatia prin corespondenta
Înainte de aparitia si folosirea în masa a noilor tehnologii ale informatiei si comunicarii, educatorii foloseau materialul tiparit si serviciile postale pentru ceea ce se numea educatie prin corespondenta. Înca din 1910, un studiu dedicat unei institutii de instruire la distanta ne da masura a ceea ce se petrecea în Statele Unite si Canada: "Nu mai putin de 1600 de persoane sunt antrenate în activitati de instruire de catre Scoala Internationala prin Corespondenta, a carei misiune principala este de a patrunde în masa eterogena a umanitatii pentru a descoperi, directiona si convinge indivizii de beneficiile educatiei. Nu cunosc o alta inovatie printre metodele existente mai revolutionara si mai radicala decât aceasta. Avem de-a face aici cu o institutie care cheltuieste anual peste doua milioane de dolari pentru a crea o cerere de educatie.".
Aceasta forma a educatiei la distanta ramâne înca o modalitate de instruire viabila acolo unde nu sunt înca dezvoltate infrastructurile necesare unei abordari moderne si mai eficiente.
Mai trebuie semnalate aici unele dintre formele actuale ale educatiei prin corespondenta, în care materialele pentru învatare sunt în format electronic si pot fi livrate pe dischete, CD-ROM sau direct prin e-mail. Se obtin astfel unele avantaje fata de învatamântul la distanta prin corespondenta postala: reducerea costurilor, personalului si spatiilor de depozitare.
Educatie prin radio
Educatia la distanta prin radio a avut o popularitate mai scazuta, fiind folosita odata cu dezvoltarea extraordinara a acestui nou purtator de informatie si dizolvându-se în celelalte functii ale comunicarii prin mass-media: promovarea culturii, informarea, socializarea si chiar divertismentul. Imediat dupa obtinerea primei licente de educatie prin radio de catre Universitatea din Salt Lake City, în 1921, apareau si în România primele aprecieri cu privire la metodele pedagogice noi oferite de radiodifuziune. La sugestia lui Dimitrie Gusti, în calitate de presedinte al Societatii Române de Radiodifuziune, s-au organizat începând cu 1930 doua conferinte prin radio pentru clasele inferioare si superioare. Fara îndoiala, radioul si-a avut perioada lui de predominanta pozitiva în perimetrul instructiei si educatiei scolare de tip informal.
Educatie prin televiziune
Similar este cazul educatiei prin televiziune, care preia, de asemenea, la un moment dat, de la carte/manual si presa, multiple sarcini de stocare si transfer a informatiei aflate într-o adevarata explozie. Prin mijloacele sale ample si variate si beneficiind de avantajul familiaritatii, televiziunea contribuie la informarea culturala, dar poate fi utilizata si pentru educatie, mentinându-se ca alternativa pedagogica în centrul de interes al educatorilor din 1945 (când Universitatea de Stat din Iowa obtine prima licenta) si pâna spre mijlocul deceniului al optulea. Cercetarile au demonstrat ca rezultatele obtinute prin televiziunea scolara nu sunt inferioare celor obtinute prin învatamântul traditional. Distinctia ce se impune este între 1. emisiunile TV cu caracter educational general, care urmaresc obiective instructive prin influenta educativa difuza si 2. emisiunile proiectate si realizate în functie de programe de tip scolar, ca forma alternativa de învatamânt, ce beneficiaza de avantajele specifice educatiei la distanta: un profesor poate conduce situatii de învatare pentru un numar mai mare de elevi; sunt prezentate elevilor realitati inaccesibile observatiei directe; atractivitatea materialelor prin îmbinarea imaginii cu sunetul; continuturile transmise pot avea girul unor personalitati prezente la lectie; anularea impedimentului distantei; reutilizarea ulterioara a materialelor etc.
În ciuda raspândirii lor pe arie larga si fortei de seductie pe care o au pentru educatori pentru acest atu, aceste mijloace moderne de comunicare în masa se abat de la prezenta în rândul mijloacelor educative eficiente prin doua neajunsuri majore:
Receptorul fiind o masa mare si eterogena de oameni, a te adresa oricui comporta riscul de a nu te adresa nimanui; nu exista siguranta receptarii mesajului de catre cei carora le este adresat în mod special (nu putem fi siguri ca elevii vor recepta o emisiune despre literatura, pregatita special pentru ei).
Comunicarea prin radio si televiziune are, în esenta, un caracter unidirectional, lipsind conexiunea inversa; între emitator si receptor nu exista un dialog permanent si real.
Educatie prin Internet
Un alt tip de predare-învatare la distanta, care câstiga teren pe zi ce trece, este educatia prin Internet. Cursurile suport sunt stocate pe un computer într-o forma specifica si un navigator uzual pentru Internet sau, în unele cazuri rare, un program special, permite cursantilor sa acceseze informatiile în ritmul propriu de asimilare. Materialele de învatare sunt prezentate într-o forma multimedia – prin îmbinare de text, sunet, imagine si chiar scurte filme – si în modul hyperlink – un model structural în care accesul la alte informatii se realizeaza prin legaturi multiple de la o singura pagina; la rândul lor alte pagini permit revenirea, aprofundarea prin accesarea altor pagini cu subiect similar sau saltul la alte tipuri de informatii.
Acest tip de materiale 'fara suport pe hârtie' au o serie de avantaje:
se înlatura necesitatea spatiilor de depozitare si personalului numeros;
costuri de expediere reduse;
flexibilitate pentru student în sensul posibilitatii alegerii portiunilor care se tiparesc si care ramân în format electronic;
expedierea la student exact la timp în sensul accesului la material exact când si unde este necesar;
integrarea unei varietati de medii de învatare: text, grafica, imagine statica si animata, sunet, scurte filme;
acces la materiale din alte sute de mii de surse, unele prin linkuri (legaturi ) directe din situl de origine;
integrarea legaturilor cu tutorii si cu alti studenti, prin intermediul Web sitului.
Institutii virtuale
O institutie de educatie virtuala poate fi definita ca:
a. O institutie implicata în activitati de tip educativ care îsi promoveaza programa si cursurile direct celor interesati prin intermediul tehnologiilor informatice si de comunicare, furnizând si suport tutorial.
b. O organizatie creata prin parteneriat pentru a facilita predarea si învatarea fara implicare directa ca furnizor de programe educative.
Exemplele de institutii virtuale pot include atât sectorul public cât si privat, la nivel elementar, secundar, liceal, universitar etc., ca si forme de educatie non-formala, educatie permanenta, educatie vocationala de perfectionare.
Emergenta institutiilor virtuale are patru surse diferite:
Institutii care au fost implicate în educatia deschisa si la distanta.
Institutii traditionale, de la scoli la universitati, care nu au mai fost implicate în educatia la distanta. Aceste institutii încep sa aplice noile tehnologii informatice ca suport pentru un plus de calitate, o productivitate si flexibilitate crescute, cu premisa ca astfel reduc costurile si atrag venituri prin atragerea de noi studenti. Aceasta tranzitie apare în situatia tipica a unor proiecte specifice care creaza o institutie virtuala în cadrul uneia traditionale.
Sectorul corporatiilor sau al organizatiilor mari care dezvolta programe de pregatire pentru uz intern având ca suport si mijloc de distribuire tehnologiile informatice si de comunicare si purtând eticheta de virtual.
Persoane individuale care, din motive variind de la altruism la profit, folosesc tehnologiile pentru a crea oportunitati de învatare pentru oricine interesat.
Dupa o analiza a educatiei la distanta din 11 regiuni (Canada, SUA, Caraibe, America Latina, Europa, Africa, India, Korea, Australia, Noua Zeelanda si Insulele Pacificului), Departamentul pentru Dezvoltare Internationala din Londra a dat publicitatii, în 1999, urmatoarele observatii generale privind educatia virtuala si institutiile virtuale :
Eticheta virtual este folosita în sens larg si nediscriminat în toata lumea, interschimbabila cu alti termeni cum ar fi: învatare deschisa si la distanta, învatare distribuita (distributed learning), învatare în retea, învatare prin Web (Web-based learning) si învatare prin computer. Mai mult, uneori termenul este folosit cu referire la sisteme care combina tehnologii TV si teleconferinte interactive în timp real.
În ciuda folosirii din ce în ce mai frecvente a termenului virtual, sunt foarte putine exemple de institutii care utilizeaza tehnologiile informatice si de comunicare pentru a acoperi toate functiile incluse în definitia educatiei virtuale. Cele mai comune aplicatii ale noilor tehnologii se regasesc în administrare, pregatirea si distribuirea materialelor suport si, acolo unde exista posibilitatea, activitati de tutorat în forma interactiunilor student-student si student-profesor.
Desi sunt foarte putine exemple de institutii virtuale în sensul pur, numarul activitatilor de acest tip, în toate tipurile si la toate nivelele organizatiilor instructiv-educative, publice sau private, este considerabil în toate partile lumii. Nimeni nu pare sa se îndoiasca de faptul ca dezvoltarea tehnologiilor informatice si de comunicare va avea un impact profund asupra accesului, functionarii institutionale si proceselor predarii si învatarii.
Dezvoltarea institutiilor virtuale este înca în faza experimentala în majoritatea tarilor; în mod obisnuit se foloseste World Wide Web-ul doar ca mediu publicistic, fara a se apela la potentialul real al tehnologiilor. Aceasta datorita lipsei de importanta ce se acorda pregatirii si perfectionarii personalului didactic.
Sunt remarcabile câteva exemple (Korea) de transformari care pot avea loc atunci când este dezvoltata o viziune clara asupra unui sistem educational si implementarea acestuia este sustinuta de factorii de decizie.
Emergenta institutiilor virtuale este în relatie directa cu dezvoltarea si accesul la infrastructura tehnologiilor informatice si de comunicare. Oricum, majoritatea decalajelor socio-economice si geografice rezida din acest acces si constituie punctul critic al educatiei la distanta deoarece lipsa accesului dezavantajeaza din ce în ce mai mult achizitia de aptitudini si cunoastere. În ciuda acestei relatii directe evidente, se pare ca planurile strategice de dezvoltare a infrastructurii tehnologiilor informatice si de comunicare nu iau în considerare aplicativitatea în educatie.
Se considera în general ca vom fi martorii dezvoltarii unui numar relativ mic de institutii internationale care domina piata educationala prin retele vaste de distributie si parteneriate strategice. Oricum, la acest stadiu al evolutiei institutiilor virtuale, aceasta observatie este mai mult retorica decât reala.
Reducerea costurilor este des citata ca obiectiv pentru introducerea noilor tehnologii informatice în institutiile de educare si formare. Dar date valide în problema costurilor sunt insuficiente.
Cresterea continua a capacitatilor si flexibilitatii noilor tehnologii informatice cu aplicabilitate în situatiile educative, dublata de o continua descrestere în cost a echipamentelor, precum si capacitatea tehnologiilor de a facilita functionarea anumitor structuri traditionale ale institutiilor – sunt argumente ce conving factorii decizionali sa adopte schimbarea si sa accepte un mod dual de organizare – acesta fiind dealtfel un model de educatie la distanta destul de frecvent întâlnit.
Certificari online
În ciuda obstacolelor în stabilirea avantajelor reale, tehnologiile de predare-învatare la distanta au un pondere din ce în ce mai mare în toata lumea, în mare parte datorita eforturilor profesorilor, parintilor si studentilor care considera accesul la o forma de învatamânt deschis la distanta un drept la educatie, sau ca rezultat al eforturilor bine-intentionate ale unor guverne, care considera educatia la distanta un panaceu în întâmpinarea cererii crescânde de formare pe tot parcursul vietii.
Sistemul eLearning a fost asociat teoretic cu termenii efectelor sale dezirabile, transpuse si la nivelul obiectivelor, care incorporeaza valori dificil de negat, cum ar fi centrarea pe student si autonomia. Însa acceptarea la nivelul comun a diverselor tipuri de educatie si formare la distanta, de la studiul prin corespondenta si terminând cu eLearning, este departe de a fi deplina. Includerea cursurilor la distanta în practica obisnuita de formare va avea loc doar dupa multiple eforturi de ridicare a standardelor de calitate, sustinute de cercetari în domeniu.
Va accepta un potential angajator o diploma care atesta absolvirea unui curs la distanta? Pentru moment, este dificil de raspuns la o asemenea întrebare. Perceptia comuna a cursurilor la distanta a constituit obiectul unor cercetari în Statele Unite (Vault.com, octombrie 2000), ajungându-se la urmatoarele rezultate:
30% dintre profesionistii în departamentele de resurse umane au intervievat aplicanti cu diplome obtinute online;
77% considera ca "o diploma care atesta absolvirea unor cursuri la distanta în cadrul unei institutii acreditate (Duke, Stanford)" este mai credibila decât o diploma obtinuta de la o institutie virtuala (Jones International);
26% cred ca o diploma de curs la distanta este tot atât de credibila ca o diploma conventionala;
61% sustin ca o diploma de curs la distanta nu este atât credibila, dar este acceptabila.
Este cert ca în privinta cursurilor la distanta perceptia comuna este tributara multor prejudecati. Revine practicienilor educatiei rolul de a îmbunatati imaginea programelor de formare la distanta printr-un efort sustinut de clarificare teoretica pe de o parte, iar pe de alta parte de ridicare a standardelor în practica curenta. Cu atât mai mult cu cât, prin eliminarea obstacolelor de ordin spatial, temporal sau a impunerii unui ritm de învatare, se asigura astfel posibilitati de studiu unor categorii sociale largi, fara întreruperea activitatii lor profesionale. Aceasta este de fapt si caracteristica principala, care face ca sistemul sa fie deosebit de viabil pentru ciclurile superioare, pentru educatia permanenta, pentru educatia vocationala si îl situeaza potential printre cele mai solicitate tipuri de sisteme de educatie ale viitorului.
Majoritatea rapoartelor de evaluare publicate puncteaza succint meritele reale si valoarea sistemelor de eLearning. În schimb, acorda o mare atentie satisfactiei cursantilor (ca si consumatori), impactului tehnologiilor utilizate sau conditiilor de îndeplinit pentru mentinerea studentilor în programul de formare la distanta. Unele studii compara cursurile la distanta cu formele traditionale. Dar, daca educatia la distanta înseamna eliminarea barierelor institutionale, mai este nevoie sa-i demonstram eficienta, când este atât de evident aspectul negativ al acestor bariere? Nu, dar numai în privinta accesibilitatii. Cât priveste factorii pedagogici ce constribuie la succesul unui program de educatie la distanta si modurile în care aceste programe pot fi ameliorate – acestea sunt subiecte mai putin abordate sau detaliate.
În mod sigur, încrederea deplina într-o astfel de inovatie va veni doar dupa stabilirea cât mai exacta a gradului în care scopurile sunt atinse si asteptarile justificate. Însa deocamdata, eforturile de clarificare a domeniului eLearning în România sunt demersuri individuale. Toate referintele la studii aprofundate se fac la surse straine. Baza teoretica si sustinerea legislativa pentru solutiile de eLearning românesti merg pe acelasi drum sinuos, prelungit pâna în ultimul moment. Instruirea pe tot parcursul vietii, nevoia de formare continua – sunt probabil realitati ale unor tari mai dezvoltate si cu decidenti mai responsabili.
Alegerea unei solutii e-Learning
Mai mult decât un tip nou de educație și formare la distanță, un sistem eLearning este o soluție de business, o opțiune de succes pentru instituțiile care oferă cursuri de formare.
La un studiu de fezabilitate în vederea implementării unei sistem de eLearning, comparația între diversele soluții de pe piață poate fi făcută printr-o serie de indicatori definitorii pentru un sistem de formare la distanță:
scală – numărul participanților implicați într-o activitate de învățare pe o durată determinată; include și distanța dintre participanți, acoperită de sistem;
percepție – calitatea tehnică a materialelor primite de participanți (de la realism grafic, la rezoluție);
simetrie – gradul în care se poate focaliza atenția pe fiecare participant (invers proporțională cu mărimea clasei);
interactivitate – durata de timp minimă în care se poate obține un răspuns într-o interacțiune;
mijloace – evantaiul de mijloace/ instrumente de lucru de care dispun participanții pentru învățare și comunicare;
control din partea cursantului – gradul în care cursantul poate fi activ, poate colabora cu alți cursanți sau cu profesorii pentru atingerea obiectivelor de învățare;
capacitatea de integrare – posibilitatea de a prezenta informații în diverse moduri și din diverse surse;
costuri – cheltuielile unui cursant pentru atingerea unui set stabilit de obiective;
timp – nivelul de control al timpului necesar unui cursant pentru a atinge un obiectiv de învățare (posibilitatea parcurgerii conținutului în ritm propriu);
flexibilitate – ușurința cu care se pot aduce ameliorări pe parcursul programului.
O analiză comparativă poate fi urmărită printr-un instrument simplu de tip grilă. Se acordă un punctaj de la 0 la 4 pentru fiecare item luat în calcul, unde 0 înseamnă absența caracteristicii, iar 4 înseamnă că indicatorul satisface deplin așteptările:
Totalul pe fiecare coloană exprimă, sintetic și aproximativ, diferențele dintre soluțiile analizate.
În funcție de importanța pe care instituția o acordă unor anumiți itemi, se poate trece la analiză pe caracteristici. Dacă flexibilitatea unui sistem este de maximă importanță, datorită cererii în continuă schimbare de pe piața de formare sau datorită perimării rapide a informațiilor în domeniul vizat, atunci se poate chiar renunța la ceilalți itemi. Sau se poate alcătui o altă grilă, cu punctaje maxime diferențiate: pentru flexibilitate se acordă o notă între 0 și 20.
Avantaje si dezavantaje
Avantaje
Prin raportare la educatia traditionala, se pot reliefa câteva avantaje ale educatiei la distanta prin Internet, considerând-o aplicabila, cel putin deocamdata, la nivelul învatamântului universitar si în educatia permanenta, dupa modelul universitatilor deschise si la distanta din tarile tehnologizate:
În primul rând, toate resursele care constituie obiectul cursului pot fi accesibile ubicuu.
Scopul curriculumului va fi mai cuprinzator decât cel curent, curriculumul oferind modalitati multiple pentru achizitii de cel mai înalt nivel în toate domeniile culturii.
Audienta este considerabil crescuta, educatia la distanta putând cuprinde si studenti care nu pot participa la cursurile din sistemul traditional. Accesul la retele locale, regionale si nationale leaga studentii din diferite medii sociale, culturale, economice, si cu experiente variate.
Este facilitata învatarea într-un ritm propriu, într-un stil personal, parcurgerea sau audierea cursurilor putând fi facuta treptat si repetat. Computerele încorporeaza variate pachete de softuri extrem de flexibile, studentul având un control maxim al informatiilor de continut.
Interactiunile sincrone si cele asincrone dintre profesor si studenti se pot complementariza. Un corolar important aici l-ar constitui posibilitatea constituirii unui grup pedagogic (team teaching) pentru transmiterea cunostintelor unui anumit domeniu si antrenarea în activitati a unor educatori care în mod curent nu sunt disponibili din variate motive.
Tehnologiile sunt interactive, permitând un feed-back total, în timp real, si evaluari formative sau sumative, cantitative sau calitative într-un mod facil si de catre evaluatorii cei mai avizati.
Limite
Printre dificultatile la implementare, ce pot fi considerate si limite ale noului sistem se numara:
Costurile ridicate ale dezvoltarii sistemului, incluzând cheltuieli cu: tehnologia (hard si soft); transmiterea informatiilor în retea; întretinerea echipamentului; producerea materialelor necesare.
Dificultatea sustinerii la implementarea sistemului a unui efort consistent si sustinut al studentilor, profesorilor, intermediarilor ce ofera suport tehnic si personalului administrativ.
Necesitatea experientei cursantilor în domeniul computerelor. Întretinerea propriului computer va fi probabil una dintre responsabilitatile curente.
Studentii trebuie sa fie extrem de motivati pentru participare. Fenomenul de abandon scolar este mult mai frecvent în educatia la distanta decât în cadrele traditionale ale educatiei, interrelatiile instituite fiind relativ impersonale, facând optiunea mai usoara pentru cursant.
Relativa "dezumanizare" a cursurilor pâna la dezvoltarea unor strategii optime de interactiune si a focalizarii pe student si nu pe sistem.
Însa experienta sistemelor deja functionale ne asigura de faptul ca participantii la educatia prin intermediul noilor tehnologii se familiarizeaza în scurt timp cu mediul virtual si intra relativ curând în ritmul natural al transmiterii si, respectiv, însusirii de cunostinte.
Cap. 2: Prezentarea tehnologiilor utilizate
2.1 Sisteme de Gestiune a Bazelor de Date (SGBD)
Istoric; comentarii
Evoluția metodelor și tehnicilor de organizare a datelor a fost determinată de necesitatea de a avea un acces cât mai rapid și mai ușor la un volum din ce în ce mai mare de informații precum și de perfecționarea echipamentelor de culegere, memorare, transmitere și prelucrare a datelor.
Există afirmații conform cărora sistemul de baze de date își are rădăcinile în anii '60, în proiectul de aselenizare Apollo. Deoarece pe atunci nu exista un astfel de sistem, North American Aviation (actualmente Rockwell International) a dezvoltat, în calitate de principal colaborator la proiect, un pachet de programe cunoscut sub numele GUAM (Generalized Update Access Method), care se baza pe date organizate în mod ierarhic. Modelul de date ierarhic își are originea în acest proiect.
La mijlocul anilor '60, un pas înapoi s-a facut prin elaborarea sitemului IMS (Information Management System), de către IBM în colaborare cu NAA, pornind de la sistemul GUAM. Pasul înapoi se datoreaza faptului că manipularea ierarhiilor de date a fost restrânsă la organizarea secvențială a datelor (o cerință dictată de piața la acel moment).
In aceeași perioada General Electric a dezvoltat sistemul IDS (Integrated Data Store). Conducator de proiect: Charles Bachmann. Proiectul a condus la modelul de date rețea (numele se datoreaza ca și în modelul precedent, modului de organizare a datelor).
În acea perioada se căuta eficientizarea manipulării datelor și se încerca stabilirea unor standarde. În 1965 CODASYL (the Conference On Data SYstems Languages) care reunise reprezentanți ai guvernului USA și reprezentanți ai lumii afacerilor și comerțului, a reușit să stabilească un grup de lucru (care a avut inițial numele List Processing Task Force) cunoscut din 1967 sub numele Data Base Task Group (DBTG). Sarcina acestui grup era să stabilească specificații cu rol de standarde pentru un mediu care ar permite crearea de baze de date și manipularea datelor.
Conceptul de bază de date s-a definit în 1969 cu ocazia prezentării primului proiect de raport CODASYL (Raportul final s-a prezentat în 1971). Ideea principală în organizarea datelor se baza pe existența a trei componente de bază:
schema de rețea – care reprezenta organizarea logica a întregii baze de date
subschema – care reprezenta o parte a bazei de date așa cum e vazută de utilizator sau de programele de aplicație
un limbaj de gestionare a datelor – care definea caracteristicile datelor, structura lor și care manipula datele
Pentru standardizare, s-au propus trei limbaje:
un limbaj de definire a datelor (LDD) la nivel de schemă
un limbaj ajutător la nivel de subschemă
un limbaj de manipulare a datelor (LMD)
Cu toate că nu a fost adoptată formal de ANSI (American National Standard Institute) propunerea DBTG a fost aplicată într-o serie de sisteme dezvoltate ulterior și ea stă la baza conceptului modern de bază de date. Proiectul ierarhic și cel prezentat de CODASYL reprezintă prima generație de Sisteme de Gestiune a Bazelor de Date (SGBD).
În 1978 E.F.Codd de la IBM Research Laboratory a elaborat o lucrare care a avut o influență covârșitoare în dezvoltarea bazelor de date. Lucrarea trata despre modelul de date relațional. De aici încolo s-au proiectat multe sisteme dintre care mentionam System R dezvoltat la IBM's San Jose Research Laboratory din California, la sfârșitul anilor '70. Acest proiect a dus la:
dezvoltarea unui limbaj structurat de interogare (numit SQL) care de atunci a devenit un standard pentru sistemele relaționale;
producerea în anii '80 de sisteme comerciale arhicunoscute dintre care menționăm: DB2 și SQL/DS de la IBM și ORACLE de la ORACLE Corporation.
Alte exemple de sisteme relaționale: INGRES de la Relational Technology Inc., Informix de la Informix Sofware Inc., Sybase de la Sybase Inc.. Dintre sitemele relaționale pentru microcalculatoare enumerăm aici: Paradox și dBase IV de la Borland, Access de la Microsoft, FoxPro și R:base de la Microrim. Toate acestea constituie generatia a doua de SGBD.
2.1.2 Definirea sistemelor de gestiune a bazelor de date relaționale
Într-o primă încercare de definire, se poate considera un sistem de gestiune a bazelor de date relaționale (SGBDR) ca reprezentând un SGBD care utilizează drept concepție de organizare a datelor modelul relațional. Astfel spus, un SGDBR reprezintă un sistem care suportă modelul relațional.
Definiția de mai sus este prea generală pentru a putea fi operațională, deoareca modul de implementare a modelului relațional diferă, de regulă atât între diferitele SGBDR, cât și în raport cu modelul “ teoretic”, cel definit în cadrul teoriei relaționale, datorită eforturilor producătorilor de a realiza sisteme cât mai perfomante care să satisfacă cerințele și exagerările utilizatorilor. Cât de aproape (sau de departe) de modelul relațional teoretic trebuie să fie modelul datelor efectiv utilizat de SGBD pentru a putea afirma că SGBD-ul respectiv utilizează sau nu modelul relațional, deci este sau nu SGBDR?
Diversitatea modelelor relaționale operaționale au determinat, în mod natural existența unei mari diversității de SGBDR, pentru a căror prezentare a fost necesară nuanțarea terminologiei. Au apărut o serie de sintagme precum: sisteme cu interfață relațională, sisteme pseudorelaționale, sisteme complet relaționale.
Conceptele specifice organizării datelor în fișiere, SGBDR și teoriei relaționale între care se pot stabili analogii
Tabel 2.1
În general, conceptele utilizate la prezentarea SGBDR și a modelelor relaționale operaționale diferă de cele din cadrul teoriei relaționale. Tabelul de mai sus prezintă comparativ conceptele organizării datelor în fișiere, concepte SGBDR și ale teoriei relaționale.
Faptul că se pot stabili analogii între conceptele organizării datelor în fișiere și conceptele relaționale, i-au determinat pe unii producători să prezinte sisteme fără nici o legătură cu modelul relațional drept SGBDR, în scopul asigurării succesului comercial al acestor sisteme.
2.1.3 Criterii minimale de definire a unui SGBDR
Pentru caracterizarea unui SGBD sunt formulate o serie de cerințe minimale pe care trebuie să la satisfacă un sistem de gestiune a bazelor de date pentru a putea fi considerat relațional.
Un SGBD este minimal relațional dacă satisface următoarele condiții:
Toate datele din cadrul relației sunt reprezentate prin valori în tabele,
Nu există pointeri observabili de către utilizatori în tabele, în sensul că operațiile cu relații nu fac apel la pointeri, indecși, fișiere inverse, etc.
Sistemul suportă operatori relaționali de proiecție, selecție și joing natural, fără limitări împuse de considerente interne (cum ar fi de exemplu, necesitatea indexării atributelor). Unitatea de informație cu care se lucrează în cadrul acestor operații trebuie să fie relația.
Un SGBD este complet relațional dacă este minimal relațional și satisface în plus următoarele condiții:
Sistemul suportă toate operațiile de bază ale algebrei relaționale, fără limitări înpuse de considerente interne.
Sistemul suportă două dintre restricțiile de integritate de bază al modelului relațional și anume unicitatea cheii unei relațiiși restricția referențială.
Un SGBD este pseudorelațional dacă satisface numai condițiile 1. și 3.
Un SGBD cu interfață relațională este un SGBD are satisface condițiile 1. și 3., cu observația că cerința 3. Este îndeplinită numai în raport cu funcția de interogare
În ultimii ani, ca răspuns la necesitatea de a crește complexitatea aplicațiilor cu baze de date (încurajată și de progresele apărute în programare odata cu programarea orientata obiect) au apărut modelul de date orientat obiect (Object-Oriented Data Model – OODM) și modelul de date relațional extins (Extended Relational Data Model – ERDM). Cu toate ca modelul de date ce sta la baza noilor modele nu este atat de clar ca în cazul modelului relațional, se poate considera ca aceste din urma dezvoltari reprezinta generatia a treia de SGBD.
In esenta, conceptul de baza de date poate fi definit ca fiind o colectie partajata de date aflate în interdependenta logica (impreuna cu o descriere a acestor date și a relatiilor dintre ele), colectie desemnata pentru a rezolva nevoia de informatizare a unei intreprinderi (sau organizatii).
Baza de date trebuie sa îndeplineasca urmatoarele conditii:
– sa asigure o independenta sporita a datelor fata de programe și invers;
– structura bazei de date trebuie astfel conceputa încat sa asigure informatiile necesare și suficiente pentru cerintele de informare și decizie;
– sa asigure o redundanta minima și controlata a datelor;
– sa permita accesul rapid la informatiile stocate în baza.
Bazele de date sunt extrem de variate în functie de criteriile luate în considerare. Prezentam cateva criterii de clasificare:
– dupa orientare: generalizate, specializate;
– dupa modelul de date: ierarhice, retele, relaționale, orientate obiect;
– dupa amploarea geografica: locale, distribuite;
Numim SGBD (Sistem de Gestiune al Bazelor de Date) un sistem software care permite, pe de o parte, definirea, crearea și în tretinerea bazei de date și pe de alta parte, permite accesul controlat la informatiile din baza de date în cauza. SGBD este format din programe de software care interactioneaza cu programele de aplicație ale utilizatorilor și cu baza de date. Sistemul de gestiune al bazei de date asigura realizarea urmatoarelor activitati:
– definirea structurii bazei de date;
– încarcarea datelor în baza de date;
– accesul la date (interogare, actualizare);
– întretinerea bazei de date (colectarea și reutilizarea spatiilor goale, refacerea bazei de date în cazul unui incident);
– reorganizarea bazei de date (restructurarea și modificarea strategiei de acces);
– integritatea datelor;
– securitatea datelor.
Asadar, sistemul de gestiune al bazei de date apare ca un sistem complex de programe care asigura interfata în tre o baza de date și utilizatorii acestuia.
Clasificarea SGBD se poate realiza din mai multe puncte de vedere.
1. Din punctul de vedere al sistemelor de calcul pe care se implementeaza. SGBD pot fi: sisteme de gestiune pentru calculatoarele mari; sisteme de gestiune pentru minicalculatoare; sisteme de gestiune pentru microcalculatoare.
In prezent se manifesta tendinta ca marea majoritate a sistemelor de gestiune a bazelor de date sa fie compatibile pe platforme cat mai largi de sisteme de calcul.
2. Din punctul de vedere al limbajului pe care il utilizeaza, sunt: sisteme cu limbaj gazda; sisteme cu limbaj autonom.
Sistemele cu limbaj gazda realizeaza activitatile de creare, actualizare și interogare a bazei de date, utilizand limbajele de nivel înalt sau extensii ale acestora, proprii sistemului de calcul pe care se implementeaza baza de date. Avantajul acestor sisteme consta în posibilitatile sporite ce le ofera limbajele de nivel înalt la elaborarea unor proceduri complexe. Sistemele cu limbaj gazda prezinta dezavantajul ca formularea cerintelor nu este atit de simplificata ca în cazul sistemelor cu limbaj autonom.
3. Din punctul de vedere al conceptiei de organizare a datelor pe care le gestioneaza, SGBD se clasifica în : sisteme de gestiune a bazelor de date cu structuri ierarhice și retea; sisteme de gestiune a bazelor de date relaționale; sisteme de gestiune a bazelor de date orientate obiect.
4. Din punctul de vedere al modului de localizare a bazelor de date avem: sisteme de gestiune a bazelor de date centralizate; sisteme de gestiune a bazelor de date distribuite.
Marea majoritate a sistemelor de gestiune apărute în ultima perioada dispun și de o componenta de gestiune distribuita a datelor.
2.2 PHP
Internet-ul a intrat deja in al treilea stadiu de dezvoltare, iar notiuni si facilitati precum site-uri web dinamice si interactive au devenit atributele esentiale ale oricarei afaceri online de succes implicand comert electronic (dar nu numai). Un studiu al Cyberatlas cu privire la comertul prin Internet releva faptul ca activitatile de vanzari online au cel mai mare potential de dezvoltare din intreg sectorul economic.
Principalul avantaj al unui site dinamic asupra unuia static este usurinta in administrare (actualizare). Adaugarea sau modificarea de continut este foarte simpla datorita faptului ca acest continut este stocat intr-o baza de date sau in fisiere text, astfel incat cei care se ocupa de continut nu au nevoie sa posede cunostinte de HTML, CSS, JavaScript sau alte tehnologii specifice domeniului "web design" si utilizate intens la construirea paginilor de prezentare. De asemenea, daca trebuie sa schimbam logo-ul pe fiecare pagina a site-ului, este de ajuns sa facem modificarea intr-un singur fisier in loc sa luam fiecare pagina in parte, sa o modificam si sa o uploadam inapoi pe server.
Pe langa manipularea continutului paginilor web, PHP poate trimite headere HTTP pentru autentificare, seta cookie-uri, redirectiona utilizatorii. Mai mult, cu ajutorul bibliotecilor externe de functii poate parsa fisiere XML, crea si manipula imagini, animatii Shockwave, Flash, PDF-uri sau se poate conecta la un server de mail. Iar acestea sunt doar cateva din functiile pe care le poate indeplini.
Dezvoltarea exploziva a limbajului PHP din ultimii ani este in cea mai mare parte datorata usurintei cu care acesta lucreaza cu bazele de date in Internet. Din multitudinea de solutii de dezvoltare site-uri web, PHP ofera programatorului o multime de functii predefinite pentru lucrul cu bazele de date in Internet. Aceasta inseamna ca din cadrul PHP putem executa toate operatiunile aferente comenzilor Sql.
O prima pagina atractiva este vitala pentru succesul unui site. Menirea ei este sa ofere utilizatorului motivele pentru a continua sa vada mai mult si eventual sa fie imediat interesat sa cumpere un produs.
PHP este un limbaj de programare pe parte de server (in engleza "server-side") care poate, printre altele, sa interactioneze cu o baza de date pentru a afisa sau a modifica informatiile din ea. Mai exact, serverul stie sa furnizeze browser-ului clientului doar pagini HTML. Paginile HTML pot fi deja pe server sau create tot acolo de catre alte aplicatii la cererea server-ului de web, fiind apoi servite ca HTML browser-ului clientului.
PHP este un limbaj de programare destinat în primul rând Internetului, aducând dinamică unei pagini de web. Este unul din cele mai importante limbaje de programare web open-source și server-side.
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 (Hypertext Preprocessor), 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.
Exemple faimoase de utilizare a acestui limbaj sunt PhpBB (forum), PhpNuke(CMS), chiar și MediaWiki, software-ul din spatele Wikipedia. Folosirea PHP poate fi văzută ca o alternativă gratuită la utilizarea unor limbaje comerciale cum sunt ASP de la Microsoft, ColdFusion de la Macromedia, sau chiar JSP de la Sun Microsystems.
PHP-ul este unul din cele mai folosite limbaje de programare server-side, conform unui studiu efectuat de Netcraft în aprilie 2002, apărând pe 9 din cele 37 milioane de domenii cercetate în studiu. De asemenea, există un grafic al creșterii folosirii PHP-ului pe site-ul oficial. Popularitatea de care se bucură acest limbaj de programare se datorează următoarelor caracteristici :
Familiaritatea : sintaxa limbajului este foarte ușoară combinând sintaxele unora 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 multiuser, așa cum este Web-ul;
Securitatea : 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. Nefiind legat de un anumit server web, PHP-ul a fost integrat pentru numeroasele servere web existente: Apache, IIS, Zeus, etc.;
Gratuitatea : este probabil cea mai importantă caracteristică a PHP-ului. Dezvoltarea PHP-ului sub licența open-source a determinat adaptarea rapidă PHP-ului la nevoile Web-ului, eficientizarea și securizarea codului.
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ătoare, 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 PostgreSQL și până la Oracle, trecând prin MS Sql Server, MySQL, 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 dumneavoastră PHP este interpretat de serverul WEB și generează un cod HTML care va fi văzut de utilizator (clientului -browserului- fiindu-i transmis numai cod HTML).
Figura 2.1
2.3 PostgreSQL
PostgreSQL este un sistem de administrare al bazelor de date relationale folosit pentru dezvoltarea aplicatiilor web. In acest subcapitol trebuie sa raspundem la intrebarea: „De ce am folosit PostgreSQL (in loc de MySQL,Oracle, FoxPro etc.) pentru a dezvolta aplicatia E-Learning?”. Tinand cont de faptul ca exista disponibile multe alte optiuni populare, este indicat sa precizam de ce am facut aceasta alegere particulara. Pentru acest lucru, vom compara PostgreSQL cu alte pachete de baze de date folosite pentru dezvoltarea aplicatiilor web: MySQL, Oracle sau Microsoft SQL Server.
De asemenea, sunt disponibile baze de date „desktop” folosite pentru implementarea aplicatiilor web: Access, FoxPro, FileMaker Pro si altele. Din moment ce aceste pachete de baze de date sunt foarte ieftine si prietenoase pentru aplicatii desktop, ele sunt foarte rar utilizate in dezvoltarea aplicatiilor web. Pentru a demonstra aceasta afirmatie, trebuie precizate urmatoarele motive:
– bazele de date „desktop” permit unul sau un numar foarte mic de utilizatori. Din aceasta cauza, ele sunt neutilizabile pentru aplicatiile web, unde este necesara conectarea simultana a unui numar mare de utilizatori.
– bazele de date „desktop” nu sunt foarte sigure – securitatea fiind un criteriu important in alegerea pachetului de baze de date pentru aplicatiile web.
– arhitectura, scalabilitatea si performantele bazelor de date „desktop” nu sunt optimizate pentru a fi folosite in dezvoltarea aplicatiilor web.
Tinand cont de aspectele de mai sus, sistemele desktop de baze de date nu sunt tocmai potrivite pentru implementarea unei aplicatii complexe, asa cum este e-Learning, de aceeasi parerea fiind mare majoritate a profesionistilor din domeniul IT.
2.3.1 Alegerea pachetului PostgreSQL
In momentul alegerii pachetului PostgreSQL pentru dezvoltarea aplicatiei e-Learning am tinut cont de mai multe aspecte, printre care enumeram:
Avantaje generale
Caracteristici
Performante
Suport comercial
Larga utilizare a pachetului
Experienta folosirii PostgreSQL
1. Avantaje generale
PostgreSQL este gratis, software Open Source
PostgreSQL are un excelent suport comercial
PostgreSQL este fiabil si stabil
PostgreSQL este scalabil si extensibil
PostgreSQL este platforma de tip „cross” (incrucisat)
PostgreSQL este dezvoltat pentru aplicatii cu un volum mare de date
PostgreSQL este usor de administrat
2. Caracteristici
In tabelul de mai jos sunt prezentate caracteristicile pentru cele mai importante pachete RDBMS (Relational Database Management System)
Tabel 2.2 – Caracteristici ale pachetelor RDBMS
Majoritatea caracteristicilor sunt importante pentru dezvoltarea robusta, scalabila a aplicatiilor iar pachetul PostgreSQL cu siguranta ofera valori excelente in aceasta privinta.
3. Performante
PostgreSQL, ca si celelalte pachete, va necesita intotdeauna optimizari bazate pe aplicatii particulare. Astfel, fiecare sistem – SQL Server, Oracle, MySQL si PostgreSQL – are arie de performanta unde exceleaza.
PostgreSQL este optimizat si rapid fata de celelalte sisteme pentru scenarii care implica tranzactii cu volum mare de date, un numar ridicat de utilizatori si interogari complexe. Celelalte caracteristici (vederi, indecsi) contribuie deasemenea la performanta generala a pachetului PostgreSQL.
4. Suport comercial
Exista o serie de companii si profesionisti in domeniu care ofera consultanta si suport pentru PostgreSQL. O lista cu asemenea furnizori poate fi gasita la urmatorul link: http://techdocs.postgresql.org/companies.php. De asemenea, pe internet se gasesc liste de mail-uri, grupuri pentru suport sau colaboratori online care pot oferi informatii despre orice problema aparuta in utilizarea pachetului PostgreSQL.
5. Larga utilizare a pachetului
In dezvoltarea oricarei aplicatii web sau chiar desktop, este foarte important sa ne asiguram ca tehnologiile folosite sunt acceptate de catre industria IT. O lista cu organizatiile care accepta PostgreSQL poate fi gasita la : http://techdocs.postgresql.org/techdocs/supportcontracts.php
6.Experienta folosirii PostgreSQL
In momentul in care am inceput dezvoltarea aplicatiei e-Learning, un rol important in alegerea pachetului pentru baza de date a fost experienta de lucru cu PostgreSQL. Sistemul se instaleaza foarte usor atat pe Windows cat si pe Linux, oferind ca interfete grafice doua aplicatii:
pgAdmin III – aplicatie desktop
PhpPgAdmin – aplicatie web.
Concluzii
Figura nr. 2.2
PostgreSQL este un sistem de gestiune a bazelor de date, foarte rapid si robust.
O baza de date va permite sa stocați, sa cautati, sa sortați si sa va regasiti datele in mod eficient. Serverul PostgreSQL controlează accesul la datele dumneavoastră pentru a garanta ca mai mulți utilizatori pot lucra simultan cu acestea. Deci, PostgreSQL este un server multi-user (mai mulți utilizatori) si multi-thread (mai multe fire de execuție).
2.4 AJAX (Asynchronous JavaScript and XML)
2.4.1 Prezentare generala
AJAX este prescurtarea pentru Asynchronous JavaScript and XML (JavaScript si XML asincron) si reprezinta o colectie de tehnologii utilizate in dezvoltarea site-urilor Internet. Intentia este de a adauga o interactivitate mai mare in paginile web si de a micsora timpul de incarcare al acestora. In masura in care Internetul este in continua dezvoltare, unde numarul de pagini web se dubleaza la o perioada de cateva luni, si se dezvolta foarte mult servicii de comert electronic, magazine virtuale sau site-uri sociale, tehnologia AJAX devine o componenta de baza pentru orice astfel de site.
AJAX presupune un schimb mic de date intre browser si server, astfel incat sa nu mai fie necesara reincarcarea intregii pagini web de fiecare data cand userul face o schimbare in aceasta. AJAX reprezinta o colectie de tehnologii, fiecare utilizata si in mod de sine-statator, dar care combinate permit obtinerea unei unelte foarte puternice:
Prezentarea in mod standard a paginilor, prin HTML sau mai noul XHTML, si CSS (Cascading Style-Sheets) pentru aranajrea in pagina a continutului;
Afisare dinamica si interactiune folosind DOM (Document Object Model), accesat printr-un limbaj de scripting, pentru a modifica in mod dinamic si a asigura interactiunea cu informatia prezentata;
Schimb bidirectional de date si manipulare prin XML intre client si server, desi orice format poate fi folosit, inclusiv HTML, XSLT sau text simplu;
Schimbul de date asincron se realizeaza prin obiectul XMLHttpRequest, desi in unele implementari AJAX se poate folosi un IFrame pentru schimbul de date, sau chiar tag-uri <script> adaugate dinamic.
JavaScript folosit pentru a lega toate aceste elemente intr-un pachet puternic.
Modelul clasic al aplicatiilor web este urmatorul: actiunile utilizatorilor in interfata din browser conduc la o cerere HTTP catre serverul web. Serverul efectueaza niste procesari (extrage date din baze de date, efectueaza calcule, interogheaza alte sisteme) si apoi returneaza o pagina HTML catre client. Este modelul clasic, sincron, dezvoltat odata cu aparitia Internetului ca retea la nivel mondial. Este calea cea mai simpla, dar in timp ce serverul proceseaza cererea, utilizatorul asteapta si nu poate interactiona in alt mod cu pagina web.
AJAX elimina aceasta modalitate de interactiune start-stop-start-stop a Web-ului introducand un nivel intermediar intre utilizator si server – motorul AJAX. Adaugarea unui nou nivel intr-o aplicatia de obicei o face sa lucreze mai greu, dar in acest caz este adevarata afirmatia opusa. In loc sa incarce pagina la inceputul sesiunii, browserul incarca un motor AJAX, scris in JavaScript si plasat de obicei intr-un cadru (frame) invisibil. Acest motor este apoi responsabil atat cu interfata pe care o afiseaza utilizatorului, cat si cu comunicatia cu serverul pentru folosul utilizatorului. Motorul AJAX permite interactiunea utilizatorului cu aplicatia in mod asincron, independent de comunicatia cu serverul. Prin urmare utilizatorul nu mai priveste o fereastra goala, asteptand ca aceasta sa se incarce direct de pe server.
Figura nr. 2.3 – diferenta dintre modelul clasic si cel AJAX, se observa nivelul suplimentar al motorului AJAX in browserul clientului
2.4.2 Istoric
Prima utilizare a termenului AJAX in mod public a fost in februarie 2005. Jesse James Garrett sustine ca a gandit aceasta denumire realizand necesitatea unui termen simplu, scurt si usor de pronuntat in momentul cand urma sa prezinte unor clienti o suita de tehnologii propuse pentru implementare.
Desi termentul AJAX are mai putin de trei ani, istoria tehnologiilor care au dus la implementarea acestuia incepe acum 10 ani, cand Microsoft avea initiativa in a dezvolta Remote Scripting. Tehnici pentru incarcarea asincrona a continutului intr-o pagina web, fara necesitatea reincarcarii totale, au aparut de pe vremea elementului IFRAME (introdus in Internet Explorer 3 in 1996) si a elementului LAYER (introdus in Netscape 4 in 1997 si abandonat la aparitia browserului Mozilla). Ambele elemente aveau campul src pentru incarcarea unui URL extern, si prin utilizarea JavaScript se putea manipula pagina mama, obtinandu-se un efect asemanator cu AJAX. Astfel de tehnici au fost implementate in DHTML, si chiar si produsul Macromedia Flash putea incarca fisiere XML sau CSV de pe un server fara a necesita un refresh in browser. Remote Scripting de la Microsoft functiona ca un inlocuitor mai elegant al acestor tehnologii, datele fiind extrase de un applet Java cu care clientul comunica prin JavaScript, tehnica disponibila in IE versiunea 4. Microsoft a creat pentru Internet Explorer 5 obiectul XMLHttpRequest si a aratat avantajele lui in Outlook Web Access, care face parte din pachetul Microsoft Exchange Server 2000.
Comunitatea Web, suficient de dezvoltata la inceputul anilor 2000, a preluat initiativa in dezvoltarea acestui tip de tehnologie. Prin colaborare publica, s-a imbunatatit tehnica de scripting pentru a permite utilizarea pe alte browsere. In 2002 a fost modificat Remote Scripting pentru a inlocui applet-ul Java cu XMLHttpRequest, care a devenit modelitatea preponderenta de comunicare cu serverul. Microsoft a introdus tehnologia Callback in ASP.NET, dar XMLHttpRequest a rmas cel mai folosit deoarece este bine implementat in toate browserele, celelalte tehnologii nefiind folosite decat in cazuri de incompatibilitate.
2.4.3 Avantaje ale tehnologiei AJAX
Utilizarea eficienta a benzii disponibile
Prin generarea de HTML local, in browser, si aducand de pe server doar apelari JavaScript si date, paginile realizate cu AJAX se incarca mai repede deoarece informatia necesara este mai mica. De exemplu se pot aduce doar datele dintr-un tabel, iar afisarea tabelului in sine, tag-urile <TABLE>, <TR> si <TD> se genereaza local, in browser, nefiind necesar si transferul acestora de pe server. Structura generala a unei pagini, titlu, meniu lateral, subsolul paginii, se genereaza o singura data, iar la navigarea acelui site se aduc doar datele noi din continutul paginii respective, titlul si meniurile ramanand neschimbate.
Interactivitate
Aplicatiile AJAX sunt in principal executate in computerul utilizatorului, prin manipularea paginii curente de catre browser folosind metode de document object model (DOM). AJAX poate fi utilizat pentru o serie de functii precum actualizarea inregistrarilor, expandarea formularelor, returnarea unor cautari simple, editarea de elemente, toate fara nevoia de a reincarca intreaga pagina web in momentul cand aceasta este modificata. Se trimit doar cereri scurte catre server si se primesc raspunsuri de dimensiuni mici. Acest lucru creste interactivitatea si apropie paginile web de posibilitatile aplicatiilor desktop. Pentru magazinele virtuale, site-uri de eBanking sau eCommerce, sau pentru implementarea unui chat intr-o pagina web tehnologia AJAX este foarte importanta. In conditiile in care un studiu recent a aratat ca un client paraseste site-ul unui magazin online in favoarea altuia, daca incarcarea unei pagini dureaza mai mult de 4 secunde, interactiunea oferita de AJAX, posibilitatea de a modifica doar anumite aspecte ale paginii (de ex aparitia parerilor altor cumparatori despre un anumit produs, sau calculul sumei totale din “cosul de cumparaturi” fara a reincarca toata pagina, ci doar acea zona) este foarte importanta.
2.4.4 Dezavantaje
Utilizarea butoanelor de Back si Forward, si a link-urilor
Paginile web ce utilizeaza AJAX pot sa impiedice functionarea comportamentului normal, obisnuit si asteptat al butoanelor de Back dintr-un browser. Utilizatorii se asteapta ca apasand aceste butoane sa fie dusi la aspectul anterior al paginii, dar acest lucru nu este mereu adevarat cand se utilizeaza AJAX, deoarece browserul nu poate tine mereu socoteala modificarilor produse in mod dinamic si asincron.
Dezvoltatorii de site-uri au introdus diverse rezolvari pentru aceasta problema, folosind IFRAME-uri invizibile pentru a retine continutul paginii anterioare. Google Maps, de exemplu, face cautarile intr-un IFRAME invizibil si apoi aduce rezultatele in partea vizibila a paginii. In recomandarea XHTML 1.1 a World Wide Web Consortium, organismul care standardizeaza metodele si limbajele utilizate in Internet, se recomanda folosirea elementului object.
O alta problema a paginilor dinamice este dificultatea crearii unui link sau bookmark catre o stare particulara a aplicatiei. Solutii au fost gasite prin utilizarea de identificatoare de fragmente URL (portiunea unui URL de dupa un semn “#”), deoarece prin JavaScript se poate modifica adresa paginii prin schimbarea acestui identificator de fragment (se modifica nu doar informatii si portiuni dintr-o pagina, ci si adresa ei). Aceasta solutie ajuta si la problema butonului Back, dar nu este una completa.
Griji pentru timpul de raspuns
Modificarea doar a unor portiuni din pagini poate creste totusi timpul aparent de raspuns, deoarece utilizatorul observa mai greu modificarile facute intr-o portiune mica a unei pagini deja incarcate. Se recomanda utilizarea unor indicatori de activitate de procesare, de exemplu celebra clepsidra.
Optimizarea paginilor pentru motoarele de cautare
Website-urile care utilizeaza pagini incarcate prin AJAX trebuie sa fie atente sa ofere aceeasi informatie si intr-un format clasic, pentru a putea fi indexat de robotii de citire ai motoarelor de cautare pe Internet. Daca anumite informatii (date, text, imagini) nu apar decat la apelarea unor functii JavaScript prin AJAX, aceste informatii nu vor fi gasite de un motor de cautare deoarece acestea citesc doar textul existent in pagina si nu ruleaza si functiile din ea.
2.5 HTML si CSS
2.5.1 HTML (HyperText Markup Language)
HyperText Markup Language (HTML) este un limbaj de marcare utilizat pentru crearea paginilor web ce pot fi afișate într-un browser (sau navigator). Scopul HTML este mai degrabă prezentarea informațiilor – paragrafe, fonturi, tabele ș.a.m.d. – decât descrierea semanticii documentului.
HTML este o formă de marcare orientată către prezentarea documentelor text pe o singura pagină, utilizând un software de redare specializat, numit agent utilizator HTML, cel mai bun exemplu de astfel de software fiind browserul web. HTML furnizează mijloacele prin care conținutul unui document poate fi adnotat cu diverse tipuri de metadate și indicații de redare. Indicațiile de redare pot varia de la decorațiuni minore ale textului, cum ar fi specificarea faptului că un anumit cuvânt trebuie subliniat sau că o imagine trebuie introdusă, până la scripturi sofisticate, hărți de imagini și formulare. Metadatele pot include informații despre titlul și autorul documentului, informații structurale despre cum este împărțit documentul în diferite segmente, paragrafe, liste, titluri etc. și informații cruciale care permit ca documentul să poată fi legat de alte documente pentru a forma astfel hiperlink-uri (sau web-ul).
HTML este un format text proiectat pentru a putea fi citit și editat de oameni utilizând un editor de text simplu. Totuși scrierea și modificarea paginilor în acest fel solicită cunoștințe solide de HTML și este consumatoare de timp. Editoarele grafice (de tip WYSIWYG) cum ar fi Macromedia Dreamweaver, Adobe GoLive sau Microsoft FrontPage permit ca paginile web sa fie tratate asemănător cu documetele Word.
HTML se poate genera direct utilizând tehnologii de codare din partea serverului cum ar fi PHP, JSP sau ASP. Multe aplicații ca sistemele de gestionare a conținutului, wiki-uri și forumuri web generează pagini HTML.
2.5.2 CSS (Cascading Style Sheets)
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. CSS se poate utiliza și pentru formatarea elementelor XHTML, XML și SVGL.
Fisierul CSS (cascading style sheet – foi de stil in cascada) va permite separarea continutului (X)HTML de stilul de afisare in pagina. Ca de obicei, utilizati codul (X)HTML pentru aranjarea continutului in pagina, insa toata prezentarea (fonturi, culori, fundaluri, borduri, etc) se realizeaza din fisierul CSS. In acest moment, puteti folosi CSS-urile in doua moduri, si anume interne sau externe.
Stilurile interne
Mai intai vom aborda metoda stilurilor interne. Aceasa metoda inseamna ca veti plasa codul CSS in interiorul fiecarei pagini html pe care doriti sa folositi stilurile respective, intre tagurile <head> </head> .Acest lucru se face ca in exemplul ce urmeaza:
<head>
<title>titlu pagina</title>
<style type="text/css">Aici se definesc stilurile CSS</style>
</head>
Folosind aceasta metoda (stilurile interne), fiecare fisier (X)HTML va contine codul CSS folosit la stilizare. Asta inseamna ca atunci cand doriti sa faceti o schimbare de stil (marimea fontului, culoare, etc) va trebui sa operati modificarea in toate paginile ce contin acel stil. Metoda descrisa pana acum este buna atunci cand avem de stilizat doua, trei pagini, insa cand avem de a face cu siteuri de zeci sau sute de pagini este destul de neplacut sa modificam toate paginile.
Stilurile externe
In continuare vom explora metoda stilurilor externe. Un fisier CSS extern poate fi realizat cu orice editor simplu de text (Notepad, Wordpad, etc) sau cu editoare avansate gen Dreamweaver. Fisierul CSS nu contine sub nici o forma cod (X)HTML, ci doar cod CSS. Fisierul trebie salvat cu extensia .css. Inserarea fisierului extern in paginile (X)HTML se face foarte usor, prin plasarea unui link (legatura) in sectiunea <head> </head> a fiecarei pagini pe care dorim sa folosim stilul respectiv. Iata un exemplu de inserare a unui fisier extern .css intr-o pagina (X)HTML:
<link rel="stylesheet" type="text/css" href="Calea catre fisierul.css" />
sau puteti folosi metoda de import dupa cum urmeaza:
<style type="text/css">@import url( Calea catre fisierul.css )</style>
Oricare dintre metode este buna si se obtine plasand unul dintre codurile de mai sus in sectiunea <head> </head> a paginii, dupa cum exemplificam mai jos:
<head>
<title> titlu pagina </title>
<link rel="stylesheet" type="text/css" href="stil.css" />
</head>
sau
<head>
<title> titlu pagina </title>
<style type="text/css"> @import url( Calea catre fisierul.css ) </style>
</head>
Folosind metoda fisierelor CSS externe, toate paginile (X)HTML vor folosi acelasi fisier de stil. Asta inseamna ca dca doriti sa faceti o schimbare care sa aiba efect in toate paginile, este de ajuns sa modificati un singur fisier, si anume cel de stil (.css), si efectul se va observa pe toate paginile (X)HTML ce folosesc acel fisier. Astfel faceti schimbari in tot siteul, indiferent de cate pagini are, fara efort si mai ales foarte repede.
Iata cateva motive pentru care aceasta metoda este mai buna.
Intretinere mai usoara
Dimensiuni reduse ale paginilor
Economie de banda internet
Flexibilitate
2.6 Apache Web Server
Apache este principalul tip de server folosit pe Internet la ora actuala, constituind o componenta cheie a infrastructurii acestuia. Cea mai importanta caracteristica a unui server web este de traduce un URL intr-un nume de fisier si apoi sa-l trimita inapoi prin Internet, sau intr-un nume de program, apoi sa ruleze programul si sa transmita datele de iesire catre calculatorul sursa.
Apache este un server web foarte complex, in principal datorita numeroaselor facilitati pe care le ofera: fiabilitate (fiind un program open-source este permanent testat si imbunatatit), rapiditate, consum mic de resurse hardware, multitasking, virtual hosts, securitate sporita, ruleaza pe diferite platforme, usor de configurat.
Apache HTTP Server este un web server pentru sisteme ca si Unix, Microsoft Windows, Novell NetWare si alte sisteme de operare . Apache este remarcabil pentru ca joaca un rol cheie in cresterea initiala a Internetului din lumea intreaga. Cand a fost pentru prima data eliberat, Apache a fost singura sursa alternativa viabila la Netscape Communications Corporation web server ( in mod current cunoscut ca si Sun Java System Web Server ). De atunci a evoluat la rivalul Unix- servere web in termeni de functionalitate si performanta. Din Aprilie 1996 Apache a fost cel mai popular server HTTP din intreaga lume a internetului, servind ca platforma de referinta impotriva careia alte server web sunt intentionate si apreciate; ca si in Ianuarie 2007, Apache a servit la 60% din toate website-urile. Apache continua sa fie cel mai popular server web care este utilizat.
Apache este dezvoltat si mentinut de o comunitate deschisa de dezvoltatori de aplicatii sub auspiciile Fundatiei Apache Software. Eliberata sub licenta Apache, serverul Apache HTTP este un program gratis.
Istoria
Prima versiune a web serverului Apache a fost creeata de Robert McCool, care a fost serios implicat in Centru National pentru Supercomputing Applications web server, cunoscut simplu ca si NCSA HTTPd . Cand Rob a parasit NCSA la mijlocul anului 1994 a lasat o varietate de modele pentru a imbunatati circulatia prin email. Rob McCool nu a fost singur in eforturile sale. Multi alti dezvoltatori de aplicatii au ajutat la formarea originalului "Apache Group": Brian Behlendorf, Roy T. Fielding, Rob Hartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert S. Thau, Andrew Wilson, Eric Hagberg, Frank Peters, si Nicolas Pioch. FAQ afirma pe site-ul oficial al proiectului: “Numele Apache a fost ales din respect pentru Tribul nativ indian American al apasilor “, bine cunoscut pentru indemanarile superioare in strategia lor si inepuizabila anduranta. Cea mai raspandita interpretare este aceea ca numele provine din faptul ca atunci cand a aparut la inceputul anului 1995, web serverul a constat intr-un set de patches la codul de baza al NCSA HTTPd 1.3 si de aceea a fost "a patchy" server .Aceasta a fost explicatia initiala a website-ului acestui proiect.
Versiunea 2 a serverului Apache a fost o rescriere substantiala din codul Apache 1.x, cu o mare concentrare asupra ulterioarei modulatii si dezvoltarea unei retele portabile ,Apache Portable Runtime. Partea centrala din Apache 2 x are mai multe intensificari majore fata de Apache 1.x . Acestea include filetarea UNIX, suport mai bun pentru platforme non-UNIX , (cum ar fi Microsoft Windows), un nou Apache API, si suport IPv6 . Prima eliberare a Apache 2 a fost in Martie 2000 cu prima disponibilitate generala in Mai 2002.
2.7 UML
Tendința actuală din industria software impune dezvoltarea de sisteme extrem de complexe și în cel mai scurt timp posibil. Se impune cu necesitate adaptarea procesului de dezvoltare a sistemelor informatice la cerințele din ce în ce mai complexe față de produsele informatice.
În plus, odată cu impunerea pe piață a limbajelor orientate obiect și a mediilor vizuale de programare, au apărut în ultimii ani mai multe propuneri de procese de dezvoltare orientată obiect a sistemelor informatice, ceea ce a introdus încă o picătură de haos în ecuație.
UML-ul reprezintă o sinteză a celor mai multe notații și concepte utilizate în proiectarea orientată obiect. A început ca o coroborare a activității lui Grady Booch, James Rumbaugh, și Ivar Jacobson, creatorii a trei dintre cele mai cunoscute metodologii orientate obiect.
UML propune notații standard și semantică corespunzătoare pentru modelarea sistemelor orientate obiect. Înainte de aceasta un proiect orientat obiect putea fi descris utilizând una dintre zecile de metodologii disponibile, ceea ce făcea ca în cazul unei revizuiri cei responsabili de aceasta să piardă mult timp cu analiza notațiilor și semanticii metodologiei înainte de a pătrunde logica proiectării. În acest moment, utilizând UML, diferiți proiectanți ce lucrează la diverse sisteme pot înțelege cu ușurință munca celuilalt.
UML-ul prescrie un set standard de diagrame și notații pentru analiza și proiectarea orientată obiect a diverselor tipuri de sisteme (sisteme software, sisteme hardware sau organizații), descriind totodată și semantica acestor diagrame și simboluri.
Limbajul unificat de modelare oferă pentru aceasta zece tipuri de diagrame ce pot fi grupate astfel:
Diagramă pentru modelarea proceselor de afaceri, respectiv:
Diagrama cazurilor de utilizare – în cazul metodologiilor orientate pe cazuri de utilizare, această diagramă dirijează întreg procesul de dezvoltare al sistemului
Diagrame pentru modelarea structurii statice, respectiv:
Diagrama claselor – pentru modelarea structurii statice a claselor sistemului
Diagrama obiectelor – pentru modelarea structurii statice a obiectelor sistemului
Diagrame pentru modelarea dinamicii:
Diagrame de interacțiune, respectiv:
Diagrama de secvență – pentru modelarea circuitului mesajelor între obiecte
Diagrama de colaborare – pentru modelarea interacțiunilor între obiecte
Diagrame de comportament, respectiv:
Diagrama de stare – pentru modelarea comportamentului obiectelor din sistem
Diagrama de activitate – pentru modelarea comportamentului cazurilor de utilizare, obiectelor sau operațiilor
Diagrame de implementare, respectiv:
Diagrama componentelor – pentru modelarea componentelor
Diagrama de desfășurare – pentru modelarea distribuirii sistemului
Diagrama pachetelor – mijloc de grupare a elementelor diagramelor în pachete
În figura de mai jos se prezintă grafic această clasificare a diagramelor UML.
Mecanismele de extensibilitate incluse permit ca în UML să poată fi abordate aspecte care nu sunt specificate în standard. Aceste mecanisme permit extinderea notațiilor și semanticii UML.
Stereotipul este cel mai utilizat dintre mecanismele de extensibilitate ale UML-ului. Un stereotip reprezintă un mecanism de calificare din punct de vedere al utilizării. El se poate aplica oricărui element de modelare, inclusiv claselor, pachetelor, relațiilor de moștenire, etc. De exemplu, o clasă cu stereotipul <<actor>> este o clasă utilizată ca agent extern în modelarea proceselor de afaceri. O clasă șablon (template) este modelată ca o clasă cu stereotipul <<parameterized>>, cu semnificația că aceasta cuprinde parametrii.
Figura nr. 2.5
Cap. 3: Proiectarea bazei de date
Diagrama bazei de date
Figura nr 3.1
Tabela „categorii”
Scop: In tabela „categorii” vor fi stocate departamentele(sub-departamentele) intr-o structura arborescenta.
Observatii:
id_categorie este cheie primara.
id_parent – reprezinta id-ul „parintelui” departamentului in cauza (id_parent=0 reprezinta primul nivel).
nume – denumirea departamentului (sub-departamentului).
Constrangeri:
CONSTRAINT categorii_pkey PRIMARY KEY (id_categorie)
CONSTRAINT activ_categorii CHECK (activ = 0 OR activ = 1)
Indecsi:
CREATE INDEX id_parent ON categorii USING btree (id_parent);
Tabela „intrebari”
Scop: In tabela „intrebari” vor fi stocate intrebarile introduse de catre utilizatori (continut, variante de raspuns, raspuns corect etc…)
Observatii:
id_intrebare este cheie primara;
continut – reprezinta continutul intrebarii;
varianta_raspuns_1 .. varianta_raspuns_5 – reprezinta variantele de raspuns;
activ – in momentul in care o intrebare devine inactiva, ea nu va fi stearsa din baza de date, in schimb campul „activ” va lua valoarea 0.
utilizator – reprezinta username-ul utilizatorului care a introdus intrebarea.
raspuns_corect – reprezinta varianta de raspuns corespunzatoare
Constrangeri:
CONSTRAINT intrebari_pkey PRIMARY KEY (id_intrebare)
CONSTRAINT check_activ CHECK (activ = 0 OR activ = 1),
CONSTRAINT check_intrebari CHECK (raspuns_corect = 'A'::bpchar OR raspuns_corect = 'B'::bpchar OR raspuns_corect = 'C'::bpchar OR raspuns_corect = 'D'::bpchar OR raspuns_corect = 'E'::bpchar)
Indecsi:
CREATE INDEX utilizator_intr ON intrebari USING btree (utilizator);
Tabela „istoric_intrebari”
Scop: In tabela „istoric_intrebari” vor fi stocate istoricul modificarilor pentru intrebarile introduse de catre utilizatori (continut, variante de raspuns, raspuns corect etc…)
Constrangeri:
CONSTRAINT istoric_intrebari_pkey PRIMARY KEY (id_istoric),
CONSTRAINT fk_istoric_intrebari FOREIGN KEY (id_intrebare) REFERENCES intrebari (id_intrebare) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT check_activ_istoric CHECK (activ = 0 OR activ = 1),
CONSTRAINT check_istoric_intrebari CHECK (raspuns_corect = 'A'::bpchar OR raspuns_corect = 'B'::bpchar OR raspuns_corect = 'C'::bpchar OR raspuns_corect = 'D'::bpchar OR raspuns_corect = 'E'::bpchar)
Indecsi:
CREATE INDEX id_intrebare_istoric ON istoric_intrebari USING btree (id_intrebare);
CREATE INDEX utilizator_istoric ON istoric_intrebari USING btree (utilizator);
Tabela „relatie_categorii_supervizori”
Scop: In tabela „relatie_categorii_supervizori” vor fi stocate id-urile departamentelor care se afla in subordinea unui supervizor.
Constrangeri:
CONSTRAINT fk_categorii FOREIGN KEY (id_categorie) REFERENCES categorii (id_categorie) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE
Indecsi:
CREATE INDEX id_categorie_r_c ON relatie_categorii_supervizori USING btree (id_categorie);
CREATE INDEX utilizator_r_c ON relatie_categorii_supervizori USING btree (utilizator);
Tabela „relatie_intrebari_categorii”
Scop: In tabela „relatie_intrebari_categorii” vor fi stocate legaturile dintre intrebari si departamente(sub-departamente etc…). O intrebare poate salvata pentru unul sau mai multe departamente.
Constrangeri:
CONSTRAINT fk_id_categorie FOREIGN KEY (id_categorie) REFERENCES categorii (id_categorie) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE;
CONSTRAINT fk_id_intrebare FOREIGN KEY (id_intrebare) REFERENCES intrebari (id_intrebare) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION;
CONSTRAINT relatie_intrebari_categorii_id_categorie_key UNIQUE (id_categorie, id_intrebare)
Indecsi:
CREATE INDEX id_categorie_r_i ON relatie_intrebari_categorii USING btree (id_categorie);
CREATE INDEX id_intrebare_r_i ON relatie_intrebari_categorii USING btree (id_intrebare);
Tabela „relatie_teste_angajat_intrebari”
Scop: In tabela „relatie_teste_angajat_intrebari” vor fi stocate raspunsurile la intrebarile unui test efectuat de catre angajat.
Observatii: Pentru fiecare intrebare se vor salva raspunsul corect al intrebarii si raspunsul efectuat de catre angajat.
Constrangeri:
CONSTRAINT fk_id_test_angajat FOREIGN KEY (id_test_angajat) REFERENCES teste_angajat (id_test_angajat) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE;
CONSTRAINT fk_intrebari_angajat FOREIGN KEY (id_intrebare) REFERENCES intrebari (id_intrebare) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION;
CONSTRAINT check_raspuns_angajat CHECK (raspuns_angajat = 'A'::bpchar OR raspuns_angajat = 'B'::bpchar OR raspuns_angajat = 'C'::bpchar OR raspuns_angajat = 'D'::bpchar OR raspuns_angajat = 'E'::bpchar);
CONSTRAINT check_raspuns_corect CHECK (raspuns_corect = 'A'::bpchar OR raspuns_corect = 'B'::bpchar OR raspuns_corect = 'C'::bpchar OR raspuns_corect = 'D'::bpchar OR raspuns_corect = 'E'::bpchar)
Indecsi:
CREATE INDEX id_intrebare_r_t ON relatie_teste_angajat_intrebari USING btree (id_intrebare);
CREATE INDEX id_test_angajat_r_t ON relatie_teste_angajat_intrebari USING btree (id_test_angajat);
Tabela „relatie_teste_categorii”
Scop: In tabela „relatie_teste_categorii” se vor stoca id-urile categoriilor din care este „compus” un test definit de catre supervizor.
Observatii: In momentul care se defineste un test de catre supervizor, pentru fiecare categorie se va preciza pondere (in procente), suma ponderilor fiind egala cu 100.
Constrangeri:
CONSTRAINT fk_id_categorie FOREIGN KEY (id_categorie) REFERENCES categorii (id_categorie) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE;
CONSTRAINT fk_id_test FOREIGN KEY (id_test) REFERENCES teste_definite_supervizor (id_test) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE;
Indecsi:
CREATE INDEX id_categorie_r_t ON relatie_teste_categorii USING btree (id_categorie);
CREATE INDEX id_test_r_t ON relatie_teste_categorii USING btree (id_test);
Tabela „teste_angajat”
Scop: In tabela „teste_angajat” se vor salva detaliile unui test efectuat de catre angajatul Credit Europe Bank.
Observatii:
id_test – reprezinta id-ul testului definit de catre „Supervizor”
data_inceput_test, data_sfarsit_test – reprezinta data inceperii si terminarii testului.
utilizator – username-ul angajatului care efectueaza testul.
raspunsuri_corecte – numarul de raspunsuri corecte.
anulat – default este setat pe 0. In momentul care un angajat doreste anularea testului, atunci campul anulat va lua valoarea 1.
Constrangeri:
CONSTRAINT teste_angajat_pkey PRIMARY KEY (id_test_angajat);
CONSTRAINT teste_angajat_id_test_fkey FOREIGN KEY (id_test) REFERENCES teste_definite_supervizor (id_test) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION;
Indecsi:
CREATE INDEX id_test_t_a ON teste_angajat USING btree (id_test);
Tabela „teste_definite_supervizor”
Scop: In tabela „teste_definite_supervizor” se vor stoca setarile testelor definite de catre „Supervizor”.
Observatii:
denumire – reprezinta denumirea testului definit de catre „Supervizor”.
data_start_interval, data_stop_interval – reprezinta perioada cat timp va fi activ testul.
nr_intrebari – reprezinta numarul de intrebari din care va fi compus testul
secunde_intrebare – numarul de secunde per intrebare. In cazul in care utilizatorul nu va raspunde in timp util aplicatia va trece automat mai departe.
activare_hr – in cazul in care „Supervizor” va bifa acest camp atunci utilizatorii Departamentului HR vor avea posibilitatea sa vizualizeze rezultatele testelor efectuate de catre angajati.
Constrangeri:
CONSTRAINT id_test PRIMARY KEY (id_test)
Indecsi:
CREATE INDEX utilizator_t_d ON teste_definite_supervizor USING btree (utilizator);
Tabela „utilizatori”
Scop: In tabela „utilizatori” se vor stoca datele referitoare la conturile utilizatorilor care vor folosi aplicatia e-Learning.
Observatii:
tip_utilizator – reprezinta nivelul de acces al utilizatorului
id_categorie – reprezinta id-ul departamentului in cazul in care nivelul de acces este „Sef Departament”, in caz contrar campul va lua valoarea 0.
activ – 1- utilizator activ
2- utilizator inactiv.
Constrangeri:
CONSTRAINT utilizatori_pkey PRIMARY KEY (id_utilizator);
CONSTRAINT utilizatori_tip_utilizator_key UNIQUE (tip_utilizator, utilizator);
Indecsi:
CREATE INDEX id_categorie_u ON utilizatori USING btree (id_categorie);
Tabela „cursuri”
Scop: In tabela „cursuri” se vor stoca datele statice referitoare la cursuri introduse de catre utilizatorii „Sef-Departament”.
Observatii:
denumire – reprezinta denumirea cursului introdus de catre utilizator.
nr_slideuri – reprezinta numarul de slideuri ce caracterizeaza cursul.
descriere – reprezinta o scurta descriere a cursului.
Constrangeri:
CONSTRAINT cursuri_pkey PRIMARY KEY (id_curs)
CONSTRAINT activ_cursuri_check CHECK (activ = 0 OR activ = 1)
Tabela „cursuri_continut_detaliat”
Scop: In tabela „cursuri_continut_detaliat” se va stoca continutul fiecarui slide corespunzator cursului
Observatii:
continut – reprezinta continutul fiecarui slide.
id_curs – reprezinta id-ul cursului pentru care se administreaza continutul detaliat
nr_pagina – valori posibile intre 1 si numarul de slide-uri corespunzator cursului.
Constrangeri:
CONSTRAINT cursuri_continut_detaliat_pkey PRIMARY KEY (id_pagina)
CONSTRAINT cursuri_continut_detaliat_id_curs_fkey FOREIGN KEY (id_curs) REFERENCES cursuri (id_curs) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE
Indecsi:
CREATE INDEX id_curs_1 ON cursuri_continut_detaliat USING btree (id_curs);
Tabela „cursuri_materiale_auxiliare”
Scop: In tabela „cursuri_materiale_auxiliare” se vor stoca fisierele auxiliare uploadate pentru fiecare curs.
Observatii:
fisier – reprezinta numele fisierului uploadat.
id_curs – reprezinta id-ul cursului pentru care se uploadeaza fisiere auxiliare.
Constrangeri:
CONSTRAINT cursuri_materiale_auxiliare_pkey PRIMARY KEY (id_fisier)
CONSTRAINT cursuri_materiale_auxiliare_id_curs_fkey FOREIGN KEY (id_curs) REFERENCES cursuri (id_curs) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE
Indecsi:
CREATE INDEX id_curs_2 ON cursuri_materiale_auxiliare USING btree (id_curs);
Tabela „intrebari_quiz”
Scop: In tabela „intrebari_quiz” vor fi stocate intrebarile introduse de catre utilizatorii „Sef Departament” (continut, variante de raspuns, raspuns corect etc…) – intrebarile vor alcatui testul de verificare pentru fiecare curs.
Observatii:
id_intrebare_quiz este cheie primara;
continut – reprezinta continutul intrebarii;
varianta_raspuns_1 .. varianta_raspuns_5 – reprezinta variantele de raspuns;
activ – in momentul in care o intrebare devine inactiva, ea nu va fi stearsa din baza de date, in schimb campul „activ” va lua valoarea 0.
utilizator – reprezinta username-ul utilizatorului care a introdus intrebarea.
raspuns_corect – reprezinta varianta de raspuns corespunzatoare
Constrangeri:
CONSTRAINT intrebari_quiz_pkey PRIMARY KEY (id_intrebare_quiz),
CONSTRAINT intrebari_quiz_id_curs_fkey FOREIGN KEY (id_curs) REFERENCES cursuri (id_curs) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE,
CONSTRAINT check_activ CHECK (activ = 0 OR activ = 1),
CONSTRAINT check_intrebari CHECK (raspuns_corect = 'A'::bpchar OR raspuns_corect = 'B'::bpchar OR raspuns_corect = 'C'::bpchar OR raspuns_corect = 'D'::bpchar OR raspuns_corect = 'E'::bpchar)
Indecsi:
CREATE INDEX id_curs_3 ON intrebari_quiz USING btree (id_curs);
Tabela „subiecte”
Scop: In tabela „subiecte” se vor stoca subiectele postate de catre utilizatori.
Observatii:
id_curs – reprezinta id-ul cursului pentru care se vor posta subiecte
nivel – reprezinta nivelul de acces al utilizatorului care posteaza subiectele.
Constrangeri:
CONSTRAINT subiecte_pkey PRIMARY KEY (id_subiect),
CONSTRAINT subiecte_id_curs_fkey FOREIGN KEY (id_curs) REFERENCES cursuri (id_curs) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE
Indecsi:
CREATE INDEX id_curs_4 ON subiecte USING btree (id_curs);
Tabela „subiecte_detaliat”
Scop: In tabela „subiecte_detaliat” se vor stoca comentariile introduse pentru fiecare subiect in parte.
Observatii:
id_subiect – reprezinta id-ul subiectului pentru care se vor posta comentarii
comentariu – reprezinta continutul comentariului introdus de utilizator
nivel – reprezinta nivelul de acces al utilizatorului care posteaza comentariile.
Constrangeri:
CONSTRAINT subiecte_detaliat_pkey PRIMARY KEY (id_comentariu)
CONSTRAINT subiecte_detaliat_id_subiect_fkey FOREIGN KEY (id_subiect) REFERENCES subiecte (id_subiect) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE
Indecsi:
CREATE INDEX id_subiect ON subiecte_detaliat USING btree (id_subiect);
Cap. 4: Prezentarea aplicatiei E-Learning
Logarea/delogare in aplicatie
Tinand cont de faptul ca in cadrul aplicatiei e-Learning intalnim mai multe nivele de acces, in momentul logarii, utilizatorul va specifica, pe langa username si parola, grupul de care apartine.
Figura nr. 4.1
Optiunile definite pentru “Grup” sunt urmatoarele:
Angajat
Vanzari directe
Administrator
Supervizor
Sef Departament
HR (Departamenul Resurse Umane)
Daca pentru ultimile cinci optiuni (Vanzari Directe … HR), in momentul logarii utilizatorul isi va introduce username-ul si parola(default este “123456”) asa cum au fost definite in tabela specifica utilizatorilor aplicatiei, pentru optiunea “Angajat” este necesara introducerea username-ului si a parolei de windows.
Tinand cont de cele prezentate mai sus, pentru logarea in aplicatia e-Learning distingem doua cazuri din punctul de vedere al functionalitatii:
logarea folosind username-ul si parola de windows (Active Directory)
Pentru a implementa aceasta functionalitate s-a folosit prin intermediul PHP-ului serviciul LDAP care a fost configurat in prealabil in fisierul php.ini deoarece extensia php_ldap.dll este default dezactivata.
LDAP (Lightweight Directory Access Protocol) este un protocol standard, stabilit de Internet Engineering Task Force (IETF), care oferă utilizatorilor unei rețele, posibilitatea de a căuta și modifica informațiile dintr-un Directory Service. LDAP gestionează o bază de date object-oriented. Într-o astfel de bază de date, diferențierea se face cu ajutorul claselor de obiecte si a obiectelor în sine. Baza de date are o structură de tip arbore, iar nivelul de pe cea mai înaltă poziție se numeste root. În cazul LDAP, root-ul este numit Root DN(Root Distinguished Name). De regulă, se adaugă un sufix la acest root, pentru a defini numele companiei si un cod de țară.
Ex: DC=int, DC=finansbank, DC=ro
Pentru a putea utiliza acest serviciu, pe langa definirea DN-ului va trebui specificat si numele sau adresa serverului pe care il vom folosi.
Ex: buc-ho-dc.int.finansbank.ro
Secventa tipica care trebuie folosita pentru a apela serviciul LDAP este urmatoarea:
Figura nr. 4.2
logarea folosind contul existent in baza de date
Utilizatorul va introduce username-ul si parola. Daca verificarea are loc cu succes, se va autentifica utilizatorul in functie de grupul de acces ales, in caz contrar, i se va afișa un mesaj de eroare.
Diagrama de activitate:
Figura nr. 4.3
Structura aplicatiei
Structura si functionalitatea aplicatiei deriva din rolurile utilizatorilor acesteia
4.2.1 utilizatorul “Angajat”
Cazul de utilizare general pentru utilizatorul „Angajat”
Figura nr. 4.4
Utilizatorul „Angajat”, reprezentat prin personalul bancii Credit Europe Bank, se logheaza in cadrul aplicatiei e-Learning prin intermediul user-ului si parolei de windows. După logare intra intr-un panou de administrare care ii oferă următoarele facilitați:
vizualizarea testelor pe care angajatul le-a efectuat de-a lungul timpului. Prin vizualizare se intelege urmatoarele lucruri:
vizualizarea procentajului obtinut la testul respectiv (de asemenea utilizatorul poate vizualiza numarul de raspunsuri corecte si gresite);
vizualizarea datei efectuarii testului si a timpului de raspuns;
vizualizarea „starii” unui test („starea” unui test poate lua doua valori: „Efectuat corect” si „Anulat”. Un test poate trece in starea „Anulat” in momentul in care administratorul IT anuleaza rezultatul obtinut la testul in cauza. Motivele pentru care un test se poate anula sunt determinate de cauze externe aplicatiei e-Learning (blocarea calculatorului, intreruperea curentului etc…)
vizualizarea raspunsurilor date de catre angajat precum si a raspunsurilor corecte la intrebarile ce au fost gresite.
Testele salvate in istoric vor fi generate pdf, astfel angajatul avand posibilitatea printarii si salvarii pe disk. Trebuie mentionat faptul ca aceeasi intrebare poate avea continut diferit de la un test la altul. Pentru a implementa aceasta functionalitate, se foloseste o tabela pentru a stoca istoricul modificarilor unei intrebari. Astfel, utilizatorul va vizualiza detaliile intrebarilor exact cum au fost generate in test.
2. efectuarea testului activ
In cadrul aplicatiei e-Learning un singur test va fi activ la un moment dat pentru a evita angajarea persoanelor examinate in teste care nu le sunt destinate. In cazul in care angajatul a efectuat testul respectiv, el va avea posibilitatea sa efectueze inca o data testul doar daca administratorul IT ii va anula in baza de date rezultatul anterior.
In cadrul unui test, angajatul va trebui sa raspunda la un numar de intrebari(diferit de la un test la altul) stabilit de catre utilizatorul „Supervizor”. Fiecare intrebare are cinci variante de raspuns, fiind corect doar un singur raspuns. In cazul in care angajatul nu va raspunde in timp util la fiecare intrebare(pentru fiecare test este alocat un numar de secunde per intrebare), aplicatia e-Learning va trece automat mai departe, in schimb nu se va lua in considerare nici un raspuns corect.
Diagrama de activitate:
Figura nr. 4.5
In cazul in care testul este efectuat de catre un utilizator „Angajat” care are drepturi de „Supervizor”, acesta va putea sa isi stearga rezultatele testelor doar daca acestea au fost definite de catre el. Scopul efectuarii propriilor teste este de a se asigura ca continutul intrebarilor si variantele de raspuns sunt generate corespunzator.
In momentul in care doi sau mai multi utilizatori „Angajat” dau simultan testul, ei nu vor raspunde la aceleasi intrebari, deoarece intrebarile sunt generate aleator din aria corespunzatoare testului.
3. parcurgerea cursurilor existente
Utilizatorul “Angajat” va avea posibilitatea sa parcurga si sa acceseze toate cursurile existente in aplicatie. Prin parcurgerea unui curs existent in aplicatia e-Learning se intelege urmatoarele lucruri:
parcurgerea cursului detaliat pagina cu pagina. Finalizarea cursului consta in parcurgerea tuturor paginilor. De asemenea, pe masura ce utilizatorul parcurge cursul, va avea posibilitatea sa isi faca “notite” pentru fiecare pagina citita. Ulterior, dupa finalizarea cursului, utilizatorul isi va putea accesa notitele create pentru cursul respectiv.
descarcarea materialelor existente pentru fiecare curs (in format .pdf, .doc etc…) dupa parcurgerea integrala a cursului.
exprimarea opiniei despre continutul cursului prin vot.
Diagrama de activitate:
Figura nr. 4.6
4. participarea la discutii legate de cursuri
Utilizatorul “Angajat” are posibilitatea participarii la discutii legate de continutul cursurilor. Fiecare utilizator poate deschide un nou subiect legat de un curs sau poate interveni la discutiile deja existente. Cei ce vor raspunde la intrebarile “cursantilor” (in cazul nostru cursantii sunt angajatii Credit Europe Bank) sunt utilizatorii „Sef-Departament”. Supervizorii au posibilitatea sa intervina oricand in discutiile dintre angajati si sefii de departament.
4.2.2 utilizatorul “Vanzari Directe”
Utilizatorul „Vanzari Directe”, reprezentat prin personalul departamentului de Vanzari al Credit Europe Bank, va avea aceleasi drepturi ca si utilizatorul „Angajat” (vizualizare rezultate teste, efectuarea testelor active, parcurgerea cursurilor,participarea la discutii), singura diferenta constand in faptul ca acesti angajati nu au cont de windows. Pentru a se putea loga in aplicatia e-Learning, administratorul IT le va crea un cont special pe baza de username si parola.
4.2.3 utilizatorul „Administrator”
Cazul de utilizare general pentru utilizatorul „Administrator”
Figura nr. 4.7
Utilizatorul „Administrator”, reprezentat printr-unul sau mai multi angajati din cadrul departamentului IT, se logheaza in cadrul aplicatiei e-Learning prin intermediul unui cont special bazat pe username si parola. După logare intra intr-un panou de administrare in cadrul caruia poate efectua urmatoarele operatii:
1. adaugare/editare utilizatori
Cu ajutorul acestui meniu, Administratorul aplicatiei e-Learning poate crea noi utilizatori sau edita utilizatorii deja existenti in baza de date. Pentru crearea unui utilizator nou, Administratorul va trebui sa completeze urmatoarele informatii:
username (denumirea utilizatorului)
nume, prenume angajat
nivel acces („Sef Departament”, „Supervizor”, „HR” si „Vanzari Directe”)
in cazul in care nivelul de acces este „Sef Departament”, va trebui specificat de asemenea departamentul pe care il coordoneaza. OBS. Utilizatorul „Sef Departament” va coordona un singur departament.
in cazul in care nivelul de acces este „Supervizor”, va trebui specificat unul sau mai multe departamente pe care acest tip de utilizator le are in subordine.
Diagrama de activitate:
Figura nr. 4.8
2. vizualizare istoric intrebari
Utilizatorul „Administrator” va avea posibilitatea vizualizarii istoricului modificarilor intrebarilor. Informatiile ce vor fi afisate utilizatorului sunt urmatoarele:
ID si continut intrebare
Variante de raspuns precum si raspunsul corect
Categoria de care apartine intrebarea
Utilizatorul care a adaugat intrebare
Data ultimei modificari.
In cazul in care o intrebare „a suferit” modificari de-a lungul timpului, utilizatorul
va avea posibilitatea vizualizarii tuturor modificarilor fiind evidentiata ultima modificare efectuata asupra intrebarii.
3. activare/inactivare test
Utilizatorul „Administrator” este responsabil cu activarea sau inactivarea testelor definite de catre „Supervizor”. Administratorul va vizualiza toate testele existente in baza de date, avand posibilitatea activarii/inactivarii unui test. Informatiile care definesc un test sunt urmatoarele:
Denumire test
Data inceput perioada test
Data sfarsit perioada test
Numar de intrebari
Numar de secunde per intrebare
Utilizatorul care a creat testul
4. rulare rapoarte
Administratorul va avea posibilitatea rularii unor rapoarte pentru fiecare test existent in aplicatia e-Learning. Vom descrie functionalitatea acestor rapoarte in sectiunea dedicata utilizatorului „Supervizor”, singura diferenta intre „Administrator” si „Supervizor” constand in faptul ca utilizatorul „Administrator” va putea rula rapoartele pentru fiecare test, in schimb utilizatorul „Supervizor” fiind restrictionat doar la testele introduse de el.
5. schimbare setari cont
Tinand cont de faptul ca in afara de utilizatorul „Angajat”, pentru celelalte nivele de acces utilizatorii vor folosi pentru logarea in aplicatia e-Learning conturi existente in baza de date (username si parola), este necesara existenta unei optiuni pentru schimbarea parolei si denumirii utilizatorului.
4.2.4 utilizatorul „Sef Departament”
Cazul de utilizare general pentru utilizatorul „Sef Departament”
Figura nr. 4.9
Utilizatorul „Sef Departament”, reprezentat prin managerii departamentelor sau sefii de echipa din cadrul Credit Europe Bank, se logheaza in cadrul aplicatiei e-Learning prin intermediul unui cont special bazat pe username si parola.
Acest tip de utilizator va avea urmatoarele optiuni:
adaugarea/editarea/inactivarea de capitole/subcapitole
Figura nr. 4.10
Semnificatie Diagrama:
primul nivel este format din departamente ce vor fi predefinite, fiecare departament avand unul sau mai multi utilizatori (nivel acces – “Sef Departament”).
Incepand de la nivelul 2 structura diagramei va fi administrata de fiecare utilizator pentru “ramura” sa (department). Pentru a adauga un nou „nod” la structura arborescenta, utilizatorul „Sef Departament” va trebui sa precizeze numele „nodului” si parintele.
Prin nod frunza se intelege urmatorul lucru: nodul care nu prezinta nici un „fiu”. Exemple noduri frunza: Cap3, Subcap1, Subcap3, Subcap5, Subcap6, Subcap7, in schimba Subcap2 si Subcap4 NU sunt noduri frunza.
adaugarea/editarea/(in)activarea/stergerea de intrebari
utilizatorii „Sef Departament” vor adauga/edita intrebari doar pentru departamentul lor si vor avea posibilitatea sa „lege” intrebarile doar de nodurile frunza..
pentru a adauga o intrebare noua, utilizatorul va trebui sa specifice „nodul frunza” precum si continutul intrebarii, cele cinci variante de raspuns si varianta raspunsului corect.
Fiecarei intrebari nou introduse i se va aloca automat un ID (astfel vom putea diferentia intrebarile identice dar cu raspunsuri diferite, situatie ce poate aparea in urma schimbarilor normelor/procedurilor).
De asemenea utilizatorii vor putea sa „copieze” intrebarile dintr-un „nod frunza” (capitol, subcapitol etc…) intr-un alt „nod frunza”.
Legat de editarea/(in)activarea/stergerea intrebarilor, utilizatorii vor avea urmatoarele restrictii:
Pentru stergerea unei intrebari este obligatoriu ca aceasta sa nu fi fost folosita la nici un test.
(in)activarea unei intrebari este posibila in orice moment, cu mentiunea ca intrebarile active se vor vizualiza din alta fereastra.
In cazul in care utilizatorul va edita o intrebare, continutul va fi salvat in tabela „istoric” precum si data modificarii. In cazul in care un angajat va efectua un test iar continutul unor intrebari din cadrul testului respectiv vor fi modificate, atunci angajatul va avea posibilitatea vizualizarii intrebarilor asa cum au fost generate in test.
Utilizatorii „Sef Departament” vor avea posibilitatea sa genereze pdf-uri cu toate intrebarile din fiecare „nod frunza” pentru o mai buna vizualizare a acestora.
In figura de mai jos este prezentata un exemplu de „ramura” pentru utilizator „Sef Departament”.
Figura nr. 4.11
administrare continut cursuri
Utilizatorul „Sef Departament” este cel responsabil de administrarea continutului unui curs. In cazul in care se doreste introducerea unui curs se vor specifica urmatoarele campuri:
denumirea cursului
o scurta descriere a cursului (prefata)
prezentarea detaliata a cursului.Utilizatorul va fi nevoit sa introduca cursul slide cu slide, ulterior avand posibilitatea editarii slide-urilor
introducerea testului de verificare.Fiecare intrebare va avea, ca si in cazul testelor reale, 5 variante de raspuns si un singur raspuns corect, cu precizarea ca se va indica si pagina unde se gaseste raspunsul. Scopul acestui test este de a veni in sprijinul angajatilor pentru o rapida asimilare a cunostintelor.
uploadarea de fisiere (in format .pdf, .doc etc…) care sa vina in completarea cursului.
Tinand cont de faptul ca angajatii au posibilitatea de a-si exprima opiniile legate de continutul cursurilor, utilizatorii „Sef-Departament” vor vizualiza rezultatele voturilor legate de cursurile pe care le administreaza.
participare la discutii
Pe langa faptul ca sunt responsabili de administrarea continutului unui curs, utilizatorii „Sef-Departament” vor avea ca sarcina sa raspunda la intrebarile venite din partea angajatilor. De asemenea, sefii de departament vor putea deschide subiecte noi legate de anumite aspecte ale continutului unui curs.
4.2.5 utilizatorul „Supervizor”
Cazul de utilizare general pentru utilizatorul „Supervizor”
Figura nr. 4.12
Utilizatorul „Supervizor”, reprezentat prin senior managerii din cadrul Credit Europe Bank, se logheaza in cadrul aplicatiei e-Learning prin intermediul unui cont special bazat pe username si parola.
Acest tip de utilizator va avea urmatoarele optiuni:
verificarea activitatii utilizatorului „Sef-Departament”
utilizatorul „Supervizor” va avea in subordine unul sau mai multe departamente descrise in figura nr. .Astfel, utilizatorul are posibilitatea sa verifice datele introduse in aplicatie de catre utilizatorul „Sef-Departament”: capitole, intrebari etc…
Supervizor are aceleasi optiuni ca si seful de departament cu mentiunea ca el controleaza unul sau mai multe departamente. In cazul in care informatiile introduse de catre utilizatorul „Sef Departament” sunt gresite, Supervizorul va avea posibilitatea sa le editeze.
definirea unui test
Utilizatorul „Supervizor” are posibilitatea definirii testelor ce urmeaza sa fie parcurse de catre angajati. Initial testele sunt inactive, fiind ulterior activate de catre utilizatorul „Administrator”.
Prin definirea unui test se intelege urmatoarele:
alegerea de „noduri frunza” (capitole, subcapitole etc…)
Figura nr. 4.13
Definirea de ponderi pentru fiecare „nod frunza”, suma tuturor ponderilor fiind 100%.
Stabilirea numarului total de intrebari ce va contine testul.
Stabilirea numarului de secunde per intrebare.
Specificarea faptului daca utilizatorii din cadrul departamentului de Resurse Umane au sau nu acces la rezultatele acestui test.
Intervalul de timp ales pentru test va fi doar o sugestie pentru programarea de catre „administrator” a testelor, deoarece exista posibilitatea ca in acelasi interval sa fie mai multe teste cerute pentru activare.
In momentul realizarii structurii unui test (prin structura ne referim la „nodurile frunza” alese), utilizatorul „Supervizor” va avea posibilitatea sa genereze un pdf cu totalitatea intrebarilor ACTIVE din categoriile ales pentru test.
Diagram de activitate:
Figura nr. 4.13
rularea de rapoarte
Utilizatorul „Supervizor” poate rula in cadrul aplicatiei „e-Learning” urmatoarele rapoarte:
lista teste – In cadrul acestui raport, utilizatorul are posibilitatea vizualizarii tuturor testelor efectuate de catre angajati precum si a detaliilor pentru fiecare test: nume angajat, denumire test, numar total intrebari, procentaj obtinut, data incepere test, durata. In cazul in care se doreste, lista poate fi filtrata dupa: interval de timp, username angajat si denumire test. Utilizatorul „Supervizor” poate exporta rezultatele filtrate intr-un fisier .csv. De asemenea pentru fiecare test efectuat de catre angajat, Supervizorul are posibilitatea generarii unui pdf detaliat cu intrebarile corespunzatoare testului in cauza. Pentru fiecare intrebare se prezinta raspunsul corect si raspunsul dat de catre angajat.
evolutie angajat – Utilizatorul „Supervizor” poate vizualiza pentru fiecare angajat evolutia activitatii (atat sub forma grafica cat si sub forma de raport generat in pdf).
Figura nr. 4.14
raport detaliat per test
Tabel nr 4.1
Semnificatie tabel:
pe prima linie se vor genera id-urile tuturor intrebarilor corespunzatoare categoriilor ce definesc testul in cauza (in cazul nostru avem intrebarile cu id-urile de la 1 la 8).
pe liniile urmatoare se vor genera raspunsurile oferite de catre angajatii care au completat testul (in cazul de fata avem un singur angajat care a efectuat testul) precum si a numarului de raspunsuri corecte si durata testului.
OBS. In cazul in care in cadrul unei intrebari nu avem nici un raspuns dat de catre angajat , se va complate X iar daca intrebarea nu a fost generata in testul respectiv atunci se lasa spatiu liber.
total intrebari – pentru fiecare intrebare se va calcula numarul aparitiilor in testele date de catre angajati.
total gresite – pentru fiecare intrebare se va calcula numarul de raspunsuri gresite.
raspuns A … E, fara raspuns – pentru fiecare intrebare se va calcula ponderea fiecarei variante de raspuns (de la A la E) precum si ponderea pentru intrebarile la care nu s-a dat nici un raspuns.
Rapoartele prezentate mai sus pot fi rulate doar pentru testele ce au fost definite de catre supervizorul respectiv, neexistand posibilitatea rularii rapoartelor pentru teste definite de catre alti supervizori.
4.2.6 utilizatorul „HR”
Utilizatorul HR reprezentat de catre angajati din cadrul departamentului de Resurse Umane are posibilitatea rularii in aplicatia e-Learning de rapoarte similare celor destinate utilizatorului „Supervizor”, cu mentiunea ca utilizatorul HR va rula rapoartele pentru testele care au bifata optiunea „Test prin HR”. Utilizatorul HR va avea acces la toate testele care au bifata aceasta optiune, indiferent de utilizatorul care a definit testul.
4.3 Proiectarea sistemului informatic
Diagrama de componente
Figura nr 4.15
Sistemul conceput are următoarele componente:
baza de date cu informațiile despre utilizatori, intrebari, teste si cursuri;
proceduri ce sunt responsabile cu validarea datelor;
formulare ce asigura înregistrarea intrebari,teste si cursuri noi, cat si formulare specifice partii de administrare a aplicatiei(inregistrarea de utilizatori noi, modificarea setarilor contului);
interfața prietenoasa cu utilizatorii, fie ca sunt angajati care efectueaza testele sau parcurg cursurile existente sau administratorii aplicatiei care seteaza continutul testelor sau a cursurilor;
generatoare de rapoarte.
Diagrama de desfasurare
Figura nr 4.16
4.4 Dezvoltari ulterioare
Exista numeroase imbunatatiri care pot fi aduse aplicatiei. Tinand cont de faptul ca aplicatia e-Learning prezentata mai sus contine doar doua componente folosite la managementul unui sistem de educatie la distanta:
componenta e-Testing (administrarea continutului intrebarilor, variantelor de raspuns, administrarea continutului unui test etc…);
componenta de management a continutului educational;
se pot dezvolta si alte componente cum ar fi:
Sisteme pentru managementul informațiilor (Management Information System – MIS).Acestea se referă la diferite activități efectuate de secretariat, bibliotecă și sistemul administrativ;
crearea unui mediu virtual interactiv, de exemplu o clasă de cursuri, în care participanții să se simtă cât mai aproape de una reală. În același timp, chiar anumite obiecte parte dintr-un curs tehnic de exemplu, pot fi vizualizate 3D.
Pe langa adaugarea de noi module, se pot aduce imbunatatiri celor existente:
implementarea unei facilitati pentru uploadarea continutului unui test sau a unui curs prin intermediul unui fisier XML.
Integrarea in cadrul aplicatiei a unui messenger online disponibil pentru cursanti.
Implementarea de noi rapoarte care sa evidentieze informatii precum: numarul si timpul utilizarii aplicatiei de catre cursanti, timpul parcurgerii unui curs etc…
CONCLUZII
Cresterea continua a volumului de informatii si utilizarea tehnologiilor moderne necesita acumularea si intelegerea unui numar tot mai mare de cunostinte si de informatii, de catre tot mai multi oameni. Tehnicile moderne de invatare, pentru a fi eficiente, trebuie sa aiba un anumit grad de interactivitate cu subiectul uman si sa transmita informatia pe mai multe canale (text, sunet si imagine) intr-o maniera asociata. Forma nu trebuie sa fie excesiv de variata, dar suficient de adaptata continutului, pentru a transmite ideile cât mai firesc.
Dezvoltarea exploziva a Internetului si a tehnologiilor Web a creat premisele unor oportunitati si unor noi provocari pentru relatiile dintre oameni. In aceasta noua economie digitala, exista pericolul ca o institutie sa constate ca nu poate face fata avalansei se informatii si ca propria retea Intranet a ajuns la un nivel de saturare, care nu ii mai poate asigura gestionarea eficienta a datelor. Pentru a ramâne in “business”, o astfel de organizatie nu trebuie decât sa implementeze un portal care sa ii permita optimizarea sigura si scalabila a accesului la informatie, precum si o administrare centralizata a tuturor serviciilor prin intermediul unui simplu Browser.
Intr-un studiu IDC (International Data Corporation), se estimeaza ca din ce in ce mai multe companii mari si de marime medie isi vor construi portaluri de corporatie. Astfel, aplicatiile e-Learning vor deveni mai viabile si mai utile.
Particularitățile specifice tehnologiilor de e-Learning aduc noi dimensiuni în educație și pot fi complementare sau alternative față de metodele tradiționale din domeniul educației. Aceste
particularități oferă posibilitatea organizării învățământului online pe subiecte sau teme, în timp ce învățământul tradițional este organizat pe grupe/clase de vârstă.
Procesul de predare-învățare-examinare capătă noi dimensiuni și caracteristici prin utilizarea tehnologiilor e-Learning. Sistemul de învățământ din țara noastră este în mod direct și
determinant implicat în fundamentarea și construirea societății informaționale. O societate informațională se naște într-un mediu în care marea majoritate a membrilor ei are acces la tehnologii IT&C și utilizează frecvent tehnologiile informaționale privind rezolvarea
unor probleme economice, sociale, etc.
Construirea unei societăți informaționale, ce va reprezenta trecerea la societatea cunoașterii, nu se poate realiza fără cercetare și proiecte de investiții, atât în domeniul IT&C, cât și în domeniul educației. Dezideratul final fiind competența, nici o tehnologie, nici o teorie, nici o abordare nu va elimina sau neglija relația profesor-elev/student. Toate vor fi instrumente comode și eficiente la îndemână, atât a profesorului, cât și a studentului.
BIBLIOGRAFIE
Welling, Luke Thomson, Laura, Dezvoltarea aplicațiilor Web cu PHP SI MySQL, ediția a II-a, Editura Teora, București, 2005;
Meloni, Julie C., PHP, MySQL si Apache, Editura Corint, București, 2005.
Darie, Cristian, PHP 5 si Mysql pentru comerț electronic, Editura Teora, București, 2006.
Sabau, Gheorghe Velicanu , Manole Lungu, Ion Muntean, Mihaela – Sisteme informatice. Analiza, proiectare si implementare, Editura Economica, București, 2003
LDAP – LDAP Functii – http://www.php.net/manual/ro/ref.ldap.php
ADODB – ADOdb Database Abstraction Library for PHP -http://adodb.sourceforge.net/
Wikipedia – Why PostgreSQL Instead of MySQL: Comparing Reliability and Speed in 2007 – http://wiki.postgresql.org/wiki/Why_PostgreSQL_Instead _of_MySQL:_Comp aring_Reliability_and_Speed_in_2007
Ajax – A library of DHTML and Ajax scripts – http://www.dhtmlgoodies.com/
www.php.net
www.postgresql.org
ANEXA 1 – CLASA ADODB
ADODB este o clasa PHP care asigură control asupra unei baze de date, dar fără a cere o anumită bază de date. Asta înseamnă că acelasi cod poate fi folosit pentru a accesa MySQL, Oracle si PostgreSQL. Cum funcționează? Abstractizare! Aceasta este capacitatea de a generaliza un sistem sau API, astfel încât detaliile să fie ascunse. Cei mai mulți dintre noi folosim abstractizări, fără să ne dăm seama. Chiar si programatorii în ‘C’, îsi fac viața mai usoară cu ajutorul abstractizărilor. Fiecare funcție, expresie si afirmație abstractizează anumite detalii hardware ale procesorului față de programator, prin intermediul limbajului ‘C’. Aceasta e o abstractizare de nivel inferior.
Programarea de baze de date cu SQL este o abstractizare de nivel superior. Baza de date (fie MySQL, PostgreSQL sau Oracle) poate funcționa în orice mod, poate să aibă orice algoritm si pote folosi orice fisiere doreste. Alegând un limbaj comun (SQL) pentru comunicare, nu mai trebuie să ne facem griji pentru anumite detalii specifice. În schimb, ne putem dedica timpul unor sarcini mai importante, cum ar fi crearea unor chestionare inner joins si select cât mai eficiente!
Această abstractizare nu se extinde la modul în care programăm baza de date, deoarece fiecare are propriul API. În PHP, puteți iniția un dialog cu o bază de date MySQL numită fredbloggs folosind,
$db = mysql_connect(“localhost“, “myuser”, “mypass”);
mysql_select_db(“fredbloggs”);
în timp ce PostgreSQL cere,
$db = pg_connect(“host=localhost dbname=fredbloggs user=myuser password=mypass”);
Desi cei mai mulți dintre acesti parametrii sunt opționali, transferarea de cod între baze de date este destul de dificilă, deoarece fiecare handler connect, select si error trebuie rescris pentru a corespunde bazei de date. Și asta de fiecare dată când sunt folosite. Nu doar o modificare a numelui funcției, ci si a structurii si a formatului argumentelor. La fel ca si codurile de eroare. Soluția este abstractizarea funcției specifice database_connect dintr-o anumită bază de date si folosirea unui apel API comun.
Exemplu conectare la baza de date de tip PostgreSQL
<?php
include('adodb/adodb.inc.php');
$db_host="localhost";
$db_user="postgres";
$db_pass="postgres";
$db_name="e-testing";
$db_type="postgres";
$db = ADONewConnection($db_type);
$db->debug = false;
$db->Connect($db_host, $db_user, $db_pass, $db_name);
?>
ANEXA 2 – CLASA adLDAP
<?php
class adLDAP{
var $_account_suffix="@int.finansbank.ro";
var $_base_dn = "DC=int,DC=finansbank,DC=ro";
var $_domain_controllers = array ("buc-ho-dc.int.finansbank.ro");
var $_ad_username=NULL;
var $_ad_password=NULL;
var $_user_dn;
var $_user_pass;
var $_conn;
var $_bind;
// default constructor
function adLDAP(){
//conectarea la serverul LDAP
$this->_conn = ldap_connect($this->random_controller());
ldap_set_option($this->_conn, LDAP_OPT_PROTOCOL_VERSION, 3);
return true;
}
function random_controller(){
mt_srand(doubleval(microtime()) * 100000000);
$rand=mt_rand(1,count($this->_domain_controllers));
$rand–;
return $this->_domain_controllers[$rand];
}
function authenticate($username,$password){
$returnval=false;
if ($username!=NULL and $password!=NULL){ //prevent null bind
$this->_user_dn=$username.$this->_account_suffix;
$this->_user_pass=$password;
$this->_bind = @ldap_bind($this->_conn,$this->_user_dn,$this->_user_pass);
if ($this->_bind){ $returnval=true; }
}
return $returnval;
}
function rebind(){
$ad_dn=$this->_ad_username.$this->_account_suffix;
$this->_bind = @ldap_bind($this->_conn,$ad_dn,$this->_ad_password);
if ($this->_bind){
return true;
} else {
return false;
}
}
function user_info($user,$fields){
if ($user!=NULL){
if ($this->_ad_username!=NULL){ $this->rebind(); }
if ($this->_bind){
$filter="samaccountname=".$user;
if ($fields==NULL){ $fields=array("samaccountname","mail","memberof","department","displayname","telephonenumber"); }
ldap_set_option($this->_conn, LDAP_OPT_REFERRALS, 0);
$sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
$entries = ldap_get_entries($this->_conn, $sr);
return $entries;
}
}
return false;
}
function user_groups($user){
if ($this->_ad_username!=NULL){ $this->rebind(); }
if ($this->_bind){
$info=@$this->user_info($user,array("memberof"));
$groups=$info[0][memberof];
$group_array=array();
for ($i=0; $i<$groups["count"]; $i++){
$line=$groups[$i];
$group_name="";
$line_length=strlen($line);
for ($j=3; $j<$line_length; $j++){
if ($line[$j]==","){
$j=$line_length;
} else {
$group_name.=$line[$j];
}
}
$group_array[$i]=$group_name;
}
return $group_array;
} else {
return false;
}
}
function user_ingroup($user,$group){
if (($user!=NULL) && ($group!=NULL)){
if ($this->_ad_username!=NULL){ $this->rebind(); }
if ($this->_bind){
$groups=$this->user_groups($user,array("memberof"));
if (in_array($group,$groups)){ return true; }
}
}
return false;
}
}
?>
Exemplu:
include ("lib/class/adLDAP.php");
//se creeaza o conexiune LDAP
$adldap = new adLDAP();
//autentificare utilizator
if ($adldap -> authenticate($user,stripslashes($password)))
{
$HTTP_SESSION_VARS['username'] = true;
session_register('username');
$_SESSION['username'] = $user;
$HTTP_SESSION_VARS['password'] = true;
session_register('password');
$_SESSION['password'] = md5($password);
$HTTP_SESSION_VARS['timplogin'] = true;
session_register('timplogin');
$_SESSION['timplogin'] = time();
$HTTP_SESSION_VARS['nivel'] = true;
session_register('nivel');
$_SESSION['nivel'] = 4;
header("Location:utilizatori/index.php");
}
else
{
$eroare_login="<font color=red>Parola este gresita</font><br>";
}
ANEXA 3 – EXTENSII FPDF
CLASA Sector
Descriere
Acest script PHP permite desenarea unui sector de cerc. De asemenea poate fi folosit pentru generarea de grafice de tip “pie”.
function Sector(float xc, float yc, float r, float a, float b [, string style [, boolean cw [, float o]]])
xc: abscisa centrului.
yc: coordonata centrului.
r: raza.
a: unghi initial (in grade).
b: unghi final (in grade).
style: D, F, FD or DF (draw, fill, fill and draw). Default: FD.
cw: indica daca se foloseste sensul acelor de ceas (default: true).
<?php
require('fpdf.php');
class PDF_Sector extends FPDF
{
function Sector($xc, $yc, $r, $a, $b, $style='FD', $cw=true, $o=90)
{
if($cw){
$d = $b;
$b = $o – $a;
$a = $o – $d;
}else{
$b += $o;
$a += $o;
}
$a = ($a%360)+360;
$b = ($b%360)+360;
if ($a > $b)
$b +=360;
$b = $b/360*2*M_PI;
$a = $a/360*2*M_PI;
$d = $b-$a;
if ($d == 0 )
$d =2*M_PI;
$k = $this->k;
$hp = $this->h;
if($style=='F')
$op='f';
elseif($style=='FD' or $style=='DF')
$op='b';
else
$op='s';
if (sin($d/2))
$MyArc = 4/3*(1-cos($d/2))/sin($d/2)*$r;
//first put the center
$this->_out(sprintf('%.2f %.2f m',($xc)*$k,($hp-$yc)*$k));
//put the first point
$this->_out(sprintf('%.2f %.2f l',($xc+$r*cos($a))*$k,(($hp-($yc-$r*sin($a)))*$k)));
//draw the arc
if ($d < M_PI/2){
$this->_Arc($xc+$r*cos($a)+$MyArc*cos(M_PI/2+$a),
$yc-$r*sin($a)-$MyArc*sin(M_PI/2+$a),
$xc+$r*cos($b)+$MyArc*cos($b-M_PI/2),
$yc-$r*sin($b)-$MyArc*sin($b-M_PI/2),
$xc+$r*cos($b),
$yc-$r*sin($b)
);
}else{
$b = $a + $d/4;
$MyArc = 4/3*(1-cos($d/8))/sin($d/8)*$r;
$this->_Arc($xc+$r*cos($a)+$MyArc*cos(M_PI/2+$a),
$yc-$r*sin($a)-$MyArc*sin(M_PI/2+$a),
$xc+$r*cos($b)+$MyArc*cos($b-M_PI/2),
$yc-$r*sin($b)-$MyArc*sin($b-M_PI/2),
$xc+$r*cos($b),
$yc-$r*sin($b)
);
$a = $b;
$b = $a + $d/4;
$this->_Arc($xc+$r*cos($a)+$MyArc*cos(M_PI/2+$a),
$yc-$r*sin($a)-$MyArc*sin(M_PI/2+$a),
$xc+$r*cos($b)+$MyArc*cos($b-M_PI/2),
$yc-$r*sin($b)-$MyArc*sin($b-M_PI/2),
$xc+$r*cos($b),
$yc-$r*sin($b)
);
$a = $b;
$b = $a + $d/4;
$this->_Arc($xc+$r*cos($a)+$MyArc*cos(M_PI/2+$a),
$yc-$r*sin($a)-$MyArc*sin(M_PI/2+$a),
$xc+$r*cos($b)+$MyArc*cos($b-M_PI/2),
$yc-$r*sin($b)-$MyArc*sin($b-M_PI/2),
$xc+$r*cos($b),
$yc-$r*sin($b)
);
$a = $b;
$b = $a + $d/4;
$this->_Arc($xc+$r*cos($a)+$MyArc*cos(M_PI/2+$a),
$yc-$r*sin($a)-$MyArc*sin(M_PI/2+$a),
$xc+$r*cos($b)+$MyArc*cos($b-M_PI/2),
$yc-$r*sin($b)-$MyArc*sin($b-M_PI/2),
$xc+$r*cos($b),
$yc-$r*sin($b)
);
}
//terminate drawing
$this->_out($op);
}
function _Arc($x1, $y1, $x2, $y2, $x3, $y3 )
{
$h = $this->h;
$this->_out(sprintf('%.2f %.2f %.2f %.2f %.2f %.2f c',
$x1*$this->k,
($h-$y1)*$this->k,
$x2*$this->k,
($h-$y2)*$this->k,
$x3*$this->k,
($h-$y3)*$this->k));
}
}
?>
CLASA Diagrams
Descriere
Acest script permite generarea graficelor de tip “pie” si a diagramelor. Necesita clasa prezentata mai sus.
PieChart(float w, float h, array data, string format [, array colors])
w: latimea maxima a diagramei.
h: inaltimea maxima a diagramei.
data: vector asociativ care contine etichetele si datele corespunzatoare.
format: folosit pentru legenda. Sir de caractere care poate contine urmatoarele valori: %l (eticheta), %v (valoare) and %p (procent).
colors: vector ce contine culorile.
BarDiag(float w, float h, array data, string format [, array colors [, int maxVal [, int nbDiv]]])
w: latimea diagramei.
h: inaltimea diagramei.
data: vector asociativ care contine etichetele si datele corespunzatoare.
format: folosit pentru legenda. Sir de caractere care poate contine urmatoarele valori: %l (eticheta), %v (valoare) and %p (procent).
color: vector ce contine culorile.
maxVal: valoarea maxima a scalei.
nbDiv: numar de subdiviziuni pentru scala.(default:4).
<?php
require('sector.php');
class PDF_Diag extends PDF_Sector {
var $legends;
var $wLegend;
var $sum;
var $NbVal;
function PieChart($w, $h, $data, $format, $colors=null)
{
$this->SetFont('Courier', '', 10);
$this->SetLegends($data, $format);
$XPage = $this->GetX();
$YPage = $this->GetY();
$margin = 2;
$hLegend = 5;
$radius = min($w – $margin * 4 – $hLegend – $this->wLegend, $h – $margin * 2);
$radius = floor($radius / 2);
$XDiag = $XPage + $margin + $radius;
$YDiag = $YPage + $margin + $radius;
if($colors == null) {
for($i = 0;$i < $this->NbVal; $i++) {
$gray = $i * intval(255 / $this->NbVal);
$colors[$i] = array($gray, $gray, $gray);
}
}
//Sectors
$this->SetLineWidth(0.2);
$angleStart = 0;
$angleEnd = 0;
$i = 0;
foreach($data as $val) {
$angle = floor(($val * 360) / doubleval($this->sum));
if ($angle != 0) {
$angleEnd = $angleStart + $angle;
$this->SetFillColor($colors[$i][0], $colors[$i][1], $colors[$i][2]);
$this->Sector($XDiag, $YDiag, $radius, $angleStart, $angleEnd);
$angleStart += $angle;
}
$i++;
}
if ($angleEnd != 360) {
$this->Sector($XDiag, $YDiag, $radius, $angleStart – $angle, 360);
}
//Legends
$this->SetFont('Courier', '', 10);
$x1 = $XPage + 2 * $radius + 4 * $margin;
$x2 = $x1 + $hLegend + $margin;
$y1 = $YDiag – $radius + (2 * $radius – $this->NbVal*($hLegend + $margin)) / 2;
for($i=0; $i<$this->NbVal; $i++) {
$this->SetFillColor($colors[$i][0], $colors[$i][1], $colors[$i][2]);
$this->Rect($x1, $y1, $hLegend, $hLegend, 'DF');
$this->SetXY($x2, $y1);
$this->Cell(0, $hLegend, $this->legends[$i]);
$y1+=$hLegend + $margin;
}
}
function BarDiagram($w, $h, $data, $format, $color=null, $maxVal=0, $nbDiv=4)
{
$this->SetFont('Courier', '', 10);
$this->SetLegends($data, $format);
$XPage = $this->GetX();
$YPage = $this->GetY();
$margin = 2;
$YDiag = $YPage + $margin;
$hDiag = floor($h – $margin * 2);
$XDiag = $XPage + $margin * 2 + $this->wLegend;
$lDiag = floor($w – $margin * 3 – $this->wLegend);
if($color == null)
$color=array(155, 155, 155);
if ($maxVal == 0) {
$maxVal = max($data);
}
$valIndRepere = ceil($maxVal / $nbDiv);
$maxVal = $valIndRepere * $nbDiv;
$lRepere = floor($lDiag / $nbDiv);
$lDiag = $lRepere * $nbDiv;
$unit = $lDiag / $maxVal;
$hBar = floor($hDiag / ($this->NbVal + 1));
$hDiag = $hBar * ($this->NbVal + 1);
$eBaton = floor($hBar * 80 / 100);
$this->SetLineWidth(0.2);
$this->Rect($XDiag, $YDiag, $lDiag, $hDiag);
$this->SetFont('Courier', '', 10);
$this->SetFillColor($color[0], $color[1], $color[2]);
$i=0;
foreach($data as $val) {
//Bar
$xval = $XDiag;
$lval = (int)($val * $unit);
$yval = $YDiag + ($i + 1) * $hBar – $eBaton / 2;
$hval = $eBaton;
$this->Rect($xval, $yval, $lval, $hval, 'DF');
//Legend
$this->SetXY(0, $yval);
$this->Cell($xval – $margin, $hval, $this->legends[$i], 0, 0, 'R');
$i++;
}
//Scales
for ($i = 0; $i <= $nbDiv; $i++) {
$xpos = $XDiag + $lRepere * $i;
$this->Line($xpos, $YDiag, $xpos, $YDiag + $hDiag);
$val = $i * $valIndRepere;
$xpos = $XDiag + $lRepere * $i – $this->GetStringWidth($val) / 2;
$ypos = $YDiag + $hDiag – $margin;
$this->Text($xpos, $ypos, $val);
}
}
function SetLegends($data, $format)
{
$this->legends=array();
$this->wLegend=0;
$this->sum=array_sum($data);
$this->NbVal=count($data);
foreach($data as $l=>$val)
{
$p=sprintf('%.2f', $val/$this->sum*100).'%';
$legend=str_replace(array('%l', '%v', '%p'), array($l, $val, $p), $format);
$this->legends[]=$legend;
$this->wLegend=max($this->GetStringWidth($legend), $this->wLegend);
}
}
}
?>
ANEXA 4 – INSTALAREA SI CONFIGURAREA APLICATIEI
Pentru utilizarea aplicatiei e-Learning, va trebui configurat pe un server (sistem de operare windows):
Apache versiunea 2.0.59
PHP versiunea 5.2.0
PostgreSQL versiunea 8.1
Dupa instalarea celor trei soft-uri de mai sus va rugam sa urmati urmatorii pasi:
1. Editarea fisierului php.ini
register_globals = Off (in cazul in care default este On va trebui setat pe Off)
short_open_tag = On
extension=php_ldap.dll
extension=php_pgsql.dll (in cazul in care aceaste linii sunt comentate, va trebui decomentate)
Dupa editarea fisierului php.ini, serverul apache trebuie restartat.
2. Crearea bazei de date:
Pentru a crea baza de date necesara aplicatiei E-Learning va trebui rulate urmatoarele comenzi din linia de comanda:
create database database_name;
psql –U postgres –f file_path database_name;
Vezi exemplu:
create database e-learning;
psql –U postgres –f c:/e-learning.sql e-learning;
3. Copierea folderului e-learning in directorul de lucru (exemplu:c:/www)
4. Editarea fisierului e-learning/lib/inc/config.inc.php
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: Dezvoltarea Unei Platforme E Learning (ID: 149331)
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.
