sâmbătă, iulie 21, 2007

Feed-uri pentru dezvoltatorii de software

Spre surprinderea mea multi dezvoltatori software inca nu stiu ce este RSS-ul (Really Simple Syndication) sau ATOM-ul (Atom Publishing Protocol). Daca as spune dupa o definitie din carte ca permite obtinerea in timp real si in mod gratuit de informatii de pe website-uri, cred ca as da o definitie SF (Science Fiction). Asa ca imi propun sa intram putin in detalii.

Si cum cel mai bun mod de a intelege ceva e sa pornim de la un exemplu, hai sa ne imaginam site-ul BNR pe care deseori il vizitam pentru a vedea cursul valutar. Problema pe care mi-am pus-o de mai multe ori era cum sa fac sa am o aplicatie care citeste de pe site-ul BNR cursul valutar si-l afiseaza in "systray" zilnic. Am crezut ca e simplu, creez o aplicatie care face urmatoarele: acceseaza pagina X, o parseaza cu expresii regulate, extrage informatiile de care aveam nevoie si-am cam rezolvat problema, nu?. ZBRRrr, ce se intampla daca BNR schimba layout-ul paginii web!? Cand au aparut serviciile web am zis, waw, e super tehnologia, BNR vine cu un serviciu web public prin care expune informatia intr-un mod structurat tuturor aplicatiilor care au nevoie de cursul valutar in diferite aplicatii (contabile, web). Mi-am zis, daca nu vine, fac eu unul si-l expun public, stand zilnic pe site-ul BNR ca sa actualizez cursul. Dar tehnologia e complicata, informatiile transmise in cadrul protocolului trebuie encodate conform specificatiilor SOAP, aplicatia client trebuie sa inteleaga ce metoda sa apeleze, la ce adresa...s.a.m.d. Desi exista framework-uri care se ocupa sa elimine aceste detalii, tot complicat suna atunci cand vrei sa faci posibil, usor, ca aceste informatii sa fie preluate rapid pe alte website-uri. Sa-i rog pe cei de la BNR sa-mi trimita zilnic un email cu cursul valutar. Ce zici, tine ideea? :) S-ar putea sa fie cineva acolo dragutz care sa-mi trimita 2-3 zile la rand, urmand ca apoi sa uite, fiind ocupat cu lucruri mai importante, nu? Bine.

Mmm, trebuie sa fie o solutie mai simpla, mai rapida. Ce-ar fi daca BNR ar scrie cursul valutar intr-un mod structurat intr-un fisier, disponibil pe web la o anumita adresa, in format XML. Super idee, nu? :)

..si continutul fisierului ar arata astfel:

<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
<channel>
<title>BNR - Curs valutar</title>
<link>http://www.bnr.ro/cursvalutar.aspx</link>
<item>
<title>USD</title>
<description>2,4 RON</description>
<link>cursvalutar.aspx?currency=USD</link>
</item>
<item>
<title>EUR</title>
<description>3,12 RON</description>
<link>cursvalutar.aspx?currency=EUR</link>
</item>
</channel>
</rss>

Acum sigur ne intrebam, bine bine, si cu ce citim acest fisier? Sa fim noi sanatosi, programatorii ca noi au dezvoltat o intreaga suita de aplicatii windows/web care stiu sa afiseze aceste informatii intr-un cadru mai placut si util. Se numesc RSS reader-e si cele pe care le-am folosit pana-n prezent si de care am auzit ar fi: Firefox, Safari si IE 7.0 au inclus suport pentru citirea feed-urilor RSS, Microsoft Office Outlook 2007, Google Reader (I like and I use it! - web client), SharpReader (windows client), iar daca cauti pe Google gasesti destule de unde sa alegi. Ce e mai interesant e faptul ca iGoogle/Windows Live ofera personalizarea paginilor web integrandu-se usor cu feed-uri externe.

Cine ofera informatii in format RSS? Hehe, sunt multi..multi..Se observa usor dupa pictograma .

- Toate blog-urile expun continutul lor intr-un feed..
- Hotnews rss.hotnews.ro
- MSDN http://msdn2.microsoft.com/en-us/default.aspx
- Site de job-uri pe IT (http://www.joobs.ro/)
- Weblog-ul lui Zoli (http://itboard.ro/blogs/zolis_tool/default.aspx)
- Silverlight (http://silverlight.net/blogs/)
- Picasa Web Albums (http://picasaweb.google.com/) - cand prietenii tai mai publica o poza tu afli instant, fain nu?
- SoapBox MSN Video (http://soapbox.msn.com/)
- Google Desktop, Windows Vista Sidebar
- restul va las sa le descoperiti singuri.. :)


Idei sunt multe, orice informatie dintr-un website o puteti expune intr-un feed, facand posibil notificarea celor inscrisi la feed-ul respectiv. Exista implementari care folosesc feed-urile pentru a publica muzica, filme..sau vreti sa stiti cand o banca schimba dobanda la credite..va abonati la feed-ul bancii. Sunt avantaje si dezavantaje, dar daca ar fi sa ne raportam la situatia cand ne dam o adresa de email si asteptam sa primim newslettere sau spam-uri (in cele mai dese cazuri), cred ca e mai simplu sa ne abonam la un feed si sa citim cand dorim noutatile, fara sa fim nevoiti sa facem o cerere expres pentru a fi dezabonati de la un website.

In incheiere, fii la curent cu ceea ce vrei sa stii, alege un program de citit feed-uri, mergi pe site-urile care iti plac si le vizitezi mai des pentru a vedea noutati si subscrie-te la feed-urile pe care le expun. Daca nu, fa un bine si trimite-le un email ca moda s-a schimbat, n-ai feed n-ai valoare. Astfel, mai dai o paine la un programator se le implementeze suport pentru feed-uri in aplicatia lor..

Numai bine,
Gabriel
p.s. Nu citesc o carte despre Linq, dar citesc articolele periodice ale lui ScottGu despre aceasta tehnologie.