<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Andy's Blog &#187; AJAX</title>
	<atom:link href="http://andreafortuna.wordpress.com/category/programmazione/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://andreafortuna.wordpress.com</link>
	<description>Un Blog di Andrea Fortuna</description>
	<lastBuildDate>Thu, 27 Aug 2009 11:47:15 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>it</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='andreafortuna.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/0e2c5274dfa126dfed8f40075e095f7f?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Andy's Blog &#187; AJAX</title>
		<link>http://andreafortuna.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://andreafortuna.wordpress.com/osd.xml" title="Andy&#8217;s Blog" />
		<item>
		<title>VNC in Ajax!</title>
		<link>http://andreafortuna.wordpress.com/2007/09/07/vnc-in-ajax/</link>
		<comments>http://andreafortuna.wordpress.com/2007/09/07/vnc-in-ajax/#comments</comments>
		<pubDate>Fri, 07 Sep 2007 13:19:02 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://andreafortuna.wordpress.com/2007/09/07/vnc-in-ajax/</guid>
		<description><![CDATA[VNC ormai è diventato uno standard per il controllo remoto dei sistemi con interfaccia grafica: basandosi su un protocollo aperto le implementazioni sono state numerose.
Uno dei suoi grossi limiti è stato quello di creare non pochi problemi a chi avesse voluto utilizzarlo dietro un proxy da una rete aziendale, ad esempio) a meno di utilizzare [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=625&subd=andreafortuna&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://en.wikipedia.org/wiki/VNC">VNC</a> ormai è diventato uno standard per il controllo remoto dei sistemi con interfaccia grafica: basandosi su un protocollo aperto le implementazioni sono state numerose.</p>
<p>Uno dei suoi grossi limiti è stato quello di creare non pochi problemi a chi avesse voluto utilizzarlo dietro un proxy da una rete aziendale, ad esempio) a meno di utilizzare tunnel ssh (quando possibile) per veicolare il traffico: problema risolto brillantemente da servizi come <a href="https://secure.logmein.com/home.asp?lang=en">LogMeIn</a> che tuttavia, oltre ad appoggiarsi a un sistema proprietario comporta l&#8217;obbligo di veicolare tutto il traffico (benchè criptato) sui loro server.</p>
<p>Leggendo <a href="http://mashable.com/2007/09/07/remote-access/">questo articolo su Mashable</a> vengo a conoscenza dell&#8217;esistenza di un progetto chiamato <a href="http://sourceforge.net/projects/ajaxvnc/">AjaxVNC</a>: si tratta di un server VNC scritto in Java che include un piccolo webserver.<br />
&#8220;Bella  scoperta, il webserver lo ha anche la versione ufficiale di VNC, sulla porta 5900!&#8221;, direte, ma  quello di AjaxVNC è leggermente differente.<br />
Mentre il VNC &#8217;standard&#8217; espone un webserver che permette esclusivamente di avviare un&#8217;applet per collegarsi al server utilizzando la normale porta 5800, AjaxVNC fornisce un client interamente scritto in Ajax, quindi permette di veicolare tutto il traffico sulla porta 80, scavalcando facilmente proxy e limitazioni.</p>
<p>Il progetto è ancora giovane, e le prestazioni non sono assolutamente entusiasmanti, ma si tratta senza dubbio di un buon inizio!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/andreafortuna.wordpress.com/625/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/andreafortuna.wordpress.com/625/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/andreafortuna.wordpress.com/625/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/andreafortuna.wordpress.com/625/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/andreafortuna.wordpress.com/625/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/andreafortuna.wordpress.com/625/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/andreafortuna.wordpress.com/625/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/andreafortuna.wordpress.com/625/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/andreafortuna.wordpress.com/625/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/andreafortuna.wordpress.com/625/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/andreafortuna.wordpress.com/625/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/andreafortuna.wordpress.com/625/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=625&subd=andreafortuna&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://andreafortuna.wordpress.com/2007/09/07/vnc-in-ajax/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/feb4e5bc8fb5405561901465d188e4b8?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">andreafortuna</media:title>
		</media:content>
	</item>
		<item>
		<title>Eseguire javascript da una pagina caricata con ajax</title>
		<link>http://andreafortuna.wordpress.com/2007/08/12/eseguire-javascript-da-una-pagina-caricata-con-ajax/</link>
		<comments>http://andreafortuna.wordpress.com/2007/08/12/eseguire-javascript-da-una-pagina-caricata-con-ajax/#comments</comments>
		<pubDate>Sun, 12 Aug 2007 08:35:49 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://andreafortuna.wordpress.com/2007/08/12/eseguire-javascript-da-una-pagina-caricata-con-ajax/</guid>
		<description><![CDATA[A chi, come me, sviluppa utilizzando molto javascript e ajax sara&#8217; sicuramente capitato: caricate un pezzo di pagina con le vostre belle funzioni asincrone e il javascript contenuto nel segmento caricato non viene eseguito.  
La soluzione da me utilizzata e&#8217; un trucchetto che definirei &#8216;zozzo e brutto&#8217;, ma funzionante.
Creare una immagine da 1 pixel, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=588&subd=andreafortuna&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A chi, come me, sviluppa utilizzando molto javascript e ajax sara&#8217; sicuramente capitato: caricate un pezzo di pagina con le vostre belle funzioni asincrone e il javascript contenuto nel segmento caricato non viene eseguito. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>La soluzione da me utilizzata e&#8217; un trucchetto che definirei &#8216;zozzo e brutto&#8217;, ma funzionante.</p>
<p>Creare una immagine da 1 pixel, inserirla nella pagina da caricare</p>
<p><code>&lt;img src="immagine.jpg" onload="Funzione();"&gt;</code></p>
<p>e richiamare, nell&#8217;evento OnLoad dell&#8217;immagine, la funzione javascript da eseguire.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/andreafortuna.wordpress.com/588/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/andreafortuna.wordpress.com/588/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/andreafortuna.wordpress.com/588/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/andreafortuna.wordpress.com/588/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/andreafortuna.wordpress.com/588/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/andreafortuna.wordpress.com/588/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/andreafortuna.wordpress.com/588/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/andreafortuna.wordpress.com/588/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/andreafortuna.wordpress.com/588/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/andreafortuna.wordpress.com/588/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/andreafortuna.wordpress.com/588/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/andreafortuna.wordpress.com/588/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=588&subd=andreafortuna&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://andreafortuna.wordpress.com/2007/08/12/eseguire-javascript-da-una-pagina-caricata-con-ajax/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/feb4e5bc8fb5405561901465d188e4b8?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">andreafortuna</media:title>
		</media:content>
	</item>
		<item>
		<title>Google Maps: geomapping e salvataggio coordinate su database</title>
		<link>http://andreafortuna.wordpress.com/2007/05/31/google-maps-geomapping-e-salvataggio-coordinate-su-database/</link>
		<comments>http://andreafortuna.wordpress.com/2007/05/31/google-maps-geomapping-e-salvataggio-coordinate-su-database/#comments</comments>
		<pubDate>Thu, 31 May 2007 10:05:55 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://andreafortuna.wordpress.com/2007/05/31/google-maps-geomapping-e-salvataggio-coordinate-su-database/</guid>
		<description><![CDATA[Ieri ho avuto il piacere di seguire l&#8217;ottimo Gianpiero nella creazione di una pagina che tramite il javascript e le solite chiamate asincrone permettesse di:

Caricare un elenco di indirizzi dal database
Effettuare il geomapping dei suddetti indirizzi
Salvare le coordinate cosi&#8217; ottenute sul DB.

Il risultato lo potete trovare sul blog di Gianpiero.
      [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=502&subd=andreafortuna&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ieri ho avuto il piacere di seguire l&#8217;ottimo <a href="http://www.cicoira.it/">Gianpiero</a> nella creazione di una pagina che tramite il javascript e le solite chiamate asincrone permettesse di:</p>
<ol>
<li>Caricare un elenco di indirizzi dal database</li>
<li>Effettuare il geomapping dei suddetti indirizzi</li>
<li>Salvare le coordinate cosi&#8217; ottenute sul DB.</li>
</ol>
<p>Il risultato lo potete trovare sul <a href="http://www.cicoira.it/index.php/2007/05/31/geomapping-aggiornamento-coordiante-a-partire-dal-indirizzo/">blog di Gianpiero</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/andreafortuna.wordpress.com/502/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/andreafortuna.wordpress.com/502/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/andreafortuna.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/andreafortuna.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/andreafortuna.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/andreafortuna.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/andreafortuna.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/andreafortuna.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/andreafortuna.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/andreafortuna.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/andreafortuna.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/andreafortuna.wordpress.com/502/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=502&subd=andreafortuna&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://andreafortuna.wordpress.com/2007/05/31/google-maps-geomapping-e-salvataggio-coordinate-su-database/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/feb4e5bc8fb5405561901465d188e4b8?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">andreafortuna</media:title>
		</media:content>
	</item>
		<item>
		<title>Morfik: uscita la versione 1.0.2.5</title>
		<link>http://andreafortuna.wordpress.com/2007/05/28/morfik-uscita-la-versione-1025/</link>
		<comments>http://andreafortuna.wordpress.com/2007/05/28/morfik-uscita-la-versione-1025/#comments</comments>
		<pubDate>Mon, 28 May 2007 12:42:40 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://andreafortuna.wordpress.com/2007/05/28/morfik-uscita-la-versione-1025/</guid>
		<description><![CDATA[Nell&#8217;ultima versione di Morfik WebOS gli sviluppatori hanno lavorato molto per correggere il noto problema di lentezza dell&#8217;ambiente&#8230;come scritto nella newsletter ufficiale:
The highlights of this release is SPEED &#8211; better than 10X faster for incremental compiles
Senza dubbio l&#8217;applicazione è piu&#8217; reattiva e la compilazione non è piu&#8217; biblica: comincia a essere utilizzabile!  
  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=498&subd=andreafortuna&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Nell&#8217;ultima versione di <a href="http://andreafortuna.wordpress.com/2007/04/29/morfik-ambiente-di-sviluppo-rad-per-web-application-ajax/">Morfik WebOS</a> gli sviluppatori hanno lavorato molto per correggere il noto problema di lentezza dell&#8217;ambiente&#8230;come scritto nella newsletter ufficiale:</p>
<blockquote><p>The highlights of this release is SPEED &#8211; better than 10X faster for incremental compiles</p></blockquote>
<p>Senza dubbio l&#8217;applicazione è piu&#8217; reattiva e la compilazione non è piu&#8217; biblica: comincia a essere utilizzabile! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/andreafortuna.wordpress.com/498/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/andreafortuna.wordpress.com/498/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/andreafortuna.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/andreafortuna.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/andreafortuna.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/andreafortuna.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/andreafortuna.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/andreafortuna.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/andreafortuna.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/andreafortuna.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/andreafortuna.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/andreafortuna.wordpress.com/498/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=498&subd=andreafortuna&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://andreafortuna.wordpress.com/2007/05/28/morfik-uscita-la-versione-1025/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/feb4e5bc8fb5405561901465d188e4b8?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">andreafortuna</media:title>
		</media:content>
	</item>
		<item>
		<title>Morfik, ambiente di sviluppo RAD per web application AJAX</title>
		<link>http://andreafortuna.wordpress.com/2007/04/29/morfik-ambiente-di-sviluppo-rad-per-web-application-ajax/</link>
		<comments>http://andreafortuna.wordpress.com/2007/04/29/morfik-ambiente-di-sviluppo-rad-per-web-application-ajax/#comments</comments>
		<pubDate>Sun, 29 Apr 2007 20:49:56 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://andreafortuna.wordpress.com/2007/04/29/morfik-ambiente-di-sviluppo-rad-per-web-application-ajax/</guid>
		<description><![CDATA[Ho scoperto casualmente Morfik, un ambiente di sviluppo per applicazioni web interessante e a mio avviso rivoluzionario:
WebOS AppsBuilder brings extreme simplicity to the design of sophisticated AJAX applications without compromising their functionality. You don&#8217;t need to write any HTML, XHTML, XML, JavaScript or CSS. It has never been easier to create highly interactive web sites [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=449&subd=andreafortuna&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ho scoperto casualmente <a href="http://www.morfik.com/">Morfik</a>, un ambiente di sviluppo per applicazioni web interessante e a mio avviso rivoluzionario:</p>
<blockquote><p>WebOS AppsBuilder brings extreme simplicity to the design of sophisticated AJAX applications without compromising their functionality. You don&#8217;t need to write any HTML, XHTML, XML, JavaScript or CSS. It has never been easier to create highly interactive web sites and applications &#8211; and you don&#8217;t even have to learn a new language or new technologies to do it!</p></blockquote>
<p>Si tratta di un ambiente RAD (la pagina si disegna trascinando i controlli a colpi di mouse) e i linguaggi di scripting utilizzabili sono svariati (Java, C#, Basic, Pascal).<br />
Ma la vera particolarità è data dal metodo di distribuzione delle applicazioni: un volta compilato il progetto ci si ritrova con un singolo file binario (compilabile al momento per Windows e Linux) contenente le nostre pagine, i nostri script, il webserver (apache) e il database (Firebird).<br />
Una volta avviato il file vengono avviati i server e viene aperta una pagina del browser con l&#8217;applicazione, che da questo momento risulta fruibile anche da altri PC presenti sulla rete locale.</p>
<p>Che dire? L&#8217;ambiente di sviluppo è ben fatto, con integrati il designer per i form, un buon debugger e un discreto designer per il database.<br />
Purtroppo, tutto l&#8217;ambiente soffre di un  problema che a  mio avviso è estremamente  penalizzante:  è LEEENTO!<br />
La compilazione  di un progetto semplicissimo (singolo form, 2 componenti) richiede ben 90 secondi, tempi che quasi si raddoppiano nel caso di una applicazione &#8216;reale&#8217;.<br />
Inoltre,  nonostante sia possibile crosscompilare il progetto anche per linux (e in futuro per MacOsX e FreeBsd) l&#8217;ambiente di sviluppo viene rilasciato escluivamente per windows.</p>
<p>In ogni caso il progetto deve ancora crescere, i presupposti però sono ottimi!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/andreafortuna.wordpress.com/449/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/andreafortuna.wordpress.com/449/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/andreafortuna.wordpress.com/449/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/andreafortuna.wordpress.com/449/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/andreafortuna.wordpress.com/449/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/andreafortuna.wordpress.com/449/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/andreafortuna.wordpress.com/449/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/andreafortuna.wordpress.com/449/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/andreafortuna.wordpress.com/449/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/andreafortuna.wordpress.com/449/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/andreafortuna.wordpress.com/449/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/andreafortuna.wordpress.com/449/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=449&subd=andreafortuna&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://andreafortuna.wordpress.com/2007/04/29/morfik-ambiente-di-sviluppo-rad-per-web-application-ajax/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/feb4e5bc8fb5405561901465d188e4b8?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">andreafortuna</media:title>
		</media:content>
	</item>
		<item>
		<title>KAjaxFramework: migliorie visuali</title>
		<link>http://andreafortuna.wordpress.com/2007/03/25/kajaxframework-migliorie-visuali/</link>
		<comments>http://andreafortuna.wordpress.com/2007/03/25/kajaxframework-migliorie-visuali/#comments</comments>
		<pubDate>Sun, 25 Mar 2007 16:13:55 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://andreafortuna.wordpress.com/2007/03/25/kajaxframework-migliorie-visuali/</guid>
		<description><![CDATA[Tempo permettendo sto continuando lo sviluppo del mio KAjaxFramework.
Nella primissima versione ho focalizzato lo sviluppo esclusivamente sull&#8217;interfacciamento con la base dati, permettendo di sviluppare quasi esclusivamente  lato client demandando ai componenti lato server quasi esclusivamente i compiti di lettura/scrittura sul database.
Volutamente avevo tralasciato il fattore &#8216;visuale&#8217;: nessun effetto grafico tanto caro alle applicazioni Web2.0
Dovendo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=411&subd=andreafortuna&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Tempo permettendo sto continuando lo sviluppo del mio <a href="http://code.google.com/p/kajaxframework/">KAjaxFramework</a>.</p>
<p>Nella <a href="http://andreafortuna.wordpress.com/2006/12/10/kajax-il-mio-framework-e-i-miei-lavoretti/">primissima versione</a> ho focalizzato lo sviluppo esclusivamente sull&#8217;interfacciamento con la base dati, permettendo di sviluppare quasi esclusivamente  lato client demandando ai componenti lato server quasi esclusivamente i compiti di lettura/scrittura sul database.<br />
Volutamente avevo tralasciato il fattore &#8216;visuale&#8217;: nessun effetto grafico tanto caro alle applicazioni Web2.0</p>
<p>Dovendo pero&#8217; iniziare un nuovo progetto basato proprio sul mio framework mi sono rimboccato le maniche e applicando la filosofia della <a href="http://en.wikipedia.org/wiki/Extreme_Programming">Extreme Programming</a> ho riscritto quasi completamente il codice riguardante la presentazione dei dati.</p>
<p>Le modifiche sono parecchie, vi riassumo le principali:</p>
<ol>
<li><em>Gestione piu&#8217; pulita dei layer</em>: nella vecchia versione i DIV contenenti i MessageBox venivano creati sulla pagina  all&#8217;atto del caricamento, con degli orridi &#8216;document.write&#8217;, e poi tenuti nascosti fino al momento in cui venivano utilizzati. Nella nuova versione, ogni DIV viene creato al momento in cui deve essere utilizzato e rimosso dal DOM quando non piu&#8217; necessario.</li>
<li><em>Gestione semplificata del Drag&amp;Drop</em>: creare un oggetto &#8216;draggabile&#8217; ora e&#8217; piu&#8217; rapido e semplice, basta richiamare all&#8217;evento <em>OnClick </em>dell&#8217;oggetto la funzione <em>dragStart()</em>;</li>
<li><em>Dissolvenze</em>: gli oggetti creati possono essere fatti apparire e scomparire con un effetto di dissolvenza. Non solo uno &#8217;sfizio&#8217; grafico: a mio avviso concorrono a rendere l&#8217;interfaccia piu&#8217; dinamica (nei tempi necessari alle dissolvenze le funzioni di scambio dati continuano a lavorare, dando all&#8217;utente l&#8217;impressione di minori tempi di risposta dell&#8217;applicazione).</li>
<li><em>Menu&#8217; Contestuali</em>: E&#8217; possibile associare a un oggetto un menu&#8217; contestuale, visualizzabile con il click del tasto destro del mouse.</li>
</ol>
<p>Per quanto riguarda le funzioni di interfacciamento con la base dati, niente e&#8217; cambiato. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Ultima nota: non ho avuto ancora tempo/voglia di  scrivere la documentazione, quindi per capire nel dettaglio come funziona l&#8217;accrocco dovete spulciarvi i demo che ho realizzato.<br />
Per qualsiasi dubbio lasciate un commento sul post o scrivetemi in privato: non assicuro tempi di risposta immediati, ma faro&#8217; del mio meglio! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Potete vedere all&#8217;opera le novita&#8217; del framework in questa <a href="http://andreafortuna.110mb.com/kajaxframework/visual_demo/">Pagina Demo</a>.</p>
<p>Per ulteriori informazioni e per scaricare i sorgenti aggiornati questa e&#8217; la <a href="http://code.google.com/p/kajaxframework/">Pagina Del Progetto su Google Code</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/andreafortuna.wordpress.com/411/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/andreafortuna.wordpress.com/411/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/andreafortuna.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/andreafortuna.wordpress.com/411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/andreafortuna.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/andreafortuna.wordpress.com/411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/andreafortuna.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/andreafortuna.wordpress.com/411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/andreafortuna.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/andreafortuna.wordpress.com/411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/andreafortuna.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/andreafortuna.wordpress.com/411/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=411&subd=andreafortuna&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://andreafortuna.wordpress.com/2007/03/25/kajaxframework-migliorie-visuali/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/feb4e5bc8fb5405561901465d188e4b8?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">andreafortuna</media:title>
		</media:content>
	</item>
		<item>
		<title>KAjaxFramework e Google Code</title>
		<link>http://andreafortuna.wordpress.com/2006/12/29/kajaxframework-e-google-code/</link>
		<comments>http://andreafortuna.wordpress.com/2006/12/29/kajaxframework-e-google-code/#comments</comments>
		<pubDate>Fri, 29 Dec 2006 09:27:06 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://andreafortuna.wordpress.com/2006/12/29/kajaxframework-e-google-code/</guid>
		<description><![CDATA[Nel mio precedente post avevo scritto che avrei pubblicato appena possibile il mio KAjaxFramework su SourceForge: ho avuto pero&#8217; modo di apprezzare la struttura a mio avviso piu&#8217; semplice e versatile di Google Code, decidendo quindi per un cambio di destinazione.
Se qualcuno vuole partecipare allo sviluppo o semplicemente dare uno sguardo, ecco la pagina del [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=336&subd=andreafortuna&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Nel mio <a href="http://andreafortuna.wordpress.com/2006/12/10/kajax-il-mio-framework-e-i-miei-lavoretti/">precedente post</a> avevo scritto che avrei pubblicato appena possibile il mio KAjaxFramework su <a href="http://sourceforge.net/index.php">SourceForge</a>: ho avuto pero&#8217; modo di apprezzare la struttura a mio avviso piu&#8217; semplice e versatile di <a href="http://code.google.com">Google Code</a>, decidendo quindi per un cambio di destinazione.</p>
<p>Se qualcuno vuole partecipare allo sviluppo o semplicemente dare uno sguardo, ecco la <a href="http://code.google.com/p/kajaxframework/">pagina del progetto su Google Code</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/andreafortuna.wordpress.com/336/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/andreafortuna.wordpress.com/336/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/andreafortuna.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/andreafortuna.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/andreafortuna.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/andreafortuna.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/andreafortuna.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/andreafortuna.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/andreafortuna.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/andreafortuna.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/andreafortuna.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/andreafortuna.wordpress.com/336/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=336&subd=andreafortuna&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://andreafortuna.wordpress.com/2006/12/29/kajaxframework-e-google-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/feb4e5bc8fb5405561901465d188e4b8?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">andreafortuna</media:title>
		</media:content>
	</item>
		<item>
		<title>KAjax, il mio framework e i miei lavoretti&#8230;</title>
		<link>http://andreafortuna.wordpress.com/2006/12/10/kajax-il-mio-framework-e-i-miei-lavoretti/</link>
		<comments>http://andreafortuna.wordpress.com/2006/12/10/kajax-il-mio-framework-e-i-miei-lavoretti/#comments</comments>
		<pubDate>Sun, 10 Dec 2006 22:54:45 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[KAjaxFramework]]></category>

		<guid isPermaLink="false">http://andreafortuna.wordpress.com/2006/12/10/kajax-il-mio-framework-e-i-miei-lavoretti/</guid>
		<description><![CDATA[Eh si, ho scritto veramente poco ultimamente&#8230;sono giustificato pero&#8217;: ho lavorato parecchio.
In ufficio ho da seguire il solito $MegaApplicativoGlobale , una bestia multiforme MSSql+ASP+AJAX+tantealtrecose che muta continuamente nella forma e nelle specifiche (la data di consegna della primissima versione gravita intorno alla meta&#8217; di dicembre&#8230;vedremo&#8230;:-P), mentre i miei lavoretti di &#8216;libero consulente&#8217; mi hanno permesso [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=321&subd=andreafortuna&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Eh si, ho scritto veramente poco ultimamente&#8230;sono giustificato pero&#8217;: ho lavorato parecchio.</p>
<p>In ufficio ho da seguire il solito $MegaApplicativoGlobale , una bestia multiforme MSSql+ASP+AJAX+tantealtrecose che muta continuamente nella forma e nelle specifiche (la data di consegna della primissima versione gravita intorno alla meta&#8217; di dicembre&#8230;vedremo&#8230;:-P), mentre i miei lavoretti di &#8216;libero consulente&#8217; mi hanno permesso (grazie ai tempi di consegna piu&#8217;  &#8216;dilatati&#8217;) di sperimentare.</p>
<p>La cellula primitiva di $MegaApplicativoGlobale nasce da una serie di esperimenti (<a href="http://andreafortuna.wordpress.com/2006/03/05/ajax-asp-sql/">qui </a>e <a href="http://andreafortuna.wordpress.com/2006/07/26/google-maps-ajax/">qui</a>) nei quali mi divertivo in delle web applications a dividere nettamente il livello client da quello server.</p>
<p>Viavia ho sviluppato una serie di componenti lato server e funzioni in javascript che mi permettessero di mandare avanti e indietro dati tra client e server in maniera asincrona utilizzando l&#8217;XML (non mi e&#8217; nuova questa tecnologia, vero? <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> ).</p>
<p>In breve sono arrivato a un mio personale &#8217;standard&#8217; di sviluppo: per quanto riguarda l&#8217;accesso ai dati un unico componente lato server che accetta come parametro una stringa sql e restituisce  una struttura XML contenente i dati restituiti dal DataBase.<br />
Ho sviluppato il suddetto componente sia in ASP che in PHP&#8230;piu&#8217; avanti capirete perche&#8217;.</p>
<p>Sul livello client sono presenti una vasta gamma di funzioni che accolgono la struttura XML  inviata dal server, la elaborano e presentano sulla pagina (viva il DOM e chi lo creo&#8217;) i dati in varie forme (tabelle, comboBox ecc&#8230;).</p>
<p>Aggiungendo alle funzioni per la manipolazione dei dati un po&#8217; di codice per modificare degli elementi della pagina mi sono trovato tra le mani un accrocchio che ho scoperto essermi parecchio utile: essendo il componente lato server per l&#8217;interfacciamento con il database uno solo, convertendolo in altri linguaggi e adattandolo ad altre piattaforme mi sono trovato nella possibilita&#8217; di sviluppare una applicazione web su MSSql+IIS+ASP e portarla a girare su una piattaforma MySQL+Apache+PHP praticamente senza modificare niente&#8230;:-D</p>
<p>Quindi, mentre il $MegaApplicativoGlobale ha continuato a crescere, acquisire nuovi arti e teste e perdendone altrettanti come un&#8217;Idra geneticamente modificata ogni qualvolta uno dei $personeInAltoConAltoPotereDecisionale gli desse uno sguardo, ho proseguito i miei esperimenti Ajax-oriented portando il mio personale &#8216;framework&#8217; a una maturita&#8217; tale che mi ha permesso di utilizzarlo per sviluppare un discreto gestionale web interamente &#8216;web 2.0&#8242;,  installato al cliente pochi giorni fa (sulla rete interna, nonsu internet, sia ben chiaro!)  senza che fino ad ora il cliente  suddetto segnalasse problemi di sorta (mai dire mai!).</p>
<p>In questo fine settimana, trovandomi un po&#8217; di tempo libero e voglia di spippolare ho preparato un semplice sistema di gestione dei Trouble Tickets che ho in programma di far utilizzare in futuro ai miei &#8216;clienti&#8217;, sempre basato su quello che ormai sono solito identificare come <i>KAjaxFramework</i>: la K in questione non ha niente a che vedere con il ben noto KDE, e&#8217; semplicemente una naming policy che utilizzo per battezzare le mie creazioni, retaggio di una adolescenza bruciata su internet e per la precisione su IRC, sfoggiando un nick molto l33t avente come iniziale proprio la lettera K.</p>
<p>Il KTroubleTicketSystem, effettivamente non piu&#8217; che una demo delle potenzialita&#8217; dell&#8217;ancora acerbo framework, lo potete trovare seguendo <a href="http://andreafortuna.netsons.org/ktts/">questo link</a> (ho creato un &#8216;account cliente&#8217; di test, potete accedere utilizzando &#8216;test&#8217; come user e pass), mentre se avete abbastanza fegato, potete dare uno sguardo ai sorgenti del KAjaxFramework scaricandoli da <a href="http://andrea.fortuna.googlepages.com/KAjaxFramework.zip">qui</a>, ma vi avverto: NON esiste ancora documentazione, i commenti sul codice sono pochi e confusi.</p>
<p>Per farla breve, il metodo di sviluppo e&#8217; abbastanza semplice:</p>
<ul>
<li>Realizzare i vari &#8216;form&#8217;  in html+css, avendo cura di posizionare dei &lt;div&gt; come placeholder nei punti in cui dovranno apparire componenti legati ai dati generati dal substrasto javascript</li>
<li>Realizzare una home page che conterra&#8217; le interfacce sviluppato al punto precedente sempre con il metodo dei &lt;div&gt; utilizzati come &#8217;segnaposto&#8217;</li>
<li>Caricare (lato client)  con la funzione loadForm del framework i form e popolarli con i dati pescati dal database utilizzando le funzioni preposte (funzioni che e&#8217; possibile utilizzare anche per  la procedura inversa).</li>
</ul>
<p>Probabilmente e&#8217; molto piu&#8217; facile da vedere all&#8217;opera che da spiegare&#8230;il KTroubleTicketSystem e&#8217; li apposta&#8230;:-)<br />
Quando riusciro&#8217; a trovare il tempo necessario a ripulire il codice, scrivere la documentazione e sopratutto realizzare un sistema decente di sicurezza (se mal configurato puo&#8217; permettere ad un utente con buoni skills di trovare il modo di modificare i dati sul DB scavalcando senza colpo ferire eventuali controlli)  probabilmente registrero&#8217; il progetto su SourceForge, ma fino a quel momento prendetelo come un semplice &#8216;esercizio di stile&#8217;. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/andreafortuna.wordpress.com/321/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/andreafortuna.wordpress.com/321/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/andreafortuna.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/andreafortuna.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/andreafortuna.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/andreafortuna.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/andreafortuna.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/andreafortuna.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/andreafortuna.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/andreafortuna.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/andreafortuna.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/andreafortuna.wordpress.com/321/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=321&subd=andreafortuna&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://andreafortuna.wordpress.com/2006/12/10/kajax-il-mio-framework-e-i-miei-lavoretti/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/feb4e5bc8fb5405561901465d188e4b8?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">andreafortuna</media:title>
		</media:content>
	</item>
		<item>
		<title>ASP.NET AJAX</title>
		<link>http://andreafortuna.wordpress.com/2006/10/02/aspnet-ajax/</link>
		<comments>http://andreafortuna.wordpress.com/2006/10/02/aspnet-ajax/#comments</comments>
		<pubDate>Mon, 02 Oct 2006 08:58:55 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://andreafortuna.wordpress.com/2006/10/02/aspnet-ajax/</guid>
		<description><![CDATA[E&#8217; passato qualche mese da quando scrissi il primo post riguardante ATLAS, il framework sviluppato da Microsoft per aggiungere funzionalità asincrone ad ASP.NET.
Il progetto è progredito, ha perso il codename ATLAS per trasformarsi semplicemente in ASP.NET AJAX.
Nella HomePage del progetto è possibile visionare alcuni &#8216;videocorsi&#8217; di sviluppo con asp.net ajax: nel primo viene messa in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=269&subd=andreafortuna&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>E&#8217; passato qualche mese da quando scrissi il primo <a href="http://andreafortuna.wordpress.com/2006/02/15/atlas-ajax-su-aspnet-20">post</a> riguardante ATLAS, il framework sviluppato da Microsoft per aggiungere funzionalità asincrone ad ASP.NET.</p>
<p>Il progetto è progredito, ha perso il codename ATLAS per trasformarsi semplicemente in ASP.NET AJAX.</p>
<p>Nella<a href="http://atlas.asp.net/Default.aspx?tabid=47"> HomePage</a> del progetto è possibile visionare alcuni &#8216;videocorsi&#8217; di sviluppo con asp.net ajax: nel <a href="//wm.microsoft.com/ms/uifx/asp_net_atlas.wmv">primo</a> viene messa in luce la semplicità di conversione di una normale applicazione asp.net a una basata su ajax.<br />Una volta creato il progetto utilizzando l&#8217;apposito template, si può sviluppare l&#8217;applicazione seguendo le direttive classiche di asp.net, salvo poi &#8216;racchiudere&#8217; le parti che dovranno essere aggiornate in maniera asincrona all&#8217;interno di appositi tag.</p>
<p>Gli <a href="http://atlas.asp.net/default.aspx?tabid=47&amp;subtabid=478">altri video</a> riguardano problematiche e dimostrazioni piu&#8217; specifiche: utile e interessannte la serie &quot;<a href="http://atlas.asp.net/default.aspx?tabid=47&amp;subtabid=478#howdoi">How Do I</a>&quot;.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/andreafortuna.wordpress.com/269/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/andreafortuna.wordpress.com/269/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/andreafortuna.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/andreafortuna.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/andreafortuna.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/andreafortuna.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/andreafortuna.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/andreafortuna.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/andreafortuna.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/andreafortuna.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/andreafortuna.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/andreafortuna.wordpress.com/269/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=269&subd=andreafortuna&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://andreafortuna.wordpress.com/2006/10/02/aspnet-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/feb4e5bc8fb5405561901465d188e4b8?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">andreafortuna</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL Server 2005, XML e AJAX</title>
		<link>http://andreafortuna.wordpress.com/2006/08/14/sql-server-2005-xml-e-ajax/</link>
		<comments>http://andreafortuna.wordpress.com/2006/08/14/sql-server-2005-xml-e-ajax/#comments</comments>
		<pubDate>Mon, 14 Aug 2006 08:08:32 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">https://andreafortuna.wordpress.com/2006/08/14/sql-server-2005-xml-e-ajax/</guid>
		<description><![CDATA[Mi riaggancio ai miei precedenti post (questo e questo) riguardanti la possibilità da ASP di convertire un recordset in un documento XML da far poi interpretare al substrato Javascript utilizzato dalle applicazioni AJAX.
SQL Server 2005 semplifica ancora di più le operazioni: la conversione in XML è eseguita infatti direttamente dal motore SQL, basta aggiungere alla [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=223&subd=andreafortuna&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Mi riaggancio ai miei precedenti post (<a href="http://andreafortuna.wordpress.com/2006/03/05/ajax-asp-sql/">questo</a> e <a href="http://andreafortuna.wordpress.com/2006/07/26/google-maps-ajax/">questo</a>) riguardanti la possibilità da ASP di convertire un recordset in un documento XML da far poi interpretare al substrato Javascript utilizzato dalle applicazioni AJAX.</p>
<p>SQL Server 2005 semplifica ancora di più le operazioni: la conversione in XML è eseguita infatti direttamente dal motore SQL, basta aggiungere alla fine della query il costrutto <i>FOR XML</i>, esempio:</p>
<blockquote><p>SELECT * FROM ORDINI FOR XML AUTO</p></blockquote>
<p>La parola chiave AUTO definisce la modalità di output del documento.</p>
<p>Le modalità di output disponibili sono le seguenti:</p>
<p><b>AUTO</b>: SQL Server scrive la riga in nodo dello stesso nome della tabella, e i valori delle colonne come attributi.<br />
Nel caso  nella query siano presenti join con altre tabelle, l&#8217;output risulterà nidifcato, senza la possibilità di  controllare la nidificazione, tuttavia con la possibilità di  fare in modo che i valori delle colonne vengano restituiti come  elementi anzichè come attributi, specificando l&#8217;opzione <i>ELEMENTS</i>:</p>
<blockquote><p>SELECT * FROM ORDINI FOR XML AUTO,ELEMENTS</p></blockquote>
<p><b>RAW</b>: Produce un ouput con il nodo corrispondente alla riga chiamato sempre &#8216;row&#8217; e non si occupa di nidificare le tabelle in join.<br />
L&#8217;opzione ELEMENTS sortisce lo stesso effetto della modalità AUTO.</p>
<p><b>EXPLICIT</b>: Comporta una formattazione particolare della query, che deve rispettare i seguenti requisiti:</p>
<ul>
<li>La prima colonna deve essere un numero di TAG definito</li>
<li>La seconda colonna un numero di PARENT definito.</li>
</ul>
<p>Quest&#8217;ultima modalità è senz&#8217;altro la piu&#8217; difficile da ottenere, ma di sicuro la piu&#8217; potente  e precisa  in fatto di formattazione finale.</p>
<p>A breve dedicherò un post esclusivamente a questa modalità.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/andreafortuna.wordpress.com/223/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/andreafortuna.wordpress.com/223/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/andreafortuna.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/andreafortuna.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/andreafortuna.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/andreafortuna.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/andreafortuna.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/andreafortuna.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/andreafortuna.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/andreafortuna.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/andreafortuna.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/andreafortuna.wordpress.com/223/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=223&subd=andreafortuna&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://andreafortuna.wordpress.com/2006/08/14/sql-server-2005-xml-e-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/feb4e5bc8fb5405561901465d188e4b8?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">andreafortuna</media:title>
		</media:content>
	</item>
		<item>
		<title>Google Maps + Ajax</title>
		<link>http://andreafortuna.wordpress.com/2006/07/26/google-maps-ajax/</link>
		<comments>http://andreafortuna.wordpress.com/2006/07/26/google-maps-ajax/#comments</comments>
		<pubDate>Wed, 26 Jul 2006 05:43:26 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">https://andreafortuna.wordpress.com/2006/07/26/google-maps-ajax/</guid>
		<description><![CDATA[Con l&#8217;intruduzione nelle API delle funzioni di Geocoding, il servizio di mapp online di Google e&#8217; diventato ancora piu&#8217; semplice da utilizzare: una vera manna per i programmatori!
In questo articolo illustro brevemente un metodo estremamente semplice (e grezzo) per caricare in maniera asincrona una serie di marker sulla mappa, utilizzando javascript e un piccolo script [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=205&subd=andreafortuna&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Con l&#8217;intruduzione nelle API delle funzioni di Geocoding, il servizio di mapp online di Google e&#8217; diventato ancora piu&#8217; semplice da utilizzare: una vera manna per i programmatori!</p>
<p>In questo articolo illustro brevemente un metodo estremamente semplice (e grezzo) per caricare in maniera asincrona una serie di marker sulla mappa, utilizzando javascript e un piccolo script ASP, richiamando i dati da un database.</p>
<p>Per prima cosa, richiediamo a google una Api Key per utilizzare il servizio: <a href="http://www.google.com/apis/maps/signup.html" target="_blank">http://www.google.com/apis/maps/signup.html</a> (io ne ho richiesta una per il sito http://127.0.0.1, in modo da poter sviluppare comodamente in ambiente di test) e includere nella pagina il riferimento alle Google Api:</p>
<blockquote><p><code>&lt;script src="http://maps.google.com/maps?<br />
file=api&amp;v=2&amp;key=KEY_GENERATA"<br />
type="text/javascript"&gt;<br />
&lt;/script&gt;</code></p></blockquote>
<p>Prossimo passo e&#8217; richiamare le funzioni necessarie alla creazione della mappa, quindi creiamo subito sulla nostra pagina un &lt;DIV&gt; destinato a contenerla</p>
<blockquote><p>&lt;div id=&#8221;mappa&#8221; style=&#8221;width: 500px; height: 300px&#8221;&gt;&lt;/div&gt;</p></blockquote>
<p>e un file .js contenente le funzioni a noi necessarie che includeremo nella pagina.</p>
<p>La prima funzione da realizzare sara&#8217; giustamente quella destinata alla creazione della mappa:</p>
<blockquote>
<p align="left">var map;</p>
<p align="left">&nbsp;</p>
<p align="left">function map_create(elemento) {<br />
map=new GMap2(document.getElementById(elemento));<br />
map.setCenter(new GLatLng(41.895466,12.482323),10,G_NORMAL_MAP);<br />
map.addControl(new GMapTypeControl());<br />
map.addControl(new GLargeMapControl());<br />
mapmade=true;<br />
}</p>
</blockquote>
<p>&#8230;dove <em>elemento</em> sara&#8217; l&#8217;ID del &lt;DIV&gt; creato precedentemente. (la mappa viene automaticamente centrata sulla citta&#8217; di Roma con  la funzione <em>setCenter</em>).</p>
<p>Ora scriviamo un piccola funzione che ci permettera&#8217; di creare comodamente markers sulla mappa partendo direttamente da un indirizzo, calcolando autonomamente le coordinate di geomapping:</p>
<blockquote><p>function AddMarkerFromAddress(address, fumetto, titolo) {</p>
<p>var geocoder = new GClientGeocoder();<br />
geocoder.getLatLng(address,<br />
function(point) {<br />
if (!point) {<br />
alert(address + &#8221; not found&#8221;);<br />
} else {<br />
var marker = new GMarker(point);<br />
GEvent.addListener(marker, &#8220;click&#8221;, function() {<br />
marker.openInfoWindowHtml(fumetto);<br />
});<br />
map.addOverlay(marker);<br />
}<br />
}<br />
);</p>
<p>}</p></blockquote>
<p>(dove <em>address</em> contiene l&#8217;indirizzo al quale creare il marker, <em>fumetto</em> il testo, anche HTML, contenuto appunto nel fumetto e <em>titolo</em> l&#8217;eventuale titolo del fumetto).</p>
<p>A questo punto non ci rimane che prelevare la lista degli indirizzi dal database e richiamare <em>n </em>volte la funzione <em>AddMarkerFromAddress</em>.</p>
<p>Inanzitutto realizziamo una pagina ASP che accetti in ingresso una query e restituisca una lista dei dati ottenuti eseguendo la query stessa:</p>
<blockquote><p>&lt;%</p>
<p>response.addHeader &#8220;Pragma&#8221;, &#8220;no-cache&#8221;<br />
response.addHeader &#8220;Cache-Control&#8221;, &#8220;must-revalidate&#8221;<br />
response.addHeader &#8220;Cache-Control&#8221;, &#8220;no-cache&#8221;<br />
response.addHeader &#8220;Cache-Control&#8221;, &#8220;no-store&#8221;<br />
Response.AddHeader &#8220;Expires&#8221;, 0</p>
<p>set con = Server.CreateObject (&#8220;ADODB.connection&#8221;)<br />
Con.Open Application(&#8220;Connessione_Database&#8221;)</p>
<p>sql = request(&#8220;query&#8221;)<br />
set rs = con.Execute(sql)</p>
<p>risultato = &#8220;&#8221;</p>
<p>do until rs.eof</p>
<p>for i = 0 to rs.Fields.Count &#8211; 1</p>
<p>Response.Write rs(i)<br />
if (i &lt; rs.Fields.Count &#8211; 1) then Response.Write &#8220;, &#8220;</p>
<p>next</p>
<p>Response.Write VbLf</p>
<p>rs.movenext<br />
loop<br />
%&gt;</p></blockquote>
<p>E&#8217; necessaria in seguito  del codice Js che si occupi di caricare i dati dalla pagina:</p>
<blockquote><p>function GetSQLList(query) {<br />
var xmlhttp = getXMLHttpRequestInstance();<br />
if(!xmlhttp) {<br />
alert(&#8220;Il browser non supporta l&#8217;oggetto XMLHttpRequest&#8221;);<br />
return false;<br />
}<br />
var ReturnValue = &#8220;0&#8243;;</p>
<p>query = escape(query);</p>
<p>xmlhttp.open(&#8220;GET&#8221;, &#8220;make_query_list.asp?query=&#8221;+query,false);<br />
xmlhttp.send(null);<br />
if (xmlhttp.status==200) {<br />
ReturnValue = xmlhttp.responseText;<br />
} else if (xmlhttp.status==404) {<br />
alert(&#8220;[ERRORE] l&#8217;URL non esiste!&#8221;);<br />
} else {<br />
alert(&#8220;[ERRORE] errore non gestito (&#8221; + xmlhttp.status + &#8220;)&#8221;);<br />
}<br />
return ReturnValue;<br />
}</p></blockquote>
<p>Ultimo passo, mettere insieme il tutto:</p>
<blockquote><p>function LoadMarkersFromQuery (query) {<br />
var lista=GetSQLList(query);<br />
var array_lista = lista.split(&#8220;\n&#8221;);<br />
for (i in array_lista) {<br />
if (array_lista[i] != &#8220;&#8221;) {<br />
AddMarkerFromAddress(array_lista[i], array_lista[i], array_lista[i]);<br />
}<br />
}<br />
}</p></blockquote>
<p>Per caricare i marker quindi, bisognera&#8217; semplicemente (dopo aver creato la mappa con la funzione scritta in precedenza) richiamare la funzione LoadMarkersFromQuery passando come parametro il codice SQL necessario al reperimento dei dati degli indirizzi, es:</p>
<blockquote><p>LoadMarkersFromQuery(&#8217;select via, numero, cap, comune, stato from indirizzi&#8217;);</p></blockquote>
<p><a href="http://andreafortuna.files.wordpress.com/2006/07/maps.gif" class="imagelink" title="maps.gif"><img src="http://andreafortuna.files.wordpress.com/2006/07/maps.gif?w=418&#038;h=252" alt="maps.gif" height="252" width="418" /></a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/andreafortuna.wordpress.com/205/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/andreafortuna.wordpress.com/205/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/andreafortuna.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/andreafortuna.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/andreafortuna.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/andreafortuna.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/andreafortuna.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/andreafortuna.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/andreafortuna.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/andreafortuna.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/andreafortuna.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/andreafortuna.wordpress.com/205/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=205&subd=andreafortuna&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://andreafortuna.wordpress.com/2006/07/26/google-maps-ajax/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/feb4e5bc8fb5405561901465d188e4b8?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">andreafortuna</media:title>
		</media:content>

		<media:content url="http://andreafortuna.files.wordpress.com/2006/07/maps.gif" medium="image">
			<media:title type="html">maps.gif</media:title>
		</media:content>
	</item>
		<item>
		<title>AJAX + ASP + SQL</title>
		<link>http://andreafortuna.wordpress.com/2006/03/05/ajax-asp-sql/</link>
		<comments>http://andreafortuna.wordpress.com/2006/03/05/ajax-asp-sql/#comments</comments>
		<pubDate>Sun, 05 Mar 2006 16:28:38 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://andreafortuna.wordpress.com/2006/03/05/ajax-asp-sql/</guid>
		<description><![CDATA[I miei continui esperimenti con AJAX portano continuamente alla nascita di nuove &#8216;follie&#8217;.
L&#8217;ultima riguarda una inconsueta mescolanza tra Javascript, ASP ed SQL.
Lo scenario e&#8217; questo: in un progetto ASP+MSSQL&#160;ho necessita&#8217; di creare dinamicamente con Javascript svariati elementi (in particolare tabelle e combobox), popolandoli con dei dati presenti sul&#160;database.Il dover creare continuamente nuove pagine ASP per [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=156&subd=andreafortuna&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I miei continui esperimenti con AJAX portano continuamente alla nascita di nuove &#8216;follie&#8217;.</p>
<p>L&#8217;ultima riguarda una inconsueta mescolanza tra Javascript, ASP ed SQL.</p>
<p>Lo scenario e&#8217; questo: in un progetto ASP+MSSQL&nbsp;ho necessita&#8217; di creare dinamicamente con Javascript svariati elementi (in particolare tabelle e combobox), popolandoli con dei dati presenti sul&nbsp;database.<br />Il dover creare continuamente nuove pagine ASP per estrapolare i dati, e altre per salvarli mi rallenta di molto il lavoro.</p>
<p>A questo punto l&#8217;idea: perche&#8217; non realizzare una pagina ASP &#8216;generica&#8217;, alla quale passare semplicemente la query da eseguire, farmi restituire esclusivamente i dati e processarli con Javascript?</p>
<p><span id="more-156"></span>
<p>La struttura partorita dalla mia mente malata e&#8217; quindi cosi&#8217; costituita:</p>
<ol>
<li>Una pagina ASP, che accettera&#8217; in ingresso (anche con una semplice chiamata GET) una query, la eseguira&#8217; sul database e restituira&#8217; i dati sotto forma di XML.</li>
<li>Una classe Javascript che si occupera&#8217; di prelevare l&#8217;XML, processarlo ed estrarre i dati</li>
<li>I dati cosi&#8217; ottenuti verranno poi utilizzati da altre funzioni in Js che si occuperanno di creare gli elementi della pagina (Tabelle, ComboBox ecc..).</li>
</ol>
<p>Partiamo quindi dal codice ServerSide:</p>
<p><strong><em>SQL2XML.ASP</em></strong></p>
<blockquote><p>&lt;%<br />set con = Server.CreateObject (&quot;ADODB.connection&quot;)<br />Con.Open Application(&quot;Connessione_al_DataBase&quot;)</p>
<p>sql = request(&quot;query&quot;)<br />set rs = con.Execute(sql)</p>
<p>Dim oDOM<br />Set oDOM = Server.CreateObject(&quot;MSXML2.DOMDocument&quot;)<br />oDOM.async = False<br />rs.Save oDOM, 1 &#8216;adPersistXML</p>
<p>&nbsp;</p>
<p>Dim oXSL<br />Set oXSL = Server.CreateObject(&quot;MSXML2.DOMDocument&quot;)<br />oXSL.async = False<br />oXSL.load Server.MapPath(&quot;ADOGeneric.xsl&quot;)<br />Response.Write &quot;&lt;XML id=&#8217;xmlData&#8217; name=&#8217;xmlData&#8217;&gt;&lt;root&gt;&quot; &amp; vbCrLf<br />Response.Write oDOM.transformNode(oXSL)<br />Response.Write &quot;&lt;/root&gt;&lt;/XML&gt;&quot;</p>
<p>%&gt;</p>
</blockquote>
<p>Il funzionamento e&#8217; semplice: estrae la query da eseguire dalla QueryString, effettua la connessione al DataBase, raccoglie i dati, li converte in XML e li formatta utilizzando lo StyleSheet XML <em>ADOGeneric.xsl</em>.</p>
<p><em><strong>ADOGeneric.xsl</strong></em></p>
<blockquote><p>&lt;?xml version=&#8217;1.0&#8242;?&gt;<br />&lt;xsl:stylesheet version=&quot;1.0&quot; xmlns:xsl=&quot;<a href="http://www.w3.org/1999/XSL/Transform">http://www.w3.org/1999/XSL/Transform</a>&quot; xmlns:s=&quot;uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882&quot; xmlns:z=&quot;#RowsetSchema&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;s:Schema id=&quot;RowsetSchema&quot;/&gt;<br />&lt;xsl:output method=&quot;xml&quot; omit-xml-declaration=&quot;yes&quot; /&gt;<br />&lt;xsl:template match=&quot;/&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:apply-templates select=&quot;//z:row&quot;/&gt;<br />&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&quot;z:row&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:text disable-output-escaping=&quot;yes&quot;&gt;&amp;lt;row&amp;gt;&lt;/xsl:text&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:for-each select=&quot;@*&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:text disable-output-escaping=&quot;yes&quot;&gt;&amp;lt;&lt;/xsl:text&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:value-of select=&quot;name()&quot;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:text disable-output-escaping=&quot;yes&quot;&gt;&amp;gt;&lt;/xsl:text&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:value-of select=&quot;.&quot;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:text disable-output-escaping=&quot;yes&quot;&gt;&amp;lt;/&lt;/xsl:text&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:value-of select=&quot;name()&quot;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:text disable-output-escaping=&quot;yes&quot;&gt;&amp;gt;&lt;/xsl:text&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsl:for-each&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:text disable-output-escaping=&quot;yes&quot;&gt;&amp;lt;/row&amp;gt;&lt;/xsl:text&gt;<br />&lt;/xsl:template&gt;<br />&lt;/xsl:stylesheet&gt;</p>
</blockquote>
<p>La riformattazione utilizzando lo stylesheet rende piu&#8217; comodo il successivo processo di interpretazione dei dati tramite Javascript.</p>
<p>Mettiamo ora mano al codice ClientSide:</p>
<p><strong><em>Query2Table.js</em></strong></p>
<blockquote><p>/*<br />* Creazione tabella da query<br />* @param&nbsp;&nbsp;&nbsp; Query&nbsp;&nbsp;&nbsp; Stringa contenente la query da inviare al server<br />* @param&nbsp;&nbsp;&nbsp; elemento&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ID dell&#8217;elemento della pagina che conterr&agrave; la tabella<br />*/</p>
<p>function SQL2Table(query, elemento)<br />{<br />&nbsp;<br />&nbsp;if (document.implementation &amp;&amp; document.implementation.createDocument)<br />&nbsp;{<br />&nbsp;&nbsp;xmlDoc = document.implementation.createDocument(&quot;&quot;, &quot;&quot;, null);<br />&nbsp;&nbsp;xmlDoc.onload = createTable(elemento);<br />&nbsp;}<br />&nbsp;else if (window.ActiveXObject)<br />&nbsp;{<br />&nbsp;&nbsp;xmlDoc = new ActiveXObject(&quot;Microsoft.XMLDOM&quot;);<br />&nbsp;&nbsp;xmlDoc.onreadystatechange = function () {<br />&nbsp;&nbsp;&nbsp;if (xmlDoc.readyState == 4) createTable(elemento)<br />&nbsp;&nbsp;};<br />&nbsp;&nbsp;}<br />&nbsp;else<br />&nbsp;{<br />&nbsp;&nbsp;alert(&#8216;Your browser can\&#8217;t handle this script&#8217;);<br />&nbsp;&nbsp;return;<br />&nbsp;}<br />&nbsp;query = query.replace(&quot; &quot;,&quot;+&quot;);<br />&nbsp;xmlDoc.load(&quot;SQL2XML.asp?query=&quot; + query);<br />}</p>
<p>function createTable(oggetto)<br />{<br />&nbsp;var x = xmlDoc.getElementsByTagName(&#8216;row&#8217;);<br />&nbsp;var newEl = document.createElement(&#8216;TABLE&#8217;);<br />&nbsp;newEl.setAttribute(&#8216;cellPadding&#8217;,5);<br />&nbsp;var tmp = document.createElement(&#8216;TBODY&#8217;);<br />&nbsp;newEl.appendChild(tmp);<br />&nbsp;var row = document.createElement(&#8216;TR&#8217;);<br />&nbsp;for (j=0;j&lt;x[0].childNodes.length;j++)<br />&nbsp;{<br />&nbsp;&nbsp;if (x[0].childNodes[j].nodeType != 1) continue;<br />&nbsp;&nbsp;var container = document.createElement(&#8216;TH&#8217;);<br />&nbsp;&nbsp;var theData = document.createTextNode(x[0].childNodes[j].nodeName);<br />&nbsp;&nbsp;container.appendChild(theData);<br />&nbsp;&nbsp;row.appendChild(container);<br />&nbsp;}<br />&nbsp;tmp.appendChild(row);<br />&nbsp;for (i=0;i&lt;x.length;i++)<br />&nbsp;{<br />&nbsp;&nbsp;var row = document.createElement(&#8216;TR&#8217;);<br />&nbsp;&nbsp;for (j=0;j&lt;x[i].childNodes.length;j++)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;if (x[i].childNodes[j].nodeType != 1) continue;<br />&nbsp;&nbsp;&nbsp;var container = document.createElement(&#8216;TD&#8217;);<br />&nbsp;&nbsp;&nbsp;var theData = document.createTextNode(x[i].childNodes[j].firstChild.nodeValue);<br />&nbsp;&nbsp;&nbsp;container.appendChild(theData);<br />&nbsp;&nbsp;&nbsp;row.appendChild(container);<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;tmp.appendChild(row);<br />&nbsp;}&nbsp;<br />&nbsp;<br />&nbsp;document.getElementById(oggetto).appendChild(newEl);<br />}</p>
</blockquote>
<p>La funzione <em>SQL2Table</em> si occupa, con il solito meccanismo <em>cross browser</em> di richiamare la pagina ASP creata in precedenza passandogli la query da eseguire, estraendo i dati e passandoli alla seconda funzione (<em>createTable</em>) insieme all&#8217;ID dell&#8217;elemento della pagina che conterra&#8217; la tabella (un &lt;p&gt; o un &lt;div&gt;).</p>
<p><em>createTable </em>processera&#8217; l&#8217;XML ottenuto da <em>SQL2Table</em>, creando&nbsp; la tabella con nella prima riga le intestazioni contenenti i nomi dei campi estratti dalla query, &#8216;riversando&#8217; poi il tutto nell&#8217;elemento della pagina specificato.</p>
<p>Volendo testare il corretto funzionamento del nostro script, possiamo realizzare un semplice&nbsp;documento HTML:</p>
<p><strong><em>Test.htm</em></strong></p>
<blockquote><p>&lt;SCRIPT LANGUAGE=javascript src=&quot;Query2Table.js&quot;&gt;&lt;/SCRIPT&gt;</p>
<p>&lt;p id=tabella name=tabella&gt;&lt;/p&gt;</p>
<p>&lt;INPUT type=&quot;button&quot; value=&quot;Crea Tabella&quot; id=button1 name=button1 onclick=&quot;javascript:SQL2Table(&#8217;select * from impiegati&#8217;,'tabella&#8217;);&quot;&gt;</p>
</blockquote>
<p>Come si puo&#8217; evincere dal codice, tutto cio&#8217; comporta sicuramente una maggiore rapidita&#8217; nella fruizione di dati dal DB, ma include serie conseguenze dal lato della sicurezza:<br />premetto che questa che sto&nbsp;implementando questa struttura all&#8217;interno di un progetto destinato ad una intranet, quindi in mano a personale &#8216;fidato&#8217; (lungi da me metter un accrocchio del genere su internet), ma nulla toglie che un utente malizioso e un po&#8217; piu&#8217; <em>skillato </em>possa fare il bello e il cattivo tempo sul database.</p>
<p>La soluzione da me qui riportata deve essere intesa solo come un <em>proof of concept</em>, niente quindi che possa essere utilizzando in un progetto reale, a meno che non si implementi (come sto gia&#8217; facendo)&nbsp;un meccanismo di comunicazione &#8217;sicuro&#8217; tra client e server, magari criptando in qualche modo la stringa contenente la query da eseguire.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/andreafortuna.wordpress.com/156/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/andreafortuna.wordpress.com/156/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/andreafortuna.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/andreafortuna.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/andreafortuna.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/andreafortuna.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/andreafortuna.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/andreafortuna.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/andreafortuna.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/andreafortuna.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/andreafortuna.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/andreafortuna.wordpress.com/156/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=andreafortuna.wordpress.com&blog=92203&post=156&subd=andreafortuna&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://andreafortuna.wordpress.com/2006/03/05/ajax-asp-sql/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/feb4e5bc8fb5405561901465d188e4b8?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">andreafortuna</media:title>
		</media:content>
	</item>
	</channel>
</rss>