<?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>Francesco Camarlinghi - Web Design &#38; Development &#187; Sviluppo Web</title>
	<atom:link href="http://www.francescocamarlinghi.com/it/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.francescocamarlinghi.com</link>
	<description></description>
	<lastBuildDate>Fri, 11 Dec 2009 14:32:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>it</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Testare Facilmente i Nostri Siti su IE 8, 7 e 6 con SuperPreview</title>
		<link>http://www.francescocamarlinghi.com/it/web-development/testare-facilmente-i-nostri-siti-su-ie-8-7-e-6-con-superpreview/</link>
		<comments>http://www.francescocamarlinghi.com/it/web-development/testare-facilmente-i-nostri-siti-su-ie-8-7-e-6-con-superpreview/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 11:40:05 +0000</pubDate>
		<dc:creator>Francesco Camarlinghi</dc:creator>
				<category><![CDATA[Sviluppo Web]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[SuperPreview]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://www.francescocamarlinghi.com/?p=385</guid>
		<description><![CDATA[Introduzione a SuperView, software gratuito che permette di testare le nostre pagine web con Internet Explorer 8, 7 e 6 all'interno di un singolo ambiente di lavoro.]]></description>
			<content:encoded><![CDATA[<div class="post-image"><a href="http://www.francescocamarlinghi.com/it/web-development/testare-facilmente-i-nostri-siti-su-ie-8-7-e-6-con-superpreview/" title="Testare Facilmente i Nostri Siti su IE 8, 7 e 6 con SuperPreview"><img src="http://www.francescocamarlinghi.com/blog/wp-content/uploads/2009/09/superpreview.jpg" width="570" height="250" alt="Testare i Nostri Siti su Internet Explorer 8, 7 e 6 con SuperPreview" /></a></div>
<p>Nei giorni scorsi è stato rilasciato <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&#038;displaylang=en" title="Download di SuperPreview"><strong>SuperPreview</strong></a>, un software <a href="http://www.microsoft.com" title="Vai al sito Microsoft">Microsoft</a> molto interessante. SuperPreview permette di vedere <strong>l&#8217;anteprima</strong> di una singola pagina web all&#8217;interno dei tre browser <span class="italic">made in Redmond</span> al momento maggiormente utilizzati: <strong>Internet Explorer 8</strong>, <strong>Internet Explorer 7</strong> (tramite la funzione <span class="italic">Compatibility View</span> di IE 8) e, sopratutto, il famigerato <strong>Internet Explorer 6</strong>, tutt&#8217;ora incubo degli sviluppatori.</p>
<h2>Perchè SuperPreview?</h2>
<p>Il testing delle pagine web su più browser è un passaggio molto importante per chi sviluppa siti internet, necessario per eliminare eventuali inconsistenze. Le alternative sono principalmente due:</p>
<ul>
<li>utilizzare uno dei <strong>numerosi servizi online</strong>, come <a href="http://browsershots.org/" title="BrowserShots">BrowserShots</a>, che offrono, in modo gratuito o a pagamento, la possibilità di scaricare anteprime del rendering della pagina su più browser;</li>
<li>tenere installate <strong>più versioni dei browser sul proprio sistema</strong> ed effettuare il test manualmente.</li>
</ul>
<p>Entrambi le possibilità offrono vantaggi e svantaggi: se la prima elimina la necessità di avere molti browser sul proprio computer, è altrettanto vero che necessita di tempi molto più lunghi per aspettare che il rendering remoto si concluda e non offre strumenti di analisi della struttura del documento.</p>
<p>La seconda possibilità è sicuramente più immediata in quanto tutto il testing avviene in locale, ma presenta diversi problemi quando proviamo ad installare due versioni dello stesso browser incompatibili tra loro. Questo è particolarmente vero per Internet Explorer data <strong>l&#8217;impossibilità di avere contemporaneamente più versioni di Internet Explorer sullo stesso sistema operativo</strong> (a meno di non ricorrere ad alcuni hack). Per effettuare i test si rende necessario quindi l&#8217;utilizzo di computer diversi (o di macchine virtuali) con sopra installate le diverse versioni del browser, con tutti i problemi e i rallentamenti che questa procedura comporta.</p>
<p>Attraverso SuperPreview, invece, possiamo svolgere tutti i test, almeno per quanto riguarda IE, all&#8217;interno di un <strong>singolo ambiente di lavoro</strong>. Oltretutto il software è rilasciato <strong>gratuitamente</strong>, quindi perchè non dargli almeno un&#8217;occhiata? :-)</p>
<p>SuperPreview è una versione ridotta (e proprio per questo gratuita) del programma completo incluso nella suite <a href="http://expression.microsoft.com/en-us/default.aspx" title="Sito web della suite Microsoft Expression Web">Microsoft Expression Web</a>. Pertanto sarà possibile effettuare l&#8217;anteprima delle pagine soltanto con i browser Microsoft. Con il programma completo è invece possibile avere l&#8217;anteprima anche con altri browser, ad esempio <a href="http://www.mozilla.com" title="Vai al sito Mozilla Firefox">Firefox</a>.<br />
<span id="more-385"></span></p>
<h2>L&#8217;Interfaccia</h2>
<p>Una volta <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&#038;displaylang=en" title="Download di SuperPreview">scaricato</a> e installato, il programma si presenta con una interfaccia abbastanza chiara ed intuitiva:</p>
<p class="text-center"><a href="http://www.francescocamarlinghi.com/blog/wp-content/uploads/2009/09/superpreview-window.jpg" title="Interfaccia di SuperPreview" class="light-box-image"><br />
    <img src="http://www.francescocamarlinghi.com/blog/wp-content/uploads/2009/09/superpreview-window-thumb.jpg" width="580" height="427" alt="Interfaccia di SuperPreview" /></a></p>
<p>In alto è presente la classica la barra degli strumenti, al centro lo spazio dove verranno mostrate le anteprime della pagina e in basso lo spazio dove aggiungere nuovi browser, visualizzare la struttura DOM del documento e selezionare la risoluzione con cui effettuare l&#8217;anteprima.</p>
<p class="text-center"><a href="http://www.francescocamarlinghi.com/blog/wp-content/uploads/2009/09/superpreview-toolbar.jpg" title="Barra degli strumenti di SuperPreview" class="light-box-image"><br />
    <img src="http://www.francescocamarlinghi.com/blog/wp-content/uploads/2009/09/superpreview-toolbar.jpg" width="442" height="160" alt="Barra degli strumenti di SuperPreview" /></a></p>
<p>La barra degli strumenti si divide in sette gruppi distinti:</p>
<ol>
<li><strong>Strumenti di selezione:</strong> per selezionare singoli elementi all&#8217;interno del DOM o scorrere il documento.</li>
<li><strong>Modalità di selezione:</strong> selezionando la prima modalità verrà visualizzato un riquadro attorno all&#8217;elemento DOM selezionato, mentre con la seconda tutta la pagina escluso l&#8217;elemento selezionato verrà nascosta.</li>
<li><strong>Strumenti di misurazione:</strong> nascondono o visualizzano i righelli e le linee guida, molto utili per verificare che gli elementi della pagina siano allineati.</li>
<li><strong>Strumenti layout:</strong> le varie modalità in cui disporre le anteprime della pagina con i vari browser (orizzontalmente, verticalmente, ecc). Molto comoda la visualizzazione <span class="italic">overlay</span>, che sovrappone due anteprime in modo da vedere le discontinuità tra una e l&#8217;altra.</li>
<li><strong>Barra dell&#8217;indirizzo:</strong> dove inserire l&#8217;indirizzo della pagina web da visualizzare. E&#8217; possibile selezionare una pagina dall&#8217;hard disk premendo il pulsante con i tre puntini.</li>
<li><strong>Zoom:</strong> livello di ingrandimento a cui visualizzare le anteprime.</li>
<li><strong>Menu di aiuto:</strong> contiene la guida in linea e i collegamenti al sito ufficiale del programma.</li>
</ol>
<h2>Alcuni esempi: Box Model, Trasparenza PNG, CSS 3</h2>
<p>Per testare le funzionalità di SuperPreview ho preparato un <a href="/blog/wp-content/uploads/2009/09/superpreview-tests.html" title="Apri la pagina di esempio">piccolo esempio</a> che contiene alcuni <strong>scenari tipici di incompatibilità</strong> con le diverse versioni di Internet Explorer. Vi invito a scaricare il file e a provare ad effettuare i test voi stessi. L&#8217;esempio si compone di tre parti distinte:</p>
<ol>
<li>Test del <strong>Box Model</strong> in <a href="http://www.quirksmode.org/css/quirksmode.html" title="Quirks Mode">Quirks Mode</a> (IE 6 e 7) e Standard Mode (IE 8).</li>
<li>Test della <strong>trasparenza PNG</strong> (non supportata correttamente da IE 6.</li>
<li>Test della <strong>proprietà CSS 3 <span class="code">text-shadow</span></strong> non supportata da tutte le versioni di Internet Explorer.</li>
</ol>
<p>Selezioniamo quindi i browser Internet Explorer 8 e 6 nella zona di selezione browser:</p>
<p class="text-center"><a href="http://www.francescocamarlinghi.com/blog/wp-content/uploads/2009/09/superpreview-ie8-ie6.jpg" title="SuperPreview con due anteprime per IE 8 e 6" class="light-box-image"><br />
    <img src="http://www.francescocamarlinghi.com/blog/wp-content/uploads/2009/09/superpreview-ie8-ie6-thumb.jpg" width="580" height="427" alt="SuperPreview con due anteprime per IE 8 e 6" /></a></p>
<p>Ed inseriamo l&#8217;indirizzo della pagina. A questo punto siamo in grado di verificare le <strong>differenze di rendering</strong> nel file di esempio. In particolare, mentre IE 8 non avrà difficoltà nel visualizzare il primo esempio seguendo lo standard W3C per il Box Model, IE 6 visualizzerà la pagina in Quirks Mode utilizzando il <a href="http://www.quirksmode.org/css/quirksmode.html#t10" title="Box Model errato">Box Model errato</a>. Lo stesso discorso vale per il test PNG: IE 6 non visualizza l&#8217;immagine con trasparenza.</p>
<p class="text-center"><a href="http://www.francescocamarlinghi.com/blog/wp-content/uploads/2009/09/superpreview-test.jpg" title="Test per IE 8 e 6 con SuperPreview" class="light-box-image"><br />
    <img src="http://www.francescocamarlinghi.com/blog/wp-content/uploads/2009/09/superpreview-test-thumb.jpg" width="534" height="763" alt="Test per IE 8 e 6 con SuperPreview" /></a></p>
<p>E&#8217; possibile ripetere i test con IE 8 in Compatibility View. In questo caso il risultato del primo test sarà esattamente identico (e quindi errato) a quello di IE 6. Internet Explorer 7 tuttavia supporta la trasparenza PNG, il secondo test avrà esito positivo.</p>
<p>Nessuna versione di Internet Explorer supporta le proprietà CSS 3: l&#8217;esito dell&#8217;ultimo test sarà identico per tutti e tre i browser.</p>
<h2>Pagine Web, ma non solo</h2>
<p>Una funzionalità molto interessante riguarda la possibilità di <strong>importare layout direttamente da file immagine</strong> <span class="code">.bmp</span>, <span class="code">.gif</span>, <span class="code">.png</span>, <span class="code">.jpg</span>, ma anche da file <a href="http://www.adobe.com/" title="Adobe Photoshop">Adobe Photoshop</a> (estensione <span class="code">.psd</span>). Questo risulta <strong>molto utile durante il lavoro di conversione</strong> da layout grafico, sviluppato all&#8217;interno di una applicazione di grafica come appunto Photoshop, alla rappresentazione in HTML e CSS.</p>
<p>Per usufruire di questa funzione è suffieciente premere il pulsante <span class="italic">Open Image</span> all&#8217;interno della finestra principale:</p>
<p class="text-center"><a href="http://www.francescocamarlinghi.com/blog/wp-content/uploads/2009/09/superpreview-open-image.jpg" title="Importare layout con SuperPreview" class="light-box-image"><br />
    <img src="http://www.francescocamarlinghi.com/blog/wp-content/uploads/2009/09/superpreview-open-image.jpg" width="400" height="376" alt="Importare layout con SuperPreview" /></a></p>
<h2>Conclusioni</h2>
<p>Se proprio vogliamo essere pignoli, dobbiamo dire che la <strong>visualizzazione delle proprietà DOM e CSS andrebbe migliorata</strong> perchè al momento non è all&#8217;altezza di altri software come <a href="http://getfirebug.com/" title="Vai al sito di Firebug">Firebug</a>. Inoltre il programma è sensibilmente lento in fase di rendering delle pagine, soprattutto nel caso di pagine abbastanza complesse.</p>
<p>In conclusione SuperPreview è un piccolo software <strong>estremamente interessante</strong>, <strong>gratuito</strong> e che vale la pena scaricare anche solo per la possibilità che ci offre di testare i nostri layout su IE 6 / 7 / 8 sullo stesso computer, senza dover ricorrere a servizi online o a macchine virtuali.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francescocamarlinghi.com/it/web-development/testare-facilmente-i-nostri-siti-su-ie-8-7-e-6-con-superpreview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nuovo Articolo Pubblicato su HTML.it</title>
		<link>http://www.francescocamarlinghi.com/it/web-development/nuovo-articolo-pubblicato-su-html-it/</link>
		<comments>http://www.francescocamarlinghi.com/it/web-development/nuovo-articolo-pubblicato-su-html-it/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 13:52:00 +0000</pubDate>
		<dc:creator>Francesco Camarlinghi</dc:creator>
				<category><![CDATA[Sviluppo Web]]></category>
		<category><![CDATA[ASP.Net MVC]]></category>
		<category><![CDATA[Spark]]></category>

		<guid isPermaLink="false">http://www.francescocamarlinghi.com/?p=317</guid>
		<description><![CDATA[Pubblicato su Html.it il mio ultimo articolo, &#34;Spark, un View Engine alternativo per Asp.Net MVC&#34;.]]></description>
			<content:encoded><![CDATA[<p>Ieri è stato pubblicato un mio nuovo articolo su Html.it: <a href="http://aspnet.html.it/articoli/leggi/2782/spark-un-view-engine-alternativo-per-aspnet-mvc/" title="Spark, un View Engine alternativo per Asp.Net MVC">Spark, un View Engine alternativo per Asp.Net MVC</a>. Eccone un piccolo estratto:</p>
<blockquote><p>Il nuovo framework Asp.Net MVC (attualmente alla Preview Release 5), è stato progettato per offrire un alto grado di estensibilità: ogni suo componente può essere modificato o interamente sostituito. In molti casi, come per il motore di rendering delle viste, è addirittura possibile far convivere un sistema personalizzato assieme a quello di default, caretteristica che rende possibile utilizzare funzionalità personalizzate senza rinunciare a quelle offerte dal framework.</p>
<p>In questo articolo realizzeremo un catalogo dei prodotti, uno fra gli esempi più classici per MVC, utilizzando un view engine alternativo, Spark.</p></blockquote>
<p>Come sempre vi invito alla lettura ed a lasciare scritto qui sul blog cosa ne pensate. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francescocamarlinghi.com/it/web-development/nuovo-articolo-pubblicato-su-html-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.Net MVC, JQuery &amp; Microsoft</title>
		<link>http://www.francescocamarlinghi.com/it/web-development/asp-net-mvc-jquery-microsoft/</link>
		<comments>http://www.francescocamarlinghi.com/it/web-development/asp-net-mvc-jquery-microsoft/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 13:48:25 +0000</pubDate>
		<dc:creator>Francesco Camarlinghi</dc:creator>
				<category><![CDATA[Sviluppo Web]]></category>
		<category><![CDATA[ASP.Net MVC]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://www.francescocamarlinghi.com/?p=313</guid>
		<description><![CDATA[Alcune riflessioni su ASP.Net MVC, JQuery e la nuova strada che Microsoft sembra aver imboccato.]]></description>
			<content:encoded><![CDATA[<p>Negli ultimi tempi sono stato completamente occupato a studiare il nuovo framework <a href="http://www.codeplex.com/aspnet/Wiki/View.aspx?title=MVC&#038;referringTitle=Home" title="ASP.NET MVC">Asp.Net MVC</a> (a cui ho dedicato anche alcuni articoli su <a href="http://aspnet.html.it" title="aspnet.html.it">aspnet.html.it</a>).<br />
In particolare mi hanno affascinato fin da subito l&#8217;estrema estensibilità che contraddistingue questo nuovo strumento, la filosofia più aperta con cui è stato finora sviluppato (ad esempio la disponibilità del codice sorgente) e il maggior controllo sul codice HTML, con i conseguenti ordine (e pulizia) di quest&#8217;ultimo.</p>
<p>Quando parlo di estensibilità, oltre alla personalizzazione del meccanismo di routing e agli HTML Helpers, penso soprattutto alla possibilità di utilizzare motori alternativi per il rendering delle viste come: Brail, NVelocity e <a href="http://dev.dejardin.org/" title="Spark Homepage">Spark</a>, che è attualmente il mio preferito e per cui sto scrivendo un set di utility integrato con Visual Studio (SparkTools, che contiene per ora un compilatore e alcuni template per file e progetti) che conto di rilasciare sotto licenza open source fra breve.</p>
<p>In questi giorni ho trovato molto interessante una <a href="http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx" title="jQuery and Microsoft">notizia</a> per cui Microsoft sembra intenzionata ad includere, senza cambiarne la lincenza (!!!!), <a href="http://jquery.com/" title="jQuery: The Write Less, Do More, JavaScript Library">JQuery</a> all&#8217;interno di Visual Studio (con tanto di Intellisense), rendendolo disponibile di default anche per MVC.</p>
<p>E&#8217; la prima volta che vedo Microsoft utilizzare una tecnologia già pronta e per giunta open source invece di ricostruirla da zero con risultati spesso discutibili. Speriamo che insieme al modello di sviluppo adottato per MVC e ai <a href="http://punto-informatico.it/2371680/PI/News/microsoft-sponsorizza-apache-foundation.aspx" title="PI: Microsoft sponsorizza Apache Foundation">finanziamenti</a> alla fondazione <a href="http://apache.org/" title="The Apache Software Foundation">Apache</a>, la scelta di utilizzare JQuery sia un passo verso una compagnia migliore di quello che è stata in passato.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francescocamarlinghi.com/it/web-development/asp-net-mvc-jquery-microsoft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>reCAPTCHA, Fermare Lo Spam Leggendo Libri</title>
		<link>http://www.francescocamarlinghi.com/it/web-development/recaptcha-fermare-lo-spam-leggendo-libri/</link>
		<comments>http://www.francescocamarlinghi.com/it/web-development/recaptcha-fermare-lo-spam-leggendo-libri/#comments</comments>
		<pubDate>Thu, 13 Mar 2008 13:39:28 +0000</pubDate>
		<dc:creator>Francesco Camarlinghi</dc:creator>
				<category><![CDATA[Sviluppo Web]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[reCAPTCHA]]></category>

		<guid isPermaLink="false">http://www.francescocamarlinghi.com/?p=306</guid>
		<description><![CDATA[Breve introduzione a reCAPTCHA, uno strumento utile per bloccare lo spam e contribuire contemporaneamente alla classificazione digitale dei libri.]]></description>
			<content:encoded><![CDATA[<p>Navigando su internet mi sono imbattuto in <a href="http://recaptcha.net/" title="reCAPTCHA website">reCAPTCHA</a>, uno strumento che consente di inserire all&#8217;interno del proprio sito un box per verificare che chi scrive un commento o vuole registrarsi ad un servizio online sia effettivamente umano, e non un programma automatico.</p>
<p>In realtà però reCAPTCHA è qualcosa di più: utilizzando il piccolo controllo, disponibile come <a href="http://recaptcha.net/resources.html" title="reCAPTCHA Plugins">plugin</a> per molti linguaggi di programmazione come <a href="http://www.php.net/" title="PHP">PHP</a> e <a href="http://www.asp.net/" title="ASP.Net">ASP.Net</a> e per piattaforme come <a href="http://wordpress.org/" title="Wordpress">WordPress</a> e <a href="http://www.phpbb.com/" title="phpBB">phpBB</a>, è possibile aiutare la digitalizzazione di testi antichi, in particolare quelli di <a href="http://www.archive.org/index.php" title="Internet Archive">Internet Archive</a>. Infatti nel form di verifica sono presenti due parole da identificare: una delle due è stata letta correttamente da un programma OCR sulla pagina di un libro, mentre l&#8217;altra è di interpretazione incerta.</p>
<p class="text-center"><img src="/blog/wp-content/uploads/2008/03/recaptcha-normale.jpg" alt="Esempio di reCAPTCHA" title="Esempio di reCAPTCHA" width="311" height="123" /></p>
<p>Identificando correttamente la prima, il software reCAPTCHA riterrà molto probabile che abbiate indovinato anche la seconda. Non appena la parola incerta sarà stata identificata correttamente da un certo numero di persone, questa verrà considerata sicura ed aggiunta al rispettivo elenco.</p>
<p>Il <a href="http://recaptcha.net/plugins/aspnet/" title="reCAPTCHA ASP.Net Plugin">plugin per ASP.Net</a>, si compone di una libreria da inserire all&#8217;interno del proprio progetto. All&#8217;interno della libreria è presente un controllo personalizzato che è possibile utilizzare direttamente nelle nostre pagine:</p>
<pre class="brush: xml;">
&lt;%@ Register TagPrefix=&quot;recaptcha&quot; Namespace=&quot;Recaptcha&quot; Assembly=&quot;Recaptcha&quot; %&gt;
</pre>
<pre class="brush: xml;">
&lt;recaptcha:RecaptchaControl
  ID=&quot;recaptcha&quot;
  runat=&quot;server&quot;
  PublicKey=&quot;&quot;
  PrivateKey=&quot;&quot;
  /&gt;
</pre>
<p><span id="more-306"></span>Per sapere se l&#8217;utente ha passato il test è sufficiente utilizzare la proprietà IsValid dell&#8217;oggetto Page:</p>
<pre class="brush: vb;">
If Page.IsValid Then
	lblResult.Text = &quot;You Got It!&quot;
	lblResult.ForeColor = Drawing.Color.Green
Else
	lblResult.Text = &quot;Incorrect&quot;
	lblResult.ForeColor = Drawing.Color.Red
End If
</pre>
<p>(Gli esempi sono tratti dal sito ufficiale.)</p>
<p>Il servizio tuttavia presenta anche qualche problema: le parole sono solo in lingua inglese e molte volte sono talmente difficili da indovinare che sarà necessario aggiornare l&#8217;immagine fino a trovarne una più semplice, come mostrato nell&#8217;immagine.</p>
<p class="text-center"><img src="/blog/wp-content/uploads/2009/09/recaptcha-difficile.jpg" alt="reCAPTCHA troppo difficile" title="reCAPTCHA troppo difficile" width="312" height="123" /></p>
<p>In generale comunque mi sembra un ottimo sistema per proteggersi dallo spam e dare, senza nessuno sforzo aggiuntivo, un contributo alla digitalizzazione dei libri.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francescocamarlinghi.com/it/web-development/recaptcha-fermare-lo-spam-leggendo-libri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pubblicati Altri Due Articoli su HTML.it</title>
		<link>http://www.francescocamarlinghi.com/it/web-development/pubblicati-altri-due-articoli-su-html-it/</link>
		<comments>http://www.francescocamarlinghi.com/it/web-development/pubblicati-altri-due-articoli-su-html-it/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 13:30:33 +0000</pubDate>
		<dc:creator>Francesco Camarlinghi</dc:creator>
				<category><![CDATA[Sviluppo Web]]></category>

		<guid isPermaLink="false">http://www.francescocamarlinghi.com/?p=296</guid>
		<description><![CDATA[Membership e Role Provider con SQLite illustrati da me su HTML.it.]]></description>
			<content:encoded><![CDATA[<p>Sono stati pubblicati su HTML.it due miei nuovi articoli che trattano in modo approfondito la scrittura di provider personalizzati, prendendo come database di esempio SQLite:</p>
<ul>
<li><strong><a href="http://aspnet.html.it/articoli/leggi/2469/un-membership-provider-con-sqlite/">Membership Provider con SQLite</a></strong></li>
<li><strong><a href="http://aspnet.html.it/articoli/leggi/2501/role-provider-con-sqlite/">Role Provider con SQLite</a></strong></li>
</ul>
<p>Fatemi sapere cosa ne pensate! :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francescocamarlinghi.com/it/web-development/pubblicati-altri-due-articoli-su-html-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alcuni Link Interessanti su ASP.Net e LINQ</title>
		<link>http://www.francescocamarlinghi.com/it/web-development/alcuni-link-interessanti-su-asp-net-e-linq/</link>
		<comments>http://www.francescocamarlinghi.com/it/web-development/alcuni-link-interessanti-su-asp-net-e-linq/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 13:27:45 +0000</pubDate>
		<dc:creator>Francesco Camarlinghi</dc:creator>
				<category><![CDATA[Sviluppo Web]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[LINQ]]></category>

		<guid isPermaLink="false">http://www.francescocamarlinghi.com/?p=291</guid>
		<description><![CDATA[Una carrellata di link utili su ASP.Net e LINQ.]]></description>
			<content:encoded><![CDATA[<p>Voglio segnalare alcuni articoli che ho trovato molto interessanti.</p>
<ul>
<li><strong>ASP.NET MVC Framework</strong> &#8211; <a href="http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx">Parte 1</a>, <a href="http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx">Parte 2</a>, <a href="http://weblogs.asp.net/scottgu/archive/2007/12/06/asp-net-mvc-framework-part-3-passing-viewdata-from-controllers-to-views.aspx">Parte 3</a>. Scott Guthrie offre una panoramica sull&#8217;utilizzo della nuova tecnologia MVC rilasciata come parte di ASP.NET 3.5 Extensions CTP Preview (scaribile da <a href="http://asp.net/downloads/3.5-extensions/">qui</a>). Spero di riuscire fra breve a scrivere qualcosa su questa promettente tecnologia.</li>
<li><strong>LINQ to SQL</strong> &#8211; <a href="http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx">Parte 1</a>, <a href="http://weblogs.asp.net/scottgu/archive/2007/05/29/linq-to-sql-part-2-defining-our-data-model-classes.aspx">Parte 2</a>, <a href="http://weblogs.asp.net/scottgu/archive/2007/06/29/linq-to-sql-part-3-querying-our-database.aspx">Parte 3</a>, <a href="http://weblogs.asp.net/scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.aspx">Parte 4</a>, <a href="http://weblogs.asp.net/scottgu/archive/2007/07/16/linq-to-sql-part-5-binding-ui-using-the-asp-linqdatasource-control.aspx">Parte 5</a>, <a href="http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx">Parte 6</a>, <a href="http://weblogs.asp.net/scottgu/archive/2007/08/23/linq-to-sql-part-7-updating-our-database-using-stored-procedures.aspx">Parte 7</a>, <a href="http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx">Parte 8</a> e <a href="http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx">Parte 9</a>. Sempre dal blog di Scott Guthrie ecco una serie di interventi non molto recenti, ma che offrono un&#8217;ottima visione di insieme sul linguaggio LINQ applicato a SQL Server.</li>
<li><strong><a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2007/05/10/9322.aspx">LINQ to Video</a></strong> &#8211; 17 video sull&#8217;utilizzo di LINQ to SQL.</li>
</ul>
<p>Infine vorrei segnalare un progetto che mi era rimasto sconosciuto fino ad oggi: <a href="http://labs.live.com/volta/">Volta</a>, che si propone di unificare lo sviluppo lato server e client semplificando non poco la vita a noi poveri sviluppatori.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francescocamarlinghi.com/it/web-development/alcuni-link-interessanti-su-asp-net-e-linq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Online il mio Primo Articolo su HTML.it</title>
		<link>http://www.francescocamarlinghi.com/it/web-development/online-il-mio-primo-articolo-su-html-it/</link>
		<comments>http://www.francescocamarlinghi.com/it/web-development/online-il-mio-primo-articolo-su-html-it/#comments</comments>
		<pubDate>Thu, 29 Nov 2007 13:24:53 +0000</pubDate>
		<dc:creator>Francesco Camarlinghi</dc:creator>
				<category><![CDATA[Sviluppo Web]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[HTML.it]]></category>
		<category><![CDATA[SQLite]]></category>

		<guid isPermaLink="false">http://www.francescocamarlinghi.com/?p=288</guid>
		<description><![CDATA[Pubblicato il mio articolo &#34;ASP.Net &#38; SQLite&#34; su <a href="http://www.html.it" title="Visita HTML.it">www.html.it</a>.]]></description>
			<content:encoded><![CDATA[<p>E&#8217; <a href="http://aspnet.html.it/articoli/leggi/2446/aspnet-sqlite/" title="ASP.Net &#038; SQLite">online</a> su <a href="http://www.html.it" title="HTML.it">HTML.it</a> un mio articolo dedicato a ASP.Net &#038; SQLite che, oltre all&#8217;interazione fra le due tecnologie, offre una sostanziosa introduzione al motore di database e alle sue particolarità, soprattutto in confronto ai database tradizionali.</p>
<p>Penso che verrà presto pubblicato anche un altro articolo che ho scritto sempre per HTML.it, dedicato ancora una volta a SQLite e in particolare alla creazione, spiegata molto dettagliatamente, di un MembershipProvider personalizzato.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francescocamarlinghi.com/it/web-development/online-il-mio-primo-articolo-su-html-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cambiare la Stringa di Connessione di un Provider Tramite Codice</title>
		<link>http://www.francescocamarlinghi.com/it/web-development/cambiare-la-stringa-di-connessione-di-un-provider-tramite-codice/</link>
		<comments>http://www.francescocamarlinghi.com/it/web-development/cambiare-la-stringa-di-connessione-di-un-provider-tramite-codice/#comments</comments>
		<pubDate>Fri, 16 Nov 2007 13:21:15 +0000</pubDate>
		<dc:creator>Francesco Camarlinghi</dc:creator>
				<category><![CDATA[Sviluppo Web]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[Providers]]></category>

		<guid isPermaLink="false">http://www.francescocamarlinghi.com/?p=284</guid>
		<description><![CDATA[Un sistema rapido ed indolore per modificare la stringa di connessione dei nostri provider direttamente da codice.]]></description>
			<content:encoded><![CDATA[<p>Come probabilmente saprete, i provider vengono caricati in memoria, attraverso l&#8217;utilizzo di classi statiche, all&#8217;avvio dell&#8217;applicazione web. Proprio perchè il loro ciclo di vita dipende strettamente da quello dell&#8217;applicazione, è impossibile modificarne le proprietà, come ad esempio la stringa di connessione al database.</p>
<p>Ma perchè doverla modificare? Un esempio potrebbe essere quello che segue.</p>
<p>Abbiamo la necessità di definire due diverse strighe di connessione, una per l&#8217;ambiente di sviluppo e l&#8217;altra per quello di produzione. Generalmente esse verranno salvate all&#8217;interno del file web.config nella sezione connectionStrings:</p>
<pre class="brush: xml;">
&lt;connectionStrings&gt;
        &lt;!-- Sviluppo --&gt;
        &lt;add name=&quot;DebugConnString&quot; connectionString=&quot;Data Source=ServerSviluppo;Initial Catalog=MioDatabase;&quot; providerName=&quot;System.Data.SqlClient&quot;/&gt;

        &lt;!-- Produzione --&gt;
        &lt;add name=&quot;ProductionConnString&quot; connectionString=&quot;Data Source=ServerProduzione;Initial Catalog=MioDatabase;&quot; providerName=&quot;System.Data.SqlClient&quot;/&gt;
&lt;/connectionStrings&gt;
</pre>
<p>E potrebbero essere utilizzate, ad esempio, per un Membership Provider:</p>
<pre class="brush: xml;">
&lt;membership defaultProvider=&quot;SqlProvider&quot; userIsOnlineTimeWindow=&quot;30&quot;&gt;
            &lt;providers&gt;
                &lt;clear /&gt;
                &lt;add
                  name=&quot;SqlProvider&quot;
                  type=&quot;System.Web.Security.SqlMembershipProvider&quot;
                  connectionStringName=&quot;DebugConnString&quot;
                  applicationName=&quot;MiaApplicazione&quot;
                  enablePasswordRetrieval=&quot;false&quot;
                  enablePasswordReset=&quot;true&quot;
                  requiresQuestionAndAnswer=&quot;true&quot;
                  requiresUniqueEmail=&quot;true&quot;
                  passwordFormat=&quot;Hashed&quot; /&gt;
            &lt;/providers&gt;
&lt;/membership&gt;
</pre>
<p>Passando da un ambiente all&#8217;altro ci troviamo quindi a dover modificare manualmente il file <code>web.config</code> per selezionare la stringa di connessione necessaria, senza pensare ai problemi che potrebbero derivare da una eventuale dimenticanza.<br />
La soluzione a questi problemi consiste nell&#8217;utilizzo della Reflection, che ci consente di andare a modificare le variabili di una classe, anche quando queste sono state dichiarate private. Il codice che segue va aggiunto al file <code>Global.asax</code>:</p>
<pre class="brush: csharp;">
&lt;%@ Application Language=&quot;C#&quot; %&gt;
&lt;%@ Import Namespace=&quot;System.Reflection&quot; %&gt;
&lt;%@ Import Namespace=&quot;System.Configuration&quot; %&gt;

&lt;script runat=&quot;server&quot;&gt;

    void Application_Start(object sender, EventArgs e)
    {
        // Cerco il provider
        MembershipProvider mp = Membership.Provider;
        Type t = mp.GetType();

        // Cerco la variabile privata _sqlConnectionString all'interno dell'istanza
        // del provider
        FieldInfo info = t.GetField(&quot;_sqlConnectionString&quot;, BindingFlags.Instance | BindingFlags.IgnoreCase | BindingFlags.NonPublic);

        // La modifico a seconda di quella che ci serve
        // Soltanto il codice necessario verrà effettivamente compilato
        #if DEBUG
                // Siamo in sviluppo
                info.SetValue(mp,
ConfigurationManager.ConnectionStrings[&quot;DebugConnString&quot;].ConnectionString);
        #else
                // Siamo in produzione
                info.SetValue(mp,
ConfigurationManager.ConnectionStrings[&quot;ProductionConnString&quot;].ConnectionString);
        #endif
    }
&lt;/script&gt;
</pre>
<p>Anche se è da considerarsi più un &#8220;trucco&#8221; che una pratica di programmazione corretta, questo sistema funziona e può tornare utile in molte situazioni.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francescocamarlinghi.com/it/web-development/cambiare-la-stringa-di-connessione-di-un-provider-tramite-codice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Un Blog con ASP.Net e SQLite, Terza Parte</title>
		<link>http://www.francescocamarlinghi.com/it/web-development/un-blog-con-asp-net-e-sqlite-terza-parte/</link>
		<comments>http://www.francescocamarlinghi.com/it/web-development/un-blog-con-asp-net-e-sqlite-terza-parte/#comments</comments>
		<pubDate>Thu, 27 Sep 2007 12:57:51 +0000</pubDate>
		<dc:creator>Francesco Camarlinghi</dc:creator>
				<category><![CDATA[Sviluppo Web]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[SQLite]]></category>

		<guid isPermaLink="false">http://www.francescocamarlinghi.com/?p=262</guid>
		<description><![CDATA[Terzo ed ultimo intervento di una mini-serie dedicata all'interazione ASP.Net - SQLite, trattata mediante la creazione di un blog di esempio. In questa puntata verrà creata la pagina principale del blog, che mostrerà gli interventi e le categorie.]]></description>
			<content:encoded><![CDATA[<div class="info-box">
Questo tutorial è diviso in tre parti distinte:</p>
<ul>
<li><a href="/it/web-development/un-blog-con-asp-net-e-sqlite-prima-parte/">Prima Parte: Creazione del Database</a></li>
<li><a href="/it/web-development/un-blog-con-asp-net-e-sqlite-seconda-parte/">Seconda Parte: Pannello di Amministrazione</a></li>
<li><strong>Terza Parte: Visualizzare i Post</strong></li>
</ul>
</div>
<p>Negli interventi precedenti sono stati trattati, dopo una rapida introduzione a SQLite, la creazione del database e della pagina di amministrazione.</p>
<p>In questo ultimo intervento vedremo, invece, come creare l&#8217;ultimo componente del mini-blog: una semplice pagina per visualizzare gli interventi e navigarli per categorie.<br />
La struttura sarà molto simile a quella della pagina di amministrazione: tramite una MultiView, infatti, caricheremo o una lista degli ultimi dieci interventi, oppure una lista degli interventi appartenenti ad una determinata categoria.</p>
<p class="bold text-center"><a href="/blog/wp-content/uploads/2007/09/ExampleBlog_Completo.zip" title="Scarica il progetto completo!" target="_blank">Scarica il progetto completo!</a></p>
<h2>Organizziamo la pagina: la colonna di sinistra</h2>
<p>Il layout sarà costituito da due colonne, quella di sinistra conterrà il menu di navigazione e l&#8217;altra gli interventi:</p>
<pre class="brush: xml;">
&lt;div style=&quot;width:75%;&quot;&gt;
     &lt;div style=&quot;float: left; width: 25%;&quot;&gt;&lt;/div&gt;
     &lt;div style=&quot;float: right; width: 69%;&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Per mostrare la lista delle categorie, sarà sufficiente un controllo Repeater associato ad un SqlDataSource (per la quanto riguarda la creazione della stringa di connessione al database si veda la <a href="/it/blog/un-blog-con-asp-net-e-sqlite-seconda-parte" title="Seconda Parte">seconda parte</a> del tutorial):</p>
<pre class="brush: xml;">
&lt;div style=&quot;float: left; width: 25%;&quot;&gt;
    &lt;span style=&quot;font-weight: bold;&quot;&gt;Categorie&lt;/span&gt;
    &lt;asp:Repeater ID=&quot;Categorie&quot; runat=&quot;server&quot; DataSourceID=&quot;Categorie_Source&quot;&gt;
        &lt;HeaderTemplate&gt;
            &lt;ul&gt;
        &lt;/HeaderTemplate&gt;
        &lt;ItemTemplate&gt;
            &lt;li&gt;
                &lt;a href=&quot;default.aspx?categoria=&lt;%# (string)Eval(&quot;NomeCategoria&quot;) %&gt;&quot;
                        title=&quot;&lt;%# (string)Eval(&quot;NomeCategoria&quot;) %&gt;&quot;&gt;
                      &lt;%# (string)Eval(&quot;NomeCategoria&quot;) %&gt;&lt;/a&gt;
            &lt;/li&gt;
        &lt;/ItemTemplate&gt;
        &lt;FooterTemplate&gt;
            &lt;/ul&gt;
        &lt;/FooterTemplate&gt;
    &lt;/asp:Repeater&gt;
&lt;/div&gt;
&lt;asp:SqlDataSource ID=&quot;Categorie_Source&quot; runat=&quot;server&quot; ProviderName=&quot;System.Data.SQLite&quot;
    ConnectionString=&quot;&lt;%$ ConnectionStrings:ExampleBlogConnString %&gt;&quot;
    SelectCommand=&quot;SELECT * FROM Categorie&quot;&gt;
&lt;/asp:SqlDataSource&gt;
</pre>
<p>Come potete vedere il Repeater crea una lista non ordinata di elementi che nel nostro caso saranno i nomi delle categorie, con un link che passa come parametro nella query string il nome della categoria. Questo viene recuperato nell&#8217;evento onLoad della pagina e la vista attiva all&#8217;interno del MultiView (che creeremo fra poche righe) modificata di conseguenza:</p>
<pre class="brush: csharp;">
protected void Page_Load(object sender, EventArgs e)
{
   if (!this.IsPostBack)
      if (!string.IsNullOrEmpty(Request.QueryString[&quot;categoria&quot;]))
      {
         MultiView1.ActiveViewIndex = 1;
         NomeCategoria.Text = Request.QueryString[&quot;categoria&quot;];
      }
      else
         MultiView1.ActiveViewIndex = 0;
}
</pre>
<h2>La colonna di destra: mostriamo gli interventi</h2>
<p>Ecco qui, per concludere il controllo MultiView incaricato di mostrare gli interventi. Il codice mi sembra abbastanza semplice da non richiedere ulteriore analisi, per ogni dubbio lasciate un commento!</p>
<pre class="brush: xml;">
&lt;asp:MultiView id=&quot;MultiView1&quot; runat=&quot;server&quot; activeviewindex=&quot;0&quot;&gt;
    &lt;asp:View ID=&quot;ListaInterventi&quot; runat=&quot;server&quot;&gt;
        &lt;h1&gt;Ultimi Interventi&lt;/h1&gt;
        &lt;asp:Repeater ID=&quot;Interventi&quot; runat=&quot;server&quot; DataSourceID=&quot;Interventi_Source&quot;&gt;
            &lt;ItemTemplate&gt;
                &lt;div&gt;
                    &lt;h2&gt;&lt;%# (string)Eval(&quot;Titolo&quot;) %&gt;&lt;/h2&gt;
                    &lt;div style=&quot;font-weight: bold;&quot;&gt;
                          &lt;%# ((DateTime)Eval(&quot;Data&quot;)).ToString(&quot;dd/MM/yyyy hh:mm&quot;) %&gt;,
                          &lt;%# (string)Eval(&quot;NomeCategoria&quot;) %&gt;
                    &lt;/div&gt;
                    &lt;div&gt;
                        &lt;%# (string)Eval(&quot;Testo&quot;) %&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/ItemTemplate&gt;
        &lt;/asp:Repeater&gt;

        &lt;asp:SqlDataSource ID=&quot;Interventi_Source&quot; runat=&quot;server&quot; ProviderName=&quot;System.Data.SQLite&quot;
            ConnectionString=&quot;&lt;%$ ConnectionStrings:ExampleBlogConnString %&gt;&quot;
            SelectCommand=&quot;SELECT * FROM Interventi INNER JOIN Categorie ON Interventi.Categoria = Categorie.IDCategoria ORDER BY Data DESC LIMIT 10&quot;&gt;
        &lt;/asp:SqlDataSource&gt;
    &lt;/asp:View&gt;

    &lt;asp:View ID=&quot;InterventiPerCategoria&quot; runat=&quot;server&quot;&gt;
        &lt;h1&gt;
            Categoria:
            &lt;asp:Literal ID=&quot;NomeCategoria&quot; runat=&quot;server&quot; /&gt;
        &lt;/h1&gt;
        &lt;asp:Repeater ID=&quot;InterventiCat&quot; runat=&quot;server&quot; DataSourceID=&quot;InterventiCat_Source&quot;&gt;
            &lt;ItemTemplate&gt;
                &lt;div&gt;
                    &lt;h2&gt;&lt;%# (string)Eval(&quot;Titolo&quot;) %&gt;&lt;/h2&gt;
                    &lt;div style=&quot;font-weight: bold;&quot;&gt;
                        &lt;%# ((DateTime)Eval(&quot;Data&quot;)).ToString() %&gt;
                        ,
                        &lt;%# (string)Eval(&quot;NomeCategoria&quot;) %&gt;
                    &lt;/div&gt;
                    &lt;div&gt;
                        &lt;%# (string)Eval(&quot;Testo&quot;) %&gt;&lt;/div&gt;
                    &lt;/div&gt;
            &lt;/ItemTemplate&gt;
        &lt;/asp:Repeater&gt;

        &lt;asp:SqlDataSource ID=&quot;InterventiCat_Source&quot; runat=&quot;server&quot; ProviderName=&quot;System.Data.SQLite&quot;
            ConnectionString=&quot;&lt;%$ ConnectionStrings:ExampleBlogConnString %&gt;&quot;
            SelectCommand=&quot;SELECT * FROM Interventi INNER JOIN Categorie ON Interventi.Categoria = Categorie.IDCategoria WHERE NomeCategoria = @NomeCategoria&quot;&gt;
            &lt;SelectParameters&gt;
                &lt;asp:QueryStringParameter Name=&quot;@NomeCategoria&quot; Type=&quot;string&quot;
                        QueryStringField=&quot;categoria&quot; /&gt;
            &lt;/SelectParameters&gt;
        &lt;/asp:SqlDataSource&gt;
    &lt;/asp:View&gt;
&lt;/asp:MultiView&gt;
</pre>
<p>Si conclude così questo piccolo tutorial realizzato principalmente per mostrare le potenzialità di <strong>SQLite</strong> e del provider per ADO.Net <strong>System.Data.Sqlite</strong>.</p>
<p class="bold text-center"><a href="/blog/wp-content/uploads/2007/09/ExampleBlog_Completo.zip" title="Scarica il progetto completo!" target="_blank">Scarica il progetto completo!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.francescocamarlinghi.com/it/web-development/un-blog-con-asp-net-e-sqlite-terza-parte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inviare Email Tramite ASP</title>
		<link>http://www.francescocamarlinghi.com/it/web-development/inviare-email-tramite-asp/</link>
		<comments>http://www.francescocamarlinghi.com/it/web-development/inviare-email-tramite-asp/#comments</comments>
		<pubDate>Wed, 12 Sep 2007 12:52:24 +0000</pubDate>
		<dc:creator>Francesco Camarlinghi</dc:creator>
				<category><![CDATA[Sviluppo Web]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[CDO]]></category>
		<category><![CDATA[CDONTS]]></category>

		<guid isPermaLink="false">http://www.francescocamarlinghi.com/?p=258</guid>
		<description><![CDATA[Articolo riproposto, dopo un piccolo aggiornamento, dal vecchio sito e che tratta l'invio di email tramite ASP, utilizzando CDONTS o CDO.]]></description>
			<content:encoded><![CDATA[<p>A seconda del sistema operativo utilizzato, ASP mette a disposizione dello sviluppatore due oggetti per l&#8217;invio di email. Fino a Windows NT, infatti, l&#8217;oggetto predefinito è CDONTS, mentre da Windows 2000 in poi è obbligatorio utilizzare CDO.</p>
<p>Di seguito due esempi che mostrano l&#8217;uso di entrambi gli oggetti.</p>
<h2>CDONTS</h2>
<pre class="brush: vb;">
&lt;%
'Creo l'oggetto
Set objCDONTS = Server.CreateObject(&quot;CDONTS.NewMail&quot;)

objCDONTS.From = &quot;mittente@tuamail.it&quot; 'Mittente
objCDONTS.To = &quot;destinatario@suamail.it&quot; 'Destinatario
objCDONTS.Subject = &quot;Oggetto della email&quot; 'Oggetto
objCDONTS.Body = &quot;Testo della email&quot; 'Testo

objCDONTS.Send 'Invio del messaggio

'Pulizia
Set objCDONTS = Nothing
%&gt;
</pre>
<h2>CDO</h2>
<pre class="brush: vb;">
'Creo l'oggetto
Set objCDO = Server.CreateObject(&quot;CDO.Message&quot;)

objCDO.From = &quot;mittente@tuamail.it&quot; 'Mittente
objCDO.To = &quot;destinatario@suamail.it&quot; 'Destinatario
objCDO.Subject = &quot;Oggetto della email&quot; 'Oggetto
objCDO.TextBody = &quot;Testo della email&quot; 'Testo

objCDO.Send 'Invio del messaggio

'Pulizia
Set objCDONTS = Nothing
%&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.francescocamarlinghi.com/it/web-development/inviare-email-tramite-asp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

