<?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's Blog &#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>Sat, 14 Aug 2010 08:45:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<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>
		<item>
		<title>dateAdd in Javascript</title>
		<link>http://simone.cabrino.it/blog/dateadd-in-javascript/</link>
		<comments>http://simone.cabrino.it/blog/dateadd-in-javascript/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 16:21:15 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sviluppo Siti]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://simone.cabrino.it/?p=734</guid>
		<description><![CDATA[dateAdd è una funzione presente in VBScript (ASP), ma non in JS: ecco la mia versione della funzione.]]></description>
			<content:encoded><![CDATA[<p>Mi sono scontrato con una <strong>funziona banale</strong>, conosciuta in ASP (<strong>VBScript</strong>), ma comoda, funzione che in<strong> JS </strong>non ho mai visto e trovato (magari ne ho anche fatte poche ricerche). DateAdd permette di sommare ad una data un valore qualsiasi di un intervallo dato (secondi, minuti, ore, giorni, mesi e anni).</p>
<p>Potete scaricare qui la mia <a href="http://simone.cabrino.it/wp-content/uploads/2008/12/dateadd.zip">funzione dateAdd in JS</a>.</p>
<h3>Funzionamento</h3>
<p>Utilizzare la funzione è semplicissimo: a seguito alcuni esempi.</p>
<pre><code class="javascript">/* Sommare 10 ore all'ora di oggi */
ora_nuova = addInterval(new Date(), 'h', 10);

/* Sommare 300 secondi all'ora di prima */
ora_nuova2 = addInterval(ora_nuova, 's', 300);
</code></pre>
<p>Semplice, non credete?</p>
]]></content:encoded>
			<wfw:commentRss>http://simone.cabrino.it/blog/dateadd-in-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Abilitare cURL su EasyPHP</title>
		<link>http://simone.cabrino.it/blog/abilitare-curl-su-easyphp/</link>
		<comments>http://simone.cabrino.it/blog/abilitare-curl-su-easyphp/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 15:03:27 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Soluzioni Win]]></category>
		<category><![CDATA[XAMPP]]></category>

		<guid isPermaLink="false">http://simone.cabrino.it/?p=732</guid>
		<description><![CDATA[Errori dopo aver abilitato cURL in PHP su EasyPHP: ecco come risolvere gli errori di Windows.]]></description>
			<content:encoded><![CDATA[<p>Probabilmente sono rimasto uno dei pochi che utilizzano ancora <strong><a class="zem_slink" title="EasyPHP" rel="homepage" href="http://www.easyphp.org/">EasyPHP</a></strong> al posto dei tanti <strong><a class="zem_slink" title="XAMPP" rel="homepage" href="http://www.apachefriends.org/en/xampp.html">XAMPP</a> </strong>o simili, ma EasyPHP l&#8217;ho visto crescere e, a parte qualche difetto nella versione 1.8 (molto meglio la versione 1.7), ora che è giunto ad una versione 2.0beta è diventato per me un pacchetto standard, tanto da averlo installato anche sul gioiellino che vi ho descritto l&#8217;altro giorno, il mio nuovo <a title="Samsung NC-10" href="http://simone.cabrino.it/2008/11/28/samsung-nc10-un-uomo-felice/" target="_self">Samsung NC10</a>.</p>
<p>Per chi non lo conosce, EasyPHP è un piccolo programma che racchiude Apache, <a class="zem_slink" title="MySQL" rel="homepage" href="http://www.mysql.com">MySQL</a> e <a class="zem_slink" title="PHP" rel="homepage" href="http://php.net/">PHP</a> e permette una semplice configurazione di tutti questi pacchetti per il web.</p>
<h2>Abilitare cURL</h2>
<p>Se avete provato a decommentare la linea che porta così ad abilitare l&#8217;estensione cURL di PHP vi sarete trovati di fronte ad un piccolo errore di <a class="zem_slink" title="Windows" rel="homepage" href="http://www.microsoft.com/WINDOWS">Windows</a> che appare ogni volta che PHP cerca di caricare questa estensione. Infatti, per poter utilizzare cURL, è necessario fare una copia di due DLL di PHP all&#8217;interno della cartella di sistema di Windows (system32).</p>
<blockquote><p>Per abilitare questo modulo in ambiente Windows, occorre copiare libeay32.dll e ssleay32.dll dalla cartella delle DLL del pacchetto PHP/Win32 nella cartella SYSTEM32 della propria macchina Windows. (Es: C:\WINNT\SYSTEM32 o C:\WINDOWS\SYSTEM)</p></blockquote>
<p>Altro? <img src='http://simone.cabrino.it/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://simone.cabrino.it/blog/abilitare-curl-su-easyphp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VB.NET: disabilitare beep di sistema sul KeyDown del tasto Invio</title>
		<link>http://simone.cabrino.it/blog/beep-keydown-invio/</link>
		<comments>http://simone.cabrino.it/blog/beep-keydown-invio/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 21:48:41 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Microsoft Visual Studio]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://simone.cabrino.it/?p=688</guid>
		<description><![CDATA[La pressione del tasto Invio nei vostri programmi creati con Visual Studio .NET genera un beep di sistema? Ecco come risolvere il problema.]]></description>
			<content:encoded><![CDATA[<div class="zemanta-img zemanta-action-click">
<div class="wp-caption alignright" style="width: 212px"><a href="http://commons.wikipedia.org/wiki/Image:Enter.png"><img title="Return (red circle) and Enter (green circle) b..." src="http://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Enter.png/202px-Enter.png" alt="Return (red circle) and Enter (green circle) b..." width="202" height="152" /></a><p class="wp-caption-text">Image via Wikipedia</p></div>
</div>
<p>Vi capiterà certamente di creare applicativi con <strong><a class="zem_slink" title="Microsoft Visual Studio" rel="homepage" href="http://msdn.microsoft.com/vstudio/">Visual Studio</a></strong> che richiedono il minor uso del <strong>mouse</strong> possibile e che vi permettano così, attraverso il solo utilizzo della tastiera, di passare da un campo all&#8217;altro, sia in avanti che all&#8217;indietro. Intercettare la pressione dei tasti è cosa molto semplice grazie agli eventi <strong>KeyPress</strong>, <strong>KeyDown</strong> e <strong>KeyUp</strong> (fortunatamente nulla è cambiato dalla vecchia versione VB6).</p>
<p>Il problema che però potreste incontrare è quello di sentire un &#8220;beep&#8221; (che beep non è visto che è il segnale di errore) alla pressione del tasto <strong>Invio</strong> (<em>Enter</em>) all&#8217;interno di una <strong>TextBox</strong>. Per ora mi è capitato solo su una TextBox e non su altri elementi dei Form (come per esempio sui <strong>ComboBox</strong>).</p>
<p><span id="more-688"></span></p>
<p>La &#8220;funzione&#8221; su cui sto operando, permette di proseguire tra i campi alla pressione del tasto Invio e tornare indietro alla pressione del tasto Esc (<em>Escape</em>). Ecco il codice:</p>
<pre><code class="vbscript">Private Sub textBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles textBox.KeyDown
    If e.KeyValue &gt; 0 Then
        e.Handled = True
        FuncKeysModule(e.KeyCode)
    End If
End Sub

Public Sub FuncKeysModule(ByVal value As Keys)
    Select Case value
        Case Int(Keys.Enter)
            Me.ProcessTabKey(True)
        Case Int(Keys.Escape)
            Me.ProcessTabKey(False)
    End Select
End Sub
</code></pre>
<p>Avrei potuto fare questa funzione in almeno altri due modi, tra cui quello che utilizza il metodo <strong>GetNextControl</strong> dei <strong>Form</strong>, ma emulare la pressione del tasto di tabulazione (<em>Tab</em>) mi sembrava la scelta più ovvia, così da essere preciso anche in creazione del Form.</p>
<p>Come dicevo, però, la pressione del <strong>tasto Invio</strong> genera quel fastidioso &#8220;beep&#8221;: lo snippet che segue mostra come modificare il codice della textBox per evitarlo.</p>
<pre><code class="vbscript">Private Sub textBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles textBox.KeyDown
    If e.KeyValue &gt; 0 Then
        e.Handled = True
        FuncKeysModule(e.KeyCode)
        If e.KeyCode = Keys.Enter Then e.SuppressKeyPress = True
    End If
End Sub</code></pre>
<p>A saperlo subito, non avreste perso tutto questo tempo!</p>
<p> <img src='http://simone.cabrino.it/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://simone.cabrino.it/blog/beep-keydown-invio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
