<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Redsend Blog | Programmazione, web, open source, linux e apple</title>
	
	<link>http://www.redsend.org</link>
	<description />
	<lastBuildDate>Sat, 07 Apr 2012 16:18:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Redsend" /><feedburner:info uri="redsend" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>MySql: tabelle con TIMESTAMP multipli e CURRENT_TIMESTAMP()</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/nOeT2_psqrY/</link>
		<comments>http://www.redsend.org/2012/04/07/mysql-tabelle-con-timestamp-multipli-e-current_timestamp/#comments</comments>
		<pubDate>Sat, 07 Apr 2012 16:16:22 +0000</pubDate>
		<dc:creator>redsend</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2321</guid>
		<description><![CDATA[In ogni database che si rispetti :) c'è sempre un timestamp da inizializzare con CURRENT_TIMESTAMP. Mysql non permette di avere più campi TIMESTAMP impostati su CURRENT_TIMESTAMP. In questo articolo scoprirete come aggirare il problema.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F04%2F07%2Fmysql-tabelle-con-timestamp-multipli-e-current_timestamp%2F' data-shr_title='MySql%3A+tabelle+con+TIMESTAMP+multipli+e+CURRENT_TIMESTAMP%28%29'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F04%2F07%2Fmysql-tabelle-con-timestamp-multipli-e-current_timestamp%2F' data-shr_title='MySql%3A+tabelle+con+TIMESTAMP+multipli+e+CURRENT_TIMESTAMP%28%29'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F04%2F07%2Fmysql-tabelle-con-timestamp-multipli-e-current_timestamp%2F' data-shr_title='MySql%3A+tabelle+con+TIMESTAMP+multipli+e+CURRENT_TIMESTAMP%28%29'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>In ogni database che si rispetti :) c&#8217;è sempre un timestamp da inizializzare con CURRENT_TIMESTAMP. Se state leggendo questo articolo e siete riusciti a non farvi esplodere il cervello leggendo il titolo, immagino che sappiate cosa è un timestamp e cosa significhi CURRENT_TIMESTAMP, quindi passo subito al sodo.</p>
<p>MySql non permette di avere nella stessa tabelle 2 o più campi di tipo TIMESTAMP che utilizzino la funzione CURRENT_TIMESTAMP(). Il motivo lo ignoro completamente ma di seguito vi mostro un &#8220;workaround&#8221; che permetta di aggirare il problema con una soluzione discretamente elegante :) (sono fiero di me stesso&#8230;)</p>
<p>Per aggirare il problema useremo i TRIGGER, leggetevi la documentazione per approfondire (<a href="http://dev.mysql.com/doc/refman/5.6/en/create-trigger.html" target="_blank">CREATE TRIGGER Syntax</a>), in poche parole i trigger vi consentono di eseguire dei pezzi di codice prima e/o dopo una insert o un update su una tabella. A questo punto la soluzione si comincia già ad intravedere, infatti andremo ad utilizzare proprio questi trigger, eseguiti prima di un update per impostare i timestamp che ci occorrono con la funzione CURRENT_TIMESTAMP(). Ecco il codice:</p>
<pre class="brush: sql; title: ; notranslate">
DROP TRIGGER IF EXISTS `set_timestamp`//
CREATE TRIGGER `set_timestamp` BEFORE UPDATE ON `nome_tabella`
 FOR EACH ROW BEGIN
  IF NEW.primo_campo=1 THEN
   SET NEW.primo_campo_timestamp=CURRENT_TIMESTAMP();
  END IF;
  IF NEW.secondo_campo=1 THEN
   SET NEW.secondo_campo_timestamp=CURRENT_TIMESTAMP();
  END IF;
 END
