Ce parere aveti despre cursul de Interfete Evoluate de anul acesta ?(tematica curs, laboratoare)

luni, 3 decembrie 2007

To crawl or not to crawl

Si iata ca a fost tema 2 (mai demult dar cum timpul e limitat postez despre ea acum). Am vazut ca Mihaela e mai harnica si a facut si tema 3 :).

La tema 2 am avut de facut un crawler web care sa descopere si salveze relatiile inter-personale de pe un site la alegere.

Eu am plecat de la last.fm - super site de ascultat, descoperit, impartasit muzica si evenimente asociate precum concerte, lansari de albume. Am identificat relatii de tipul X asculta aceeasi muzica cu Y (neighbour in limbaj last.fm), X este prieten cu Y.

M-au ajutat destul de mult URL-urile foarte "regulate" ale site-ului si faptul ca HTML-ul din pagini e bine structurat. De exemplu, e de ajuns sa se plece de la un nume X de utilizator, prietenii sai se gasesc la www.last.fm/user/X/friends, din pagina HTML respectiva se pot parsa usor numele prietenilor, se afla apoi prietenii prietenilor si tot asa.

Ca tehnologii, am folosit Python si sqlite pentru baza de date. Python din cauza ca e puternic, simplu, elegant si are un parser de SGML care e teribil de usor de folosit. Multi colegi au incercat sa parseze cu un parser de XML si au dat de probleme fiindca stim cu totii ca putine site-uri folosesc astazi XHTML desi ideal toate ar trebui sa o faca. Parserul XML se plangea cand dadea de HTML-ul ce respecta mai putine reguli; parserul de SGML din Python a mers perfect.

Tot legat de parser, capabilitatile dinamice si reflective ale Python sunt puse la treaba in folosirea lui. Vrei sa ti se apeleze o metoda cand incepe tag-ul <ul> In parserele standard trebuie sa iti inregistrezi o functie handler si sa faci incantatii magice :P. In Python trebuie sa definesti metoda start_ul intr-o clasa care extinde SGMLParser. Atat.

O alta chestie despre care am aflat mai multe cu ocazia acestei teme a fost sqlite. Le-am vizitat site-ul, am fost incantat de faptul ca e o solutie care face foarte multe (ofera suport pentru SQL, indecsi, tranzactii, triger-uri, view-uri) si totusi nu are nevoie de un server care sa gestioneze baza de date, nu are nevoie de nici o configurare, tine toata baza de date intr-un singur fisier self-contained si are mai putin de 250KB de cod. Daca nu era de ajuns, formatul bazei de date este neschimbat pe arhitecturi pe 32 sau 64 biti, little-endian sau big-endian. Faptul ca e un produs extraordinar de util se vede si din lista impresionanta de utilizatori.

Niciun comentariu:

Ce parere aveti despre tehnologia Ajax ?

 
Director-Web.net