<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9163700607215290453</id><updated>2011-10-31T10:29:14.219-07:00</updated><category term='foaf'/><category term='ctte'/><category term='blogroll'/><category term='interfeteweb'/><category term='innerHTML'/><category term='calculatoare'/><category term='java'/><category term='dfs'/><category term='automatica'/><category term='document'/><category term='XMLHttpRequest'/><category term='administrator'/><category term='AJAX'/><category term='interactivitate'/><category term='XML'/><category term='wsdl'/><category term='probleme'/><category term='API'/><category term='RIA'/><category term='hi5'/><category term='user'/><category term='rest'/><category term='parsare'/><category term='interfete'/><category term='tema'/><category term='interfete evoluate'/><category term='blogger'/><category term='api_key'/><category term='concurs'/><category term='tema 3'/><category term='utilizare'/><category term='YOUTUBE'/><category term='web 2.0'/><category term='flickr'/><category term='evoluate'/><category term='bfs'/><category term='twitter'/><category term='html'/><category term='teme'/><category term='piatra'/><category term='IE'/><category term='JavaScript'/><category term='Mircea Badea'/><category term='UPB'/><category term='google'/><title type='text'>Interfete Web</title><subtitle type='html'>Acest blog conţine informaţii despre diverse tehnologii web şi nu numai</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-4304268767550013112</id><published>2009-01-13T11:05:00.001-08:00</published><updated>2009-01-13T11:10:53.265-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interfete evoluate'/><category scheme='http://www.blogger.com/atom/ns#' term='Mircea Badea'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Proiect IE last shot</title><content type='html'>&lt;div style="text-align: justify;"&gt;Maine va fi prezentarea proiectului la IE. Practic se va evalua acest blog si site-ul &lt;a href="http://interfeteweb.pluto.ro/"&gt;http://interfeteweb.pluto.ro/&lt;/a&gt; realizat de echipa noastra. A fost o experienta interesanta si utila. Per total cred ca am reusit sa realizam o treaba destul de buna, desi suntem putin dezamagiti de pozitia in google. Totusi trebuie sa mentionez ca spre deosebire de alte echipe nu am recurs la tertipuri ieftine pentru a atrage trafic. Tot continutul este legat de materia interfete evoluate, avem temele realizate de noi la aceasta materie si indicatii pentru realizarea temelor, care ajuta pe oricine studiaza aceasta materie. Nu imi place sa ma refer la altii dar nu pot sa nu constat cum niste colegi se lauda cu "performantele" lor deosebite dar au pe blog articole despre Mircea Badea si afise electorale ... nici nu vreau sa ma gandesc ce urmeaza ... cred ca presupunem cu toti. Vreau doar sa inchei cu acest subiect prin a mentiona faptul ca un astfel de comportament mi se pare neacademic si nu ar trebui urmat. O sa inchei acest ultim post al meu pe acest blog prin a mentiona inca o data ca acest proiect a fost foarte util si desi nu am am un blog dupa aceasta experienta ma gandesc serios sa imi fac unul.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-4304268767550013112?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/4304268767550013112/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=4304268767550013112' title='1 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/4304268767550013112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/4304268767550013112'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2009/01/proiect-ie-last-shot.html' title='Proiect IE last shot'/><author><name>Liviu</name><uri>http://www.blogger.com/profile/06907247892920518759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-6566826921602527220</id><published>2009-01-13T10:11:00.000-08:00</published><updated>2009-01-13T11:12:02.025-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='tema 3'/><category scheme='http://www.blogger.com/atom/ns#' term='XMLHttpRequest'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Tema 3</title><content type='html'>&lt;div style="text-align: justify;"&gt;Dupa cum probabil ati aflat &lt;a href="http://interfeteweb.pluto.ro/tema3.html"&gt;tema 3&lt;/a&gt; a aparut de ceva vreme si in acest timp a fost rezolvata si notata. Mai departe voi descrie modalitatea mea de rezolvare, care mi s-a parut una dintre cele mai simple abordari (si care foloseste si AJAX pentru obtinerea bonusului de 10% :) ). Voi incepe prin a rezuma &lt;a href="http://interfeteweb.pluto.ro/tema3.html"&gt;enuntul&lt;/a&gt; temei: se cere scrierea unui script (JavaScript) care sa permita cautarea si evidentierea potrivirilor pe un site (pentru bonus se cerea si folosirea AJAX).&lt;br /&gt;Pentru usurinta implementarii si evitarea altor probleme site-ul pe care se facea cautarea se presupene a fi pe acelasi server cu scriptul. Dupa cum am spus am ales sa folosesc AJAX pentru o comportare interactiva a scriptului de cautare (si in varianta cu un iframe, fara a folosi AJAX se poate obtine aceeasi interactivitate). Pagina principala de pe care se face cautarea este una foarte simpla ce contine doua textboxuri si un buton. In primul textbox se introduce pagina in care se face cautarea. La pierderea focusului de catre aceste prin intermediul AJAX se incarca pagina ceruta in div-ul de la sfarsitul html-ului. In al doilea textbox se dau cuvintele de cautat iar dupa apasasrea butonului de search scriptul intra din nou in actiune cautand aparitiile cuvintelor. Pagina este data in continuare (se pot observa id-urile date fiecarei zone necesare pentru script):&lt;br /&gt;&lt;/div&gt;&lt;pre id="line1"&gt;&amp;lt;&lt;span class="start-tag"&gt;html&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;span class="start-tag"&gt;head&lt;/span&gt;&amp;gt;&lt;br /&gt; &amp;lt;&lt;span class="start-tag"&gt;title&lt;/span&gt;&gt;Search&amp;lt;/&lt;span class="end-tag"&gt;title&lt;/span&gt;&amp;gt;&lt;br /&gt; &amp;lt;&lt;span class="start-tag"&gt;script&lt;/span&gt;&lt;span class="attribute-name"&gt; src&lt;/span&gt;=&lt;span class="attribute-value"&gt;"search.js"&lt;/span&gt;&amp;gt;&lt;br /&gt; &amp;lt;/&lt;span class="end-tag"&gt;script&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;span class="end-tag"&gt;head&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;span class="start-tag"&gt;body&lt;/span&gt;&amp;gt;&lt;br /&gt; &amp;lt;&lt;span class="start-tag"&gt;form&lt;/span&gt;&lt;span class="attribute-name"&gt; id&lt;/span&gt;=&lt;span class="attribute-value"&gt;"searchFrom"&lt;/span&gt;&amp;gt;&lt;br /&gt;  &amp;lt;&lt;span class="start-tag"&gt;span&lt;/span&gt;&gt;Adresa la care se cauta: &amp;lt;/&lt;span class="end-tag"&gt;span&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre id="line11"&gt;   &amp;lt;&lt;span class="start-tag"&gt;input&lt;/span&gt;&lt;span class="attribute-name"&gt; type&lt;/span&gt;=&lt;span class="attribute-value"&gt;"text" &lt;/span&gt;&lt;span class="attribute-name"&gt;id&lt;/span&gt;=&lt;span class="attribute-value"&gt;"location" &lt;/span&gt;&lt;span class="attribute-name"&gt;onblur&lt;/span&gt;=&lt;span class="attribute-value"&gt;"lostFocus()"&lt;/span&gt;&lt;span class="error"&gt;&lt;span class="attribute-name"&gt;/&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;br /&gt;  &amp;lt;&lt;span class="start-tag"&gt;br&lt;/span&gt;&lt;span class="error"&gt;&lt;span class="attribute-name"&gt;/&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;br /&gt;  &amp;lt;&lt;span class="start-tag"&gt;br&lt;/span&gt;&lt;span class="error"&gt;&lt;span class="attribute-name"&gt;/&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;br /&gt;  &amp;lt;&lt;span class="start-tag"&gt;span&lt;/span&gt;&amp;gt;Cuvinte cautate: &amp;lt;/&lt;span class="end-tag"&gt;span&lt;/span&gt;&amp;gt;&lt;br /&gt;  &amp;lt;&lt;span class="start-tag"&gt;input&lt;/span&gt;&lt;span class="attribute-name"&gt; type&lt;/span&gt;=&lt;span class="attribute-value"&gt;"text" &lt;/span&gt;&lt;span class="attribute-name"&gt;id&lt;/span&gt;=&lt;span class="attribute-value"&gt;"keywords" &lt;/span&gt;&lt;span class="attribute-name"&gt;onblur&lt;/span&gt;=&lt;span class="attribute-value"&gt;"lostFocus()"&lt;/span&gt;&lt;span class="error"&gt;&lt;span class="attribute-name"&gt;/&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;br /&gt;  &amp;lt;&lt;span class="start-tag"&gt;br&lt;/span&gt;&lt;span class="error"&gt;&lt;span class="attribute-name"&gt;/&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;br /&gt;  &amp;lt;&lt;span class="start-tag"&gt;br&lt;/span&gt;&lt;span class="error"&gt;&lt;span class="attribute-name"&gt;/&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;br /&gt;  &amp;lt;&lt;span class="start-tag"&gt;input&lt;/span&gt;&lt;span class="attribute-name"&gt; type&lt;/span&gt;=&lt;span class="attribute-value"&gt;"button" &lt;/span&gt;&lt;span class="attribute-name"&gt;value&lt;/span&gt;=&lt;span class="attribute-value"&gt;"Search" &lt;/span&gt;&lt;span class="attribute-name"&gt;id&lt;/span&gt;=&lt;span class="attribute-value"&gt;"submitButton" &lt;/span&gt;&lt;span class="attribute-name"&gt;onclick&lt;/span&gt;=&lt;span class="attribute-value"&gt;"searchPressed()"&lt;/span&gt;&lt;span class="error"&gt;&lt;span class="attribute-name"&gt;/&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre id="line19"&gt;  &amp;lt;/&lt;span class="end-tag"&gt;form&lt;/span&gt;&amp;gt;&lt;br /&gt; &amp;lt;&lt;span class="start-tag"&gt;br&lt;/span&gt;&lt;span class="error"&gt;&lt;span class="attribute-name"&gt;/&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;br /&gt; &amp;lt;&lt;span class="start-tag"&gt;br&lt;/span&gt;&lt;span class="error"&gt;&lt;span class="attribute-name"&gt;/&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;br /&gt; &amp;lt;&lt;span class="start-tag"&gt;div&lt;/span&gt;&lt;span class="attribute-name"&gt; id&lt;/span&gt;=&lt;span class="attribute-value"&gt;"contentDiv"&lt;/span&gt;&amp;gt;&lt;br /&gt; &amp;lt;/&lt;span class="end-tag"&gt;div&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;span class="end-tag"&gt;body&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;span class="end-tag"&gt;html&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Partea care initializeaza obiectul XMLHttpRequest este urmatoarea (este prezentata partea de Firefox pentru a nu complica lucrurile):&lt;br /&gt;&lt;/div&gt;  &lt;blockquote&gt;      // Se creaza obiectul pentru firefox&lt;br /&gt;       httpRequest = new XMLHttpRequest();&lt;br /&gt;     &lt;br /&gt;       // Se seteaza functia apelata la modificari ale starii obiectului httpRequest&lt;br /&gt;       httpRequest.onreadystatechange = function()  &lt;br /&gt;                                        {&lt;br /&gt;                                            var contentDiv = document.getElementById("contentDiv");&lt;br /&gt;                                          &lt;br /&gt;                                            // Daca s-a primit raspunsul la cerere atunci acesta se afiseaza&lt;br /&gt;                                            // in div&lt;br /&gt;                                            if(httpRequest.readyState == 4)&lt;br /&gt;                                            {&lt;br /&gt;                                               contentDiv.innerHTML = httpRequest.responseText;&lt;br /&gt;                                            }&lt;br /&gt;                                        }&lt;br /&gt;                                      &lt;br /&gt;       // Se construieste si se trimite cererea&lt;br /&gt;       httpRequest.open("GET", location, true);&lt;br /&gt;       httpRequest.send(null);&lt;br /&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Se observa setarea unei functii anonime pentru proprietetea onreadystatechanged. Aceasta este apelata automat ori de cate ori exista o schimbare in starea (readyState) cererii Http trimise cu ajutorul JavaScript. Ne intereseaza starea 4 adica aceea care apare in momentul sosirii raspunsului (in cazul nostru a continutului paginii in care se face cautarea). Dupa cum se vede mai sus se seteaza continutul html al div-ului cu id-ul contentDiv la valoarea campului responseText al obiectului XMLHttpRequest in care se va afla exact pagina ceruta. In ultimile doua linii dupa crearea si configurarea obiectului XMLHttpRequest se trimite un request catre server in care se pune adresa paginii cerute (location).&lt;br /&gt;La apasarea butonului de Search se executa functia searchPressed(). Aceasta se ocupa cu identificarea potrivirilor si colorarea acestora. Erau mai multe variante aici printre care folosirea expresiilor regulate sau cautarea manuala (varianta mai din topor). Binenteles am ales ultima varianta folosind functii precum: indexOf, lastIndexOf, substr, charAt. Nu voi mai descrie cum s-a facut cautarea in text pentru ca nu are rost (presupun ca toata lumea poate cauta text folosind metodele de mai sus). Singurul lucru de mentionat aici este ca trebuie avuta grija sa se sara peste textul interior tagurilor si continutul blocurilor dpeciale de genul script. In rest functia identifica fiecare cuvant in parte din text si face o copie a paginii in care se cauta adaugandu-se taguri pentru modificarea culorii zonelor care s-au potrivit la cautare (prin folosirea unui tag de genul span cu un stil specificat sau font).&lt;br /&gt;Pentru mai multe informatii pot ajuta chiar sursele tuturor participantilor la acest proiect ce se afla &lt;a href="http://interfeteweb.pluto.ro/tema3.html"&gt;aici&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-6566826921602527220?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/6566826921602527220/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=6566826921602527220' title='0 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/6566826921602527220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/6566826921602527220'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2009/01/tema-3.html' title='Tema 3'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-676064734104743756</id><published>2009-01-02T02:11:00.000-08:00</published><updated>2009-01-03T01:23:32.764-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='XMLHttpRequest'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='RIA'/><category scheme='http://www.blogger.com/atom/ns#' term='interactivitate'/><title type='text'>AJAX</title><content type='html'>&lt;div style="text-align: justify;"&gt;AJAX (Asynchronous JavaScript and XML) reprezinta un grup de tehnici de dezvoltare a aplicatiilor web. Este folosit pentru a crea aplicatii web interactive sau cum se obisnuieste sa se spuna, RIA (Rich Internet Applications). AJAX a fost popularizat de catre Google prin intermediul Google Sugest.&lt;br /&gt;AJAX se foloseste in principal pentru a spori interactivitatea paginilor web. Prin cresterea interactivitatii, acestea se apropie ca functionalitate si prezentare de cele "offline" (existente pe desktopuri).&lt;br /&gt;Daca avem pe o pagina web un control care ne prezinta o informatie dinamica (un progress bar de exemplu, pentru o operatie care se desfasoara pe serverul web) aceasta trebuie actualizata cat mai des posibil, in scopul oferirii interactivitatii dorite. Daca se foloseste un limbaj server-side, fara a folosi tehnici AJAX, atunci la diverse momente ar trebui reincarcata intreaga pagina web de pe server, provocand intarzieri sesizabile, scazand drastic interactivitatea oferita de aplicatia web, toate acestea numai pentru un singur control (chiar daca restul paginii ramane nemodificat).&lt;br /&gt;AJAX insa ne ofera posibilitatea de a modifica numai anumite regiuni ale paginii web (in acest caz numai controlul). Acest lucru implica binenteles comunicarea cu serverul web, dar aceasta se realizeaza numai pentru a descarca informatiile referitoare la control care se modifica, datele transmise fiind mult mai mici decat cele necesare pentru o intraga pagina web.&lt;br /&gt;In continuare voi prezenta pe scurt modul in care AJAX reuseste sa actualizeze numai anumite zone ale unei pagini web.&lt;br /&gt;Dupa cum am mai spus AJAX in sine se bazeaza pe mai multe tehnologii web, dar in special pe JavaScript. Dupa cum s-a vazut in postul trecut JavaScript este un limbaj de scripting, client-side. Prin intermediul acestuia putem sa avem acces la orice element al unei pagini web. Cum AJAX poate actualiza anumite elemente ale unei pagini astfel accesul la acestea se face cu JavaScript. Deci este rezolvata problema accesului la reginuile unei pagini. Mai departe trebuie rezolvata problema informatiei care duce la actualizarea acestora. Acesta se realizeaza printr-un request special realizat catre serverul web. Un astfel de request se poate realiza prin intermediul unui obiect JavaScript: &lt;b&gt;XMLHttpRequest&lt;/b&gt;. Acest obiect permite comunicarea dintre JavaScript si serverul web fara a fi necesara incarcarea intregii pagini web. Prin intermediul lui se poate face o cerere pentru o parte a paginii web in mod asincron. Astfel regiunea poate fi actualizata numai in momentul in care vine un response de la server, iar pagina web nu va ramane blocata in asteptarea raspunsului. In momentul in care vine raspunsul se stie ce obiect urmeaza a fi actualizat din pagina, acesta fiind accesat prin JavaScript si modificat in concordanta cu raspunsul primit de la server. Unui obiect de tipul XMLHttpRequest i se poate atasa o metoda&lt;br /&gt;care va fi executata ori de cate ori se modifica ceva in starea obiectului:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;xmlHttp.onreadystatechange=function()&lt;br /&gt;{&lt;br /&gt;if(xmlHttp.readyState==4)&lt;br /&gt;{&lt;br /&gt;// Se executa cand vine raspunsul de la server&lt;br /&gt;document.myForm.time.value=xmlHttp.responseText;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;In exemplul de mai sus se considera xmlHttp de tipul XMLHttpRequest. La proprietatea onreadystatechanged se ataseaza o functie. Aceasta va fi executata de fiecare data cand se modifica starea obiectului (acesta are 5 stari in total. Pentru mai multe detalii: &lt;a href="http://www.w3schools.com/ajax/ajax_xmlhttprequest.asp"&gt;http://www.w3schools.com/ajax/ajax_xmlhttprequest.asp&lt;/a&gt;). Starea 4 reprezinta sosirea unui raspuns. Acesta poate avea orice forma: text, xml, html... si  este interpretat in interiorul functiei de mai sus. Acolo poate fi modificata pagina web in zona necesara. In exemplul de mai sus valoarea unui camp text este actualizata cu raspunsul venit de la server. Cererea catre serverul web se poate face in felul urmator:&lt;br /&gt;&lt;pre&gt;xmlHttp.open("GET","time.asp",true);&lt;br /&gt;xmlHttp.send(null);&lt;/pre&gt;Se observa ca se efectueaza o cerere catre pagina time.asp in acest caz. Serverul web va obtine raspunsul generat de scriptul asp si il va trimite catre client. Se observa ca in functie de ce vrem sa actualizam in pagina putem sa avem scripturi separate care sa intoarca exact ce ne trebuie.&lt;br /&gt;In concluzie AJAX reprezinta un set de tehnologii (JavaScript, XML, HTML, ...) ce permite dezvoltarea aplicatiilor Web 2.0, oferind o interactivitate ridicata web-ului.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-676064734104743756?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/676064734104743756/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=676064734104743756' title='0 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/676064734104743756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/676064734104743756'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2009/01/ajax.html' title='AJAX'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-3017745069168270023</id><published>2008-12-24T04:15:00.000-08:00</published><updated>2008-12-24T04:59:36.205-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='innerHTML'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='document'/><title type='text'>JavaScript</title><content type='html'>&lt;div style="text-align: justify;"&gt;JavaScript este, dupa cum reiese si din numele sau, un limbaj de scripting. A aparut in 1995 fiind creatia lui Brendan Eich, care in aceea vreme lucra la Netscape (pe atunci cel mai popular browser). Denumirea de Java din numele limbajului nu are nici o treaba cu produsul celor de la Sun. Aceasta a fost adaugata din ratiuni strict legate de marketing.&lt;br /&gt;Pana la aparitia JavaScript codul paginilor web dinamice era rulat numai pe server clientul urmand sa primeasca inapoi o pagina HTML modificata coresounzator. Acest lucru implica faptul ca un client facea o cerere catre un server, acesta prelucra cererea (executa orice cod dinamic), forma un raspuns continand pagina HTML generata anterior si o trimitea la client. Astfel o operatie simpla de validare a unui camp text (de exemplu verificarea ca acesta sa contina ceva) necesita un drum la server si inapoi. Daca pagina primita era destul de mare combinat cu niste conexiuni slabe la Internet, se pierdea timp si interactivitatea paginii web devenea din ce in ce mai scazuta.&lt;br /&gt;Aparitia limbajului JavaScript a permis posibilitatea crearii paginilor dinamice al caror continut se modifica prin rularea de cod pe masina clientului. Codul era evident scris in JavaScript si trebuia ca browserul folosit sa cunoasca acest limbaj. Acum pentru verificarea unui camp text din pagina codul putea fi rulat de browser pe client fara a mai necesita o cerere catre server. Astfel a aparut termenul de client-side scripting (script rulat pe masina clientului) diferit de server-side scripting (script rulat pe server). Singura problema era ca browserul folosit sa cunoasca acest limbaj. Aceasta s-a rezolvat de la sine datorita cresterii masive in popularitate a JavaScript-ului, fiecare nou producator de browsere integrand-ul in produsul sau. Desigur nu se poate face orice cu JavaScript multe operatii necesitand executarea codului pe server. De aceea in prezent sunt folosite pagini web ce contin scripturi client-side si server-side.&lt;br /&gt;Sintaxa JavaScript este destul de simpla. Variabilele nu au tipuri, din acest punct de vedere acesta nefiind un limbaj foarte type-safe, constructiile fiind uneori destul de rudimentare. Este case-sensitive. Daca se intalneste  de exemplu o functie necunoscuta executa este oprita in acel punct Blocurile sunt delimitate de binecunoscutele acolade din alte limbaje ({}). JavaScript suporta si niste tipuri primitive de clase si de asemenea un obiect central in acest limbaj este &lt;span style="font-weight: bold;"&gt;document&lt;/span&gt;. Cu ajutorul acestuia se pot obtine referiri la toate obiectele existente in pagina web (de la controale la div-uri). Daca de exemplu se  seteaza proprietatea id pentru un control la valoarea &lt;span style="font-weight: bold;"&gt;"control"&lt;/span&gt;, se poate obtine o referinta la acesta astfel:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  var ctrl = document.getElementById("control");&lt;/span&gt;&lt;br /&gt;In functie de controlul obtinut se pot accesa si alte proprietati. De exemplu pentru un control de tipul text, continutul acestuia poate fi extras prin intermediul proprietatii &lt;span style="font-weight: bold;"&gt;value&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  var content = ctrl.value;&lt;/span&gt;&lt;br /&gt;Pentru un div continutul poate fi extras prin &lt;span style="font-weight: bold;"&gt;innerHTML&lt;/span&gt; in loc de value.&lt;br /&gt;O alta utilizare pentru JavaScript este posibilitatea tratarii evenimentelor. Astfel se poate asocia unui buton un eveniment reprezentat de o functie JavaScript. Cand acel buton este apasat va fi executata functia. Asocierile dintre evenimente si functiile JavaScript se fac in HTML in momentul definirii componentelor. De exemplu in cazul unui buton:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  &amp;lt;input type="button" onclick="functieJavaScript()"&amp;gt;&lt;/span&gt;&lt;br /&gt;Exista binenteles mai multe evenimente posibile pentru fiecare control existent.&lt;br /&gt;JavaScript a fost readus in prim plan printre limbajele de client-side scripting atentie (nu ca pana acum nu ar fi fost) de aparitia tehnologiei AJAX ce permite incarcarea selectiva a elementelor unei pagini web prin intermediul JavaScript. Despre aceasta intr-un alt post.&lt;br /&gt;&lt;/div&gt;&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-3017745069168270023?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/3017745069168270023/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=3017745069168270023' title='0 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/3017745069168270023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/3017745069168270023'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2008/12/introducere-in-javascript.html' title='JavaScript'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-4078474289563399493</id><published>2008-12-02T21:40:00.000-08:00</published><updated>2008-12-08T02:53:56.675-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tema'/><title type='text'>A aparut enuntul temei 3</title><content type='html'>&lt;div style="text-align: justify;"&gt;Pentru cei interesati a aparut enuntul temei 3 la &lt;a href="http://interfeteweb.pluto.ro/tema3.html"&gt;http://interfeteweb.pluto.ro/tema3.html&lt;/a&gt;. Detalii despre rezolvare vor aprea in curand.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-4078474289563399493?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/4078474289563399493/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=4078474289563399493' title='0 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/4078474289563399493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/4078474289563399493'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2008/12/aparut-tema-3.html' title='A aparut enuntul temei 3'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-4029495095907697740</id><published>2008-12-02T21:38:00.000-08:00</published><updated>2008-12-02T21:40:14.358-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='piatra'/><category scheme='http://www.blogger.com/atom/ns#' term='ctte'/><category scheme='http://www.blogger.com/atom/ns#' term='probleme'/><title type='text'>Aventura mea cu CTTE</title><content type='html'>&lt;div style="text-align: justify;"&gt;Pentru cei care au trait sub o piatra pana acum si inca nu stiu :D, CTTE sau The Concurrent Task Tree Environment o aplicatie pentru modelarea interfetelor grafice si poate fi gasita la &lt;a href="http://giove.cnuce.cnr.it/ctte.html" target="_blank"&gt;http://giove.cnuce.cnr.it/ctte.html&lt;/a&gt;. Despre descrierea temei a scris mai jos colegul meu Florian motiv pentru care ma voi referi in acest post mai mult la "aventura mea" (a se citi probleme intampinate) cu CTTE in incercarea de a realiza tema 2 la interfete evoluate. In primul rand trebuie mentionat un lucru foarte important aplicatia este free deci nu trebuie sa fim surprinsi daca gasim diverse buguri. In primul rand in momententul deschiderii aplicatiei va ramane deschis si un "command prompt", pe care va recomand cu caldura sa il inspectati destul de des deoarece s-ar putea sa va treziti cu o groaza de exceptii aruncate acolo moment in care salvati si restartati aplicatia. In primu rand in momentul in care deschizi aplicatia poti observa un norisor care reprezinta un task complex (ideea de norisori nu prea e pe gustul meu deoarece imi creaza impresia de aplicatie neprofesionista dar trecem peste asta). Ce m-a surprins inca de la inceput a fost faptul ca daca dai click pe diverse butoane nu iti nu intampla absolut nimic (un mesaj de eroare mi se parea absolut natural). Am lasat deoparte aceste mici neajunsuri care nu ma mira la o aplicatie free si am inceput sa creez graful de task-uri. La un moment dat m-am trezit inundat de exceptii in command prompt motiv pentru care am salvat rapid si am restartat aplicatia (de fapt a fost nevoie sa incerc sa salvez in vreo 3 fisiere diferite pentru ca nu salva bine...). Desi a mai crapat de cateva ori am avut rabdare si cu putina perseverenta am reusit sa definitivez tema (bineinteles ca mi-a mai crapat de cel putin 5 ori...). Dupa realizarea temei pot spune ca ideea ei nu a fost rea. Am invatat sa modelam o interfata lucru care pare destul de natural la o materie care se numeste "interfete evoluate". Legat de erorile aparute pot spune ca in 5 ani de facultate am avut ocazia sa lucrez cu tot felul de aplicatii care crapau din te miri ce (chiar acum cateva zile in cadrul laboratorului de LPD mi-a crapat linuxul in timp ce incercam sa instalez netbeans ..., sau cazul xilinx ise care desi costa destul crapa des) parca totusi ctte a intrecut orice limita. In concluzie in opinia mea ideea temei a fost buna dar aplicatia folosita mi s-a parut cam slaba.&lt;br /&gt;    P.S.: E 1 jumate noaptea, cred ca o sa am cosmaruri cu CTTE .......&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Liviu Matei&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-4029495095907697740?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/4029495095907697740/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=4029495095907697740' title='0 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/4029495095907697740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/4029495095907697740'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2008/12/aventura-mea-cu-ctte.html' title='Aventura mea cu CTTE'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-7321202276050497235</id><published>2008-12-02T10:14:00.000-08:00</published><updated>2008-12-02T10:22:57.373-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='utilizare'/><category scheme='http://www.blogger.com/atom/ns#' term='tema'/><category scheme='http://www.blogger.com/atom/ns#' term='ctte'/><category scheme='http://www.blogger.com/atom/ns#' term='probleme'/><title type='text'>The Concurrent Task Tree Environment (CTTE) - probleme</title><content type='html'>&lt;div style="text-align: justify;"&gt;Tema 2 la IE (&lt;a href="http://interfeteweb.pluto.ro/tema2.html"&gt;http://interfeteweb.pluto.ro/tema2.html&lt;/a&gt;) 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.&lt;br /&gt;Interfaţa cu utilizatorul are o structură sub formă de arbore. Elementele arborelui sunt sarcinile, care sunt legate între ele prin diverse relaţii.&lt;br /&gt;CTTE se găseşte la adresa &lt;a href="http://giove.cnuce.cnr.it/ctte.html"&gt;http://giove.cnuce.cnr.it/ctte.html&lt;/a&gt;. 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.&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stan Alexandru&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-7321202276050497235?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/7321202276050497235/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=7321202276050497235' title='0 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/7321202276050497235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/7321202276050497235'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2008/12/concurrent-task-tree-environment-ctte.html' title='The Concurrent Task Tree Environment (CTTE) - probleme'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-6476514070568220777</id><published>2008-12-02T09:29:00.000-08:00</published><updated>2008-12-02T09:43:55.660-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><title type='text'>Ce este Web 2.0 ?</title><content type='html'>Un posibil raspuns la intrebarea "Ce este Web 2.0 ?": &lt;br/&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0LzQIUANnHc&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/0LzQIUANnHc&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-6476514070568220777?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/6476514070568220777/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=6476514070568220777' title='0 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/6476514070568220777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/6476514070568220777'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2008/12/ce-este-web-20.html' title='Ce este Web 2.0 ?'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-1068494863837578026</id><published>2008-12-02T07:13:00.000-08:00</published><updated>2008-12-02T07:40:41.718-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='administrator'/><category scheme='http://www.blogger.com/atom/ns#' term='user'/><category scheme='http://www.blogger.com/atom/ns#' term='tema'/><category scheme='http://www.blogger.com/atom/ns#' term='blogroll'/><category scheme='http://www.blogger.com/atom/ns#' term='ctte'/><title type='text'>Tema 2</title><content type='html'>&lt;div style="text-align: justify;"&gt;Tema 2, dupa cum putei afla pe &lt;a href="http://interfeteweb.pluto.ro/tema2.html"&gt;http://interfeteweb.pluto.ro/tema2.html&lt;/a&gt;, se refera la descrierea interactiunilor dintre un utilizator si interfata siteului &lt;a href="http://www.blogger.com/"&gt;www.blogger.com&lt;/a&gt; din punctele de vedere al utilizatorului (cititorul de blog) si al administratorului unui blog.&lt;br /&gt;Pentru fiecare din acestia s-au descris niste scenarii pentru urmatoarele activitati:&lt;br /&gt;-    utilizator : vizualizare post,adaugare comentariu, vizualizare lista de posturi, vizualizare categorii&lt;br /&gt;-    administrator : adaugare post, adaugare link in blogroll, editare link&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;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.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Utilizator&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Toate actiunile utilizatorilor au loc in pagina de start a unui blog.&lt;br /&gt;-    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 -&gt; se afiseaza lunile din anul respectiv care au posturi -&gt; userul selecteaza o luna din lista -&gt; sunt afisate posturile.&lt;br /&gt;-    vizualizare categorii : aici am presupus ca se folosesc tagurile din posturi. Pasul : userul da clik pe un tag ce reprezinta o categorie -&gt; se afiseaza posturile din acea categorie.&lt;br /&gt;-    vizualizare post : userul poate incepe fie prin pasii precedenti fie direct din pagina de start a blogului. Pasul : userul da clik pe un post -&gt; se afiseaza postul.&lt;br /&gt;-    adaugare comentariu : se pleaca de la un post deja afisat. Pasii : se da click pe trimtere comentariu -&gt; se introduce comentariul  -&gt; se introduce codul de verificare -&gt; se stabileste identitatea intre doua tipuri (BloggerID -&gt; se introduc user si parola; OpenID -&gt; alegere tip id -&gt; alegere nume)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Administrator&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Toate actiunile au loc din pagina de administrare in urma logarii administratorului.&lt;br /&gt;-    adaugare post : se alege postare noua -&gt; editare postare -&gt; introducere titlu -&gt; publicare&lt;br /&gt;-    adaugare link in blogroll : se alege optiunea aspect din pagina de administrare -&gt; alegere editare blogroll -&gt; alege adauga -&gt; introducere URL -&gt; click pe adauga -&gt; click pe salvare&lt;br /&gt;-    editare link : aici am presupus  ca se editeaza un link din blogroll. Pasii :  se alege optiunea aspect din pagina de administrare -&gt; alegere editare blogroll -&gt; alege redenumire -&gt; modificare nume -&gt; click pe salvare redenumire -&gt; click pe salvare.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-1068494863837578026?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/1068494863837578026/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=1068494863837578026' title='0 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/1068494863837578026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/1068494863837578026'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2008/12/tema-2.html' title='Tema 2'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-6576388652972338623</id><published>2008-11-25T06:12:00.000-08:00</published><updated>2008-11-25T06:17:17.186-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='concurs'/><title type='text'>CONCURS</title><content type='html'>Pe &lt;a href="http://interfeteweb.pluto.ro"&gt;http://interfeteweb.pluto.ro&lt;/a&gt; s-a publicat un concurs ale carui reguli le gasiti &lt;a href="http://interfeteweb.pluto.ro/concurs.html"&gt;aici&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-6576388652972338623?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/6576388652972338623/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=6576388652972338623' title='0 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/6576388652972338623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/6576388652972338623'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2008/11/concurs.html' title='CONCURS'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-824606857380267066</id><published>2008-11-13T04:30:00.000-08:00</published><updated>2008-11-13T04:32:54.099-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='tema'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='YOUTUBE'/><title type='text'>Tema 1 - Take 4</title><content type='html'>&lt;div style="text-align: justify;"&gt;Pentru a realiza prima temă la IE, am ales reţeaua &lt;a href="http://www.youtube.com/"&gt;youtube &lt;/a&gt;şi limbajul de programare Java. Am folosit &lt;a href="http://code.google.com/apis/youtube/2.0/developers_guide_protocol.html"&gt;API&lt;/a&gt;-ul pus la dispoziţie de Google.&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Alexandru Stan&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-824606857380267066?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/824606857380267066/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=824606857380267066' title='1 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/824606857380267066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/824606857380267066'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2008/11/pentru-realiza-prima-tem-la-ie-am-ales.html' title='Tema 1 - Take 4'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-3400965563612229745</id><published>2008-11-13T04:22:00.000-08:00</published><updated>2008-11-17T06:10:13.996-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parsare'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='bfs'/><title type='text'>Tema 1 - Take 3</title><content type='html'>&lt;div style="text-align: justify;"&gt;Prima temă la Interfete Evoluate a constat în analiza unei comunităţi web, mai precis în extragerea de informaţii privind relaţiile sociale din cadrul unei astfel de comunităţi. Pentru enunţul complet al temei vizitaţi &lt;a href="http://interfeteweb.pluto.ro/"&gt;http://interfeteweb.pluto.ro&lt;/a&gt;. Primul pas a fost să caut o reţea socială care să-mi pună la dispoziţie un API eficient şi uşor de utilizat, evitând astfel parsarea paginilor HTML. După ce am luat în considerare mai multe reţele sociale m-am oprit asupra comunităţii Twitter care pune la dispoziţie programatorilor un &lt;a href="http://apiwiki.twitter.com/REST+API+Documentation"&gt;API&lt;/a&gt; &lt;a href="http://apiwiki.twitter.com/REST+API+Documentation"&gt;&lt;/a&gt; ce aderă la principiile de design REST (Representational State Transfer).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Pentru temă am avut nevoie de metoda care furnizează informaţii despre prietenii unui utilizator Twitter, informaţii ce se pot obţine cu usurinţă printr-o cerere HTTP de tip GET catre un URL de forma http://twitter.com/statuses/friends/{user}.{format}. În acest url {user} va fi inlocuit cu ID-ul sau numele utilizatorului pentru care se doreşte lista de prieteni, iar {format} cu xml sau json, în funcţie de ce format de date se doreşte să aibă răspunsul. Spre deosebire de metodele similare puse la dispoziţie de API-urile altor reţele sociale, aici nu este nevoie nici de autentificare şi nici de obţinerea unui API-key.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Răspunsul conţine lista cu prietenii utilizatorului dat precum şi câteva informaţii despre fiecare. În cazul în care se alege formatul XML un răspuns are următoarea structură:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&amp;lt;users type="array"&amp;gt;&lt;br /&gt; &amp;lt;user&amp;gt;&lt;br /&gt;     &amp;lt;id&amp;gt;id_utilizator&amp;lt;/id&amp;gt;&lt;br /&gt;     &amp;lt;name&amp;gt;nume&amp;lt;/name&amp;gt;&lt;br /&gt;     &amp;lt;screen_name&amp;gt;nume_utilizator&amp;lt;/screen_name&amp;gt;&lt;br /&gt;     &amp;lt;location/&amp;gt;&lt;br /&gt;     &amp;lt;description/&amp;gt;&lt;br /&gt;     &amp;lt;profile_image_url&amp;gt;&lt;br /&gt;         http://static.twitter.com/images/default_profile_normal.png&lt;br /&gt;     &amp;lt;/profile_image_url&amp;gt;&lt;br /&gt;     &amp;lt;url/&amp;gt;&lt;br /&gt;     &amp;lt;protected&amp;gt;false&amp;lt;/protected&amp;gt;&lt;br /&gt;     &amp;lt;followers_count&amp;gt;3&amp;lt;/followers_count&amp;gt;&lt;br /&gt;     &amp;lt;status&amp;gt;&lt;br /&gt;     &amp;lt;created_at&amp;gt;Mon May 12 13:17:11 +0000 2008&amp;lt;/created_at&amp;gt;&lt;br /&gt;     &amp;lt;id&amp;gt;id_user&amp;lt;/id&amp;gt;&lt;br /&gt;     &amp;lt;text&amp;gt;Testing twitter in web purposes..&amp;lt;/text&amp;gt;&lt;br /&gt;     &amp;lt;source&amp;gt;web&amp;lt;/source&amp;gt;&lt;br /&gt;     &amp;lt;truncated&amp;gt;false&amp;lt;/truncated&amp;gt;&lt;br /&gt;     &amp;lt;in_reply_to_status_id/&amp;gt;&lt;br /&gt;     &amp;lt;in_reply_to_user_id/&amp;gt;&lt;br /&gt;     &amp;lt;favorited&amp;gt;false&amp;lt;/favorited&amp;gt;&lt;br /&gt;     &amp;lt;/status&amp;gt;&lt;br /&gt; &amp;lt;/user&amp;gt;&lt;br /&gt; .&lt;br /&gt; .&lt;br /&gt; .&lt;br /&gt;&amp;lt;/users&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Informaţia de interes ce trebuie extrasă din răspunsul XML este numele de utilizator specificat în interiorul elementului screen_name. Obţinându-se numele utilizatorilor din listă se pot forma URL-urile pentru profil şi pentru alte cereri care să întoarcă prietenii acestor utilizatori. URL-ul profilului are următorul format: http://twitter.com/{nume_utilizator}.&lt;br /&gt;După ce am stabilit ce am de făcut, am trecut la implementare. Am ales limbajul python pentru că este simplu, puternic şi elegant şi împreună cu minidom, un parser de XML cu funcţionalitate de bază, se pretează perfect la cerinţele temei. Cum reţeaua socială analizată are structura unui graf, parcurgerea se face recursiv, pornind de la nodul corespunzător utilizatorului specificat. Pentru a nu se repeta utilizatorii la care se ajunge pe mai multe căi, s-a menţinut în memorie o mulţime cu utilizatorii vizitaţi. Ar fi de preferat ca gradul relaţiilor afişate în fişierul cu rezultate să fie cat mai mic (să se ajugă la un prieten pe o cale mai scurtă), iar din acest motiv s-ar preta o parcurgere în lăţime a grafului (BFS).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Liviu Frateanu&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-3400965563612229745?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/3400965563612229745/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=3400965563612229745' title='2 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/3400965563612229745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/3400965563612229745'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2008/11/tema-1-take-3.html' title='Tema 1 - Take 3'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-6267225504233812902</id><published>2008-11-04T11:52:00.000-08:00</published><updated>2008-11-15T00:27:03.470-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='foaf'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='dfs'/><category scheme='http://www.blogger.com/atom/ns#' term='tema'/><category scheme='http://www.blogger.com/atom/ns#' term='hi5'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='wsdl'/><category scheme='http://www.blogger.com/atom/ns#' term='bfs'/><title type='text'>Tema 1 - Take 2</title><content type='html'>&lt;div style="text-align: justify;"&gt;Pentru această temă am ales reţeaua socială hi5 (&lt;a href="http://www.hi5.com/"&gt;http://www.hi5.com&lt;/a&gt;) ş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 &lt;a href="http://interfeteweb.pluto.ro/"&gt;http://interfeteweb.pluto.ro&lt;/a&gt; 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 &lt;a href="http://api.hi5.com/"&gt;http://api.hi5.com&lt;/a&gt;).&lt;br /&gt;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 &lt;a href="http://api.hi5.com/rest_.profile.foaf.%7BuserId%7D.html"&gt;aici&lt;/a&gt;. Astfel, dacă luăm un id pentru un utilizator şi extragem răspunsul de la cererea făcută la adresa: &lt;span style="font-style: italic;"&gt;http://api.hi5.com/rest/profile/foaf/[id] &lt;/span&gt;(evident [id] se inlocuieşte cu un id valid) ob&lt;span class="content"&gt;&lt;/span&gt;ţ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:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;rdf:RDF&amp;gt;&lt;br /&gt;&amp;lt;foaf:Person rdf:nodeId="me"&amp;gt;&lt;br /&gt;&amp;lt;foaf:nick&amp;gt;xxxxx&amp;lt;/foaf:nick&amp;gt;&lt;br /&gt;&amp;lt;foaf:givenName&amp;gt;xxxxxx&amp;lt;/foaf:givenName&amp;gt;&lt;br /&gt;&amp;lt;foaf:surName&amp;gt;XXXX&amp;lt;/foaf:surName&amp;gt;&lt;br /&gt;&amp;lt;foaf:mboxSha1Sum&amp;gt;a71850698cf0d7cfac95742de871c58817d45341&amp;lt;/foaf:mboxSha1Sum&amp;gt;&lt;br /&gt;&amp;lt;foaf:img rdf:resource="http://photos2.hi5.com/......"/&amp;gt;&lt;br /&gt;&amp;lt;foaf:weblog rdf:resource="http://www.hi5.com/profile/displayJournal.do?userid=[id]"/&amp;gt;&lt;br /&gt;&amp;lt;foaf:gender&amp;gt;female&amp;lt;/foaf:gender&amp;gt;&lt;br /&gt;&amp;lt;lang:masters&amp;gt;ro&amp;lt;/lang:masters&amp;gt;&lt;br /&gt;&amp;lt;foaf:homePage rdf:resource="http://www.hi5.com/friend/profile/displayProfile.do?userid=[id]"/&amp;gt;&lt;br /&gt;&amp;lt;foaf:knows&amp;gt;&lt;br /&gt;&amp;lt;foaf:Person&amp;gt;&lt;br /&gt;&amp;lt;foaf:nick&amp;gt;XXXXX&amp;lt;/foaf:nick&amp;gt;&lt;br /&gt;&amp;lt;rdfs:seeAlso rdf:resource="http://api.hi5.com/rest/profile/foaf/[idnick1]"/&amp;gt;&lt;br /&gt;&amp;lt;/foaf:Person&amp;gt;&lt;br /&gt;&amp;lt;/foaf:knows&amp;gt;&lt;br /&gt;&amp;lt;foaf:knows&amp;gt;&lt;br /&gt;&amp;lt;foaf:Person&amp;gt;&lt;br /&gt;&amp;lt;foaf:nick&amp;gt;&amp;lt;/foaf:nick&amp;gt;&lt;br /&gt;&amp;lt;rdfs:seeAlso rdf:resource="http://api.hi5.com/rest/profile/foaf/[idnick2]"/&amp;gt;&lt;br /&gt;&amp;lt;/foaf:Person&amp;gt;&lt;br /&gt;&amp;lt;/foaf:knows&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;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: &lt;span style="font-style: italic;"&gt;http://www.hi5.com/friend/profile/displayProfile.do?userid=[id]&lt;/span&gt;.&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Florian&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Popa&lt;/span&gt;&lt;br /&gt;&lt;a href="http://api.hi5.com/"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-6267225504233812902?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/6267225504233812902/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=6267225504233812902' title='2 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/6267225504233812902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/6267225504233812902'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2008/11/tema-1-take-2.html' title='Tema 1 - Take 2'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-145566360193416170</id><published>2008-11-04T06:08:00.000-08:00</published><updated>2008-11-04T08:20:59.774-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='api_key'/><category scheme='http://www.blogger.com/atom/ns#' term='flickr'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>Tema 1 - Take 1</title><content type='html'>&lt;div style="text-align: justify;"&gt;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 &lt;a href="http://www.flickr.com/services/api/misc.api_keys.html"&gt;http://www.flickr.com/services/api/misc.api_keys.html &lt;/a&gt;. 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&amp;amp;run).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;    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.&lt;br /&gt;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.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Î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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Liviu Matei&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-145566360193416170?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/145566360193416170/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=145566360193416170' title='0 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/145566360193416170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/145566360193416170'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2008/11/tema-1-take-1.html' title='Tema 1 - Take 1'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-3958385384556171033</id><published>2008-11-04T06:07:00.000-08:00</published><updated>2008-11-04T08:20:07.928-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='tema'/><title type='text'>Tema 1 - Take 0</title><content type='html'>&lt;div style="text-align: justify;"&gt;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 &lt;a href="http://interfeteweb.pluto.ro/"&gt;http://interfeteweb.pluto.ro&lt;/a&gt; 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.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-3958385384556171033?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/3958385384556171033/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=3958385384556171033' title='0 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/3958385384556171033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/3958385384556171033'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2008/11/tema-1-take-0.html' title='Tema 1 - Take 0'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163700607215290453.post-3201441681279241513</id><published>2008-11-02T03:18:00.000-08:00</published><updated>2008-11-02T10:40:35.977-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='evoluate'/><category scheme='http://www.blogger.com/atom/ns#' term='interfeteweb'/><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='calculatoare'/><category scheme='http://www.blogger.com/atom/ns#' term='teme'/><category scheme='http://www.blogger.com/atom/ns#' term='UPB'/><category scheme='http://www.blogger.com/atom/ns#' term='interfete'/><category scheme='http://www.blogger.com/atom/ns#' term='automatica'/><title type='text'>Despre blog, IE, echipă şi altele ... (o mare varză)</title><content type='html'>&lt;div style="text-align: justify;"&gt;        În primul rând bine aţi venit pe blogul Interfete Web. Acesta este un blog mai special deoarece a fost creat ca parte dintr-un proiect la materia Interfete Evoluate din programa Facultăţii de Automatică şi Calculatoare din UPB. La acest proiect participă o echipă de 4 studenţi la A&amp;amp;C: Alex, Liviu, Liviu şi Florian (ALLF - noi :) ).&lt;br /&gt;Proiectul va fi format din 2 părţi: un site prin intermediul căruia vor fi oferite teme realizate de noi la materia Interfete Evoluate (site-ul se află la adresa &lt;a href="http://interfeteweb.pluto.ro/"&gt;http://interfeteweb.pluto.ro/&lt;/a&gt; aşa că vizitaţi-l cât mai des). O altă componentă importantă a proiectului este acest blog prin intermediul căruia vom publica diverse articole legate de web şi nu numai :D (aşa că fiţi cu ochii pe blog fiindcă nici nu ştiţi ce pierdeţi :P). Printre articolele legate de web vor fi şi cele care vor descrie rezolvarea temelor propuse la materia IE, în variantele celor patru autori.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163700607215290453-3201441681279241513?l=interfete-web2008.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://interfete-web2008.blogspot.com/feeds/3201441681279241513/comments/default' title='Postare comentarii'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9163700607215290453&amp;postID=3201441681279241513' title='0 comentarii'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/3201441681279241513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163700607215290453/posts/default/3201441681279241513'/><link rel='alternate' type='text/html' href='http://interfete-web2008.blogspot.com/2008/11/despre-blog-ie-echipa-si-altele-o-mare.html' title='Despre blog, IE, echipă şi altele ... (o mare varză)'/><author><name>Florian</name><uri>http://www.blogger.com/profile/17456453603011769064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
