<?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>dat &#187; ajax</title>
	<atom:link href="http://dat.perdomani.net/category/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://dat.perdomani.net</link>
	<description>infastidito</description>
	<lastBuildDate>Tue, 27 Jul 2010 15:33:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Ajax, BlogBabel API e mostrare alcune statistiche sul proprio blog (o almeno tentare di)</title>
		<link>http://dat.perdomani.net/2007/07/23/ajax-blogbabel-api-e-mostrare-alcune-statistiche-sul-proprio-blog-o-almeno-tentare-di/</link>
		<comments>http://dat.perdomani.net/2007/07/23/ajax-blogbabel-api-e-mostrare-alcune-statistiche-sul-proprio-blog-o-almeno-tentare-di/#comments</comments>
		<pubDate>Mon, 23 Jul 2007 20:26:27 +0000</pubDate>
		<dc:creator>dat</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://dat.perdomani.net/2007/07/23/ajax-blogbabel-api-e-mostrare-alcune-statistiche-sul-proprio-blog-o-almeno-tentare-di/</guid>
		<description><![CDATA[Siccome oggi era giunta l&#8217;ora di iniziare a capire perché tutti considerano sto Web2.0 così ficco, mi sono messo a studiare Ajax (mattone fondamentale di tutto quello che è 2.0). Incidentalmente ho anche scoperto che BlogBabel ha rilasciato non molto tempo fa delle API (no, non gli insetti) pubbliche. Fondendo i due task assieme e [...]]]></description>
			<content:encoded><![CDATA[<p>Siccome oggi era giunta l&#8217;ora di iniziare a capire perché tutti considerano sto Web2.0 così ficco, mi sono messo a studiare <a href="http://it.wikipedia.org/wiki/AJAX" target="_blank">Ajax</a> (mattone fondamentale di tutto quello che è 2.0). Incidentalmente ho anche scoperto che <a href="http://it.blogbabel.com/blog/2007/06/22/habemus-api/" target="_blank">BlogBabel</a> ha rilasciato non molto tempo fa delle <a href="http://it.wikipedia.org/wiki/Application_programming_interface" target="_blank">API</a> (no, non gli insetti) pubbliche.</p>
<p>Fondendo i due task assieme e raschiando dal fondo del barile le mie (poche) capacità di programmazione ho deciso di <strong>aggiungere delle statistiche</strong> (una a dire il vero) di BlogBabel in questo blog (se apri la sidebar dovresti trovarla).</p>
<p>Ipotizzando che mi interessi solo la<strong> posizione generale</strong> nella classifica di BlogBabel (e voglia il risultato in formato testo) mi basta usare un URL del tipo <a href="http://it.blogbabel.com/api/v1/blog/dat;a=rank&amp;f=txt/" target="_blank">http://it.blogbabel.com/api/v1/blog/dat;a=rank&amp;f=txt/</a>.</p>
<p>La mia vena divulgativa si è appena esaurita e quindi vi sparo tra capo e collo tutto il codice javascript da mettere all&#8217;interno del campo <code>&lt;head&gt;</code> del vostro blog.</p>
<pre>
&lt;script type="text/javascript"&gt;

//mi creo il mio bell'oggetto
HttpRequestvar receiveReq = getXmlHttpRequestObject();

//da dove prendo i dati (questo te lo spiego più avanti nel post)
var url = "http://dat.perdomani.net/dat.txt";

function getXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
    return new XMLHttpRequest(); // Se sei uno bravo che non usa IE
 } else if(window.ActiveXObject) {
    return new ActiveXObject("Microsoft.XMLHTTP"); // Se non sei bravo
 } else {
    document.getElementById("blogbabel").innerHTML = "(passa a firefox se vuoi saperlo)"; //Se sei vecchio
 }
}

function  myBlogBabelPosition() {
 //Se l'XmlHttpRequest si degna di darci attenzione
 if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
 //Voglio una get asincrona dove ti dico io
   receiveReq.open("GET", url, true);
   //Appena sei pronto avvertimi che ti dico cosa fare
   receiveReq.onreadystatechange = handleRequest;
   //Speriamo non si perda per strada
   receiveReq.send(null);
 }

}

function handleRequest(){ if(receiveReq.readyState == 4){
  if(receiveReq.status == 200){
   //Scrivo la posizione
   document.getElementById("blogbabel").innerHTML = receiveReq.responseText;
  }
 }
}</pre>
<p>A quanti, leggendo il codice, hanno subito storto il naso e mi avranno, con gran probabilità dato del deficiente, vorrei puntualizzare che le mie conoscenze di javascript sono evidentemente limitatissime e che, essendo io persona gentile e dotata di buone maniere, scarico la statistica blogbabel sul mio server (con un <a href="http://en.wikipedia.org/wiki/Crontab" target="_blank">cronjob</a> del tipo <code>0 */6 * * * wget -O dovelometto dadoveloprendo</code>) ogni 6 ore. Evito così che OGNI pagina servita dal mio blog vada a fare una richiesta al server di BlogBabel (spero apprezzino la gentilezza) per una statistica che in fin dei conti cambia una volta al giorno.</p>
<p>Gli ultimi passi per far funzionare l&#8217;accrocchio sono quello di aggiungere  l&#8217;attributo  <em>onload=&#8221;myBlogBabelPosition();&#8221;</em> al tag <em>body</em> e, da qualche parte nella pagina, uno <em>span</em> con id &#8220;<em>blogbabel</em>&#8221; e senza testo tra il tag di apertura e chiusura.</p>
<p><strong>Chissà se quello che ho fatto è il modo corretto di pensare Ajax e, ancor più importante,  se non espongo il blog a problemi di sicurezza &#8230;</strong></p>
<p><em>Chiaramente se vi interessa avere le statistiche nel vostro blog vi consiglio di usare il plugin di <a href="http://www.undolog.com/2007/05/22/blogbabel-rank-wordpress-plugin/#comment-329" target="_blank">undolog</a></em><em> o il nuovissimo di <a href="http://www.dreamsworld.it/emanuele/2007-07-23/wordpress-plugin-blogbabel-rank-plus/" target="_blank">P|xeL</a> o quello più nuovissimo ancora di <a href="http://www.undolog.com/2007/07/24/blogbabel-api-finalmente-la-beta/" target="_blank">undolog</a> (ragazzi adesso basta però <img src='http://dat.perdomani.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  (i plugins sono per wordpress ma facilmente portabili ad altre piattaforme, credo).</em></p>
<p><strong>UPDATE</strong>: certo, sono cosciente del fatto che essendo le informazioni statiche e per giunta salvate sul mio server non serviva proprio scomodare ajax, però mi piaceva fare così e così ho fatto =) (che poi, a dire il vero, non ho neanche idea di come aprire un file da php &#8230;)</p>
<blockquote><p><strong>UPDATE2</strong>: se non volete usare il mio <em>bel</em> metodo con il crontab e volete, invece, <strike>rompere i coglioni al server di BlogBabel</strike> i dati aggiornati ad OGNI caricamento di OGNI pagina per OGNI visitatore del vostro blog allora usate codice tipo questo:</p>
<pre>
&lt;span id="bb"&gt;&lt;/span&gt;

&lt;script type="text/javascript"&gt;
function show_rank(o){
  document.getElementById("bb").innerHTML = o.rank;
}
&lt;/script&gt;
&lt;script type="text/javascript" src="http://it.blogbabel.com/api/v1/blog/dat;a=rank&amp;f=js&amp;c=show_rank/"&gt;&lt;/script&gt;</pre>
<p>sparso come il prezzemolo un po&#8217; qua e un po&#8217; là nella pagina.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://dat.perdomani.net/2007/07/23/ajax-blogbabel-api-e-mostrare-alcune-statistiche-sul-proprio-blog-o-almeno-tentare-di/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
