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

<channel>
	<title>Simone Cabrino &#187; Programmazione</title>
	<atom:link href="http://simone.cabrino.it/blog/category/programmazione/feed/" rel="self" type="application/rss+xml" />
	<link>http://simone.cabrino.it</link>
	<description>Informatica, internet e programmazione: è passione!</description>
	<lastBuildDate>Tue, 08 Nov 2011 13:37:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>MySQL, velocizzare query e connessioni</title>
		<link>http://simone.cabrino.it/blog/mysql-velocizzare-query-e-connessioni/</link>
		<comments>http://simone.cabrino.it/blog/mysql-velocizzare-query-e-connessioni/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 13:37:43 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[query]]></category>

		<guid isPermaLink="false">http://simone.cabrino.it/?p=1009</guid>
		<description><![CDATA[Questo non è un vero articolo che spiega come velocizzare la connessione con il vostro MySQL, ma un promemoria per chiunque sia alla ricerca di soluzioni valide per velocizzare le proprie query. Ogni problema ha soluzioni differenti e per questo è meglio un archivio di soluzioni valide per tutti gli ambiti piuttosto che una soluzione [...]]]></description>
			<content:encoded><![CDATA[<p>Questo non è un vero articolo che spiega come velocizzare la connessione con il vostro MySQL, ma un promemoria per chiunque sia alla ricerca di soluzioni valide per velocizzare le proprie query.</p>
<p>Ogni problema ha soluzioni differenti e per questo è meglio un archivio di soluzioni valide per tutti gli ambiti piuttosto che una soluzione non valida per molti.</p>
<p><strong>Link a 10 articoli su come ottimizzare le query</strong></p>
<p>http://blog.fedecarg.com/2008/06/12/10-great-articles-for-optimizing-mysql-queries/</p>
<p><strong>Tools di diagnostica MySQL</strong></p>
<p>http://www.mysqlperformanceblog.com/tools/</p>
<p><strong>Suggerimenti per l&#8217;ottimizzazione</strong></p>
<p>http://ajohnstone.com/achives/mysql-php-performance-optimization-tips/</p>
<p><strong>Consigli ufficiali MySQL per l&#8217;ottimizzazione</strong></p>
<p>http://dev.mysql.com/tech-resources/presentations/presentation-oscon2000-20000719/</p>
<p>Spero che a qualcuno, come a me, siano risultati utili&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://simone.cabrino.it/blog/mysql-velocizzare-query-e-connessioni/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress Photo Album Plus, traduzione italiana</title>
		<link>http://simone.cabrino.it/blog/wordpress-photo-album-plus-traduzione-italiana/</link>
		<comments>http://simone.cabrino.it/blog/wordpress-photo-album-plus-traduzione-italiana/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 08:12:05 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[foto album]]></category>
		<category><![CDATA[italiano]]></category>
		<category><![CDATA[localizzazione]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[traduzione]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp]]></category>

		<guid isPermaLink="false">http://simone.cabrino.it/?p=992</guid>
		<description><![CDATA[Post veloce, per annunciare la localizzazione italiana del plugin Photo Album Plus per WordPress. Il plugin offre interessanti funzionalità e ha un&#8217;ottimo funzionamento. Il plugin è, ad oggi, alla versione 3.0.1. Il plugin WP Photo Album Plus è creato per gestire comodamente e mostrare foto album e slideshow degli stessi all&#8217;interno dei blog WordPress. Offre [...]]]></description>
			<content:encoded><![CDATA[<p>Post veloce, per annunciare la <strong>localizzazione italiana</strong> del <strong>plugin Photo Album Plus</strong> per <strong>WordPress</strong>. Il plugin offre interessanti funzionalità e ha un&#8217;ottimo funzionamento. Il plugin è, ad oggi, alla <strong>versione 3.0.1</strong>.</p>
<p>Il plugin <strong>WP Photo Album Plus</strong> è creato per gestire comodamente e mostrare foto album e slideshow degli stessi all&#8217;interno dei blog WordPress.</p>
<p>Offre la possibilità di:</p>
<ul>
<li>creare album che contengono foto o sotto album</li>
<li>nessun limite nei sottoalbum</li>
<li>controllo sulla dimensione delle foto</li>
<li>ordinamento degli album</li>
<li>ordinamento delle foto</li>
<li>slideshow automatico con velocità personalizzabili</li>
<li>widget &#8220;Foto del giorno&#8221; per la sidebar</li>
<li>widget &#8220;Ricerca foto&#8221;</li>
<li>possibilità di votare le foto (con le classiche 5 stelle)</li>
<li>widget &#8220;Mini slideshow&#8221; per la sidebar</li>
<li>localizzato in olandese, giapponese, francese (vecchio), spagnolo e tedesco, oltre che alla mia localizzazione italiana</li>
</ul>
<p>Trovate il plugin a questo indirizzo: http://wordpress.org/extend/plugins/wp-photo-album-plus/<br />
Potete scaricare la traduzione in italiano qui: <a href="http://simone.cabrino.it/wp-content/uploads/2011/04/ItalianTranslationPhotoAlbumPlus.zip">Italian Translation WP Photo Album Plus</a></p>
<p>Per installare la traduzione italiana, copiate i due file scaricati all&#8217;interno della directory wp-content/plugins/wp-photo-album-plus/langs</p>
<p>Buon divertimento.</p>
]]></content:encoded>
			<wfw:commentRss>http://simone.cabrino.it/blog/wordpress-photo-album-plus-traduzione-italiana/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ottimizzare WordPress</title>
		<link>http://simone.cabrino.it/blog/ottimizzare-wordpress/</link>
		<comments>http://simone.cabrino.it/blog/ottimizzare-wordpress/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 21:43:02 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sviluppo Siti]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[ottimizzazione]]></category>
		<category><![CDATA[velocità]]></category>

		<guid isPermaLink="false">http://simone.cabrino.it/?p=944</guid>
		<description><![CDATA[Finalmente, era parecchio che aspettavo di trovare il tempo per venire ad ottimizzare un po&#8217; il mio piccolo blog per renderlo nuovamente funzionante come un tempo. Un po&#8217; come i computers, con l&#8217;uso peggiorano fino a quando diventa necessario formattare o procedere con una pulizia profonda del sistema&#8230; Disabilitare Plugin non utilizzati La prima cosa [...]]]></description>
			<content:encoded><![CDATA[<p>Finalmente, era parecchio che aspettavo di trovare il tempo per venire ad ottimizzare un po&#8217; il mio piccolo blog per renderlo nuovamente funzionante come un tempo. Un po&#8217; come i computers, con l&#8217;uso peggiorano fino a quando diventa necessario formattare o procedere con una pulizia profonda del sistema&#8230;</p>
<h2>Disabilitare Plugin non utilizzati</h2>
<p>La prima cosa da fare è, banale, eliminare tutti i plugin non utilizzati, ma anche in non necessari per il proprio blog. Per esempio, tra i plugin installati avevo &#8220;WordPress Stats&#8221; che, proprio in questi giorni, ha rallentato parecchio la connessione verso i propri server per il salvataggio statistico. Conclusione: WP era diventato parecchio lento!</p>
<h2>JavaScript, carichiamo quanto serve realmente?</h2>
<p>Mi sono reso conto come, in tanti, facendo un po&#8217; di modifiche ai temi installati, si ritrovano a richiamare pacchetti JS inclusi in WordPress anche se non ne hanno completamente bisogno. Il mio tema, per esempio, aveva Prototype &#8220;installato&#8221; ma non c&#8217;era alcuno script che andava ad utilizzarlo.</p>
<h2>Usi Google Analytics? E&#8217; l&#8217;ultima versione?</h2>
<p>Il mio blog è online ormai dal lontano 2007 e la versione dello script di monitoraggio di Google Analytics era veramente vecchiotta. La nuova versione funziona totalmente in modo asincrono e di conseguenza il sito caricherà in modo più rapido.</p>
<h2>Sistemiamo HTML / XHTML</h2>
<p>Perchè far soffrire il nostro povero browser durante la fase di rendering perchè alcuni TAG sono mancanti o non completi? Un bel check del validator W3C mi ha permesso di individuare nuovamente un po&#8217; di errori e passare a sistemarli, per lo meno sulla Home Page. Dovrò provvedere a fare la stessa operazione anche sulle pagine interne, ma&#8230; tempo al tempo!!! Cominciamo a sistemare la nostra Home Page.</p>
<h2>Impostiamo Expiring Headers</h2>
<p>Lo potete fare solo se potete maneggiare il file &#8220;.htaccess&#8221; del vostro server. Vi consiglio di inserire queste prossime righe all&#8217;inizio del file. Tutti i vostri file &#8220;statici&#8221; diventeranno &#8220;a lunga conservazione&#8221;.</p>
<pre><code>
<div id="_mcePaste">&lt;FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"&gt;
Header set Expires "Thu, 15 Jan 2015 20:00:00 GMT"
&lt;/FilesMatch&gt;

&lt;FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"&gt;
Header set Cache-Control "max-age=31449600, public"
&lt;/FilesMatch&gt;

&lt;FilesMatch "\.(xml|txt)$"&gt;
Header set Cache-Control "max-age=172800, public, must-revalidate"
&lt;/FilesMatch&gt;

&lt;FilesMatch "\.(html|htm)$"&gt;
Header set Cache-Control "max-age=14400, must-revalidate"
&lt;/FilesMatch&gt;</div>

</code></pre>
<p>Altro? Si, effettivamente, tra compressione JavaScript e immagini e configurazione corretta del server e del posizionamento / scrittura di alcuni scripts potrei fare di meglio, ma chi ben comincia è a metà dell&#8217;opera, no?</p>
<p>Tu hai qualche altro consiglio da darmi o vuoi sottolineare un&#8217;importante ottimizzazione che ho perso per strada?</p>
]]></content:encoded>
			<wfw:commentRss>http://simone.cabrino.it/blog/ottimizzare-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IIS7.5 e ASP, problemi nel download forzato di files</title>
		<link>http://simone.cabrino.it/blog/iis7-5-problemi-download-forzato-di-files/</link>
		<comments>http://simone.cabrino.it/blog/iis7-5-problemi-download-forzato-di-files/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 06:41:09 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Soluzioni Win]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[iis]]></category>
		<category><![CDATA[Windows 2008]]></category>

		<guid isPermaLink="false">http://simone.cabrino.it/?p=914</guid>
		<description><![CDATA[Stiamo aggiornando i nostri server migrando a Windows 2008 Server con IIS7.5 e alcuni nostri script ci stanno sollevando alcuni piccoli problemi che su IIS6 non si verificavano. Il download forzato di file sembra ora possibile solo attivando il buffering via codice, aggiungendo due semplici linee (evidenziate in bold) nello script di download. Response.Buffer = [...]]]></description>
			<content:encoded><![CDATA[<p>Stiamo aggiornando i nostri server migrando a Windows 2008 Server con IIS7.5 e alcuni nostri script ci stanno sollevando alcuni piccoli problemi che su IIS6 non si verificavano.</p>
<p>Il download forzato di file sembra ora possibile solo attivando il buffering via codice, aggiungendo due semplici linee (evidenziate in bold) nello script di download.</p>
<pre><code class="vbscript"><strong>Response.Buffer = True</strong>

'download forzato
do until objStream.eos Or Not Response.isClientConnected
   response.binaryWrite objStream.read (chunk)
   <strong>response.flush</strong>
Loop</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://simone.cabrino.it/blog/iis7-5-problemi-download-forzato-di-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento: redirect allo store view principale</title>
		<link>http://simone.cabrino.it/blog/magento-redirect-store-view/</link>
		<comments>http://simone.cabrino.it/blog/magento-redirect-store-view/#comments</comments>
		<pubDate>Sun, 30 May 2010 08:50:56 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[magento]]></category>

		<guid isPermaLink="false">http://simone.cabrino.it/?p=903</guid>
		<description><![CDATA[Certamente vi capiterà di voler redirigere direttamente l&#8217;utente sulla propria lingua, non appena aggiungerete una o più lingue al vostro nuovo e-commerce creato con Magento. La procedura è abbastanza semplice e, grazie a questa guida trovata sul sito Magento, riuscirete a risolvere in meno di 5 minuti. Sulla versione 1.4 di Magento consiglio di inserire [...]]]></description>
			<content:encoded><![CDATA[<p>Certamente vi capiterà di voler redirigere direttamente l&#8217;utente sulla propria lingua, non appena aggiungerete una o più lingue al vostro nuovo e-commerce creato con Magento.</p>
<p>La procedura è abbastanza semplice e, grazie a <a href="http://www.magentocommerce.com/wiki/how-to/how_to_automatically_redirect_to_a_store_view_based_on_the_browser_language" target="_blank">questa guida trovata sul sito Magento</a>, riuscirete a risolvere in meno di 5 minuti.</p>
<p>Sulla versione 1.4 di Magento consiglio di inserire il codice solo dopo la riga 73 del file index.php, esattamente a seguito di</p>
<pre><code class="php">#ini_set('display_errors', 1);</code></pre>
<p>Se avete problemi sapete dove trovarmi!</p>
]]></content:encoded>
			<wfw:commentRss>http://simone.cabrino.it/blog/magento-redirect-store-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP: redirect da non www a www</title>
		<link>http://simone.cabrino.it/blog/asp-www-redirect/</link>
		<comments>http://simone.cabrino.it/blog/asp-www-redirect/#comments</comments>
		<pubDate>Wed, 12 May 2010 12:38:24 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[asp]]></category>

		<guid isPermaLink="false">http://simone.cabrino.it/?p=893</guid>
		<description><![CDATA[Semplice script da posizionare in testa alle vostre pagine ASP se volete redirigere gli utenti dal vostro dominio non www al sito www. If InStr(LCase(Request.ServerVariables("SERVER_NAME")),"www") = 0 Then Response.Status="301 Moved Permanently" Response.AddHeader "Location", "http://www.dominio.it" End If Lo script è migliorabile, magari mantenendo anche querystring e e script page nell&#8217;URL, ma&#8230; per ora, per un intervento [...]]]></description>
			<content:encoded><![CDATA[<p>Semplice script da posizionare in testa alle vostre pagine ASP se volete redirigere gli utenti dal vostro dominio non www al sito www.</p>
<pre><code class="vbscript">If InStr(LCase(Request.ServerVariables("SERVER_NAME")),"www") = 0 Then
   Response.Status="301 Moved Permanently"
   Response.AddHeader "Location", "http://www.dominio.it"
End If
</code></pre>
<p>Lo script è migliorabile, magari mantenendo anche querystring e e script page nell&#8217;URL, ma&#8230; per ora, per un intervento rapido ed indolore, mi va bene così! Se hai voglia di migliorarlo, commenta pure!</p>
]]></content:encoded>
			<wfw:commentRss>http://simone.cabrino.it/blog/asp-www-redirect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Website Page Analyzer: da oggi versione 0.93</title>
		<link>http://simone.cabrino.it/blog/website-page-analyzer-0-93/</link>
		<comments>http://simone.cabrino.it/blog/website-page-analyzer-0-93/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 08:35:39 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[website page analyzer]]></category>

		<guid isPermaLink="false">http://simone.cabrino.it/?p=883</guid>
		<description><![CDATA[Ho appena terminato una tornata di aggiornamenti al mio basic SEO tool Website Page Analyzer. Da oggi diventa un pochino più tecnico ed è in grado di analizzare in modo più approfondito alcune aree delle vostre pagine web che fino ad oggi erano rimaste scoperte. Se avete consiglie e/o suggerimenti, fatemi sapere! PS: colgo l&#8217;occasione [...]]]></description>
			<content:encoded><![CDATA[<p>Ho appena terminato una tornata di aggiornamenti al mio basic SEO tool Website Page Analyzer. Da oggi diventa un pochino più tecnico ed è in grado di analizzare in modo più approfondito alcune aree delle vostre pagine web che fino ad oggi erano rimaste scoperte. Se avete consiglie e/o suggerimenti, fatemi sapere! <img src='http://simone.cabrino.it/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>PS: colgo l&#8217;occasione per farmi gli auguri e ringraziare coloro che ci hanno già pensato!</p>
]]></content:encoded>
			<wfw:commentRss>http://simone.cabrino.it/blog/website-page-analyzer-0-93/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Russia: Festa del Programmatore</title>
		<link>http://simone.cabrino.it/blog/russia-festa-del-programmatore/</link>
		<comments>http://simone.cabrino.it/blog/russia-festa-del-programmatore/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 20:45:35 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://simone.cabrino.it/?p=878</guid>
		<description><![CDATA[Sono arrivato un po&#8217; tardi, ma l&#8217;anno prossimo di certo non me la farò scappare: è la festa del programmatore, nata in Russia, ma che piano piano si sta espandendo in tutti i continenti. Per maggiori info: http://programmazione.it/index.php?entity=eitem&#38;idItem=42769]]></description>
			<content:encoded><![CDATA[<p>Sono arrivato un po&#8217; tardi, ma l&#8217;anno prossimo di certo non me la farò scappare: è la festa del programmatore, nata in Russia, ma che piano piano si sta espandendo in tutti i continenti.</p>
<p>Per maggiori info: <a href="http://programmazione.it/index.php?entity=eitem&amp;idItem=42769">http://programmazione.it/index.php?entity=eitem&amp;idItem=42769</a></p>
]]></content:encoded>
			<wfw:commentRss>http://simone.cabrino.it/blog/russia-festa-del-programmatore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Symfony: configurazione di apache su EasyPHP</title>
		<link>http://simone.cabrino.it/blog/symfony-configurazione-di-apache-su-easyphp/</link>
		<comments>http://simone.cabrino.it/blog/symfony-configurazione-di-apache-su-easyphp/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 00:17:05 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Apache Server]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Soluzioni Win]]></category>
		<category><![CDATA[WAMP]]></category>

		<guid isPermaLink="false">http://simone.cabrino.it/?p=780</guid>
		<description><![CDATA[Oggi, un po&#8217; per passione e un po&#8217; per divertimento, ho deciso di configurare EasyPHP 3.0, un &#8220;famoso&#8221; software di tipo WAMP (Windows, Apache, MySQL, PHP) per poter programmare e divertirmi un po&#8217; con l&#8217;ultima versione di Symfony, Symfony 1.2, un ottimo framework per la programmazione con PHP 5. Ho deciso di installare Symfony utilizzando [...]]]></description>
			<content:encoded><![CDATA[<p>Oggi, un po&#8217; per passione e un po&#8217; per divertimento, ho deciso di configurare <a class="zem_slink" title="EasyPHP" rel="homepage" href="http://www.easyphp.org/" mce_href="http://www.easyphp.org/">EasyPHP</a> 3.0, un &#8220;famoso&#8221; software di tipo <a class="zem_slink" title="WAMP" rel="wikipedia" href="http://en.wikipedia.org/wiki/WAMP" mce_href="http://en.wikipedia.org/wiki/WAMP">WAMP</a> (Windows, Apache, <a class="zem_slink" title="MySQL" rel="homepage" href="http://www.mysql.com" mce_href="http://www.mysql.com">MySQL</a>, <a class="zem_slink" title="PHP" rel="homepage" href="http://php.net/" mce_href="http://php.net/">PHP</a>) per poter programmare e divertirmi un po&#8217; con l&#8217;ultima versione di <a class="zem_slink" title="Symfony" rel="homepage" href="http://www.symfony-project.org/" mce_href="http://www.symfony-project.org/">Symfony</a>, Symfony 1.2, un <a title="Programmare con i framework" href="simone.cabrino.it/2008/06/17/usare-un-framework-beh-molto-piu-divertente/ " mce_href="simone.cabrino.it/2008/06/17/usare-un-framework-beh-molto-piu-divertente/ " target="_self">ottimo framework</a> per la programmazione con PHP 5.</p>
<p>Ho deciso di installare Symfony utilizzando <span mce_name="strong" mce_style="font-weight: bold;" style="font-weight: bold;" class="Apple-style-span">PEAR</span>, semplificando tutta la procedura.</p>
<h2>La mia configurazione computer</h2>
<p>Il mio netbook (<span mce_name="strong" mce_style="font-weight: bold;" style="font-weight: bold;" class="Apple-style-span"><a title="Samsung NC10" href="simone.cabrino.it/2008/11/28/samsung-nc10-un-uomo-felice/" mce_href="simone.cabrino.it/2008/11/28/samsung-nc10-un-uomo-felice/" target="_self">Samsung NC10</a></span> &#8211; che tra l&#8217;altro fino a ieri non funzionava!) è la macchina su cui mi diverto a sperimentare e giocare programmando, davanti alla televisione, le notti fino a tardi.</p>
<p>Ho deciso di usare la doppia partizione per salvare sul &#8220;disco&#8221; D: tutti i documenti e, con essi, anche le pagine web e gli script dei siti internet.</p>
<p>Come ho detto, le installazioni di <span mce_name="strong" mce_style="font-weight: bold;" style="font-weight: bold;" class="Apple-style-span">EasyPHP </span>e <span mce_name="strong" mce_style="font-weight: bold;" style="font-weight: bold;" class="Apple-style-span">Symfony </span>seguono due procedure semplicissime:</p>
<ul>
<li>il primo, EasyPHP, va semplicemente <a title="Scarica EasyPHP" href="http://sourceforge.net/project/showfiles.php?group_id=14045" mce_href="http://sourceforge.net/project/showfiles.php?group_id=14045" target="_blank">scaricato</a> e installato</li>
<li>il secondo, Symfony, si può installare comodamente grazie a PEAR, componente di PHP (prima però bisogna <a title="Installare PEAR su EasyPHP" href="http://mikereynolds.wordpress.com/2008/04/23/easyphp-pear-on-windows-get-php-mysql-phpmyadmin-and-my-tweak-for-getting-pear-to-work/" mce_href="http://mikereynolds.wordpress.com/2008/04/23/easyphp-pear-on-windows-get-php-mysql-phpmyadmin-and-my-tweak-for-getting-pear-to-work/" target="_blank">installare PEAR</a>!)</li>
</ul>
<p><img src="http://simone.cabrino.it/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" mce_src="http://simone.cabrino.it/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" class="mceWPmore mceItemNoResize" title="Continua..."/></p>
<h2>Configurazione di Apache</h2>
<p>La configurazione di <span mce_name="strong" mce_style="font-weight: bold;" style="font-weight: bold;" class="Apple-style-span">Apache </span>potrebbe essere uno scoglio per chi è solito programmare ma non ha mai utilizzato un server web, che sia Apache o IIS. E Apache, come tutti i software open source, potrebbe apparire un po&#8217; complicato da configurare (ragazzi, siamo un po&#8217; troppo abituati alle interfacce UI), ma ci permette di fare veramente quello che più vogliamo.</p>
<p>Per una configurazione &#8220;di base&#8221;, aprite dal menu contestuale di EasyPHP la Configurazione di Apache Server, andate sul fondo e incollare il seguente stralcio di codice.</p>
<pre>NameVirtualHost *:80

#area base per i siti web
&lt;VirtualHost *:80>
  ServerName web
  DocumentRoot "D:\web"
&lt;/VirtualHost>

#area per i siti PHP
&lt;VirtualHost *:80>
  ServerName localhost
  DocumentRoot "D:\localhost"
&lt;/VirtualHost>

#concessione autorizzazioni alla cartella condivisa SF di Symfony
&lt;Directory "C:\Program Files\xampp\php\pear\data\symfony\web\sf">
  Allow from All
&lt;/Directory>

#virtual directory per un progetto symfony
&lt;VirtualHost *:80>
  ServerName symfony
  DocumentRoot "C:\web\symfony\web"
  DirectoryIndex index.php
  Alias /sf "C:\Programmi\EasyPHP 3.0\php\data\symfony\web\sf"

  &lt;Directory "D:\web\symfony\web">
   AllowOverride All
   Order allow,deny
   Allow from All
  &lt;/Directory>
&lt;/VirtualHost></pre>
<p>Fatto questo, salvate e riavviate Apache Server (modificate i puntamenti ai folder secondo le vostre specifiche e/o comodità).</p>
<p>E ora non vi resta che configurare il <span mce_name="strong" mce_style="font-weight: bold;" style="font-weight: bold;" class="Apple-style-span">file HOSTS di Windows </span>(<span mce_name="em" mce_style="font-style: italic;" style="font-style: italic;" class="Apple-style-span">C:\WINDOWS\system32\drivers\etc\hosts</span>), file che funziona da domain name server e che vi può servire a dichiarare &#8220;domain name&#8221; per i vostri progetti locali. Anche questo file è molto semplice da modificare: inserite l&#8217;indirizzo IP, tabulate e inserite il nome a dominio, come da esempio.</p>
<pre>127.0.0.1    localhost
127.0.0.1    symfony
127.0.0.1    web</pre>
<p>Queste ultime direttive inserite nel file HOSTS dichiarano 3 nuovi domini, chiamati <span mce_name="em" mce_style="font-style: italic;" style="font-style: italic;" class="Apple-style-span">localhost</span>, <span mce_name="em" mce_style="font-style: italic;" style="font-style: italic;" class="Apple-style-span">symfony</span> e <span mce_name="em" mce_style="font-style: italic;" style="font-style: italic;" class="Apple-style-span">web</span> che puntano a cartelle differenti. Tutti i miei progetti puntatno alla cartella D:\Web, ma voi potete configurarli come più preferite.</p>
<p>E ora&#8230; divertitevi con Symfony!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://simone.cabrino.it/blog/symfony-configurazione-di-apache-su-easyphp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pagina 404 in stile 2.0: funziona!</title>
		<link>http://simone.cabrino.it/blog/pagina-404-in-stile-20-funziona/</link>
		<comments>http://simone.cabrino.it/blog/pagina-404-in-stile-20-funziona/#comments</comments>
		<pubDate>Sat, 10 Jan 2009 15:37:22 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://simone.cabrino.it/?p=746</guid>
		<description><![CDATA[Una pagina di errore 404, per la segnalazione delle pagine non trovate, riscuote successo e noi sappiamo dove sono e dove vanno i link scorretti. Ecco il mio codice.]]></description>
			<content:encoded><![CDATA[<p>La pagina di errore 404, il famelico errore di pagina non trovata (page not found) in stile <a class="zem_slink" title="Web 2.0" rel="wikipedia" href="http://en.wikipedia.org/wiki/Web_2.0">web 2.0</a>: chiedere agli utenti di aiutarci a mantenere i link dei nostri siti sempre aggiornati e funzionali. Questa guida funziona su <a class="zem_slink" title="Internet Information Services" rel="homepage" href="http://www.microsoft.com/iis">IIS</a> per <a class="zem_slink" title="Windows" rel="homepage" href="http://www.microsoft.com/WINDOWS">Windows</a>, ma anche su <a class="zem_slink" title="Apache" rel="wikipedia" href="http://en.wikipedia.org/wiki/Apache">Apache</a> per i server Linux: dovete solo sapere dove posizionare la pagina, con che nome salvarla o come far riconoscere la stessa al server come pagine di errore 404 principale.</p>
<h2>Personalizzare la pagina di errore 404</h2>
<p>La pagina di erorre 404, almeno sui server Windows su cui sono solito lavorare, deve necessariamente essere una pagina statica, in formato .htm o .html, incapace di essere processata e quindi di eseguire delle operazioni automaticamente. Ecco allora che, durante la ristrutturazione delle nostre macchine, ne ho approfittato per creare una 404 &#8220;collaborativa&#8221;, tipo <strong>Users Generate Contents</strong>: questa sarà però solo <strong>Users Advise Errors</strong>.</p>
<p>Dopo aver disegnato una grafica &#8220;personale&#8221;, attraverso la <strong>scrittura di codice JS</strong>, cerchiamo di capire se</p>
<ul>
<li>l&#8217;utente ha seguito <strong>un link </strong>trovato su qualunque pagina (anche motori di ricerca)</li>
<li>l&#8217;utente ha <strong>digitato male un indirizzo</strong></li>
</ul>
<p>L&#8217;unica differenza tra queste due modalità si riconosce, banalmente, attraverso la verifica dell&#8217;<strong>HTTP Referrer</strong>. Se quest ultimo è presente, significa che esiste un <strong>referente</strong> per la nostra pagina, quindi un sito che presenta un vecchio o errato collegamento.</p>
<h2>Il codice JS</h2>
<p>Sfortunatamente, tutti i contenuti della pagina andranno disegnati in JS.</p>
<p>Il codice JS che trovate qui in seguito va inserito all&#8217;interno dei tag &lt;body&gt; della vostra pagina 404.</p>
<pre><code class="Javascript">&lt;script&gt;
&lt;!--
</code><code class="Javascript">// verifica <a class="zem_slink" title="HTTP referer" rel="wikipedia" href="http://en.wikipedia.org/wiki/HTTP_referer">referrer</a>
var strReferrer=document.referrer.toLowerCase();
if (location.href.indexOf("noreferrer=true")&gt;=0) strReferrer="";

//no referrer!
var str='';
str+='&lt;div&gt;&lt;p&gt;&lt;a href="/" title="Vai alla Home Page"&gt;Home Page&lt;\/a&gt;&lt;\/p&gt;&lt;\/div&gt;';
str+='&lt;div&gt;&lt;p&gt;&lt;strong&gt;La pagina che stai cercando potrebbe non essere visibile a causa di:&lt;\/strong&gt;&lt;\/p&gt;';
str+='&lt;ol type="a"&gt;';
str+='  &lt;li&gt;un &lt;strong&gt;vecchio segnalibro&lt;\/strong&gt;&lt;\/li&gt;';
str+='  &lt;li&gt;un motore di ricerca con un &lt;strong&gt;vecchio collegamento&lt;\/strong&gt;&lt;\/li&gt;';
str+='  &lt;li&gt;un &lt;strong&gt;indirizzo mal digitato&lt;\/strong&gt;&lt;\/li&gt;';
str+='&lt;\/ol&gt;&lt;\/div&gt;';
document.write(str);

var blnInsiteReferral = false;
var strSite = "";
//si referrer!
if (strReferrer.length!=0) {
	//verifico la possibile provenienza dallo stesso sito
	blnInsiteReferral = (strReferrer.indexOf(location.href)&gt;=0)

	str='&lt;div&gt;&lt;h3&gt;Aiutaci ad aiutarti...&lt;/h3&gt;';
	//stesso sito
	if (blnInsiteReferral){
		str+='&lt;p&gt;Sembra che qualcuno dei nostri link sia rovinato. Tutto quello che ti chiediamo di fare per darci una mano &amp;egrave; di premere il bottone in seguito.&lt;\/p&gt;';
	} else {
		str+='&lt;p&gt;Per migliorare i nostri servizi, ti chiediamo di informarci sui link scorretti. Ci occuperemo noi di informare chi di dovere per modificare il link.&lt;br /&gt;Premi &lt;strong&gt;Invia&lt;\/strong&gt;!&lt;\/p&gt;';
	}

	//form per l'invio delle informazioni
	str+='&lt;form method="post" action="http:\/\/www.mysite.com\/send404.asp"&gt;';
	str+='&lt;input type="hidden" name="referring" value="' + strReferrer + '" \/&gt;';
	str+='&lt;input type="hidden" name="page" value="' + location.href + '" \/&gt;';
	str+='&lt;input type="submit" name="cmdSubmit" class="button" value="Invia" \/&gt;';
	str+='&lt;\/form&gt;';
	str+='&lt;\/div&gt;';
	document.write(str);
}</code>
<code class="Javascript">--&gt;
</code></pre>
<h2>Io invio email, tu?</h2>
<p>Come potete vedere, il form disegnato dal JS viene mandato ad una pagina di nome <em>send404.asp</em>, pagina che si incaricherà di <strong>inviare un&#8217;email </strong>ad uno dei nostri account di posta per informarlo del link rovinato. Non sto a riportarvi anche il codice del form, potete facilmente ritrovarlo anche voi facendo una semplice ricerca su Google!</p>
<h2>Conclusioni</h2>
<p>A differenza di quanto credevo e potevo aspettarmi, la pagina ha riscosso parecchio successo e molte delle persone che, navigando finivano su uno di quei pochi link &#8220;rovinati&#8221; e di conseguenza sulla nostra nuova pagina 404, cliccavano sul bottone e&#8230;ecco arrivare una bella email nella nostra casella di posta che ci <strong>informa di referrer e indirizzo della pagina non trovata</strong>! Che ne dite?</p>
]]></content:encoded>
			<wfw:commentRss>http://simone.cabrino.it/blog/pagina-404-in-stile-20-funziona/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