//
</pre>
<p>Come potete notare nel body del trigger, ho anche associato l&#8217;aggiornamento del campo &#8220;primo_campo_timestamp&#8221; ad un flag presente nella tabella: &#8220;primo_campo&#8221;. Poi sta a voi adattare questa tecnica al vostro database.</p>
<div class="shr-publisher-2321"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F04%2F07%2Fmysql-tabelle-con-timestamp-multipli-e-current_timestamp%2F' data-shr_title='MySql%3A+tabelle+con+TIMESTAMP+multipli+e+CURRENT_TIMESTAMP%28%29'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F04%2F07%2Fmysql-tabelle-con-timestamp-multipli-e-current_timestamp%2F' data-shr_title='MySql%3A+tabelle+con+TIMESTAMP+multipli+e+CURRENT_TIMESTAMP%28%29'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F04%2F07%2Fmysql-tabelle-con-timestamp-multipli-e-current_timestamp%2F' data-shr_title='MySql%3A+tabelle+con+TIMESTAMP+multipli+e+CURRENT_TIMESTAMP%28%29'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/nOeT2_psqrY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2012/04/07/mysql-tabelle-con-timestamp-multipli-e-current_timestamp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2012/04/07/mysql-tabelle-con-timestamp-multipli-e-current_timestamp/</feedburner:origLink></item>
		<item>
		<title>4 servizi di password sharing per evitare le registrazioni</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/UGyeaTnPqfk/</link>
		<comments>http://www.redsend.org/2012/03/18/4-servizi-di-password-sharing-per-evitare-le-registrazioni/#comments</comments>
		<pubDate>Sun, 18 Mar 2012 19:30:39 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Nel web]]></category>
		<category><![CDATA[bugmenot]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[registrazione]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2314</guid>
		<description><![CDATA[Se siete stanchi di dovervi registrare ogni giorno a nuovi servizi web e avete accumulato decine di password che non ricordate più, questo è il post che fa per voi. Forse non lo sapete ma ci sono dei siti che consentono di condividere le password dei propri account proprio per evitare di effettuare continue registrazioni. Questi servizi sono utilissimi anche per testare determinati siti, prima di decidere se registrarvi con i vostri dati reali e [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F18%2F4-servizi-di-password-sharing-per-evitare-le-registrazioni%2F' data-shr_title='4+servizi+di+password+sharing+per+evitare+le+registrazioni'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F18%2F4-servizi-di-password-sharing-per-evitare-le-registrazioni%2F' data-shr_title='4+servizi+di+password+sharing+per+evitare+le+registrazioni'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F18%2F4-servizi-di-password-sharing-per-evitare-le-registrazioni%2F' data-shr_title='4+servizi+di+password+sharing+per+evitare+le+registrazioni'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Se siete stanchi di dovervi registrare ogni giorno a nuovi servizi web e avete accumulato decine di password che non ricordate più, questo è il post che fa per voi. Forse non lo sapete ma ci sono dei siti che consentono di condividere le password dei propri account proprio per evitare di effettuare continue registrazioni.<br />
Questi servizi sono utilissimi anche per testare determinati siti, prima di decidere se registrarvi con i vostri dati reali e dargli la vostra email.</p>
<h3>BugMeNot</h3>
<p>Probabilmente il più famoso di tutti. <a href="http://www.bugmenot.com/" target="_blank">BugMeNot</a> è stato il primo servizio di password sharing ad apparire in giro. <a href="http://www.redsend.org/2008/02/18/evitare-le-registrazioni-sui-siti/" target="_blank">Ve ne parlai</a>, sempre su questo blog, ben 4 anni fa. Forse il più completo in circolazione, anche se molti degli account presenti sono stati bloccati o disattivati. Il sito offre un utile sistema per segnalare, appunto, account non più funzionanti. Esiste anche una <a href="http://www.redsend.org/2008/07/23/comoda-estensione-di-firefox-per-sfruttare-bugmenot/" target="_blank">comodissima estensione per firefox</a> che vi riempie i campi di login in automatico appena trova un account disponibile.</p>
<h3>ShareYourPass</h3>
<p>Il più &#8220;2.0&#8243; tra quelli che ho provato. <a href="http://shareyourpass.com/Site/hautelook.com" target="_blank">ShareYourPass</a> offre, come BugMeNot, un sistema di segnalazione degli account non più funzionanti e, inoltre, mette a disposizione un box di commenti sotto ogni account condiviso.</p>
<h3>Login2</h3>
<p>Molto semplice e scarno dal punto di vista grafico. <a href="http://login2.me" target="_blank">Login2</a>, a differenza degli altri, mostra un solo account per volta e bisogna cliccare il pulsante &#8220;not working, show more&#8221; per farsi suggerire un altro account per un determinato sito. Non offre nessun servizio di segnalazione degli account non funzionanti ma è l&#8217;unico ad essere disponibile in altre lingue oltre l&#8217;inglese.</p>
<h3>Bypass</h3>
<p><a href="http://bypass.rd.to:41" target="_blank">Bypass</a> è l&#8217;ultimo di cui sono venuto a conoscenza. Sembra avere un database ben fornito ma negli ultimi giorni il sito ha qualche problema risultando lentissimo se non addirittura inaccessibile.</p>
<p>La prossima volta che vi troverete di fronte ad un sito dove sarà necessario registrarsi fatevi una capatina su questi servizi a vedere se c&#8217;è già un account disponibile!</p>
<div class="shr-publisher-2314"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F18%2F4-servizi-di-password-sharing-per-evitare-le-registrazioni%2F' data-shr_title='4+servizi+di+password+sharing+per+evitare+le+registrazioni'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F18%2F4-servizi-di-password-sharing-per-evitare-le-registrazioni%2F' data-shr_title='4+servizi+di+password+sharing+per+evitare+le+registrazioni'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F18%2F4-servizi-di-password-sharing-per-evitare-le-registrazioni%2F' data-shr_title='4+servizi+di+password+sharing+per+evitare+le+registrazioni'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/UGyeaTnPqfk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2012/03/18/4-servizi-di-password-sharing-per-evitare-le-registrazioni/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2012/03/18/4-servizi-di-password-sharing-per-evitare-le-registrazioni/</feedburner:origLink></item>
		<item>
		<title>5 risorse per iniziare a programmare in NodeJS</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/hX7C2POR9mU/</link>
		<comments>http://www.redsend.org/2012/03/17/5-risorse-per-iniziare-a-programmare-in-nodejs/#comments</comments>
		<pubDate>Sat, 17 Mar 2012 10:55:32 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Nel web]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[v8]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2302</guid>
		<description><![CDATA[NodeJS è un framework che consente di programmare in javascript lato server. Questa sua peculiarità ha fatto si che si diffondesse velocemente negli ultimi anni e che diventasse uno dei framework più utilizzati per lo sviluppo di applicazioni real-time e distribuite. In questo post non scenderò in dettaglio su cosa è NodeJS, come è realizzato e come si utilizza. In rete esiste tantissima documentazione e, a tal proposito, ho selezionato quelli che sono, secondo me, [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F17%2F5-risorse-per-iniziare-a-programmare-in-nodejs%2F' data-shr_title='5+risorse+per+iniziare+a+programmare+in+NodeJS'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F17%2F5-risorse-per-iniziare-a-programmare-in-nodejs%2F' data-shr_title='5+risorse+per+iniziare+a+programmare+in+NodeJS'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F17%2F5-risorse-per-iniziare-a-programmare-in-nodejs%2F' data-shr_title='5+risorse+per+iniziare+a+programmare+in+NodeJS'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p><strong><a href="http://nodejs.org/" target="_blank">NodeJS</a> è un framework che consente di programmare in javascript lato server</strong>. Questa sua peculiarità ha fatto si che si diffondesse velocemente negli ultimi anni e che diventasse uno dei framework più utilizzati per lo sviluppo di applicazioni real-time e distribuite.<br />
In questo post non scenderò in dettaglio su cosa è NodeJS, come è realizzato e come si utilizza. In rete esiste tantissima documentazione e, a tal proposito, ho selezionato quelli che sono, secondo me, le 5 risorse migliori per chi si avvicina a questo framework e vuole <strong>iniziare a sviluppare con NodeJS</strong>.</p>
<h3>1. Documentazione ufficiale</h3>
<p>La <a href="http://nodejs.org/api/all.html" target="_blank">documentazione ufficiale di NodeJS</a> è ottima. Veramente completa e ben fatta, ricca di esempi e semplice da leggere. L&#8217;unica pecca, probabilmente, è la mancanza di un capitolo introduttivo per spiegare, ai nuovi arrivati, in cosa consiste NodeJS, come è strutturato e da dove iniziare.</p>
<h3>2. The Node Beginner Book</h3>
<p>Quello che manca nella documentazione ufficiale è presente invece in questo utilissimo tutorial. <a href="http://www.nodebeginner.org/" target="_blank">The Node Beginner Book</a> si pone come obiettivo di far capire, innanzitutto, cosa è NodeJS e cosa cambia rispetto al &#8220;Javascript tradizionale&#8221; per poi scendere in dettaglio, su argomenti più avanzati, nei capitoli successivi.</p>
<h3>3. Mixu&#8217;s Node Book</h3>
<p><a href="http://book.mixu.net/" target="_blank">Questo ebook/tutorial</a> è un giusto compromesso tra i primi due link. Ci sono un bel po&#8217; di capitoli introduttivi che consentono di rinfrescarsi la memoria su Javascript e studiare quei componenti molto usati nel framework, per poi passare a una seconda parte strettamente legata a NodeJS con l&#8217;approfondimento di alcune librerie e pattern.</p>
<h3>4. Ho To Node</h3>
<p><a href="http://howtonode.org/" target="_blank">How To Node</a> non è un tutorial o un ebook. Si tratta di una community che scrive post di esempi pratici che utilizzano NodeJS. Non è indicato per una lettura &#8220;dall&#8217;inizio alla fine&#8221; come un libro, ma andrebbe consultato spesso perché il pezzo di codice che stai per scrivere è, molto probabilmente già presente nel loro archivio.</p>
<h3>5. Node in pillole</h3>
<p>Infine vi segnalo questo progetto tutto italiano, <a href="http://nodeinpillole.com/" target="_blank">Node in pillole</a> che, oltre ad essere una delle poche fonti italiane sull&#8217;argomento, offre una serie di screencast (video tutorial). Se vi scocciate di leggere tanta documentazione, questo è il sito che fa per voi. Nato da poco, è ideale per chi si avvicina adesso al mondo di NodeJS: per ora gli argomenti trattati sono tutti entry-level.</p>
<div class="shr-publisher-2302"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F17%2F5-risorse-per-iniziare-a-programmare-in-nodejs%2F' data-shr_title='5+risorse+per+iniziare+a+programmare+in+NodeJS'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F17%2F5-risorse-per-iniziare-a-programmare-in-nodejs%2F' data-shr_title='5+risorse+per+iniziare+a+programmare+in+NodeJS'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F17%2F5-risorse-per-iniziare-a-programmare-in-nodejs%2F' data-shr_title='5+risorse+per+iniziare+a+programmare+in+NodeJS'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/hX7C2POR9mU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2012/03/17/5-risorse-per-iniziare-a-programmare-in-nodejs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2012/03/17/5-risorse-per-iniziare-a-programmare-in-nodejs/</feedburner:origLink></item>
		<item>
		<title>Wondershare MobileGo</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/jAc7GLm1MYw/</link>
		<comments>http://www.redsend.org/2012/03/08/wondershare-mobilego/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 14:43:18 +0000</pubDate>
		<dc:creator>robyb</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2284</guid>
		<description><![CDATA[Wondershare MobileGo è un programma gratuito che ti permette di gestire tutti i file multimediali memorizzati sul dispositivo Android. Consente di gestire i file come: i tuoi contatti, musica, film, SMS, foto, applicazioni multimediali (come ad esempio la conversione), il trasferimento dei dati, gestione dei contatti e il backup / ripristino tra il PC e telefono Android. L&#8217;uso è molto semplice. Per il download clicca qui.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F08%2Fwondershare-mobilego%2F' data-shr_title='Wondershare+MobileGo'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F08%2Fwondershare-mobilego%2F' data-shr_title='Wondershare+MobileGo'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F08%2Fwondershare-mobilego%2F' data-shr_title='Wondershare+MobileGo'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Wondershare MobileGo è un programma gratuito che ti permette di gestire tutti i file multimediali memorizzati sul dispositivo Android. Consente di gestire i file come: i tuoi contatti, musica, film, SMS, foto, applicazioni multimediali (come ad esempio la conversione), il trasferimento dei dati, gestione dei contatti e il backup / ripristino tra il PC e telefono Android.</p>
<p>L&#8217;uso è molto semplice. Per il download clicca <a href="http://sempresoftware.myblog.it/archive/2011/03/19/wondershare-mobilego-0-2-0.html">qui</a>.</p>
<p><img class="aligncenter size-medium wp-image-2297" title="Wondershare-MobileGo-screenshot" src="http://www.redsend.org/wp-content/uploads/2012/03/Wondershare-MobileGo-screenshot-575x394.jpg" alt="" width="575" height="394" /></p>
<div class="shr-publisher-2284"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F08%2Fwondershare-mobilego%2F' data-shr_title='Wondershare+MobileGo'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F08%2Fwondershare-mobilego%2F' data-shr_title='Wondershare+MobileGo'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F08%2Fwondershare-mobilego%2F' data-shr_title='Wondershare+MobileGo'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/jAc7GLm1MYw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2012/03/08/wondershare-mobilego/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2012/03/08/wondershare-mobilego/</feedburner:origLink></item>
		<item>
		<title>Ubuntu for Android, un pc nello smartphone</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/voHtAkRmvyk/</link>
		<comments>http://www.redsend.org/2012/03/06/ubuntu-for-android-un-pc-nello-smartphone/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 10:38:29 +0000</pubDate>
		<dc:creator>robyb</dc:creator>
				<category><![CDATA[Oggi ho letto]]></category>
		<category><![CDATA[Sistemi Operativi]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[smartphone]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[wired]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2274</guid>
		<description><![CDATA[Al Mobile World Congress grande attenzione per Canonical, che ha realizzato una versione del proprio sistema operativo che permette di usare Android come un computer. Barcellona &#8211; In uno smartphone dual core c’è molto di più di quello che serve. Ce n’è abbastanza per trasformare il telefono in un computer portatile, aggiungendo tastiera, mouse e monitor. A credere in questo è Canonical, l’azienda che produce e distribuisce Ubuntu, sistema operativo Gnu / Linux fra i [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F06%2Fubuntu-for-android-un-pc-nello-smartphone%2F' data-shr_title='Ubuntu+for+Android%2C+un+pc+nello+smartphone'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F06%2Fubuntu-for-android-un-pc-nello-smartphone%2F' data-shr_title='Ubuntu+for+Android%2C+un+pc+nello+smartphone'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F06%2Fubuntu-for-android-un-pc-nello-smartphone%2F' data-shr_title='Ubuntu+for+Android%2C+un+pc+nello+smartphone'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Al Mobile World Congress grande attenzione per Canonical, che ha realizzato una versione del proprio sistema operativo che permette di usare Android come un computer.<br />
Barcellona &#8211; In uno smartphone dual core c’è molto di più di quello che serve. Ce n’è abbastanza per trasformare il telefono in un computer portatile, aggiungendo tastiera, mouse e monitor. A credere in questo è Canonical, l’azienda che produce e distribuisce Ubuntu, sistema operativo Gnu / Linux fra i più diffusi. </p>
<p>Ubuntu for Android è una nuova versione del sistema operativo che può essere installata su un qualsiasi dispositivo Android dual-core con Gingerbread o versioni superiori, quasi come un’app. Ubuntu condivide lo stesso kernel Linux con Android. Annunciato nei giorni scorsi, è stato presentato al Mobile World Congress ed è in prova allo stand Ubuntu nella Hall 7: una volta avviato, basta inserire lo smartphone in una dock per collegarlo a un monitor e automaticamente il sistema riconosce il nuovo schermo, avviando la tipica interfaccia Unity di Ubuntu. </p>
<p>Le applicazioni presenti di default sono: browser Chromium, Google Calendar, Google Docs, Mozilla Thunderbird (per la posta), Gwibber (per i social network come Facebook e Twitter), VLC, PiTiVi (per l’editing video), Ubuntu Photo Gallery (editing foto) e Android Dialer per eseguire telefonate e ricevere sms direttamente sul computer. È possibile integrare anche l’ Ubuntu Tv e utilizzare sistemi di virtualizzazione come Citrix e VMWare e applicazioni Adobe. Secondo Canonical grazie alle nuove reti Lte l’uso di queste soluzioni, così come Google Docs e altri servizi on line, dovrebbe essere sempre maggiore, specie per aziende che puntano sulla mobilità dei propri dipendenti. </p>
<p>L’integrazione fra telefono e computer è totale: il primo può quindi essere gestito direttamente dal secondo. Rubrica, mail, foto e video non hanno così più bisogno di essere sincronizzati. Stesso discorso vale per preferiti, history e tab aperte del browser, immediatamente riprodotte sul pc. E non cambia per le varie password, l’attività dei social network e via dicendo: le informazioni sono condivise dai due sistemi. </p>
<p>Non si tratta di una novità assoluta. L’uso di una dock per accedere a software presenti sullo smartphone attraverso un monitor esterno era già alla base del Motorola Atrix. Non a caso Canonical per una prima dimostrazione di Ubuntu for Android ha utilizzato proprio un Atrix 2. Inoltre, i rumor sulla versione di Android 5.0 Jelly Bean danno l’opzione l’opzione per avviare un altro sistema su monitor esterni come integrata nel sistema. In quel caso però il sistema operativo per il computer sarebbe Chrome OS.<br />
Ubuntu for Android non è al momento disponibile: Canonical fa sapere di essere nelle fasi conclusive di alcune trattative per installare il proprio sistema sui dispositivi mobili in uscita a fine anno. Le specifiche hardware richieste agli smartphone per supportare Ubuntu for Android non sono eccessive:una cpu dual-core da un gigahertz e 512 MB di ram, con due gigabyte di memoria per salvare l’immagine di Ubuntu, collegamento usb e hdmi. La possibilità di sfruttare la rete Lte è un’altra delle funzioni chiave.</p>
<p>Notizia letta <a href="http://gadget.wired.it/news/cellulari/2012/03/01/canonical-ubuntu-android-smartphone-13283.html">qui</a>.</p>
<div class="shr-publisher-2274"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F06%2Fubuntu-for-android-un-pc-nello-smartphone%2F' data-shr_title='Ubuntu+for+Android%2C+un+pc+nello+smartphone'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F06%2Fubuntu-for-android-un-pc-nello-smartphone%2F' data-shr_title='Ubuntu+for+Android%2C+un+pc+nello+smartphone'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F06%2Fubuntu-for-android-un-pc-nello-smartphone%2F' data-shr_title='Ubuntu+for+Android%2C+un+pc+nello+smartphone'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/voHtAkRmvyk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2012/03/06/ubuntu-for-android-un-pc-nello-smartphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2012/03/06/ubuntu-for-android-un-pc-nello-smartphone/</feedburner:origLink></item>
		<item>
		<title>Caricare su Youtube senza limiti di durata</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/d-DmuVTqoWU/</link>
		<comments>http://www.redsend.org/2012/03/05/caricare-su-youtube-senza-limiti-di-durata/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 13:20:33 +0000</pubDate>
		<dc:creator>robyb</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2254</guid>
		<description><![CDATA[E' possibile caricare su Youtube video più lunghi di 15 minuti. E' possibile fare ciò semplicemente verificando su Youtube il proprio numero di telefono cellulare.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F05%2Fcaricare-su-youtube-senza-limiti-di-durata%2F' data-shr_title='Caricare+su+Youtube+senza+limiti+di+durata'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F05%2Fcaricare-su-youtube-senza-limiti-di-durata%2F' data-shr_title='Caricare+su+Youtube+senza+limiti+di+durata'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F05%2Fcaricare-su-youtube-senza-limiti-di-durata%2F' data-shr_title='Caricare+su+Youtube+senza+limiti+di+durata'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p style="text-align: left;">E&#8217; possibile caricare su Youtube video più lunghi di 15 minuti. E&#8217; possibile fare ciò semplicemente verificando su Youtube il proprio numero di telefono cellulare.</p>
<p style="text-align: left;">Il numero di cellulare, su internet, non andrebbe diffuso ma è richiesto come strumento di verifica dell&#8217;identità.<br />
La verifica telefonica è gratuita e serve semplicemente ad evitare allo stesso utente la registrazione di più account. Occorre andare in questa <a href="www.youtube.com/my_videos_upload_verify">pagina</a> di verifica, scegliere come paese l&#8217;Italia, scrivere il proprio numero di telefono cellulare e premere su Invia.</p>
<p style="text-align: left;">Dopo pochissimo tempo dovrebbe arrivare un SMS al telefono con un codice a 6 cifre da inserire nello spazio della pagina di conferma e premere sul tasto Verifica.</p>
<p style="text-align: left;">Alla fine, su Youtube, nella pagina di Upload dei video, si dovrebbe leggere la scritta: &#8220;Congratulazioni. Ora il tuo account è abilitato per i caricamenti superiori a 15 minuti. Fai clic sul pulsante Carica qui di seguito per selezionare un video&#8221;.</p>
<p style="text-align: left;">Le limitazioni riguardano la grandezza del file che non deve essere superiore ai 20 GB e del video si devono possedere i diritti di diffusione.</p>
<p style="text-align: left;">YouTube vieta tassativamente, pena la sospensione dell&#8217;account, la pubblicazione di video in violazione del copyright. YouTube resta sempre il top dei siti di video sharing anche perchè sempre gratuito (Vimeo si paga se si vuol caricare un video lungo) e molto veloce nei caricamenti.</p>
<div class="shr-publisher-2254"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F05%2Fcaricare-su-youtube-senza-limiti-di-durata%2F' data-shr_title='Caricare+su+Youtube+senza+limiti+di+durata'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F05%2Fcaricare-su-youtube-senza-limiti-di-durata%2F' data-shr_title='Caricare+su+Youtube+senza+limiti+di+durata'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F03%2F05%2Fcaricare-su-youtube-senza-limiti-di-durata%2F' data-shr_title='Caricare+su+Youtube+senza+limiti+di+durata'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/d-DmuVTqoWU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2012/03/05/caricare-su-youtube-senza-limiti-di-durata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2012/03/05/caricare-su-youtube-senza-limiti-di-durata/</feedburner:origLink></item>
		<item>
		<title>Autenticare ejabberd con mysql</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/MXl7rjnNYk8/</link>
		<comments>http://www.redsend.org/2012/02/19/autenticare-ejabberd-con-mysql/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 21:09:28 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[ejabberd]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[mnesia]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2249</guid>
		<description><![CDATA[Nel post precedente abbiamo visto come installare e configurare il server XMPP ejabberd. Adesso vediamo come utilizzare ejabberd con mysql per effettuare l&#8217;autenticazione degli utenti. Di default ejabberd utilizza un database interno di tipo mnesia, anch&#8217;esso scritto in erlang. Se volete utilizzare un vostro database mysql è necessario utilizzare uno script di autenticazione esterna. 1. Scaricare e installare il modulo mysql Come prima cosa bisogna scaricare il modulo mysql con il comando: svn co https://svn.process-one.net/ejabberd-modules [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F02%2F19%2Fautenticare-ejabberd-con-mysql%2F' data-shr_title='Autenticare+ejabberd+con+mysql'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F02%2F19%2Fautenticare-ejabberd-con-mysql%2F' data-shr_title='Autenticare+ejabberd+con+mysql'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F02%2F19%2Fautenticare-ejabberd-con-mysql%2F' data-shr_title='Autenticare+ejabberd+con+mysql'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Nel post precedente abbiamo visto come installare e configurare il server XMPP <a href="http://www.ejabberd.im/" target="_blank">ejabberd</a>. Adesso vediamo <strong>come utilizzare ejabberd con mysql</strong> per effettuare l&#8217;autenticazione degli utenti.<br />
Di default ejabberd utilizza un database interno di tipo <a href="http://en.wikipedia.org/wiki/Mnesia" target="_blank">mnesia</a>, anch&#8217;esso scritto in erlang. Se volete utilizzare un vostro database mysql è necessario utilizzare uno script di autenticazione esterna.</p>
<h3>1. Scaricare e installare il modulo mysql</h3>
<p>Come prima cosa bisogna scaricare il modulo mysql con il comando:</p>
<blockquote><p>svn co https://svn.process-one.net/ejabberd-modules</p></blockquote>
<p>Poi spostiamoci nella cartella appena scaricata e compiliamo il modulo:</p>
<blockquote><p>cd ejabberd-modules/mysql/trunk/<br />
./build.sh</p></blockquote>
<p>Copiamo, infine, i file appena generati nella cartella di ejabberd, con il comando:</p>
<blockquote><p>sudo cp ebin/* /usr/lib/ejabberd/ebin/</p></blockquote>
<h3>2. Cambiare metodo di autenticazione</h3>
<p>Cercate nel file di configurazione (<em>che dovrebbe essere in /etc/ejabberd/ejabberd.cfg</em>) la voce <em>auth_method</em>. Commentate quella</p>
<blockquote><p>{auth_method, internal}</p></blockquote>
<p>e decommentate la voce:</p>
<blockquote><p>{auth_method, external}</p></blockquote>
<h3>3. Impostare lo script di autenticazione</h3>
<p>Subito sotto la voce <em>auth_method</em> ci dovrebbe essere la voce <em>extauth_program. </em>Se c&#8217;è modificatela, se non c&#8217;è aggiungetela in questo modo:</p>
<blockquote><p>{extauth_program, &#8220;/etc/ejabberd/MIOSCRIPT.php&#8221;}</p></blockquote>
<p>Dove al posto di MIOSCRIPT.php va indicato il vostro script di autenticazione.<br />
Lo script può essere scritto in qualsiasi linguaggio di programmazione. Ce ne sono alcuni disponibili sul <a href="http://www.ejabberd.im/extauth" target="_blank">sito ufficiale</a> già scritti in diversi linguaggi e per diversi framework.</p>
<p>&nbsp;</p>
<p>Finito!</p>
<div class="shr-publisher-2249"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F02%2F19%2Fautenticare-ejabberd-con-mysql%2F' data-shr_title='Autenticare+ejabberd+con+mysql'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F02%2F19%2Fautenticare-ejabberd-con-mysql%2F' data-shr_title='Autenticare+ejabberd+con+mysql'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F02%2F19%2Fautenticare-ejabberd-con-mysql%2F' data-shr_title='Autenticare+ejabberd+con+mysql'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/MXl7rjnNYk8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2012/02/19/autenticare-ejabberd-con-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2012/02/19/autenticare-ejabberd-con-mysql/</feedburner:origLink></item>
		<item>
		<title>Installare e configurare ejabberd su ubuntu server</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/qvj12UD6Qk0/</link>
		<comments>http://www.redsend.org/2012/01/30/installare-e-configurare-ejabberd-su-ubuntu-server/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 22:30:32 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[ejabberd]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2169</guid>
		<description><![CDATA[In questo tutorial vedremo come installare e configurare ejabberd su ubuntu server. La versione di ubuntu a cui faccio riferimeno è la 10.04 ma la maggior parte degli step dovrebbe funzionare anche su altre versioni di ubuntu, nonché sulle macchine debian. Ejabberd è uno dei server XMPP più famosi e più utilizzati in circolazione. Nonostante questo la documentazione a riguardo (soprattutto in italiano) è scarna se non proprio inesistente. 1. Preparare il sistema Per sicurezza, [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F01%2F30%2Finstallare-e-configurare-ejabberd-su-ubuntu-server%2F' data-shr_title='Installare+e+configurare+ejabberd+su+ubuntu+server'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F01%2F30%2Finstallare-e-configurare-ejabberd-su-ubuntu-server%2F' data-shr_title='Installare+e+configurare+ejabberd+su+ubuntu+server'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F01%2F30%2Finstallare-e-configurare-ejabberd-su-ubuntu-server%2F' data-shr_title='Installare+e+configurare+ejabberd+su+ubuntu+server'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>In questo tutorial vedremo come installare e configurare <strong><a href="http://www.ejabberd.im/" target="_blank">ejabberd</a></strong> su <strong>ubuntu server</strong>. La versione di ubuntu a cui faccio riferimeno è la 10.04 ma la maggior parte degli step dovrebbe funzionare anche su altre versioni di ubuntu, nonché sulle macchine debian.</p>
<p>Ejabberd è uno dei server <strong><a href="http://it.wikipedia.org/wiki/XMPP" target="_blank">XMPP</a></strong> più famosi e più utilizzati in circolazione. Nonostante questo la documentazione a riguardo (soprattutto in italiano) è scarna se non proprio inesistente.</p>
<h3>1. Preparare il sistema</h3>
<p>Per sicurezza, prima di installare <em>ejabberd</em>, assicuriamoci che il sistema sia <strong>aggiornato</strong>. Eseguiamo, quindi, i due comandi:</p>
<blockquote><p>sudo apt-get update</p>
<p>sudo apt-ge upgrade</p></blockquote>
<h3>2. Installare ejabberd</h3>
<p>Ora possiamo procedere con l&#8217;installazione di <em>ejabberd</em> direttamente dai repository di ubuntu, con il comando:</p>
<blockquote><p>sudo apt-get install ejabberd</p></blockquote>
<p>Molto probabilmente l&#8217;installazione si porterà dietro un bel po&#8217; di <strong>pacchetti aggiuntivi</strong>, soprattutto quelli legati al linguaggio <a href="http://it.wikipedia.org/wiki/Erlang_%28linguaggio%29" target="_blank">erlang</a>, con il quale <em>ejabberd</em> è scritto.</p>
<h3>3. Qualche test veloce</h3>
<p>Una volta completata l&#8217;installazione, possiamo gestire il <strong>server ejabberd</strong> con il comando:</p>
<blockquote><p>sudo /etc/init.d/ejabberd</p></blockquote>
<p>Che può prendere i parametri <em>stop</em>, <em>start</em> o <em>restart</em> in base all&#8217;operazione che vogliamo compiere.<br />
Inoltre, è possibile controllare se il server è avviato o meno, controllando la presenza del processo <em>beam</em> tra quelli in esecuzione, con il comando:</p>
<blockquote><p>ps -e | grep beam</p></blockquote>
<h3>4. Configurazione dell&#8217;host</h3>
<p>Il <strong>file di configurazione</strong> di ejabberd si trova a questo path:</p>
<blockquote><p>/etc/ejabberd/ejabberd.cfg</p></blockquote>
<p>Aprite questo file con il vostro editor di testo preferito (ricordandovi di essere root) e iniziamo col modificarlo.<br />
<strong>Fate attenzione</strong>, questo file è scritto in una sintassi terribile e rischiate di sputtanare tutto dimenticandovi una virgola o una parentesi.</p>
<p>La prima cosa da modificare è l&#8217;<strong>host</strong>. Portatevi quindi nella sezione &#8220;<em>Hostname</em>&#8221; dove troverete già l&#8217;host <em>localhost</em> inserito. Se avete intenzione di fare dei test in locale potete lasciarlo, altrimenti cancellatelo.<br />
In questa sezione va inserito l&#8217;host del sito sul quale girerà il server <em>ejabberd</em>. Supponendo che stiate mettendo in piedi una chat per &#8220;<em>www.miosito.it</em>&#8221; dovrete inserire l&#8217;host miosito.it.</p>
<p>Una cosa <strong>importante</strong> (che nessuno dice) è che in questa sezione va indicato <strong>obbligatoriamente</strong> anche il nome host della macchina sulla quale il server risiede. Quindi, sempre supponendo che stiamo lavorando per il dominio &#8220;<em>miosito.it</em>&#8220;, se la macchina dove sta girando ubuntu si chiama &#8220;<em>miosito-serverweb</em>&#8221; dovremmo inserire nel file di configurazione questa riga:</p>
<blockquote><p>{hosts, ["localhost", "miosito-serverweb", "miosito.it"]}</p></blockquote>
<p>Se avete più domini (es. miosito.com, miosito.org) basta semplicemente aggiungerli sulla stessa riga.</p>
<h3>5. Configurazione delle porte</h3>
<p><em>Ejabberd</em> ha tutta una serie di funzionalità legate al mondo delle chat (chat anonima, chat di gruppo, protocolli aggiuntivi, chat SSL, ecc). Per ognuno di questi servizi è necessario lasciare una porta in ascolto.</p>
<p>Spostiamoci più in basso, nel file di configurazione, fino ad arrivare nella sezione &#8220;<em>Listening ports</em>&#8221; dove troverete già una serie di porte configurate e abbondantemente commentate.</p>
<p>Se non volete utilizzare nessuno dei servizi aggiuntivi, le uniche due porte che dovete lasciare attive sono la <strong>5222</strong> e la <strong>5280</strong> necessarie, rispettivamente, per la connessione da <strong>client XMPP</strong> (es. iChat, Google Talk, Kopete, ecc.) e da <strong>client web</strong> (es. jappix, JWchat, Candy, ecc).</p>
<h3>6. Configurazione dei moduli</h3>
<p>Come ho detto prima, <em>ejabberd</em> ha tantissime funzionalità aggiuntive. Ad ognuna di essa è legata un <strong>modulo</strong>. Scendiamo un altro po&#8217; nel file di configurazione fino a portarci nella sezione &#8220;<em>Modules</em>&#8221; dove troveremo l&#8217;elenco di moduli disponibili. Alcuni moduli sono commentati, altri no. Fate riferimento alla <a href="https://git.process-one.net/ejabberd/mainline/blobs/raw/v2.1.10/doc/guide.html#htoc38" target="_blank">documentazione sui moduli</a>, per sapere cosa fa esattamente ognuno di essi.</p>
<p>Date un&#8217;occhiata all&#8217;elenco di moduli e disattivate quelli non necessari, facendo attenzione ad eventuali dipendenze. Consiglio di disattivare i moduli non necessari perché in questo modo si alleggerisce notevolmente il carico del server XMPP.</p>
<h3>7. Admin web</h3>
<p>Ejabberd offre anche un <strong>pannello di amministrazione web</strong>, abbastanza scarno a dire la verità. Se volete utilizzarlo (ad es. per vedere le statistiche di utilizzo della chat) dovete prima aggiungere una riga nel file di configurazione per indicare quale utente ha il permesso di accedervi. Aggiungete all&#8217;inizio o alla fine del file questa riga (di solito si trova all&#8217;inizio):</p>
<blockquote><p>{acl, admin, {user, &#8220;utente&#8221;, &#8220;miosito.it&#8221;}}</p></blockquote>
<p>Dove al posto dell&#8217;utente &#8220;<em>utente</em>&#8221; dovrete inserire l&#8217;username dell&#8217;utente che avrà i permessi di <strong>amministratore</strong> e, ovviamente, al posto di <em>miosito.it</em> dovrete aggiungere il dominio inserito al punto 4.</p>
<p><strong>Ricordate</strong> che l&#8217;utente in questione deve essere un utente registrato a <em>ejabberd</em> e quindi presente in database.</p>
<p>Per accedere al pannello di amministrazione web, digitate il seguente indirizzo nel vostro browser:</p>
<blockquote><p>http://www.miosito.it:5280/admin</p></blockquote>
<h3>Conclusione</h3>
<p>Abbiamo Finito! Nei prossimi giorni ci sarà un altro articolo su come utilizzare ejabberd con un database mysql al posto di quello interno (mnesia). Per ora vi lascio con alcuni link utili per approfondire l&#8217;argomento.</p>
<p><a href="http://www.ejabberd.im/" target="_blank">Sito ufficiale di ejabberd</a></p>
<p><a href="https://git.process-one.net/ejabberd/mainline/blobs/raw/v2.1.10/doc/guide.html" target="_blank">Documentazione ufficiale di ejabberd</a></p>
<p><a href="http://xmpp.org/xmpp-software/clients/" target="_blank">Lista client compatibili con XMPP</a></p>
<div class="shr-publisher-2169"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F01%2F30%2Finstallare-e-configurare-ejabberd-su-ubuntu-server%2F' data-shr_title='Installare+e+configurare+ejabberd+su+ubuntu+server'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F01%2F30%2Finstallare-e-configurare-ejabberd-su-ubuntu-server%2F' data-shr_title='Installare+e+configurare+ejabberd+su+ubuntu+server'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F01%2F30%2Finstallare-e-configurare-ejabberd-su-ubuntu-server%2F' data-shr_title='Installare+e+configurare+ejabberd+su+ubuntu+server'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/qvj12UD6Qk0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2012/01/30/installare-e-configurare-ejabberd-su-ubuntu-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2012/01/30/installare-e-configurare-ejabberd-su-ubuntu-server/</feedburner:origLink></item>
		<item>
		<title>Le 10 idee sbagliate su PHP – Parte 10/10</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/VFckkbwajuM/</link>
		<comments>http://www.redsend.org/2012/01/02/le-10-idee-sbagliate-su-php-parte-1010/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 18:36:38 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Oggi ho letto]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[stipendi]]></category>
		<category><![CDATA[sviluppatori]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2160</guid>
		<description><![CDATA[Siamo arrivati al decimo e ultimo appuntamento con la serie di post &#8220;10 idee sbagliate su PHP&#8221;. Se non avete letto i precedenti, trovate i link in basso, nei post correlati. Vi lascio il solito link all&#8217;articolo originale in inglese. In questo ultimo post parlaremo di costo degli sviluppatori PHP. 10. Gli sviluppatori PHP sono più economici perché non sono qualificati L&#8217;economia funziona tutta in termini di domanda e offerta. Se c&#8217;è un prodotto che [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F01%2F02%2Fle-10-idee-sbagliate-su-php-parte-1010%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+10%2F10'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F01%2F02%2Fle-10-idee-sbagliate-su-php-parte-1010%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+10%2F10'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F01%2F02%2Fle-10-idee-sbagliate-su-php-parte-1010%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+10%2F10'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Siamo arrivati al decimo e ultimo appuntamento con la serie di post &#8220;10 idee sbagliate su PHP&#8221;. Se non avete letto i precedenti, trovate i link in basso, nei post correlati. Vi lascio il solito link all&#8217;<a href="http://www.phpclasses.org/blog/post/155-Top-10-Wrong-Ideas-About-PHP-That-You-Should-Get-Right.html" target="_blank">articolo originale</a> in inglese. In questo ultimo post parlaremo di costo degli sviluppatori PHP.</p>
<h3>10. Gli sviluppatori PHP sono più economici perché non sono qualificati</h3>
<p>L&#8217;economia funziona tutta in termini di domanda e offerta. Se c&#8217;è un prodotto che è richiesto da molti clienti e non c&#8217;è molta quantità di quel prodotto in giro da vendere, il prezzo tende a salire. Dall&#8217;altro lato, se il prodotto abbonda sul mercato e i clienti non ne acquistano tanto, il prezzo scende.</p>
<p>Allo stesso modo funzionano i lavori. Se ci sono molte aziende alla ricerca di candidati qualificati, quelli disponibili ad essere assunti ricevono un&#8217;offerta di stipendio alta. Dall&#8217;altro lato, se ci sono più candidati di quanti le aziende debbano assumere, le offerte di stipendio scendono.</p>
<p>Il mercato del PHP è enorme perché il web è enorme. Ci sono molte aziende disposte ad assumere sviluppatori PHP qualificati. Ma per lavori più semplici non vogliono pagare molto perché possono trovare tantissimi candidati con qualifiche sufficienti. Questi lavori possono essere anche molto semplici come installare e personalizzare applicazioni PHP esistenti.</p>
<p>Le aziende che non hanno bisogno di assumere sviluppatori che conoscano solo PHP, ma che abbiano anche caratteristiche più sofisticate come pianificazione e sviluppo di architetture software, sviluppo di siti web scalabili, gestione di problemi di sicurezza, SEO, ecc., tendono a pagare stipendi più alti perché gli sviluppatori con queste qualifiche scarseggiano.</p>
<p>Quindi, non è una questione di essere sviluppatori PHP. E&#8217; una questione di quali altre qualifiche sono necessarie nei lavori dove viene richiesto PHP.</p>
<div class="shr-publisher-2160"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F01%2F02%2Fle-10-idee-sbagliate-su-php-parte-1010%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+10%2F10'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F01%2F02%2Fle-10-idee-sbagliate-su-php-parte-1010%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+10%2F10'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2012%2F01%2F02%2Fle-10-idee-sbagliate-su-php-parte-1010%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+10%2F10'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/VFckkbwajuM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2012/01/02/le-10-idee-sbagliate-su-php-parte-1010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2012/01/02/le-10-idee-sbagliate-su-php-parte-1010/</feedburner:origLink></item>
		<item>
		<title>Le 10 idee sbagliate su PHP – Parte 9/10</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/Y-11xi69vcw/</link>
		<comments>http://www.redsend.org/2011/12/09/le-10-idee-sbagliate-su-php-%e2%80%93-parte-910/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 21:42:00 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Oggi ho letto]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2146</guid>
		<description><![CDATA[Penultimo appuntamento con la lunghissima serie di post sulle idee sbagliate riguardo il PHP. Vi piazzo il solito link all&#8217;articolo originale, in inglese, da cui sono tratti questa serie di post. In questo nono articolo parliamo di performance. 9. PHP non è adatto per siti web e applicazioni scalabili con performance elevate Per come la vedo io, performance e scalabilità non sono una questione di linguaggio ma, piuttosto, una questione di architettura dell&#8217;applicazione. Per quanto [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F09%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-910%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+9%2F10'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F09%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-910%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+9%2F10'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F09%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-910%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+9%2F10'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Penultimo appuntamento con la lunghissima serie di post sulle idee sbagliate riguardo il PHP. Vi piazzo il solito link all&#8217;<a href="http://www.phpclasses.org/blog/post/155-Top-10-Wrong-Ideas-About-PHP-That-You-Should-Get-Right.html" target="_blank">articolo originale</a>, in inglese, da cui sono tratti questa serie di post. In questo nono articolo parliamo di performance.</p>
<h3>9. PHP non è adatto per siti web e applicazioni scalabili con performance elevate</h3>
<p>Per come la vedo io, performance e scalabilità non sono una questione di linguaggio ma, piuttosto, una questione di architettura dell&#8217;applicazione.</p>
<p>Per quanto riguardo le performance, come detto precedentemente, PHP è un linguaggio compilato, quindi la sua velocità è ottima per molti degli scopi di un&#8217;applicazione web.</p>
<p>Facebook è di certo il sito più grande sviluppato in PHP. Non sembra avere problemi di scalabilità dovuti alla scelta di utilizzare PHP.</p>
<p>E&#8217; vero che hanno sviluppato il proprio compilatore da PHP a C++ per rendere le applicazioni PHP più veloci. E&#8217; anche vero che per applicazioni ad alto uso di CPU, il vantaggio di compilare PHP in un altro linguaggio più di basso livello può essere significante.</p>
<p>Tuttavia, la realtà è che molte delle applicazioni Web non richiedono un utilizzo elevato di CPU. Per esempio, una delle attività che viene svolta più di frequente da un&#8217;applicazione web è accedere a un database.</p>
<p>Quando la tua applicazione esegue una query SQL, la maggior parte del tempo è perso nell&#8217;attesa che il server esegua la query e restituisca i risultati. Aspettare che una query venga eseguita sul server, richiede praticamente lo stesso tempo, sia in PHP che in C++.</p>
<p>Quindi ora ti potresti chiedere, se PHP è praticamente veloce quanto C++ nelle applicazioni web basate su database, perché il team di Facebook ha speso tutto quel tempo a sviluppare un compilatore C++ per PHP?</p>
<p>La risposta risiede nel fatto che hanno cambiato anche l&#8217;architettura. Non compilano soltanto PHP in C++. Loro prendono i diversi script PHP che compongono l&#8217;applicazione, compilano tutto in un singolo file C++ e generano un solo eseguibile che funziona come un <strong>server web multi-thread</strong>. Da notare l&#8217;enfasi sulla parona multi-thread.</p>
<p>I server web multi-thread usano un singolo processo per gestire contemporaneamente diverse richieste HTTP. In questo modo si risparmia tantissima RAM perché i diversi thread condividono lo stesso spazio di memoria. Questo significa che hanno bisogno di meno macchine per gestire lo stesso carico. Per un&#8217;azienda come Facebook che ha centinaia di server, il guadagno è significativo.</p>
<p>Per molti degli altri siti web, il guadagno non è abbastanza significativo da giustificare lo sforzo di compilare da PHP a C++.</p>
<p>Questo non significa che non dovresti sporzarti a imparare e adottare tecniche di ottimizzazione. Molte di queste tecniche sono state trattate in questo blog (PHPClasses n.d.t.) sotto la categoria <a href="http://www.phpclasses.org/blog/category/php-performance/" target="_blank">PHP performance</a>. Dagli un&#8217;occhiata appena hai tempo.</p>
<p>Molte di queste tecniche non sono legate ad un linguaggio. Dovresti adottarle indipendentemente se sviluppi le tue applicazioni con PHP o altri linguaggi.</p>
<div class="shr-publisher-2146"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F09%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-910%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+9%2F10'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F09%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-910%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+9%2F10'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F09%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-910%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+9%2F10'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/Y-11xi69vcw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/12/09/le-10-idee-sbagliate-su-php-%e2%80%93-parte-910/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2011/12/09/le-10-idee-sbagliate-su-php-%e2%80%93-parte-910/</feedburner:origLink></item>
		<item>
		<title>Gestire utenti con timezone differenti in PHP e MySQL</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/5LYscNGLA_o/</link>
		<comments>http://www.redsend.org/2011/12/06/gestire-utenti-con-timezone-differenti-in-php-e-mysql/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 20:09:39 +0000</pubDate>
		<dc:creator>redsend</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[timestamp]]></category>
		<category><![CDATA[timezone]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2132</guid>
		<description><![CDATA[Quando si sviluppano progetti dove sono coinvolti utenti proveniente da tutto il mondo, nasce l'esigenza di gestire date e timestamp per i differenti fusi orari, memorizzarli e visualizzarli senza creare "salti temporali".]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F06%2Fgestire-utenti-con-timezone-differenti-in-php-e-mysql%2F' data-shr_title='Gestire+utenti+con+timezone+differenti+in+PHP+e+MySQL'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F06%2Fgestire-utenti-con-timezone-differenti-in-php-e-mysql%2F' data-shr_title='Gestire+utenti+con+timezone+differenti+in+PHP+e+MySQL'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F06%2Fgestire-utenti-con-timezone-differenti-in-php-e-mysql%2F' data-shr_title='Gestire+utenti+con+timezone+differenti+in+PHP+e+MySQL'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Quando si sviluppano progetti dove sono coinvolti utenti proveniente da tutto il mondo, nasce l&#8217;esigenza di gestire date e timestamp per i differenti fusi orari, memorizzarli e visualizzarli senza creare &#8220;salti temporali&#8221;.</p>
<h3></h3>
<h3>Un esempio: commenti</h3>
<p>Il più classico degli esempi nel quale si trovano coinvolte informazioni riguardati il tempo potrebbe essere un sistema di commenti: se un utente da New York lascia un commento alle 10:00 AM Estern Standard Time, un minuto dopo in Italia, l&#8217;utente che sta leggendo il commento appena lasciato deve visualizzare 16:01 GMT+1 (Europe/Rome).</p>
<p>Quel&#8217;è il modo migliore per memorizzare le informazioni? Con quale fuso orario? Come facciamo ad effettuare la conversione?</p>
<h3></h3>
<h3>PHP e DateTime Functions</h3>
<p>In realtà la cosa potrebbe essere realizzata in diversi modi: <strong>PHP</strong> mette a disposizione una serie di funzioni per gestire <strong>date e time</strong> con relative conversioni di <strong>fusi orari</strong> (<a href="http://it2.php.net/manual/en/ref.datetime.php" target="_blank">Date &amp; Time Functions</a>), in particolare mette a disposizione una funzione <strong>date_default_timezone_set</strong> con la quale è possibile impostare il timezone della sessione attuale e quindi tutte le funzioni (compatibili con timezone, ad esempio <strong>date</strong>) effettueranno una conversione automatica tra il timezone del sistema sul quale è in esecuzione lo script PHP e quello impostato in precedenze.</p>
<p>Queste funzioni possono essere molto utili in tanti casi, ma se vi trovate in uno scenario simile a quello precedente, nel quale c&#8217;è anche MySQL coinvolto, allora esiste una soluzione migliore.</p>
<h2></h2>
<h3>MySQL e TIMESTAMP</h3>
<p>Sicuramente la data del commento dovrà essere memorizzata all&#8217;interno del <strong>DB</strong>. In questi casi possiamo evitare di inserire noi la data ma sfruttare la funzione <strong>CURRENT_TIMESTAMP</strong> di MySQL disponibile solo per il tipo di dato <strong>TIMESTAMP</strong>. Se non sapete di cosa sto parlando vi conviene dare un&#8217;occhiata alla documentazione (<a href="http://dev.mysql.com/doc/refman/5.0/en/timestamp.html" target="_blank">TIMESTAMP Properties</a>).</p>
<p>Il tipo di dato TIMESTAMP risulta molto comodo in questo caso perché viene sempre memorizzato secondo il fuso orario <a href="http://it.wikipedia.org/wiki/Tempo_coordinato_universale" target="_blank">UTC (<em>Coordinated Universal Time</em>)</a> e convertito automaticamente quando il fuso orario del sistema è diverso.</p>
<h3></h3>
<h3>MySQL time_zone</h3>
<p>Come impostazione di default MySQL restituisce tutti i dati TIMESTAMP secondo il fuso orario di sistema, questo perché la variabile time_zone è impostata su &#8220;<strong>SYSTEM</strong>&#8220;. Questa variabile può essere cambiata a livello globale (<a href="http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html" target="_blank">MySQL Server Time Zone Support</a>) oppure a livello di connessione. Il secondo caso è quello che più ci interessa.</p>
<p>Per ottenere la data del commento nel fuso orario GMT+1 (Europe/Rome), quindi, basterà impostare la variabile <strong>time_zone</strong> su &#8220;+1:00&#8243; e automaticamente tutte le query effettuate su questa connessione conterranno il timestamp convertito.</p>
<pre class="brush: sql; title: ; notranslate"> SET time_zone=&quot;GMT+1&quot;; </pre>
<p>E&#8217; possibile specificare anche time_zone più user friedly come ad esempio &#8220;Europe/Rome&#8221;, ma questo necessita di aver creato e configurato un tabella speciale sul server MySQL, a questo indirizzo (<a href="http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html" target="_blank">MySQL Server Time Zone Support</a>), fine pagina, spiega come fare.</p>
<div class="shr-publisher-2132"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F06%2Fgestire-utenti-con-timezone-differenti-in-php-e-mysql%2F' data-shr_title='Gestire+utenti+con+timezone+differenti+in+PHP+e+MySQL'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F06%2Fgestire-utenti-con-timezone-differenti-in-php-e-mysql%2F' data-shr_title='Gestire+utenti+con+timezone+differenti+in+PHP+e+MySQL'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F06%2Fgestire-utenti-con-timezone-differenti-in-php-e-mysql%2F' data-shr_title='Gestire+utenti+con+timezone+differenti+in+PHP+e+MySQL'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/5LYscNGLA_o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/12/06/gestire-utenti-con-timezone-differenti-in-php-e-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2011/12/06/gestire-utenti-con-timezone-differenti-in-php-e-mysql/</feedburner:origLink></item>
		<item>
		<title>Installare e configurare una macchina virtuale server con Virtualbox</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/3CNZiDQ6604/</link>
		<comments>http://www.redsend.org/2011/12/04/installare-e-configurare-una-macchina-virtuale-server-con-virtualbox/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 15:57:30 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Sistemi Operativi]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[virtual machine]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualizzazione]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2088</guid>
		<description><![CDATA[In questo tutorial vedremo come configurare Virtualbox per avere un ambiente server per i nostri test. Nell&#8217;esempio userò MacOS X 10.6 (Snow Leopard) come sistema operativo host e Ubuntu 10.04 Server come sistema operativo guest. I vari step sono però adattabili e riutilizzabili anche in configurazioni diverse. Nel caso abbiate problemi contattatemi nei commenti o su twitter. Quello che vogliamo ottenere è una configurazione come questa: l&#8217;host è connesso ad internet; l&#8217;host può pingare il [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F04%2Finstallare-e-configurare-una-macchina-virtuale-server-con-virtualbox%2F' data-shr_title='Installare+e+configurare+una+macchina+virtuale+server+con+Virtualbox'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F04%2Finstallare-e-configurare-una-macchina-virtuale-server-con-virtualbox%2F' data-shr_title='Installare+e+configurare+una+macchina+virtuale+server+con+Virtualbox'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F04%2Finstallare-e-configurare-una-macchina-virtuale-server-con-virtualbox%2F' data-shr_title='Installare+e+configurare+una+macchina+virtuale+server+con+Virtualbox'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>In questo tutorial vedremo come configurare <a href="https://www.virtualbox.org/" target="_blank">Virtualbox</a> per avere un ambiente server per i nostri test.<br />
Nell&#8217;esempio userò <strong>MacOS X 10.6</strong> (Snow Leopard) come sistema operativo <em>host</em> e <strong>Ubuntu 10.04 Server</strong> come sistema operativo <em>guest</em>. I vari step sono però adattabili e riutilizzabili anche in configurazioni diverse. Nel caso abbiate problemi contattatemi nei commenti o su <a href="http://www.twitter.com/duplikey" target="_blank">twitter</a>.</p>
<p>Quello che vogliamo ottenere è una configurazione come questa:</p>
<ul>
<li>l&#8217;<em>host</em> è connesso ad internet;</li>
<li>l&#8217;<em>host</em> può pingare il <em>guest</em>;</li>
<li>il <em>guest</em> può pingare l&#8217;<em>host</em>;</li>
<li>il <em>guest</em> può accedere ad internet.</li>
</ul>
<p>Quindi entrambi i sistemi operativi accedono all&#8217;esterno e possono comunicare tra di loro.</p>
<h3>Passo 1: Installare Virtualbox</h3>
<p>Sull&#8217;installazione di Virtualbox non mi soffermerò. Nella <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank">pagina dei download</a> trovate i pacchetti per i diversi sistemi operativi. Se siete sotto linux potete installarlo direttamente dai repository della vostra distribuzione.</p>
<h3>Passo 2: Creare la macchina virtuale</h3>
<p>Avviamo VirtualBox e creiamo una nuova macchina virtuale cliccando su &#8220;<em>Macchina &gt; nuova</em>&#8220;.<br />
Partirà una procedura guidata che vi chiederà alcune informazioni. Scegliete quelle che più si adattano al vostro caso. Vi do&#8217; alcuni suggerimenti su come ho creato la mia:</p>
<ul>
<li>Non allocate meno di 512 Mb di RAM, altrimenti l&#8217;utilizzo della macchina virtuale sarà lentissimo.</li>
<li>Create il disco virtuale con lo <strong>spazio allocato dinamicamente</strong> (figura sotto) che vi permetterà di non occupare spazio inutilmente quando non è necessario.<br />
<a href="http://www.redsend.org/wp-content/uploads/2011/12/disco-virtuale.png" rel="shadowbox[sbpost-2088];player=img;" title="spazio allocato dinamicamente"><img class="size-thumbnail wp-image-2089 alignnone" title="spazio allocato dinamicamente" src="http://www.redsend.org/wp-content/uploads/2011/12/disco-virtuale-300x209.png" alt="" width="300" height="209" /></a></li>
<li>Per quanto riguarda lo spazio da allocare al disco (figura sotto), non esagerate: su un sistema server 2 GB sono più che sufficienti per i vostri test.<br />
<a href="http://www.redsend.org/wp-content/uploads/2011/12/dimensione-disco.png" rel="shadowbox[sbpost-2088];player=img;" title="dimensione disco"><img class="alignnone size-thumbnail wp-image-2090" title="dimensione disco" src="http://www.redsend.org/wp-content/uploads/2011/12/dimensione-disco-300x209.png" alt="" width="300" height="209" /></a></li>
</ul>
<h3>Passo 3: Installare il sistema operativo guest (Ubuntu 10.04)</h3>
<p>Installiamo ora il sistema operativo <em>guest</em> che, in questo esempio, è <strong>Ubuntu 10.04 server</strong>.<br />
Andiamo alla <a href="http://www.ubuntu.com/download/server/download" target="_blank">pagina dei download</a> e scarichiamo il file immagine (.iso) nella <strong>versione a 32 bit</strong>, altrimenti riceverete un errore quando cercherete di installarlo su una macchina virtuale.</p>
<p>Avviamo la macchina virtuale creata al punto 2, un&#8217;altra procedura guidata ci assisterà nel primo avvio. Nel passo 2 di questa procedura viene richiesto di scegliere il supporto per avviare l&#8217;installazione. Normalmente è il lettore CD, nel nostro caso invece dobbiamo <strong>selezionare l&#8217;immagine ISO</strong> appena scaricata e poi procedere con l&#8217;installazione.<br />
<a href="http://www.redsend.org/wp-content/uploads/2011/12/selezionare-immagine-ISO.png" rel="shadowbox[sbpost-2088];player=img;" title="selezionare immagine ISO"><img class="alignnone size-thumbnail wp-image-2092" title="selezionare immagine ISO" src="http://www.redsend.org/wp-content/uploads/2011/12/selezionare-immagine-ISO-300x209.png" alt="" width="300" height="209" /></a></p>
<p>A questo punto si avvierà l&#8217;installazione del sistema operativo, sulla quale non mi soffermerò.</p>
<h3>Passo 4: Configurare il tipo di connessione</h3>
<p>Ora dobbiamo impostare il tipo di connessione per ottenere una configurazione come quella descritta all&#8217;inizio.</p>
<p>Assicuriamoci che la macchina virtuale <strong>non sia avviata</strong>. Nel caso lo sia, spegniamola cliccando su &#8220;<em>Macchina &gt; spegni</em>&#8220;.</p>
<p>Apriamo la schermata delle impostazioni cliccando su &#8220;<em>Macchina &gt; impostazioni</em>&#8221; e portiamoci nella sezione &#8220;<em>rete</em>&#8220;. Dovremmo trovarci di fronte la &#8220;<em>Scheda 1</em>&#8220;. Configuriamo il tutto come nella figura che segue:</p>
<p><a href="http://www.redsend.org/wp-content/uploads/2011/12/configurazione-rete.png" rel="shadowbox[sbpost-2088];player=img;" title="configurazione rete"><img class="alignnone size-thumbnail wp-image-2094" title="configurazione rete" src="http://www.redsend.org/wp-content/uploads/2011/12/configurazione-rete-300x228.png" alt="" width="300" height="228" /></a></p>
<p>Vediamo in dettaglio le impostazioni:</p>
<ul>
<li>Innanzitutto è necessario spuntare &#8220;<em>abilita scheda di rete</em>&#8221; altrimenti non funzionerà.</li>
<li>Dal menu a tendina &#8220;<em>connesso a</em>&#8221; selezionate &#8220;<em>scheda con bridge</em>&#8221; che permette la <strong>configurazione ibrida</strong> che serve a noi (macchina virtuale che comunica con l&#8217;esterno e con la macchina host).</li>
<li>Dal menu &#8220;<em>nome</em>&#8221; dobbiamo scegliere la scheda di rete della macchina host con cui fare bridge. In questo menu è importante selezionare la scheda di rete <strong>realmente connessa ad internet</strong>. Nel mio caso era con un MacBook connesso in wireless e allora ho selezionato la scheda di rete wireless &#8220;AirPort&#8221;.<br />
Fate attenzione, se non selezionate la scheda connessa ad internet il sistema operativo guest <strong>non potrà navigare verso l&#8217;esterno</strong>.</li>
<li>Il resto delle impostazioni potete lasciarle con i valori di default. In alcuni casi potrebbe essere necessario scegliere come &#8220;<em>tipo di scheda</em>&#8221; quella in figura (Intel PRO/100 MT Desktop (82540EM)) perché sembra che con alcune configurazioni hardware le altre diano problemi.</li>
</ul>
<h3>Passo 5: Testare la comunicazione</h3>
<p>Abbiamo finito. Adesso facciamo un <strong>test finale</strong> per assicurarci che tutto funzioni.<br />
Avviamo la macchina virtuale e facciamo login nel sistema operativo <em>guest</em>. Da ora in avanti si lavora di terminale.</p>
<p>Dal sistema operativo <em>guest</em> controlliamo l&#8217;indirizzo IP assegnato alla nostra macchina con il comando &#8220;<em>ifconfig eth0</em>&#8220;. L&#8217;indirizzo è quello evidenziato nella figura che segue:</p>
<p><a href="http://www.redsend.org/wp-content/uploads/2011/12/indirizzo-ip-guest1.png" rel="shadowbox[sbpost-2088];player=img;" title="indirizzo ip guest"><img class="alignnone size-thumbnail wp-image-2118" title="indirizzo ip guest" src="http://www.redsend.org/wp-content/uploads/2011/12/indirizzo-ip-guest1-300x251.png" alt="" width="300" height="251" /></a></p>
<p>Apriamo un terminale sul sistema operativo <em>host</em> e facciamo un ping verso l&#8217;indirizzo appena visto: &#8220;<em>ping 192.168.0.102</em>&#8221; (ovviamente dovete utilizzare l&#8217;IP che è stato assegnato alla vostra macchina). Se il risultato è qualcosa del genere (figura sotto) significa che la macchina <em>host</em> riesce a comunicare con quella <em>guest</em>.</p>
<p><a href="http://www.redsend.org/wp-content/uploads/2011/12/ping-da-host-a-guest.png" rel="shadowbox[sbpost-2088];player=img;" title="ping da host a guest"><img class="alignnone size-thumbnail wp-image-2097" title="ping da host a guest" src="http://www.redsend.org/wp-content/uploads/2011/12/ping-da-host-a-guest-300x207.png" alt="" width="300" height="207" /></a></p>
<p>Per sicurezza assicuriamoci che il sistema operativo <em>host</em> riesca a comunicare con l&#8217;esterno. Possiamo farlo direttamente da terminale con un ping verso google: &#8220;<em>ping google.it</em>&#8220;.</p>
<p><a href="http://www.redsend.org/wp-content/uploads/2011/12/ping-da-host-a-google.png" rel="shadowbox[sbpost-2088];player=img;" title="ping da host a google"><img class="alignnone size-thumbnail wp-image-2098" title="ping da host a google" src="http://www.redsend.org/wp-content/uploads/2011/12/ping-da-host-a-google-300x207.png" alt="" width="300" height="207" /></a></p>
<p>Bene, la prima parte del test è conclusa con successo. Ora controlliamo che il sistema <em>guest</em> riesca a comunicare con quello <em>host</em> e con l&#8217;esterno. Controlliamo quale IP possiede la nostra macchina <em>host</em>, di nuovo utilizzando il comando &#8220;<em>ifconfig</em>&#8220;:</p>
<p><a href="http://www.redsend.org/wp-content/uploads/2011/12/indirizzo-ip-host1.png" rel="shadowbox[sbpost-2088];player=img;" title="indirizzo ip host"><img class="alignnone size-thumbnail wp-image-2100" title="indirizzo ip host" src="http://www.redsend.org/wp-content/uploads/2011/12/indirizzo-ip-host1-300x207.png" alt="" width="300" height="207" /></a></p>
<p>Ora che conosciamo l&#8217;IP della macchina <em>host</em> procediamo con gli stessi due step di sopra. Ci spostiamo nel terminale della macchina <em>guest</em> e facciamo un ping verso il sistema <em>host</em> (<em>ping 192.168.0.52</em>) e verso l&#8217;esterno (<em>ping google.it</em>). Se i risultati sono come quelli che seguono allora funziona tutto correttamente.</p>
<p><a href="http://www.redsend.org/wp-content/uploads/2011/12/ping-da-guest-a-host.png" rel="shadowbox[sbpost-2088];player=img;" title="ping da guest a host"><img class="alignnone size-thumbnail wp-image-2121" title="ping da guest a host" src="http://www.redsend.org/wp-content/uploads/2011/12/ping-da-guest-a-host-300x251.png" alt="" width="300" height="251" /></a><a href="http://www.redsend.org/wp-content/uploads/2011/12/ping-da-guest-a-google.png" rel="shadowbox[sbpost-2088];player=img;" title="ping da guest a google"><img class="alignnone size-thumbnail wp-image-2122" title="ping da guest a google" src="http://www.redsend.org/wp-content/uploads/2011/12/ping-da-guest-a-google-300x251.png" alt="" width="300" height="251" /></a></p>
<p>Questo è quanto!<br />
Adesso abbiamo la nostra macchina virtuale server pronta e comunicante. Come ho detto all&#8217;inizio, nel caso abbiate problemi contattatemi nei commenti o su <a href="http://www.twitter.com/duplikey" target="_blank">twitter</a>.</p>
<div class="shr-publisher-2088"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F04%2Finstallare-e-configurare-una-macchina-virtuale-server-con-virtualbox%2F' data-shr_title='Installare+e+configurare+una+macchina+virtuale+server+con+Virtualbox'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F04%2Finstallare-e-configurare-una-macchina-virtuale-server-con-virtualbox%2F' data-shr_title='Installare+e+configurare+una+macchina+virtuale+server+con+Virtualbox'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F12%2F04%2Finstallare-e-configurare-una-macchina-virtuale-server-con-virtualbox%2F' data-shr_title='Installare+e+configurare+una+macchina+virtuale+server+con+Virtualbox'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/3CNZiDQ6604" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/12/04/installare-e-configurare-una-macchina-virtuale-server-con-virtualbox/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2011/12/04/installare-e-configurare-una-macchina-virtuale-server-con-virtualbox/</feedburner:origLink></item>
		<item>
		<title>Le 10 idee sbagliate su PHP – Parte 8/10</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/tKIBQpbFXw8/</link>
		<comments>http://www.redsend.org/2011/11/10/le-10-idee-sbagliate-su-php-%e2%80%93-parte-810/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 20:47:50 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Oggi ho letto]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2073</guid>
		<description><![CDATA[Siamo giunti all&#8217;ottavo appuntamento con la serie di post sulle idee sbagliate sul PHP, siamo quasi alla fine. Ricordo a tutti il link dell&#8217;articolo originale in inglese, apparso su PHPClasses. In questo articolo si parla di confronti con framework famosi scritti in altri linguaggi. 8. PHP è peggio di Ruby On Rails, Python Django o di un certo framework nel linguaggio X PHP ha molte estensioni che forniscono numerose funzionalità ma confrontare un linguaggio con [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F11%2F10%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-810%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+8%2F10'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F11%2F10%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-810%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+8%2F10'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F11%2F10%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-810%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+8%2F10'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Siamo giunti all&#8217;ottavo appuntamento con la serie di post sulle idee sbagliate sul PHP, siamo quasi alla fine. Ricordo a tutti il link dell&#8217;<a href="http://www.phpclasses.org/blog/post/155-Top-10-Wrong-Ideas-About-PHP-That-You-Should-Get-Right.html" target="_blank">articolo originale</a> in inglese, apparso su <a href="http://www.phpclasses.org" target="_blank">PHPClasses</a>. In questo articolo si parla di confronti con framework famosi scritti in altri linguaggi.</p>
<h3>8. PHP è peggio di Ruby On Rails, Python Django o di un certo framework nel linguaggio X</h3>
<p>PHP ha molte estensioni che forniscono numerose funzionalità ma confrontare un linguaggio con un framework full-stack è come confrontare pini con mele.</p>
<p>Penso che sia giusto confrontare PHP con Java, C#, Ruby, Python o &#8220;<em>inserire il nome del linguaggio del momento qui</em>&#8220;. E&#8217; allo stesso modo giusto confrontare Ruby on Rails, Django, ecc&#8230;con framework simili in PHP. E&#8217; un dato di fatto che ci siano molti framework PHP simili, che non menzionerò nello specifico per evitare di essere sleale con i fan di ognuno di essi.</p>
<p>Personalmente penso che quello di cui gli sviluppatori dei vari linguaggi hanno bisogno non è esattamente di usare un framework. <strong>Quello di cui hanno bisogno gli sviluppatori è di utilizzare una metodologia di sviluppo che li renda produttivi</strong>.</p>
<p>Una volta che hai adottato una metodologia di sviluppo, ogni cosa diventa meccanica e hai bisogno di meno tempo per produrre lo stesso volume di lavoro, visto che devi solo ripetere gli stessi step in maniera consistente.</p>
<p>Non hai realmente bisogno di usare un framework per adottare un metodo di sviluppo consistente. Per esempio, io non uso nessun framework, seguo semplicemente la stessa metodologia di sviluppo che ho evoluto negli anni, al che al giorno d&#8217;oggi sono abbastanza produttivo usando quella metodologia.</p>
<p>Non scenderò nei dettagli di quale motodo di sviluppo utilizzo perché ne ho già parlato in un vecchio post riguardo i <a href="http://www.phpclasses.org/blog/post/52-Recommended-PHP-frameworks.html" target="_blank">framework PHP consigliati</a> e in un altro riguardo lo <a href="http://www.phpclasses.org/blog/post/49-Developing-useful-application-level-PHP-components.html" target="_blank">sviluppo di componenti PHP application-level</a>.</p>
<p>Seguo pratiche di buona programmazione come separare i concetti in diversi componenti, ma non ho bisogno di nessun framework MVC. In realtà penso che spesso MVC è un design pattern inadeguato nello sviluppo di applicazioni web scalabili.</p>
<p>Di solito separo i diversi concetti in componenti che possano essere distribuiti facilmente su diverse macchine secondo il significato di service layer. Ma questo forse sarà argomento di un diverso post.</p>
<p>Il punto principale qui è che non hai bisogno di usare il framework X per essere produttivo. Quello che conta è che tu segua una metodologia di sviluppo consistente che renda il tuo lavoro meccanico e fluente.</p>
<p>Il fatto è che certi framework impondono una cerca metodologia di sviluppo. Questi framework sono chiamati &#8220;<em>supponenti</em>&#8221; perché riflettono l&#8217;opinione dei creatori su come dovrebbe essere la programmazione.</p>
<p>Quindi, se investi nello studio di una metodologia che un determinato framework impone e questa ti rende produttivo quando realizzi le tue applicazioni web, bene, usala.</p>
<p>Ma, per favore, non venire a dirmi che il framework X, del quale sei un grande fan, è la soluzione migliore o, peggio, che gli sviluppatori PHP non possono essere produttivi quanto te perché non usano quello stesso framework che tu ami così tanto. Quella è solo la tua opinione basata sulla tua esperienza. Non sottovalutare l&#8217;esperienza di altri programmatori.</p>
<p>&nbsp;</p>
<div class="shr-publisher-2073"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F11%2F10%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-810%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+8%2F10'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F11%2F10%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-810%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+8%2F10'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F11%2F10%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-810%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+8%2F10'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/tKIBQpbFXw8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/11/10/le-10-idee-sbagliate-su-php-%e2%80%93-parte-810/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2011/11/10/le-10-idee-sbagliate-su-php-%e2%80%93-parte-810/</feedburner:origLink></item>
		<item>
		<title>Ballata del programmatore</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/eX1jmaHDu7g/</link>
		<comments>http://www.redsend.org/2011/10/22/ballata-del-programmatore/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 09:34:47 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Nel web]]></category>
		<category><![CDATA[ballata del programmatore]]></category>
		<category><![CDATA[lol]]></category>
		<category><![CDATA[musica]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2058</guid>
		<description><![CDATA[Prendiamoci una pausa dai post seri e facciamoci quattro risate. Ieri mi hanno fatto ascoltare questa canzone &#8220;Ballata del programmatore&#8221;, realizzata sulla musica di &#8220;Il pescatore&#8221; di De Andrè. E&#8217; semplicemente eccezionale! Se siete programmatori la ascolterete con un sorriso sulle labbra che la dice lunga ;)]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F10%2F22%2Fballata-del-programmatore%2F' data-shr_title='Ballata+del+programmatore'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F10%2F22%2Fballata-del-programmatore%2F' data-shr_title='Ballata+del+programmatore'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F10%2F22%2Fballata-del-programmatore%2F' data-shr_title='Ballata+del+programmatore'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Prendiamoci una pausa dai post seri e facciamoci quattro risate.</p>
<p>Ieri mi hanno fatto ascoltare questa canzone &#8220;Ballata del programmatore&#8221;, realizzata sulla musica di &#8220;Il pescatore&#8221; di De Andrè.</p>
<p>E&#8217; semplicemente eccezionale!<br />
<iframe width="420" height="315" src="http://www.youtube.com/embed/Hdzx5OL2wu0" frameborder="0" allowfullscreen></iframe><br />
Se siete programmatori la ascolterete con un sorriso sulle labbra che la dice lunga ;)</p>
<div class="shr-publisher-2058"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F10%2F22%2Fballata-del-programmatore%2F' data-shr_title='Ballata+del+programmatore'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F10%2F22%2Fballata-del-programmatore%2F' data-shr_title='Ballata+del+programmatore'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F10%2F22%2Fballata-del-programmatore%2F' data-shr_title='Ballata+del+programmatore'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/eX1jmaHDu7g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/10/22/ballata-del-programmatore/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2011/10/22/ballata-del-programmatore/</feedburner:origLink></item>
		<item>
		<title>Le 10 idee sbagliate su PHP – Parte 7/10</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/OCYedRoWrKU/</link>
		<comments>http://www.redsend.org/2011/10/08/le-10-idee-sbagliate-su-php-%e2%80%93-parte-710/#comments</comments>
		<pubDate>Sat, 08 Oct 2011 17:07:30 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Oggi ho letto]]></category>
		<category><![CDATA[classi]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[oggetti]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2051</guid>
		<description><![CDATA[Rieccomi, dopo un bel po&#8217; di silenzio, con la settima parte della serie di articoli sulle idee sbagliate su PHP. Ecco il solito link all&#8217;articolo originale (in lingua inglese). In questo post l&#8217;argomento è PHP e il suo essere poco Object-Oriented. 7. I progetti PHP non sono riusabili perché non sono Object Oriented Uno dei motivi per i quali PHP è diventato così popolare è il fatto che ci fossero alcune killer application che dominavano [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F10%2F08%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-710%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+7%2F10'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F10%2F08%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-710%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+7%2F10'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F10%2F08%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-710%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+7%2F10'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Rieccomi, dopo un bel po&#8217; di silenzio, con la settima parte della serie di articoli sulle idee sbagliate su PHP. Ecco il solito link all&#8217;<a href="http://www.phpclasses.org/blog/post/155-Top-10-Wrong-Ideas-About-PHP-That-You-Should-Get-Right.html" target="_blank">articolo originale</a> (in lingua inglese). In questo post l&#8217;argomento è PHP e il suo essere poco Object-Oriented.</p>
<h3>7. I progetti PHP non sono riusabili perché non sono Object Oriented</h3>
<p>Uno dei motivi per i quali PHP è diventato così popolare è il fatto che ci fossero alcune killer application che dominavano il mercato web. Alcune che mi vengono in mente sono WordPress, Drupal, Joomla, ecc. Se volete lavorare come consulente PHP, quasi sicuramente parte dei vostri clienti vorranno che gli integriate i loro siti web con alcune di queste applicazioni.</p>
<p>Oggi WordPress è sicuramente la killer application PHP più popolare. Recentemente, Matt Mullenweg, il creatore del progetto WordPress, ha annunciato nel suo &#8220;<a href="http://ma.tt/2011/08/state-of-the-word-2011/" target="_blank">State of the Word 2011</a>&#8221; che WordPress è presente nel 14,7% dei top siti web, in accordo con quanto dice il <a href="http://w3techs.com/technologies/history_overview/content_management/all" rel="nofollow">W3 Techs Web survey.</a> E&#8217; tanto!</p>
<p>Matt ha anche aggiunto che molti sviluppatori modificano le loro installazioni WordPress con dei plugin per utilizzarli come dei CMS o, eventualmente, altri tipi di applicazioni.</p>
<p>Molto del codice di WordPress è scritto in uno stile non Object-Oriented. Ci sono delle classi basi per implementare le funzionalità più comuni, ma il core è scritto in codice procedurale.</p>
<p>Questo rende evidente il fatto che non essendo scritto in stile Object-Oriented, non è necessario rendere il progetto riusabile, neanche per scopi che sono diversi da quello originale di piattaforma di blogging.</p>
<p>Ma aspettate, non fraintendetemi. Questo è il sito <a href="http://www.phpclasses.org" target="_blank">PHPClasses</a>. Una delle regole per avere i propri componenti PHP accettati per la pubblicazione sul sito PHPClasses, è che il codice che implementa le funzionalità principali deve essere scritto sotto forma di classi in codice Object-Oriented, da qui il nome del sito: PHP Classes.</p>
<p>La ragione di questo requisito è che le classi incapsulano funzionalità dentro un contenitore chiamato classe. Se le funzioni fossero globali, ci sarebbero ottime probabilità di avere collisioni tra i nomi, quando si usano componenti diversi da diverse sorgenti.</p>
<p>Per esempio, se due componenti hanno una funzione chiamata <em>print</em>, come potrebbe l&#8217;applicazione capire quali dei due componenti chiamare per usare la funzione print? Le classi rendono questo processo più facile, incapsulando funzioni con lo stesso nome in diversi &#8220;scopes&#8221;.</p>
<p>Ma c&#8217;è un workaround per evitare questo problema senza ricorrere alle classi. Potete aggiungere un prefisso alle funzioni di ogni componente per evitare collisioni tra i nomi. Per esempio, l&#8217;estensione MySQL fornisce funzioni con il prefisso <em>mysql_.</em></p>
<p>Questa è una soluzione molto vecchia usata nel core di PHP da sempre, soprattutto perché fino alla versione 3 non c&#8217;era il supporto agli oggetti. Questa pratica è stata poi mantenuta negli anni, fino ad <em></em>oggi.</p>
<p>Ovviamente non è una soluzione elegante. Incapsulare i nomi delle funzioni è solo uno dei benefici della programmazione Object Oriented. Ma nessuno può dire che non funziona o che non consente ai progetti PHP di essere riusabili.</p>
<div class="shr-publisher-2051"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F10%2F08%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-710%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+7%2F10'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F10%2F08%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-710%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+7%2F10'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.redsend.org%2F2011%2F10%2F08%2Fle-10-idee-sbagliate-su-php-%25e2%2580%2593-parte-710%2F' data-shr_title='Le+10+idee+sbagliate+su+PHP+%E2%80%93+Parte+7%2F10'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/OCYedRoWrKU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/10/08/le-10-idee-sbagliate-su-php-%e2%80%93-parte-710/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2011/10/08/le-10-idee-sbagliate-su-php-%e2%80%93-parte-710/</feedburner:origLink></item>
	<media:rating>nonadult</media:rating></channel>
</rss>

