marți, 4 noiembrie 2008

Tema 1 - Take 1

Tema mea la IE ... Am ales să fac tema în Java deoarece este unul dintre limbajele mele preferate şi în plus mai lucrasem cu fişiere XML în Java şi astfel mi-a fost mai uşor să realizez tema. Comunitatea pe care am ales-o este Flickr, deoarece dispune de un API destul de bun. Prima problemă pe care am întâmpinat-o a fost prezenţa unui parametru obligatoriu în invocarea oricarui serviciu din API, api_key, pentru care părea că trebuie făcuta o cerere de obţinere. Am încercat un workaround prin introducerea unui api_key preluat din url-ul folosit pentru invocarea serviciului din browser. Din păcate s-a dovedit că această cheie este valabilă doar o zi, motiv pentru care m-am văzut nevoit să fac o cerere de api_key la http://www.flickr.com/services/api/misc.api_keys.html . Această cheie vine imediat (în cazul în care alegeţi non comercial use) şi funcţionează perfect. Din acest motiv în versiunea de program ce va fi introdusă pe site NU se va afla un api_key iar cei care vor dori să ruleze aplicaţia vor fi nevoiţi să obţină un api_key pe care să îl introducă în membrul api_key. Tot din acest motiv nu am furnizat un fişier executabil pentru aplicaţie. Astfel, după ce se introduce api_key se va putea compila uşor aplicaţia folosind comanda "javac MainClass.java" şi apoi rula cu comanda "java MainClass" (tema va veni şi cu un script ant pentru cei ce vor dori să apeleze la această metodă de build&run).
O altă problemă apărută constă în apariţia legăturilor circulare. Cel mai simplu astfel de exemplu este (X are prieten pe Y, dar şi Y îl are prieten pe X). Practic, în acest caz se va afişa în lista de prieteni ai lui X pe nivel 2 şi X. Sau se poate ajunge ca o persoană să fie prieten al unei alte persoane pe mai multe niveluri. Practic legăturile între persoane formează un graf, iar în cazul nostru ar trebui să avem un arbore pe care să îl parcurgem în adâncime până la un anumit nivel.
O soluţie este salvarea tuturor persoanelor afişate până la un anumit moment într-o listă, iar în momentul în care se ajunge la o nouă persoană să se verifice dacă aceasta apare deja în listă. Această soluţie nu este fezabilă deoarece pentru un număr foarte mare de persoane (în general în comunităţile gen hi5, flickr fiecare user are multe contacte şi începând de la un anumit nivel de parcurgere numărul profilelor devine enorm) este posibil să se depăşească capacitatea totală a listei.
În rest aplicaţia foloseşte metodele "getPublicList" şi "getInfo" din API-ul Flickr pentru a obţine lista de prieteni ai unui utilizator şi respectiv url-ul către profilul unui utilizator. Aceste metode întorc un XML care poate fi parsat relativ uşor.

Liviu Matei

Niciun comentariu:

 
SEO Romania