Se afișează postările cu eticheta tema. Afișați toate postările
Se afișează postările cu eticheta tema. Afișați toate postările

marți, 2 decembrie 2008

A aparut enuntul temei 3

Pentru cei interesati a aparut enuntul temei 3 la http://interfeteweb.pluto.ro/tema3.html. Detalii despre rezolvare vor aprea in curand.

The Concurrent Task Tree Environment (CTTE) - probleme

Tema 2 la IE (http://interfeteweb.pluto.ro/tema2.html) se referă la proiectarea interfeţei utilizatorului uman cu siteul blogger.com utilizând CTTE. CTTE (The Concurrent Task Tree Environment) este o unealtă care permite editarea şi simularea modelelor orientate pe sarcini, făcând astfel posibilă descrierea interfeţei cu utilizatorul înainte ca aplicaţia propriu-zisă să fie gata.
Interfaţa cu utilizatorul are o structură sub formă de arbore. Elementele arborelui sunt sarcinile, care sunt legate între ele prin diverse relaţii.
CTTE se găseşte la adresa http://giove.cnuce.cnr.it/ctte.html. Pentru a putea folosi ultima versiune, este nevoie de Java 1.5, iar calea către fişierul java.exe trebuie adaugată în PATH. Pentru rulare se foloseşte ctte.bat.
Nu voi descrie aici modul de folosire, deoarece acesta se găseşte pe site-ul produsului, ci voi semnala problemele întâlnite şi voi da anumite sfaturi pentru a lucra ma uşor cu acest program.
Uneori funcţia de salvare nu funcţionează corespunzător, astfel că la deschidera unui fişier salvat anterior ultimele noduri adăugate lipsesc. Pentru a evita astfel de surprize Putem încerca să salvăm cât mai des. La adăugarea unor noi noduri în arbore nodurile anterior adăugate iau nişte poziţii contorsionate. Acest neajuns se poate corecta într-o anumită măsură apăsând butonul "Justify Tree" sau manual dacă suntem mai pretenţioşi. Pentru a muta/copia un subarbore trebuie să selectăm "Cut/Move SubTree". Dacă selectăm "Cut/Copy Selection", la lipire toate nodurile din subarborele respectiv va fi transformate în fraţi. Dacă vrem să mutăm o sarcină trebuie să facem acest lucru foarte încet, altfel o vom pierde pe drum. Uneori când vrem să simulăm un model, programul va da nişte erori, în condiţiile în care verificarea modelului nu dă nicio eroare. Soluţia este închiderea CTTE şi repornirea lui. O alta problema e cand arborele nu mai arata a arbore :) si nodurile incep sa dispara unul dupa altul.
Cu siguranţă ideea acestui program este foarte bună şi cu puţină răbdare putem trece peste aceste probleme de implementare, care sperăm că vor fi corectate la versiunile următoare.

Stan Alexandru

Tema 2

Tema 2, dupa cum putei afla pe http://interfeteweb.pluto.ro/tema2.html, se refera la descrierea interactiunilor dintre un utilizator si interfata siteului www.blogger.com din punctele de vedere al utilizatorului (cititorul de blog) si al administratorului unui blog.
Pentru fiecare din acestia s-au descris niste scenarii pentru urmatoarele activitati:
- utilizator : vizualizare post,adaugare comentariu, vizualizare lista de posturi, vizualizare categorii
- administrator : adaugare post, adaugare link in blogroll, editare link

Voi lua pe rand fiecare scenariu enumerand pasii necesari pentru completarea acestuia. Intr-un post ulterior se va prezenta semnificatia CTTE si “mediul de lucru” in care a fost rezolvata tema subliniind unele din “facilitatile” acestuia.

