<?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>Mon, 30 Jan 2012 20:10:45 +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>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 --><!-- 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 --><!-- 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 --><!-- 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 --><!-- 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>0</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 --><!-- 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 --><!-- 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 --><!-- 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 --><!-- 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 --><!-- 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 --><!-- 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>0</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 --><!-- 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 --><!-- 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 --><!-- 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 --><!-- 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 --><!-- 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 --><!-- 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>
		<item>
		<title>10 esempi di come realizzare un’app aziendale di qualità – Parte 2</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/yB8SWQEWv-E/</link>
		<comments>http://www.redsend.org/2011/09/16/10-esempi-di-come-realizzare-un%e2%80%99app-aziendale-di-qualita-%e2%80%93-parte-2/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 18:52:19 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[comix]]></category>
		<category><![CDATA[focus]]></category>
		<category><![CDATA[illy]]></category>
		<category><![CDATA[petucco]]></category>
		<category><![CDATA[renault]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2022</guid>
		<description><![CDATA[Questa è la seconda parte dell&#8217;articolo sul come realizzare un&#8217;app aziendale di qualità. Ho selezionato altre cinque app che, secondo me, offrono quel valore aggiunto necessario per coinvolgere l&#8217;utente, legarlo al marchio e non realizzare una semplice app vetrina, tanto per esserci. Tutte le app segnalate sono gratuite e in ordine casuale. &#160; Illy Locator &#124; Illy caffè Permette di trovare i bar, gli hotel e i ristoranti che usano caffè Illy nelle vicinanze. Inoltre [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Questa è la seconda parte dell&#8217;<a href="http://www.redsend.org/2011/09/08/10-esempi-di-come-realizzare-unapp-aziendale-di-qualita-parte-1/" target="_blank">articolo sul come realizzare un&#8217;app aziendale di qualità</a>. Ho selezionato altre cinque app che, secondo me, offrono quel valore aggiunto necessario per coinvolgere l&#8217;utente, legarlo al marchio e non realizzare una semplice app vetrina, tanto per esserci.</p>
<p>Tutte le app segnalate sono gratuite e in ordine casuale.</p>
<p>&nbsp;</p>
<p><img class="size-full wp-image-2023 alignleft" title="illy locator" src="http://www.redsend.org/wp-content/uploads/2011/09/illy-locator.png" alt="" width="120" height="120" /></p>
<p><a href="http://itunes.apple.com/it/app/illy-locator/id326826707?mt=8" target="_blank">Illy Locator</a> | Illy caffè</p>
<p>Permette di trovare i bar, gli hotel e i ristoranti che usano caffè Illy nelle vicinanze. Inoltre è possibile trovare i punti vendita di capsule illy. Anche in questo caso c&#8217;è la possibilità di utilizzare la realtà aumentata per vedere dove sono posizionati i locali intorno a te.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="alignleft size-full wp-image-2028" title="comix se fa ridere e comix" src="http://www.redsend.org/wp-content/uploads/2011/09/comix-se-fa-ridere-e-comix.png" alt="" width="120" height="120" /><a href="http://itunes.apple.com/it/app/id449448790?mt=8" target="_blank">Comix &#8211; Se fa ridere è Comix</a> | Panini</p>
<p>Il noto marchio di diari per ragazzi ha realizzato un&#8217;app che raccoglie le battute degli autori di comix e le migliori strisce comiche a fumetti. Tutti gli interventi sono commentabili e votabili. Inoltre gli utenti possono inviare fotografie divertenti di cartelloni stradali, animali, situazioni goffe, ecc.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="alignleft size-full wp-image-2030" title="focus meteo meduse" src="http://www.redsend.org/wp-content/uploads/2011/09/focus-meteo-meduse1.png" alt="" width="120" height="120" /> <a href="http://itunes.apple.com/it/app/focus-meteo-meduse/id445832425?mt=8" target="_blank">Focus Meteo Meduse</a> | Mondadori</p>
<p>Focus, in collaborazione con l&#8217;università del Salento, ha realizzato quest&#8217;app attraverso la quale si può segnalare e controllare la presenza delle meduse sulle spiagge italiane. Attraverso la segnalazione dei cittadini si può vedere sulla mappa dove si trovano le meduse. Le segnalazioni vengono controllate dai ricercatori dell&#8217;Università che le validano scientificamente. Sono presenti, inoltre, delle schede informative sulle meduse più pericolose.</p>
<p>&nbsp;</p>
<p><img class="alignleft size-full wp-image-2031" title="r.s. monitor" src="http://www.redsend.org/wp-content/uploads/2011/09/r.s.-monitor.jpg" alt="" width="120" height="120" /></p>
<p><a href="http://itunes.apple.com/it/app/r.s.-monitor/id371642576?mt=8" target="_blank">R. S. Monitor</a> | Renault</p>
<p>App dedicata agli appassionati di motori. Consente di misurare le proprie performance su un circuito. Tiene traccia di velocità e accelerazione, permette di vedere una serie di diagrammi sui giri percorsi. E&#8217; possibile, inoltre, video registrare l&#8217;andamento della performance per poi riguardarlo in un secondo momento.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="alignleft size-full wp-image-2034" title="macelleria petucco" src="http://www.redsend.org/wp-content/uploads/2011/09/macelleria-petucco.png" alt="" width="120" height="120" /></p>
<p><a href="http://itunes.apple.com/it/app/macelleria-petucco/id440243048?mt=8" target="_blank">Macelleria Petucco</a> | Macelleria Petucco</p>
<p>Concludo con quest&#8217;app (lasciata volutamente per ultima) realizzata da una macelleria di Reggio Emilia che rappresenta un caso isolato nel settore, una mosca bianca a tutti gli effetti. Ad essere sinceri l&#8217;app non è realizzata molto bene, quello che va premiato, a mio avviso, è l&#8217;iniziativa. Un&#8217;app da prendere come esempio anche per i &#8220;piccoli&#8221;. E&#8217; possibile vedere foto e video della macelleria, effettuare ordini, leggere news e promozioni. Inoltre, per ogni tipo di carne, ci sono consigli su come cucinarla al meglio.</p>
<div class="shr-publisher-2022"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/yB8SWQEWv-E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/09/16/10-esempi-di-come-realizzare-un%e2%80%99app-aziendale-di-qualita-%e2%80%93-parte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2011/09/16/10-esempi-di-come-realizzare-un%e2%80%99app-aziendale-di-qualita-%e2%80%93-parte-2/</feedburner:origLink></item>
		<item>
		<title>Le 10 idee sbagliate su PHP – Parte 6/10</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/effRKK2eg_k/</link>
		<comments>http://www.redsend.org/2011/09/11/le-10-idee-sbagliate-su-php-%e2%80%93-parte-610/#comments</comments>
		<pubDate>Sun, 11 Sep 2011 18:39:24 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Oggi ho letto]]></category>
		<category><![CDATA[documentazione]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2016</guid>
		<description><![CDATA[Eccoci con il sesto appuntamento sui falsi miti di PHP. Per chi non avesse letto i precedenti post (che sono linkati alla fine dell&#8217;articolo) lascio sempre il link all&#8217;articolo originale in inglese. Oggi si parla di documentazione. 6. La documentazione di PHP è scadente o insufficiente Questa è probabilmente la peggiore lamentela che abbia mai sentito, ma penso sia necessario citarla perché l&#8217;ho sentita ripetere più di una volta. In realtà ho sentito persino qualcuno [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Eccoci con il sesto appuntamento sui falsi miti di PHP. Per chi non avesse letto i precedenti post (che sono linkati alla fine dell&#8217;articolo) lascio sempre il 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. Oggi si parla di documentazione.</p>
<h3>6. La documentazione di PHP è scadente o insufficiente</h3>
<p>Questa è probabilmente la peggiore lamentela che abbia mai sentito, ma penso sia necessario citarla perché l&#8217;ho sentita ripetere più di una volta. In realtà ho sentito persino qualcuno dire che la documentazione di PHP è talmente scadente che sono necessari i commenti per migliorarla.</p>
<p>Se c&#8217;è una sola cosa buona in PHP, questa è di certo la documentazione. La documentazione è ben strutturata, chiara e, dato il tempo necessario al team della documentazione, molto completa. I commenti degli utenti, che sono presenti nella pagine della documentazione, la arricchiscono e la rendono più completa.</p>
<p>Non ho ancora visto nessun progetto software, open source o meno, che ha una documentazione migliore di PHP. Il fatto che includa i commenti degli utenti, rende la documentazione di PHP una <strong>Documentazione 2.0</strong> &#8211; Documentazione arricchita dagli utenti.</p>
<p>Il team  documentazione di PHP fa un fantastico lavoro. Non solo si occupano della documentazione principale in Inglese, ma hanno anche dei team dedicati che si occupano di tradurla in decine di lingue diverse. Questo è sicuramente uno dei motivi per cui PHP è così popolare nel mondo. Onore a tutti quelli che aiutano nella documentazione di PHP.</p>
<p>Il team  documentazione di PHP non può fare miracoli. Gli aspetti che PHP copre sono così estesi che è impossibile conoscere ogni dettaglio oscuro che fa funzionare PHP in maniera diversa da come ci si aspetta, su alcune piattaforme. Ci possono essere bug in PHP che possono causare comportamenti sbagliati, ma questo non è di certo un errore del team  documentazione.</p>
<p>Ecco perché i commenti degli utenti sono così importanti. Forniscono delle informazioni addizionali che permettono agli utenti PHP di conoscere i comportamenti inattesi che il team documentazione non riesce ad anticipare.</p>
<p>Inoltre, spesso potete trovare, tra i commenti alla documentazione, codice di esempio per eseguire certi task che gli utenti PHP si aspettano da una determinata funzione. Questo rende la documentazione di PHP con i commenti degli utenti ancora più ricca di quanto non possa essere senza commenti. Non è fantastico?</p>
<div class="shr-publisher-2016"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/effRKK2eg_k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/09/11/le-10-idee-sbagliate-su-php-%e2%80%93-parte-610/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2011/09/11/le-10-idee-sbagliate-su-php-%e2%80%93-parte-610/</feedburner:origLink></item>
		<item>
		<title>10 esempi di come realizzare un’app aziendale di qualità – Parte 1</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/Du6ex57BU3I/</link>
		<comments>http://www.redsend.org/2011/09/08/10-esempi-di-come-realizzare-unapp-aziendale-di-qualita-parte-1/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 18:42:24 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[app economy]]></category>
		<category><![CDATA[eni]]></category>
		<category><![CDATA[ipasta]]></category>
		<category><![CDATA[nike]]></category>
		<category><![CDATA[realtà aumentata]]></category>
		<category><![CDATA[WiFi]]></category>
		<category><![CDATA[wired]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1985</guid>
		<description><![CDATA[Stiamo vivendo nella cosiddetta &#8220;app era&#8220;, intorno a noi si sta sviluppando la &#8220;app economy&#8221; e la parola &#8220;app&#8221; è sulla bocca di tutti, molto spesso senza nemmeno sapere di cosa si stia parlando. Le aziende ormai chiedono di sviluppare un&#8217;app così come 5 anni fa volevano farsi sviluppare il sito web. Le app sono diffusissime e ormai si riescono ad ottenere ottimi prodotti a costi contenuti. Ma come si dovrebbe realizzare un&#8217;app aziendale? Sono [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Stiamo vivendo nella cosiddetta &#8220;<strong>app era</strong>&#8220;, intorno a noi si sta sviluppando la &#8220;<strong>app economy</strong>&#8221; e la parola &#8220;app&#8221; è sulla bocca di tutti, molto spesso senza nemmeno sapere di cosa si stia parlando.<br />
Le aziende ormai chiedono di sviluppare un&#8217;app così come 5 anni fa volevano farsi sviluppare il sito web. Le app sono diffusissime e ormai si riescono ad ottenere <strong>ottimi prodotti a costi contenuti</strong>.</p>
<p><strong>Ma come si dovrebbe realizzare un&#8217;app aziendale?</strong></p>
<p>Sono del parere che non ha molto senso sviluppare un&#8217;app vetrina, giusto per esserci. Molte aziende stanno facendo lo stesso errore che anni fa fecero con i siti web. Volevano il sito vetrina, volevano un biglietto da visita, volevano &#8220;esserci&#8221; anche loro come stavano facendo gli altri.</p>
<p><strong>Un&#8217;app aziendale dovrebbe offrire un valore aggiunto.</strong></p>
<p>Solo in questo modo si è certi di colpire l&#8217;attenzione dell&#8217;utente finale e far si che apra l&#8217;app più volte, che lasci una buona recensione, che ne parli con gli amici e che, alla fine di un percorso, si trasformi in un cliente.</p>
<p>Ho selezionato 10 app che ritengo di qualità e che offrono questo valore aggiunto. Non sono app vetrina, non sono dei cataloghi, non sono delle pagine about o dei form per i contatti. Tutte le app scelte offrono qualche servizio veramente utile legato in qualche modo al business dell&#8217;azienda che l&#8217;ha realizzata.</p>
<p>Tutte le app segnalate sono gratuite e sono in ordine casuale.</p>
<p>&nbsp;</p>
<p><img class="size-full wp-image-1986 alignleft" title="ipasta" src="http://www.redsend.org/wp-content/uploads/2011/09/ipasta.jpg" alt="" width="120" height="120" /></p>
<p><a href="http://itunes.apple.com/it/app/ipasta/id372604405?mt=8" target="_blank">iPasta</a> | Barilla<br />
<strong></strong>Invece di realizzare un sempice catalogo dei propri prodotti, la Barilla ha realizzato un&#8217;app contenente centinaia di ricette che si possono navigare per tipo di evento, regione, ingrediente e linea di pasta. Trovata la ricetta che si desidera viene consigliata la pasta barilla con la quale cucinarla. Inoltre offre alcuni strumenti utili come il timer per la cottura, il dosaspaghetti, la lista della spesa e un simpatico servizio di condivisione foto delle proprie ricette.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="size-full wp-image-1994 alignleft" title="wired-wifi" src="http://www.redsend.org/wp-content/uploads/2011/09/wired-wifi.jpg" alt="" width="120" height="119" /></p>
<p><a href="http://itunes.apple.com/it/app/wired-wi-fi-sveglia-italia/id416776056?mt=8" target="_blank">Wired Wi-Fi</a> | Wired Italia<br />
Wired Italia ha sempre sostenuto campagne a favore della connettività in italia e quest&#8217;app aiuta nell&#8217;obiettivo. Permette, infatti, di vedere gli hot-spot wi-fi nelle proprie vicinanze. Si possono segnalare hot-spot e commentare/votare quelli già segnalati. E&#8217; possibile indicare se l&#8217;hot-spot è gratuito o meno, se la qualità della linea è buona, la posizione sulla mappa e altre informazioni utili.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="size-full wp-image-1995 alignleft" title="nike-true-city" src="http://www.redsend.org/wp-content/uploads/2011/09/nike-true-city.jpg" alt="" width="120" height="116" /></p>
<p><a href="http://itunes.apple.com/it/app/nike-true-city/id340532377?mt=8" target="_blank">Nike True City</a> | Nike<br />
Nike è, probabilmente, una delle aziende ad aver meglio colto le potenzialità delle app. Oltre ad avere un catalogo dei prodotti nike, in quest&#8217;app è possibile controllare eventi e luoghi legati allo sport, alla musica, all&#8217;arte e al cibo che sono presenti nelle proprie vicinanze. Anche in questo caso gli utenti hanno una parte attiva: gli eventi possono essere segnalati da chiunque.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="size-full wp-image-1997 alignleft" title="nike training club" src="http://www.redsend.org/wp-content/uploads/2011/09/nike-training-club.jpg" alt="" width="120" height="120" /></p>
<p><a href="http://itunes.apple.com/us/app/nike-training-club/id301521403?mt=8" target="_blank">Nike Training Club</a> | Nike<br />
A conferma di quanto ho detto sopra, Nike ha realizzato diverse app interessanti. Training club permette di avere un personal trainer nel proprio iPhone. Si sceglie il tipo di allenamento desiderato e l&#8217;app mostra una serie di video su come eseguire correttamente gli esercizi e per ognuno di essi ci sono schede informative con foto. Inoltre tiene conto dei tempi di esecuzione e di altre informazioni utili durante lo svolgimento dell&#8217;allenamento.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="size-full wp-image-1999 alignleft" title="fuori casello" src="http://www.redsend.org/wp-content/uploads/2011/09/fuori-casello.jpg" alt="" width="120" height="119" /></p>
<p><a href="http://itunes.apple.com/it/app/fuori-casello/id453720930?mt=8" target="_blank">Fuoricasello</a> | ENI<br />
Fuoricasello è una guida ai migliori ristoranti e trattorie che si trovano nei pressi dei caselli autostradali. Per ogni ristorante c&#8217;è una scheda descrittiva e una mappa con la posizione del locale. Due funzionalità molto interessanti sono quella di poter navigare i ristoranti per uscita e quella di utilizzare la realtà aumentata per vedere dove si trovano i locali nelle vicinanze.</p>
<p>&nbsp;</p>
<p>Nei prossimi giorni la seconda parte dell&#8217;articolo con le restanti 5 app.</p>
<div class="shr-publisher-1985"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/Du6ex57BU3I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/09/08/10-esempi-di-come-realizzare-unapp-aziendale-di-qualita-parte-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2011/09/08/10-esempi-di-come-realizzare-unapp-aziendale-di-qualita-parte-1/</feedburner:origLink></item>
		<item>
		<title>Le 10 idee sbagliate su PHP – Parte 5/10</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/KKq0kb-iK5M/</link>
		<comments>http://www.redsend.org/2011/09/07/le-10-idee-sbagliate-su-php-%e2%80%93-parte-510/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 18:11:12 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Oggi ho letto]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1975</guid>
		<description><![CDATA[Dopo qualche giorno di pausa, riprendo la serie di articoli sui miti da sfatare riguardo PHP. Lascio il solito link all&#8217;articolo originale di cui questa serie di post sono la traduzione. 5. PHP è controllato da una sola azienda (Zend) Se avete letto la storia di PHP sapete che fu creato da Rasmus Lerdorf nel 1994. Nel tempo si sono uniti a Rasmus decine o addirittura centinaia di altri sviluppatori, inclusi Andi Gutmans e Zeev [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Dopo qualche giorno di pausa, riprendo la serie di articoli sui miti da sfatare riguardo PHP. 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> di cui questa serie di post sono la traduzione.</p>
<h3>5. PHP è controllato da una sola azienda (Zend)</h3>
<p>Se avete letto la <a href="http://www.phpclasses.org/blog/post/www.php.net/history.php" target="_blank">storia di PHP</a> sapete che fu creato da Rasmus Lerdorf nel 1994. Nel tempo si sono uniti a Rasmus decine o addirittura centinaia di altri sviluppatori, inclusi Andi Gutmans e Zeev Surasky, i fondatori di Zend, così come altri sviluppatori chiave che lavorano (o almeno lavoravano) per Zend.</p>
<p>Penso sia normale che gli sviluppatori di Zend cerchino di influenzare lo sviluppo di PHP in modo da prendere la direzione che sia più conveniente per il loro business, dopo averlo fondato interamente su PHP. Se lo sviluppo di PHP prendesse una direzione tale da rendere Zend irrilevante, loro probabilmente fallirebbero.</p>
<p>In tutti i casi, affermare che lo sviluppo di PHP sia controllato da una sola azienda è una grossa esagerazione. Il fatto è PHP fu sviluppato e continua ad essere sviluppato da molte altre persone che non sono legate a Zend.</p>
<p>Ci sono, addirittura, sviluppatori chiave che lavorano per Microsoft, come <a href="http://www.phpclasses.org/blog/post/85-What-is-Microsoft-up-to-with-PHP.html" target="_blank">Pierre Alain Joye</a>, uno sviluppatore chiave di PHP di lunga data che fu assunto da Microsoft negli anni scorsi per far si che PHP girasse bene con Windows e gli altri prodotti Microsoft. Ci sono anche sviluppatori di Oracle, non solo per occuparsi delle estensioni per il database Oracle, ma anche per MySQL, che è diventato da poco un prodotto Oracle, da quando hanno comprato Sun.</p>
<p>Il fatto è che questi sviluppatori PHP chiave che sono legati a Zend, Microsoft, Oracle o altre compagnie, sono una minoranza, nonostante la loro influenza. La maggior parte degli sviluppatori chiave non sono legati ad alcuna azienda.</p>
<p>Se siete preoccupati che queste aziende possano essere malvagie e cercare di influenzare lo sviluppo di PHP nella direzione sbagliata, state certi del fatto che gli altri sviluppatori chiave, non legati ad alcuna compagnia, sono interessati a tenere sotto controllo ogni singola mossa sbagliata. Se avete cercato di seguire le discussioni delle mailing-list interne di PHP, per un po&#8217; di tempo, avrete già notato che è così.</p>
<div class="shr-publisher-1975"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/KKq0kb-iK5M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/09/07/le-10-idee-sbagliate-su-php-%e2%80%93-parte-510/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2011/09/07/le-10-idee-sbagliate-su-php-%e2%80%93-parte-510/</feedburner:origLink></item>
		<item>
		<title>Decoro Urbano: filo diretto tra amministrazioni e cittadini</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/2pN39s32IY0/</link>
		<comments>http://www.redsend.org/2011/09/07/decoro-urbano-filo-diretto-tra-amministrazioni-e-cittadini/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 15:57:01 +0000</pubDate>
		<dc:creator>redsend</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[ambiente]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1960</guid>
		<description><![CDATA[Decoro Urbano è un servizio gratuito per i cittadini e per le istituzioni. La proposta per una cittadinanza attiva in filo diretto con le amministrazioni pubbliche.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><strong>Decoro Urbano</strong> è uno strumento per la segnalazione di disagi via <a href="http://www.decorourbano.org/applicazioni/" target="_blank">smartphone</a> e pc, un servizio innovativo per <strong>contribuire alla risoluzione dei problemi del territorio</strong>.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1963" title="iPhoneSplash" src="http://www.redsend.org/wp-content/uploads/2011/09/iPhoneSplash.jpeg" alt="" width="496" height="322" /></p>
<p>Il progetto è in costante sviluppo: attualmente è possibile inviare segnalazioni in merito alla <strong>gestione dei rifiuti</strong>, alla <strong>manutenzione e alla segnaletica stradale</strong>, al <strong>degrado nelle zone verdi</strong>, al <strong>vandalismo</strong> e alle <strong>affissioni abusive</strong>. Tutte le segnalazioni sono liberamente consultabili e condivisibili in rete.</p>
<p><img class="aligncenter size-full wp-image-1967" title="wedu" src="http://www.redsend.org/wp-content/uploads/2011/09/wedu.png" alt="" width="575" height="424" /></p>
<h3>Come funziona?</h3>
<p>L&#8217;utente registrato utilizza l&#8217;applicazione smartphone o effettua l&#8217;accesso su www.decorourbano.org per inviare la propria segnalazione. Il team di Maiora Labs effettua un controllo preventivo impedendo la pubblicazione di segnalazioni non pertinenti o la violazione delle condizioni di utilizzo. La segnalazione viene pubblicata su decoro urbano. L&#8217;ente preposto la visualizza sul suo pannello di controllo e comunica lo status dell&#8217;operazione: in attesa, in carico, risolta, gestendo gli interventi in base alle priorità.</p>
<p>Le istituzioni che aderiscono al network di <strong>Decoro Urbano</strong> utilizzano la mappa per <strong>monitorare il territorio</strong> e <strong>aggiornano lo status delle segnalazioni</strong>, informando i cittadini in merito alla gestione degli interventi e/o comunicando pubblicamente la risoluzione dei problemi.</p>
<p><img class="aligncenter size-medium wp-image-1969" title="Schermata 2011-09-07 a 17.22.52" src="http://www.redsend.org/wp-content/uploads/2011/09/Schermata-2011-09-07-a-17.22.52-575x219.png" alt="" width="575" height="219" />La risoluzione di un problema comunicata attraverso Decoro Urbano ottiene <strong>ampia visibilità in rete</strong> e raggiunge rapidamente la community.</p>
<h3>Comuni Attivi</h3>
<p>Un comune che aderisce al progetto appare in Decoro Urbano come <strong>comune attivo</strong> dispone  dei seguenti strumenti per la gestione del servizio:</p>
<ul>
<li>Home page personale (ad es. www.roma.decorourbano.org)</li>
<li>Applicazioni smartphone personalizzata (logo in apertura)</li>
<li>Accesso &#8220;Amministratore&#8221; con pannello di controllo</li>
<li>Materiale divulgativo</li>
</ul>
<p>Le istituzioni che aderiscono al network compiono un importante passo nella realizzazione dell&#8217;e-Government, in linea con quanto sta accadendo in diversi Paesi (USA, Nord Europa, Asia). Attraverso la completa integrazione con i <strong>social network</strong>, gli interventi ottengono <strong>ampia risonanza mediatica</strong> e riscuotono il consenso di tutta la community.</p>
<p>&nbsp;</p>
<div class="shr-publisher-1960"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/2pN39s32IY0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/09/07/decoro-urbano-filo-diretto-tra-amministrazioni-e-cittadini/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2011/09/07/decoro-urbano-filo-diretto-tra-amministrazioni-e-cittadini/</feedburner:origLink></item>
		<item>
		<title>Come cancellare un amico da Facebook</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/0HFytlsgOB8/</link>
		<comments>http://www.redsend.org/2011/09/05/come-cancellare-un-amico-da-facebook/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 00:55:44 +0000</pubDate>
		<dc:creator>redsend</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[photoshop]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1943</guid>
		<description><![CDATA[Quello che andrò a mostrarvi di seguito è una delle numerose tecniche esistenti per cancellare un amico da Facebook. L'operazione, per motivi di sicurezza, è stata resa molto macchinosa proprio per accertarsi che l'utente desideri "realmente" cancellare una persona dalla propria vita virtuale.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Quello che andrò a mostrarvi di seguito è una delle numerose tecniche esistenti per cancellare un amico da Facebook. L&#8217;operazione, per motivi di sicurezza, è stata resa molto macchinosa proprio per accertarsi che l&#8217;utente desideri &#8220;realmente&#8221; cancellare una persona dalla propria vita virtuale.</p>
<p>I passaggi non sono banali, quindi, per ogni problema o difficoltà che riscontrate non esitate a commentare.</p>
<p>Iniziamo aprendo la pagina del vostro profilo e andando nella sezione &#8220;Amici&#8221; che trovate alla vistra sinistra.</p>
<p><img class="aligncenter size-medium wp-image-1950" title="1" src="http://www.redsend.org/wp-content/uploads/2011/09/1-575x409.png" alt="" width="575" height="409" /></p>
<p>Stampate con il tasto &#8220;STAMP&#8221;, sotto Windows, o con il tasto CMD+SHIFT+4 e poi BARRA SPAZIATRICE, sotto Mac OS, la finestra del browser. Aprite l&#8217;immagine salvata con un programma per l&#8217;editing delle immagini, in questo caso Photoshop.</p>
<p><img class="aligncenter size-medium wp-image-1951" title="2" src="http://www.redsend.org/wp-content/uploads/2011/09/2-575x359.png" alt="" width="575" height="359" /></p>
<p>&nbsp;</p>
<p>Selezionate l&#8217;amico che volete cancellare, nell&#8217;esempio &#8220;Alberto Montella&#8221; (sappi che ti voglio bene, è solo un esempio&#8230;).</p>
<p><img class="aligncenter size-medium wp-image-1947" title="3" src="http://www.redsend.org/wp-content/uploads/2011/09/3-575x359.png" alt="" width="575" height="359" /></p>
<p>&nbsp;</p>
<p>Tagliate ogni rapporto con l&#8217;amico selezionato attraverso la combinazione CMD+x oppure CTRL+x, quello che ottenete è un vuoto nella vostra vita, un piccolo tassello mancante.</p>
<p><img class="aligncenter size-medium wp-image-1946" title="4" src="http://www.redsend.org/wp-content/uploads/2011/09/4-575x359.png" alt="" width="575" height="359" /></p>
<p>&nbsp;</p>
<p>Non disperate, esiste un rimedio, selezionate lo strumento &#8220;secchiello&#8221;, selezionate il colore FFFFFF (comunemente noto come bianco)</p>
<p><img class="aligncenter size-medium wp-image-1953" title="5" src="http://www.redsend.org/wp-content/uploads/2011/09/5-575x398.png" alt="" width="575" height="398" /></p>
<p>A questo punto riempite il vuoto che si è creato dentro di voi&#8230;</p>
<p><img class="aligncenter size-medium wp-image-1945" title="6" src="http://www.redsend.org/wp-content/uploads/2011/09/6-575x359.png" alt="" width="575" height="359" /></p>
<p>&nbsp;</p>
<p>Salvate l&#8217;immagine per dispositivi WEB come PNG-24</p>
<p><img class="aligncenter size-medium wp-image-1948" title="7" src="http://www.redsend.org/wp-content/uploads/2011/09/7-575x359.png" alt="" width="575" height="359" /></p>
<p>&nbsp;</p>
<p>Adesso arriva la parte complicata: come prima cosa il file deve essere chiamato fb_rb4920.png altrimenti Facebook non riesce a riconoscere l&#8217;aggiornamento del Database.</p>
<p>Aprite il vostro programma FTP preferito, se non ne avete uno potete scaricarvi Cyberduck, gratuito e fatto molto bene. Create una nuova connessione con il server FTP di Facebook. L&#8217;indirizzo per la connessione è ftp.facebook.com e il path a cui accedere è /images. Il nome utente  e la password sono quelle del vostro account Facebook.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1952" title="10" src="http://www.redsend.org/wp-content/uploads/2011/09/10.png" alt="" width="448" height="559" /></p>
<p>&nbsp;</p>
<p>Ora caricate l&#8217;immagine che precedentemente avete salvato e attendere 2 giorni. Questo tempo può variare a seconda delle richieste che il team dedicato a questo funzionalità ha ricevuto. L&#8217;immagine  sarà analizzata e successivamente verranno apportate le modifiche al Database mondiale di Facebook.</p>
<p>Spero a tutti che sia stato chiaro ogni passaggio di questo tutorial, per qualsiasi domanda non esitate a contattarmi.</p>
<div class="shr-publisher-1943"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/0HFytlsgOB8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/09/05/come-cancellare-un-amico-da-facebook/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2011/09/05/come-cancellare-un-amico-da-facebook/</feedburner:origLink></item>
		<item>
		<title>Le 10 idee sbagliate su PHP – Parte 4/10</title>
		<link>http://feedproxy.google.com/~r/Redsend/~3/KMGMkYj5N9U/</link>
		<comments>http://www.redsend.org/2011/09/02/le-10-idee-sbagliate-su-php-%e2%80%93-parte-410/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 20:09:45 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1917</guid>
		<description><![CDATA[Eccoci con il quarto appuntamento, molto breve, di questa serie di articoli tradotti dall&#8217;inglese &#8220;Top 10 Wrong Ideas About PHP That You Should Get Right&#8220;. 4. PHP è adatto solo allo sviluppo Web L&#8217;uso più comune di PHP è per lo sviluppo di applicazioni web. In realtà PHP si può eseguire anche esternamente ad un web server usando l&#8217;eseguibile PHP CLI (l&#8217;interfaccia a linea di comando). Quest&#8217;ultimo è un programma che può essere lanciato da [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Eccoci con il quarto appuntamento, molto breve, di questa serie di articoli tradotti dall&#8217;inglese &#8220;<a href="http://www.phpclasses.org/blog/post/155-Top-10-Wrong-Ideas-About-PHP-That-You-Should-Get-Right.html" target="_blank">Top 10 Wrong Ideas About PHP That You Should Get Right</a>&#8220;.</p>
<h3>4. PHP è adatto solo allo sviluppo Web</h3>
<p>L&#8217;uso più comune di PHP è per lo sviluppo di applicazioni web. In realtà PHP si può eseguire anche esternamente ad un web server usando l&#8217;eseguibile <a href="http://www.php.net/cli" target="_blank">PHP CLI</a> (l&#8217;interfaccia a linea di comando). Quest&#8217;ultimo è un programma che può essere lanciato da una qualsiasi shell a linea di comando per eseguire ogni sorta di operazioni, legate o meno al web.</p>
<p>Anche programmi con uso intensivo della CPU vengono scritti con PHP ed eseguiti fuori da un web server, usando la CI, come per esempio l&#8217;invio di newsletter a molti iscritti. Lo stesso <a href="http://www.phpclasses.org" target="_blank">PHPClasses</a> invia milioni di newsletter ogni mese utilizzando la versione CLI di PHP.</p>
<p>Si possono addirittura creare applicazioni desktop da eseguire su Windows, Linux, Mac o su qualsiasi altro sistema Unix, usando l&#8217;estensione <a href="http://gtk.php.net/" target="_blank">PHP-Gtk</a>. Si possono anceh sviluppare applicazioni specifiche per Windows o servizi per Windows usando estensioni come <a href="http://pecl.php.net/package/WinBinder" target="_blank">WinBinder</a> e altre <a href="http://www.phpclasses.org/blog/post/www.php.net/manual/en/refs.utilspec.windows.php" target="_blank">specifiche estensioni di PHP per Windows</a>.</p>
<p>Non è che ci siamo molta richiesta per lo sviluppo di questo tipo di applicazioni specifiche per i sistemi operativi ma, se ne aveste bisogno, potete svilupparle anche con PHP.</p>
<div class="shr-publisher-1917"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><img src="http://feeds.feedburner.com/~r/Redsend/~4/KMGMkYj5N9U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/09/02/le-10-idee-sbagliate-su-php-%e2%80%93-parte-410/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.redsend.org/2011/09/02/le-10-idee-sbagliate-su-php-%e2%80%93-parte-410/</feedburner:origLink></item>
	<media:rating>nonadult</media:rating></channel>
</rss>

