<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>George Pîrlea &#187; Fără categorie</title>
	<atom:link href="http://stagiari.ceata.org/george/category/fara-categorie/feed/" rel="self" type="application/rss+xml" />
	<link>http://stagiari.ceata.org/george</link>
	<description>Stagiar al Fundației Ceata în vara lui 2013</description>
	<lastBuildDate>Tue, 16 Jul 2013 13:01:35 +0000</lastBuildDate>
	<language>ro-RO</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.2</generator>
		<item>
		<title>Cum să contruiești un Acvariu, partea I</title>
		<link>http://stagiari.ceata.org/george/2013/07/16/cum-sa-contruiesti-un-acvariu-partea-i/</link>
		<comments>http://stagiari.ceata.org/george/2013/07/16/cum-sa-contruiesti-un-acvariu-partea-i/#comments</comments>
		<pubDate>Tue, 16 Jul 2013 13:01:35 +0000</pubDate>
		<dc:creator>George Pîrlea</dc:creator>
				<category><![CDATA[Fără categorie]]></category>

		<guid isPermaLink="false">http://stagiari.ceata.org/george/?p=13</guid>
		<description><![CDATA[În urma discuțiilor pe care le-am purtat cu Tibi, am lăsat abandonat soluția pentru Acvariu bazată pe Zamboni în favoarea implementării uneia a noastre. Încă vom folosi Fireplace pentru interfață, doar partea de backend o vom scrie noi. Arhitectura Sistemul din spatele Acvariului este unul destul de complex, așa că merită explicat. Zilnic, un script [...]]]></description>
				<content:encoded><![CDATA[<p>În urma discuțiilor pe care le-am purtat cu Tibi, am lăsat abandonat soluția pentru Acvariu bazată pe <a href="https://github.com/mozilla/zamboni">Zamboni</a> în favoarea implementării uneia a noastre. Încă vom folosi <a href="https://github.com/mozilla/fireplace/">Fireplace</a> pentru interfață, doar partea de backend o vom scrie noi.</p>
<h2>Arhitectura</h2>
<p>Sistemul din spatele Acvariului este unul destul de complex, așa că merită explicat.</p>
<p>Zilnic, un <em>script Python</em> (la care am lucrat astăzi) descarcă o arhivă cu toate aplicațiile disponibile în <a href="https://marketplace.firefox.com/">Firefox Marketplace</a> de la un URL de forma <code>https://marketplace.cdn.mozilla.net/dumped-apps/tarballs/YYYY-MM-DD.tgz</code></p>
<p>Acest script introduce informațiile privitoare la aplicații într-o <em>bază de date</em>. Având în vedere că fiecare dump zilnic de la Mozilla conține <em>toate</em> aplicațiile din Firefox Marketplace, va trebui să avem grijă să nu introducem o aplicație de mai multe ori în baza de date.</p>
<p>Nu toate aplicațiile din Firefox Marketplace sunt libere, așa că trebuiesc filtrate înainte de a fi afișate în Acvariu. Pentru aprobare ne folosim de o <em>interfață de administrare</em> scrisă tot în Python. Interfața comunică direct cu baza de date și permite afișarea aplicațiilor în funcție de anumite criterii (starea aplicației: <em>reviewed</em> sau <em>not reviewed</em>, tipul de aplicație: <em>hosted </em>sau <em>packaged</em> ș.a.)</p>
<p>După ce trec de procesul de filtrare, aplicațiile sunt marcate în baza de date ca fiind acceptate (libere) sau neacceptate (nelibere).</p>
<p>Fireplace nu poate să comunice direct cu baza de date (și nici nu ar trebui, având în vedere că e o aplicație Javascript ce rulează local, la fiecare client în parte), așa că trebuie să implementăm o aplicație Web ce furnizează <a href="http://firefox-marketplace-api.readthedocs.org/en/latest/index.html">API-ul Marketplace</a>, cu care Fireplace știe să comunice.</p>
<p>Din fericire, API-ul nu este deloc greoi și nu trebuie implementat în întregime. Spre exemplu, nu sunt necesare părțile legate de Payments, Submissions, Abuse și Accounts.</p>
<p><em>Furnizorul de API</em> este tot o aplicație Python, scrisă cu ajutorul framework-ului <a href="http://flask.pocoo.org/">Flask.</a> Acesta permite atașarea foarte ușoară de funcții la URL-uri, fiind astfel foarte potrivit pentru dezvoltarea de API-uri.</p>
<p>Ultima componentă, <em>interfața Fireplace</em>, comunică cu baza de date prin intermediul furnizorului de API și este singura aplicație cu care utilizatorii de rând ai Acvariului vor avea de-a face. Codul pentru Fireplace există deja și va trebui modificat doar minor, pentru a afișa licența aplicațiilor din Acvariu.</p>
<p>Ca să recapitulăm, avem:</p>
<ul>
<li>Baza de date</li>
<li>Scriptul ce descarcă dump-urile zilnice de la Mozilla și le adaugă în baza de date</li>
<li>Interfața de administrare și review</li>
<li>Furnizorul de API</li>
<li>Fireplace</li>
</ul>
<p>În articolele viitoare voi detalia fiecare componentă în parte.</p>
]]></content:encoded>
			<wfw:commentRss>http://stagiari.ceata.org/george/2013/07/16/cum-sa-contruiesti-un-acvariu-partea-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