Utilizator
Toate actiunile utilizatorilor au loc in pagina de start a unui blog.
- vizualizare lista post : pentru aceasta actiune am presupus (pentru ca enuntul nu este foarte clar in a preciza mai exact ce inseamna sa vizualizezi posturile) ca utilizatorul vrea sa vada posturile dintr-o anumita luna a unui an. Pasii sunt urmatorii: userul selecteaza un an din arhiva de bloguri -> se afiseaza lunile din anul respectiv care au posturi -> userul selecteaza o luna din lista -> sunt afisate posturile.
- vizualizare categorii : aici am presupus ca se folosesc tagurile din posturi. Pasul : userul da clik pe un tag ce reprezinta o categorie -> se afiseaza posturile din acea categorie.
- vizualizare post : userul poate incepe fie prin pasii precedenti fie direct din pagina de start a blogului. Pasul : userul da clik pe un post -> se afiseaza postul.
- adaugare comentariu : se pleaca de la un post deja afisat. Pasii : se da click pe trimtere comentariu -> se introduce comentariul -> se introduce codul de verificare -> se stabileste identitatea intre doua tipuri (BloggerID -> se introduc user si parola; OpenID -> alegere tip id -> alegere nume)

Administrator
Toate actiunile au loc din pagina de administrare in urma logarii administratorului.
- adaugare post : se alege postare noua -> editare postare -> introducere titlu -> publicare
- adaugare link in blogroll : se alege optiunea aspect din pagina de administrare -> alegere editare blogroll -> alege adauga -> introducere URL -> click pe adauga -> click pe salvare
- editare link : aici am presupus ca se editeaza un link din blogroll. Pasii : se alege optiunea aspect din pagina de administrare -> alegere editare blogroll -> alege redenumire -> modificare nume -> click pe salvare redenumire -> click pe salvare.

joi, 13 noiembrie 2008

Tema 1 - Take 4

Pentru a realiza prima temă la IE, am ales reţeaua youtube şi limbajul de programare Java. Am folosit API-ul pus la dispoziţie de Google.
Pornind de la un id de utilizator am fomat doi arbori având ca rădăcină acel utilizator: arborele de prieteni şi arborele de comentatori. Pentru a obţine prietenii unui utilizator se trimite o cerere HTTP la http://gdata.youtube.com/feeds/api/users/utilizator/contacts, de unde se primeşte un fişier XML, pe care l-am parsat.
Pentru a obţine comentatorii unui utilizator, se obţin mai întâi fişierele video ale lui printr-o cerere la http://gdata.youtube.com/feeds/api/users/utilizator/uploads, apoi pentru fiecare fişier video se obţin comentariile printr-o cerere la http://gdata.youtube.com/feeds/api/videos/video/comments. Din fişierul XML primit am extras comentatorii.
Reţeaua youtube formează un graf şi pentru a evita ciclurile am făcut câte un vector în care reţin prietenii şi comentatorii. Înainte de a adăuga un prieten sau comentator verific dacă este deja în vector.

Alexandru Stan

marți, 4 noiembrie 2008

Tema 1 - Take 2

Pentru această temă am ales reţeaua socială hi5 (http://www.hi5.com) şi limbajul C#. Pornind de la un profil existent pe hi5 a trebuit să realizez o ierarhie a prietenilor cu rădăcina în profilul respectiv (pentru mai multe detalii vizitaţi pagina http://interfeteweb.pluto.ro unde se află şi enunţul temei). De la început am avut de optat între două variante: să parsez în HTML sau să folosesc un API existent pentru hi5. Evident, am ales varianta a doua. O problemă cu acest API este că se află încă în stadiu BETA şi astfel documentaţia este destul de săracă şi de multe ori incompletă (API-ul folosit se găseşte la adresa http://api.hi5.com).
La adresa de mai sus se găsesc şi descrieri WSDL pentru nişte servicii web ce ar putea fi folosite pentru a extrage informaţii din hi5. Totuşi, am ales să folosesc modelul REST deoarece oferă o metodă foarte simplă de a afla prietenii unui utilizator hi5 cunoscând numai id-ul acestuia. Metoda folosită este descrisă destul de sumar aici. Astfel, dacă luăm un id pentru un utilizator şi extragem răspunsul de la cererea făcută la adresa: http://api.hi5.com/rest/profile/foaf/[id] (evident [id] se inlocuieşte cu un id valid) obţinem un XML. FOAF reprezintă Friend Of A Friend. Răspunsul la o cerere ca cea de mai sus este un XML ce respectă protocolul FOAF. (http://www.foaf-project.org/). Un exemplu de răspuns XML este următorul:

<rdf:RDF>
<foaf:Person rdf:nodeId="me">
<foaf:nick>xxxxx</foaf:nick>
<foaf:givenName>xxxxxx</foaf:givenName>
<foaf:surName>XXXX</foaf:surName>
<foaf:mboxSha1Sum>a71850698cf0d7cfac95742de871c58817d45341</foaf:mboxSha1Sum>
<foaf:img rdf:resource="http://photos2.hi5.com/......"/>
<foaf:weblog rdf:resource="http://www.hi5.com/profile/displayJournal.do?userid=[id]"/>
<foaf:gender>female</foaf:gender>
<lang:masters>ro</lang:masters>
<foaf:homePage rdf:resource="http://www.hi5.com/friend/profile/displayProfile.do?userid=[id]"/>
<foaf:knows>
<foaf:Person>
<foaf:nick>XXXXX</foaf:nick>
<rdfs:seeAlso rdf:resource="http://api.hi5.com/rest/profile/foaf/[idnick1]"/>
</foaf:Person>
</foaf:knows>
<foaf:knows>
<foaf:Person>
<foaf:nick></foaf:nick>
<rdfs:seeAlso rdf:resource="http://api.hi5.com/rest/profile/foaf/[idnick2]"/>
</foaf:Person>
</foaf:knows>
Se poate observa din XML-ul de mai sus că se pot extrage informaţii despre utilizatorul pentru care s-a efectuat cererea (nick, nume, prenume, poză, pagina profilului, etc.). Printre informaţiile importante se regăsesc şi prietenii acestui utilizator (nickul lor şi adresa pentru FOAF-ul lor). Din FOAF-ul prietenului putem să extragem usor id-ul acestuia. Dacă avem nevoie de pagina cu profilul unui utilizator se observă că poate fi obţinută ştiind id-ul acestuia: http://www.hi5.com/friend/profile/displayProfile.do?userid=[id].
Având REST-ul şi FOAF-ul la îndemână putem să construim o ierarhie plecând de la id-ul unui utilizator. Ierarhia care ne interesează în mod sepecial are forma unui arbore, în rădăcină aflându-se userul de la care se porneşte. Însă ierarhia unei reţele sociale de genul hi5 este în mod normal un graf ale cărui legături se pot afla prin intermediul cererii REST descrise mai sus. Pentru a obţine un arbore o parcurgere DFS sau BFS ar fi necesară. Eu am folosit o parcurgere DFS oprindu-mă la nivelul maxim până la care se face căutarea (nivel dat într-un fişier de configurare). Pentru astfel de parcurgeri, în general trebuie ţinută evidenţa nodurilor prin care s-a trecut pentru evitarea ciclurilor. Pentru simplitate am folosit o listă în care am introdus id-urile pentru nodurile prin care am trecut, însă pentru o adâncime mare a arborelui este foarte posibil să apară mulţi utilizatori hi5 cu mii de prieteni care la rândul lor au mii de prieteni şi pot exista probleme legate de utilizarea memoriei.

Florian Popa

Tema 1 - Take 0

S-a publicat (şi realizat :P) tema 1 la IE. După cum am promis vom publica rezolvările tuturor membrilor echipei (după ce va expira deadline-ul, bineînţeles :P) pe site-ul http://interfeteweb.pluto.ro la pagina Teme. Tot acolo se găseşte şi cerinţa acestei teme. Totuşi, până atunci ne-am gâdit că ar fi bine ca fiecare să vorbească despre modul în care a rezolvat tema, ce probleme a întâmpinat (dacă a întâmpinat :)) şi eventual anumite hint-uri. În cazul acestei teme vom vorbi în primul rând de API-ul folosit şi de modul în care a fost utilizat.
 
SEO Romania