<?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>FaceitWeb.com</title>
	<atom:link href="http://www.faceitweb.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.faceitweb.com</link>
	<description>Recensioni e articoli sul mondo della programmazione</description>
	<lastBuildDate>Tue, 09 Feb 2010 11:45:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Java Platfom Enterprise Edition 6</title>
		<link>http://www.faceitweb.com/2010/01/java-platfom-enterprise-edition-6/</link>
		<comments>http://www.faceitweb.com/2010/01/java-platfom-enterprise-edition-6/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 09:33:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[j2EE6]]></category>
		<category><![CDATA[Java Platfom Enterprise Edition 6]]></category>
		<category><![CDATA[sun microsystems]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=344</guid>
		<description><![CDATA[Sun Microsystems Inc. ha annunciato la disponibilità di Java™ Platform Enterprise Edition 6 (Java EE 6).
Java EE &#8211; la principale piattaforma per lo sviluppo e il deployment di applicazioni web ed enterprise &#8211; possiede ora nuove caratteristiche che ne incrementano la flessibilità e permettono alle aziende di adottare, in alternativa alla piattaforma enterprise completa, specifici [...]]]></description>
			<content:encoded><![CDATA[<p>Sun Microsystems Inc. ha annunciato la disponibilità di Java™ Platform Enterprise Edition 6 (Java EE 6).</p>
<p>Java EE &#8211; la principale piattaforma per lo sviluppo e il deployment di applicazioni web ed enterprise &#8211; possiede ora nuove caratteristiche che ne incrementano la flessibilità e permettono alle aziende di adottare, in alternativa alla piattaforma enterprise completa, specifici scenari applicativi per meglio rispondere ai requisiti dei singoli progetti . Java EE SDK è già stato scaricato più di 18 milioni di volte e le specifiche sono supportate da 28 licenziatari che commercializzano prodotti compatibili con Java EE. Gli sviluppatori possono scaricare Java EE SDK dall&#8217;indirizzo <a href="http://java.sun.com/javaee/downloads/index.jsp">http://java.sun.com/javaee/downloads/index.jsp</a>.</p>
<p>Java EE 6 offre una solida base per la continua crescita della tecnologia Java sia dal punto di vista degli sviluppatori che da quello dei solution provider. Le specifiche Java EE 6 introducono i Profile, un sistema che permette di adeguare la piattaforma ai singoli scenari applicativi. I Profile offrono un maggior grado di flessibilità a clienti, ISV e vendor di piattaforma, aiutandoli ad affrontare meglio mercati specifici.</p>
<p>Web Profile, per esempio, è un profilo “compatto” realizzato appositamente per gli scenari basati su applicazioni Web che non richiedono tutto il set di funzionalità della piattaforma Java EE completa. Abbinato a importanti miglioramenti delle specifiche esistenti e all&#8217;introduzione della tecnologia Enterprise JavaBeans™ (EJB) 3.1 Lite, Web Profile consente agli sviluppatori Web di realizzare applicazioni in maniera rapida e semplice senza doversi costruire e gestire uno &#8220;stack custom&#8221;. Inoltre, gli sviluppatori che dovessero necessitare della potenza della piattaforma tradizionale possono passare agevolmente dall&#8217;ambiente Web Profile alla piattaforma Java EE 6 completa. Ulteriori profili saranno definiti in futuro attraverso il Java Community Process per affrontare differenti scenari applicativi.</p>
<p><span id="more-344"></span></p>
<p style="text-align: center;"></p>
<p>Java EE 6 definisce inoltre le sue capacità di estensibilità come un mezzo per abbracciare e supportare innovazioni e comunità esterne, consentendo ad esse di collegarsi – in maniera trasparente &#8211; alla piattaforma stessa. Java EE 6 specifica quindi un processo e un set di tecnologie che potranno essere rimossi da future release della piattaforma, permettendo a vendor e application provider di pianificare la migrazione verso le nuove tecnologie che saranno offerte dalle prossime versioni della piattaforma.</p>
<p>La nuova release di Java EE SDK mette a disposizione potenti tecnologie per lo sviluppo web ed enterprise che fanno leva sulla prima implementazione della piattaforma Java EE 6. Gli sviluppatori che hanno familiarità con il modello di programmazione di Java EE possono ora sfruttare i miglioramenti alla produttività e l&#8217;eccezionale facilità di sviluppo che contraddistinguono Java EE 6 per realizzare una vasta gamma di applicazioni per il Web e per i contesti enterprise.</p>
<p>Tra le novità introdotte vi sono: l&#8217;aggiunta delle tecnologie Context and Dependency Injection ed EJB 3.1 Lite, un modo più semplice per aggiungere EJB ai file .war delle applicazioni Web senza dover creare package ulteriori, la possibilità di trascinare col mouse i framework di terze parti nelle servlet attraverso web-fragments.xml, l&#8217;aggiunta di numerose annotazioni all&#8217;interno di tutta la piattaforma per semplificare la creazione di applicazioni, e la possibilità di integrare EJB all&#8217;interno di applicazioni indipendenti per agevolare le procedure di test. Un elenco completo di tutte le funzionalità di Java EE 6 è disponibile all&#8217;indirizzo: <a href="http://java.sun.com/javaee/">http://java.sun.com/javaee/</a>.</p>
<p>Java EE 6 mette quindi a disposizione significativi miglioramenti in termini di produttività e facilità d&#8217;uso, mantenendo la compatibilità verso il basso con Java EE 5, e con in più il vantaggio di poter scegliere tra varie implementazioni. La reference implementation di Java EE 6 deriva dal progetto open source GlassFish(TM).</p>
<p>La Reference Implementation, il TCK e l&#8217;SDK di Java EE 6 sono già disponibili. Il nuovo SDK comprende documentazione e tool con i quali gli sviluppatori possono imparare a conoscere Java EE 6 e accelerare la creazione di nuove applicazioni enterprise. Il download è gratuitamente disponibile all&#8217;indirizzo <a href="http://java.sun.com/javaee/downloads/index.jsp">http://java.sun.com/javaee/downloads/index.jsp</a>.</p>
<p><a href="http://it.sun.com/sunnews/press/2009/20091215.jsp"><small><strong><em>Sun Microsystems</em></strong></small></a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Java Platfom Enterprise Edition 6" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Java+Platfom+Enterprise+Edition+6" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2010/01/java-platfom-enterprise-edition-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guava, le librerie Java di Google</title>
		<link>http://www.faceitweb.com/2009/10/guava-le-librerie-java-di-google/</link>
		<comments>http://www.faceitweb.com/2009/10/guava-le-librerie-java-di-google/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 09:25:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[guava]]></category>
		<category><![CDATA[librerie]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=338</guid>
		<description><![CDATA[Guava è una collezione di librerie Java non presenti in Google Collection Library anche se quest&#8217;ultima presto sarà incluso nel progetto. Al momento sono solo tre i namespace inclusi in tale progetto: com.google.common.primitives, com.google.common.io e com.google.common.util.concurrent. Queste librerie arricchiscono quelle Java con molte classi e API create dal gruppo di sviluppatori Google e utilizzate in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/guava-libraries/" target="_blank">Guava</a> <strong>è una collezione di librerie Java non presenti in</strong> <a href="http://code.google.com/p/google-collections/" target="_blank">Google Collection Library</a> anche se quest&#8217;ultima presto sarà incluso nel progetto. Al momento sono solo tre i <em>namespace</em> inclusi in tale progetto: <em>com.google.common.primitives</em>, <em>com.google.common.io</em> e <em>com.google.common.util.concurrent</em>. Queste librerie arricchiscono quelle Java con molte classi e API create dal gruppo di sviluppatori Google e utilizzate in molti dei loro progetti realizzati con tale linguaggio.</p>
<p>Spulciando un&#8217;<a href="http://guava-libraries.googlecode.com/files/Guava_a_sketchy_overview.pdf" target="_blank">overview</a> vediamo un po&#8217; di feature, che possono tornare utili ai nostri progetti. Un esempio è l&#8217;<strong>introduzione della classe <em>CharMatcher</em> per manipolare caratteri all&#8217;interno di una stringa</strong> come la funzione <em>CharMatcher.is(&#8216;-&#8217;)</em>. <strong>Le stringhe sono sempre manipolabili con la classe <em>Joiner</em></strong>, che può legare una sequenza di numeri separati da uno o più caratteri scelti con la seguente riga di codice:</p>
<div>
<div style="font-family: monospace;">
<ol>
<li>
<pre><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>String</span></a> s <span>=</span> Joiner.<span>on</span><span>(</span><span>", "</span><span>)</span>.<span>join</span><span>(</span>numbers<span>)</span><span>;</span></pre>
</li>
</ol>
</div>
</div>
<p><strong>Per la separazione di stringe troviamo la classe <em>Splitter</em></strong> in grado di separare parti di stringa da un testo complesso molto meglio di quanto faccia la funzione <em>split()<em> di Java:<br />
</em></em></p>
<div>
<div style="font-family: monospace;">
<ol>
<li>
<pre>Iterable<span>&lt;</span>String<span>&gt;</span> pieces <span>=</span></pre>
</li>
<li>
<pre>   Splitter.<span>on</span><span>(</span><span>','</span><span>)</span>.<span>split</span><span>(</span><span>"trivial,example"</span><span>)</span></pre>
</li>
</ol>
</div>
</div>
<p><strong>Per ciò che riguarda l&#8217;I/O, le classi <em>ByteStreams</em>, <em>CharSequence</em> e <em>Files</em> promettono di leggere le righe di un file in modo molto stringato</strong>. Sotto infatti vediamo un esempio di routine in grado di contare le righe di un file:</p>
<div>
<div style="font-family: monospace;">
<ol>
<li>
<pre><span>int</span> count <span>=</span> Files.<span>readLines</span><span>(</span></pre>
</li>
<li>
<pre>  <span>new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>File</span></a><span>(</span><span>"/path/to/file"</span><span>)</span>,</pre>
</li>
<li>
<pre>  Charsets.<span>UTF_8</span>,</pre>
</li>
<li>
<pre>  <span>new</span> LineProcessor<span>&lt;</span>Integer<span>&gt;</span><span>(</span><span>)</span> <span>{</span></pre>
</li>
<li>
<pre>   <span>int</span> count <span>=</span> <span>0</span><span>;</span></pre>
</li>
<li>
<pre>   <span>public</span> <span>boolean</span> processLine<span>(</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>String</span></a> line<span>)</span> <span>{</span></pre>
</li>
<li>
<pre>     count<span>++;</span></pre>
</li>
<li>
<pre>   <span>}</span></pre>
</li>
<li>
<pre>   <span>public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainteger+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>Integer</span></a> getResult<span>(</span><span>)</span> <span>{</span> <span>return</span> count<span>;</span> <span>}</span></pre>
</li>
<li>
<pre>  <span>}</span><span>)</span><span>;</span></pre>
</li>
</ol>
</div>
</div>
<p>Anche le <strong>primitive</strong> non sono esenti da novità con l&#8217;introduzione di classi come <em>Ints</em>, <em>Longs</em> o <em>Bytes</em></p>
<p>.</p>
<div>
<div style="font-family: monospace;">
<ol>
<li>
<pre><span>int</span><span>[</span><span>]</span> nums <span>=</span> ...<span>;</span></pre>
</li>
<li>
<pre>List<span>&lt;</span>Integer<span>&gt;</span> list <span>=</span> Ints.<span>asList</span><span>(</span>nums<span>)</span><span>;</span></pre>
</li>
</ol>
</div>
</div>
<p>In attesa della versione 1.0, il rimando è ai <a href="http://guava-libraries.googlecode.com/svn/trunk/javadoc/index.html" target="_blank">javadoc</a> ufficiali.</p>
<p><a href="http://programmazione.it/index.php?entity=eitem&amp;idItem=42900">Guava, una collezione di librerie Java da Google</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Guava, le librerie Java di Google" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Guava,+le+librerie+Java+di+Google" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/10/guava-le-librerie-java-di-google/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CodeRun, IDE online</title>
		<link>http://www.faceitweb.com/2009/10/coderun-ide-online/</link>
		<comments>http://www.faceitweb.com/2009/10/coderun-ide-online/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 14:14:50 +0000</pubDate>
		<dc:creator>Fabio</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[CodeRun]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=333</guid>
		<description><![CDATA[CodeRun è  un IDE per sviluppare applicazioni ASP.NET, C#, PHP, JavaScript, HTML, CSS, Silverlight e WPF. Non è la classica applicazione da installare sulla propria macchina e da avviare all’occorrenza ma un servizio online che permette di scrivere applicazioni utilizzando il proprio browser internet. Sì, stiamo parlando proprio di un IDE online, con tanto [...]]]></description>
			<content:encoded><![CDATA[<p>CodeRun è  un <strong>IDE</strong> per sviluppare applicazioni ASP.NET, C#, PHP, JavaScript, HTML, CSS, Silverlight e WPF. Non è la classica applicazione da installare sulla propria macchina e da avviare all’occorrenza ma un servizio online che permette di scrivere applicazioni utilizzando il proprio browser internet. Sì, stiamo parlando proprio di un <strong>IDE online</strong>, con tanto di editor, di gestione della solution, di debug e di Error List. Si chiama <a title="CodeRun" href="http://www.coderun.com/">CodeRun</a> ed è un servizio totalmente gratuito. Trovate tutte le sue caratteristiche più salienti su <a title="CodeRun Studio" href="http://www.coderun.com/studio/">questa pagina</a>, mentre <a title="IDE" href="http://www.coderun.com/ide/">qui</a> potete avviare direttamente l’IDE. Davvero interessante!</p>
<p><a href="http://blog.html.it/08/10/2009/coderun-per-programmare-online/">CodeRun, per programmare online</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for CodeRun, IDE online" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+CodeRun,+IDE+online" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/10/coderun-ide-online/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Creare applicazioni interattive con Ajax</title>
		<link>http://www.faceitweb.com/2009/06/creare-applicazioni-interattive-con-ajax/</link>
		<comments>http://www.faceitweb.com/2009/06/creare-applicazioni-interattive-con-ajax/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 09:51:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=323</guid>
		<description><![CDATA[Ajax è una tecnica di programmazione che consente lo sviluppo di RIA (Rich Internet Application).
Le RIA sono applicazioni web caratterizzate da grande interattività e velocità di esecuzione.
L’elaborazione dei dati avviene a livello client (browser) e le chiamate al server avvengono in “background” in modo asincrono (Ajax sta per Asynchronous JavaScript and XML).
Cosa significa in parole [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Ajax</strong> è una tecnica di programmazione che consente lo sviluppo di <strong>RIA</strong> (Rich Internet Application).<br />
Le RIA sono applicazioni web caratterizzate da grande interattività e velocità di esecuzione.<br />
L’elaborazione dei dati avviene a livello client (browser) e le chiamate al server avvengono in “<strong>background</strong>” in modo asincrono (Ajax sta per Asynchronous JavaScript and XML).</p>
<p>Cosa significa in parole povere che lo <strong>scambio dati tra client e server</strong> avviene in background?</p>
<p>Vuol dire che lo scambio dati tra client e server permette l’aggiornamento dinamico della pagina web senza che quest’ultima venga ricaricata e senza dover richiamare una nuova pagina ma, soprattutto, è da sottolineare che non bisogna attendere che sia stata ultimata la richiesta per poterne effettuare altre.</p>
<p>Ajax non è un linguaggio di programmazione ma un insieme di tecnologie, vediamo quali sono:</p>
<ol>
<li>HTML/XHTML/CSS per il markup;</li>
<li><a title="collegamento esterno" href="http://it.wikipedia.org/wiki/Document_Object_Model" target="_blank">DOM</a> (Document Object Model) manipolato attraverso un linguaggio ECMAScript come JavaScript;</li>
<li><a title="collegamento esterno" href="http://it.wikipedia.org/wiki/XMLHttpRequest" target="_blank">XMLHttpRequest</a> per lo scambio asincrono dei dati tra client e server;</li>
<li><a title="collegamento esterno" href="http://it.wikipedia.org/wiki/XML" target="_blank">XML</a> come formato per lo scambio dati. Non è obbligatorio e al suo posto si può scegliere un altro formato come <a title="collegamento esterno" href="http://it.wikipedia.org/wiki/JSON" target="_blank">JSON</a> o anche semplice testo.</li>
</ol>
<p>Le applicazioni web che fanno uso di Ajax necessitano di <strong>browser di ultima generazione</strong> che supportino tale tecnologia.</p>
<p>Tutti i principali browser come <strong>FireFox</strong>, <strong>Internet Explorer</strong>, <strong>Google Chrome</strong>, <strong>Opera</strong> e <strong>Safari</strong> supportano Ajax ma è buona norma testare i propri applicativi per verificare la compatibilità.</p>
<p><span id="more-323"></span></p>
<p style="text-align: center;"></p>
<p>Abbiamo detto che le chiamate Ajax avvengono in background e, ottenuta la risposta, viene modificata solo una porzione della pagina (di solito un elemento HTML come il DIV).<br />
Questo potrebbe anche rappresentare un problema per l’utente che, una volta effettuata la chiamata, vede la pagina web “immobile” ignaro che la richiesta di informazioni è comunque stata inviata al server.</p>
<p>Per ovviare a questo problema è opportuno dedicare un elemento della pagina (un div è sicuramente indicato) alla descrizione dell’interazione. Questo si può realizzare con un semplice testo o con un <strong>loader</strong> (magari una GIF come quelle scaricabili da <a title="collegamento esterno" href="http://www.ajaxload.info/" target="_blank">ajaxload.info</a>) che “visivamente” mostra all’utente che è in corso uno scambio dati.</p>
<p>Vediamo tecnicamente come possiamo modificare dinamicamente il contenuto di una pagina web tramite il metodo <strong>innerHTML</strong> del <strong>DOM</strong>.</p>
<p>Supponiamo che nella nostra pagina web ci sia un <strong>div</strong> con <strong>ID</strong> univoco “<strong>content</strong>”:</p>
<pre>&lt;div id=”content”&gt;
<strong>Mio div</strong>
&lt;/div&gt;</pre>
<p>Possiamo modificare il contenuto del div utilizzando la seguente funzione:</p>
<pre><strong>function modifica() {</strong>
<strong>document.getElementById(“content”).innerHTML =
“Contenuto del div modificato”;</strong>
<strong>}</strong></pre>
<p>Richiamiamo la funzione tramite un button:</p>
<pre><strong>&lt;input type=”button”
value=”Modifica” onclick=”javascript:modifica()” /&gt;</strong></pre>
<p>Modificando dinamicamente lo stile del div possiamo inventarci una funzione che mostri o nasconda il suo contenuto:</p>
<pre><strong>function hideshow() { 

var element = document.getElementById("content");

if (element.style.visibility == 'hidden') {

element.style.visibility = 'visible';

element.style.display = 'block';

} else {

element.style.visibility = 'hidden';

element.style.display = 'none';

}

}
</strong></pre>
<p>Richiamiamo la funzione con un altro button:</p>
<pre><strong>&lt;input type="button" value="Hide/Show"
onclick="javascript:hideshow()" /&gt;</strong></pre>
<p>Adesso vediamo come realizzare una interazione “avanzata” inviando una richiesta ad una pagina <strong>server-side</strong> (nel nostro esempio scritta in PHP) ed ottenendo una risposta in formato testo.</p>
<p>Vediamo prima la pagina PHP (file.php):</p>
<pre><strong>&lt;?php</strong>

<strong>$utente = $_GET['utente'];</strong>

<strong>if ($utente=="rossi") echo "Salve sig. Rossi";</strong>

<strong>else echo "Non ti conosco";</strong>

<strong>?&gt;</strong></pre>
<p>La pagina riceve una variabile “<strong>utente</strong>” in modalità <strong>GET</strong> e controlla che il suo contenuto sia “<strong>rossi</strong>”. In caso affermativo stampa la frase “<strong>Salve sig. Rossi</strong>” altrimenti la frase “<strong>Non ti conosco</strong>”. La risposta verrà inserita nel div con ID univoco “content” tramite Ajax:</p>
<pre><strong>var ajax = initAjax();</strong>

<strong>if (ajax) {</strong>

<strong>ajax.open("get", "file.php?utente=" + utente, true);</strong>

<strong>ajax.setRequestHeader("connection", "close");</strong>

<strong>ajax.onreadystatechange = function() {</strong>

<strong>var response="";</strong>

<strong>if (ajax.readyState == 0) response =
"Inizializzazione in corso...";</strong> 

<strong>if (ajax.readyState == 1) response =
"content","Connessione avviata...";</strong>

<strong>if (ajax.readyState == 2) response =
"content","Invio dati in corso...";</strong> 

<strong>if (ajax.readyState == 3) response =
"content","Ricezione dati in corso...";</strong> 

<strong>if (ajax.readyState == 4 &amp;&amp; ajax.status==200) {</strong>

<strong>response = ajax.responseText;</strong>

<strong>}</strong> 

<strong>else response =
"Operazione fallita! Errore numero " + ajax.status;</strong>

<strong>document.getElementById("content").innerHTML = response;</strong>

<strong>}</strong> 

<strong>ajax.send(null);</strong>

<strong>}</strong> 

<strong>else alert('Ajax non supportato!');</strong>
<strong></strong></pre>
<p>Dopo aver inizializzato <strong>l’oggetto Ajax</strong> (potete visionare il codice completo nei files a corredo dell’articolo) che, tra l’altro, ci permette di verificare che Ajax sia supportato dal browser, abbiamo effettuato la chiamata asincrona inviando il contenuto della variabile <strong>utente</strong> e ricevendo una risposta che abbiamo scelto di memorizzare nella variabile <strong>response</strong>.</p>
<p>Tutto questo servendoci del metodo <strong>Open</strong> (il cui terzo parametro impostato su <strong>true</strong> specifica che la chiamata è asincrona) e successivamente del metodo <strong>Send</strong>.</p>
<p>Niente di troppo complicato ma soffermiamoci un attimo sulla funzione <a title="collegamento esterno" href="http://www.w3.org/TR/XMLHttpRequest/#onreadystatechange" target="_blank">onreadystatechange</a>.</p>
<p>Questa funzione si preoccupa di controllare lo stato dell’interazione restituendo un numero intero (<strong>readyState</strong>) che identifica in ogni istante lo stato della richiesta.</p>
<p>Nel caso avessimo voluto effettuare la richiesta in <strong>POST</strong> avremmo dovuto modificare lo script nei metodi Open e Send e specificare tramite <strong>headers</strong> i valori da inviare.</p>
<pre><strong>ajax.open
("post", "file2.php", true);</strong>

<strong>ajax.setRequestHeader
("content-type", "application/x-www-form-urlencoded");</strong>

<strong>ajax.send
("utente=" + utente);</strong></pre>
<p>Richiamando il file PHP file2.php:</p>
<pre><strong>&lt;?php</strong>

<strong>$utente = $_POST['utente'];</strong>

<strong>if ($utente=="rossi") echo "Salve sig. Rossi";</strong>

<strong>else echo "Non ti conosco";</strong>

<strong>?&gt;</strong>
</pre>
<p>Fonte: <a href="http://www.blographik.it/2009/02/11/come-creare-applicazioni-interattive-con-ajax/">Come creare applicazioni interattive con Ajax</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Creare applicazioni interattive con Ajax" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Creare+applicazioni+interattive+con+Ajax" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/06/creare-applicazioni-interattive-con-ajax/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ottimizzare la compressione del Javascript</title>
		<link>http://www.faceitweb.com/2009/06/ottimizzare-la-compressione-del-javascript/</link>
		<comments>http://www.faceitweb.com/2009/06/ottimizzare-la-compressione-del-javascript/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 10:25:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[compressione javascript]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=314</guid>
		<description><![CDATA[Matt Snider ha scritto sul suo blog un interessante articolo in cui espone alcuni consigli utili ad ottimizzare la compressione dei file Javascript. Quello di comprimere i file Javascript è un compito comune, ma occorre eseguirlo nel migliore dei modi. Ecco dunque i consigli di Matt.
Usare meno “var”
Come sappiamo, per dichiarare una variabile occorre usare [...]]]></description>
			<content:encoded><![CDATA[<p>Matt Snider ha scritto sul suo blog un interessante articolo in cui espone alcuni consigli utili ad ottimizzare la compressione dei file Javascript. Quello di comprimere i file Javascript è un compito comune, ma occorre eseguirlo nel migliore dei modi. Ecco dunque i consigli di Matt.</p>
<p>Usare meno “var”</p>
<p>Come sappiamo, per dichiarare una variabile occorre usare la keyword var, ma per gruppi di variabili, è consigliabile usarla una sola volta e raggruppare una lista di nomi:<br />
view plaincopy to clipboardprint?</p>
<p><code>1. // tante var<br />
2. var v1 = 1;<br />
3. var v2 = {};<br />
4. var v3 = function() {<br />
5.     // function code<br />
6. };<br />
7.<br />
8. // una var<br />
9. var v1 = 1,<br />
10.     v2 = {},<br />
11.     v3 = function() {<br />
12.     // function code<br />
13.     };</code></p>
<p>// tante var<br />
<code>var v1 = 1;<br />
var v2 = {};<br />
var v3 = function() {<br />
// function code<br />
};</code></p>
<p>// una var<br />
<code>var v1 = 1,<br />
v2 = {},<br />
v3 = function() {<br />
// function code<br />
};</code></p>
<p>Usare shortuct pointers per i namespace prolissi</p>
<p><span id="more-314"></span></p>
<p style="text-align: center;"></p>
<p>Perché ripetere sempre lo stesso namespace quando possiamo avvalerci dei puntatoti locali, il cui namespace è completamente sotto il nostro controllo? Questo migliora di molto l’esito della compressione:<br />
view plaincopy to clipboardprint?</p>
<p><code>1. function() {<br />
2.     MyLib.Utilities.Events.add('el1', 'click' function() {/* function code */});<br />
3.     MyLib.Utilities.Events.add('el2', 'click' function() {/* function code */});<br />
4.     MyLib.Utilities.Events.add('el3', 'click' function() {/* function code */});<br />
5. }());<br />
6.<br />
7. // shortcut pointer<br />
8. (function() {<br />
9.     var evts = MyLib.Utilities.Events;<br />
10.     evts.add('el1', 'click' function() {/* function code */});<br />
11.     evts.add('el2', 'click' function() {/* function code */});<br />
12.     evts.add('el3', 'click' function() {/* function code */});<br />
13. }());</code></p>
<p><code>function() {<br />
MyLib.Utilities.Events.add('el1', 'click' function() {/* function code */});<br />
MyLib.Utilities.Events.add('el2', 'click' function() {/* function code */});<br />
MyLib.Utilities.Events.add('el3', 'click' function() {/* function code */});<br />
}());</code></p>
<p>// shortcut pointer<br />
<code>(function() {<br />
var evts = MyLib.Utilities.Events;<br />
evts.add('el1', 'click' function() {/* function code */});<br />
evts.add('el2', 'click' function() {/* function code */});<br />
evts.add('el3', 'click' function() {/* function code */});<br />
}());</code></p>
<p>Concatenare i file prima della compressione</p>
<p>Una buona regola è inoltre quella di concatenare i file in un unico file prima di eseguire la compressione. Questo permette di riutilizzare i namespace più corti scelti in precedenza dal compressore, senza la necessità di usarne di nuovi nel caso di nuove variabili globali (i compressoreinon hanno la capacità di ricordare le informazioni tra più file).</p>
<p>Variabili al posto di oggetti</p>
<p>Quest’ultima regola è molto soggettiva: se da un lato ottimizza la compressione, dall’altro può incidere notevolmente sulla qualità del nostro codice. Essa si traduce nell’utilizzare le semplici variabili al posto delle proprietà degli oggetti: questo perchè molti compressori non sono attualmente in grado di ridurre e dunque rinominare le proprietà degli oggetti.</p>
<p>Fonte: <a href="http://blog.html.it/23/06/2009/ottimizzare-la-compressione-del-javascript/">Ottimizzare la compressione del Javascript</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Ottimizzare la compressione del Javascript" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Ottimizzare+la+compressione+del+Javascript" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/06/ottimizzare-la-compressione-del-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Uno studio sull’usabilità dei form</title>
		<link>http://www.faceitweb.com/2009/06/uno-studio-sull%e2%80%99usabilita-dei-form/</link>
		<comments>http://www.faceitweb.com/2009/06/uno-studio-sull%e2%80%99usabilita-dei-form/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 10:19:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[form]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=308</guid>
		<description><![CDATA[Che i form siano un elemento di criticità nel contesto di un sito non lo scopriamo oggi e non mancano approfondite analisi svolte con il metodo dell’eyetracking che hanno messo in risalto i fattori più problematici.
Sempre basato sul tracciamento oculare è lo studio recentemente svolto da CXPartners. Sotto esame il comportamento di un gruppo di [...]]]></description>
			<content:encoded><![CDATA[<p>Che i form siano un elemento di criticità nel contesto di un sito non lo scopriamo oggi e non mancano <a href="http://www.uxmatters.com/mt/archives/2006/07/label-placement-in-forms.php">approfondite analisi</a> svolte con il metodo dell’eyetracking che hanno messo in risalto i fattori più problematici.</p>
<p>Sempre basato sul tracciamento oculare è <a href="http://www.cxpartners.co.uk/thoughts/web_forms_design_guidelines_an_eyetracking_study.htm">lo studio</a> recentemente svolto da CXPartners. Sotto esame il comportamento di un gruppo di utenti alle prese con i moduli di registrazione di eBay, Yahoo Mail, GMail e Hotmail.</p>
<p>La sintesi dei risultati consiste in 10 linee guida. Le label? L’ideale è posizionarle verticalmente rispetto al campo corrispondente e quando ciò non sia possibile è consigliabile piazzarle, ben evidenziate in grassetto, sul lato sinistro. Evitare poi di distribuire i campi su più di una colonna; per situazioni in cui si inseriscano due input di testo sulla stessa riga (classico il caso della coppia nome/cognome) è opportuno fare in modo che siano ben ravvicinati e che siano raggruppati sotto una sola label.</p>
<p>Interessante poi l’osservazione sui campi obbligatori. Il consiglio, in base alle osservazioni svolte, è di non usare l’asterisco come indicazione di una compilazione obbligatoria, ma di rendere esplicito il fatto che un campo è opzionale attraverso un’indicazione testuale.<br />
<br/><br />
Fonte: <a href="http://blog.html.it/12/06/2009/uno-studio-sullusabilita-dei-form/">Uno studio sull’usabilità dei form</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Uno studio sull’usabilità dei form" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Uno+studio+sull’usabilità+dei+form" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/06/uno-studio-sull%e2%80%99usabilita-dei-form/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Telefono e chat nelle applicazioni Java con Skype4Java</title>
		<link>http://www.faceitweb.com/2009/06/telefono-e-chat-nelle-applicazioni-java-con-skype4java/</link>
		<comments>http://www.faceitweb.com/2009/06/telefono-e-chat-nelle-applicazioni-java-con-skype4java/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 10:09:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[skype]]></category>
		<category><![CDATA[Skype4Java]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=301</guid>
		<description><![CDATA[In questo articolo esamineremo e utilizzaremo la libreria open source Skype4Java, per interagire con Skype, uno dei programmi VoIP più diffusi al mondo. Questa libreria può essere concettualmente suddivisa in due parti: la prima, contenente le classi e le interfacce Java utilizzabili dal programmatore, e la seconda che comprende le librerie native, richiamate tramite tecnologia [...]]]></description>
			<content:encoded><![CDATA[<p>In questo articolo esamineremo e utilizzaremo la libreria open source Skype4Java, per interagire con Skype, uno dei programmi VoIP più diffusi al mondo. Questa libreria può essere concettualmente suddivisa in due parti: la prima, contenente le classi e le interfacce Java utilizzabili dal programmatore, e la seconda che comprende le librerie native, richiamate tramite tecnologia JNI (Java Native Interface), per la comunicazione a basso livello con il client Skype.</p>
<p>È possibile scarircare la libreria e la documentazione del progetto dal sito ufficiale (https://developer.skype.com/wiki/Java_API).</p>
<p>Skype4Java ci permette è possibile effettuare moltissime operazioni, tra cui:</p>
<ul>
<li>Visualizzare e modificare le impostazioni del client (lingua, sfondi, proprietà)</li>
<li>Visualizzare, aggiungere, modificare ed eliminare i contatti ed i gruppi</li>
<li>Gestire il proprio profilo</li>
<li>Avviare una sessione voce</li>
<li>Avviare una sessione di chat</li>
<li>Inviare SMS</li>
</ul>
<p><strong>La classe principale</strong> della libreria è <code>com.skype.Skype</code>. Questa classe ci fornisce numerosi metodi statici che ci permettono di recuperare moltissime informazioni: versione installata del client, lista dei gruppi, lista dei contatti, informazioni relative ai profili dei nostri contatti, e molte altre informazioni.</p>
<p style="text-align: center;"><span id="more-301"></span></p>
<p>Alcuni esempi ci aiuteranno a prendere confidenza con questa libreria.</p>
<div class="boxcode">
<p>Versione installata del client Skype</p>
<pre>Skype.getVersion()</pre>
</div>
<div class="boxcode">
<p>Visualizzazione e modifica del proprio profilo</p>
<pre>Profile profilo = Skype.getProfile();

System.out.println("ID:" + profilo.getId());
System.out.println("Sesso:" + profilo.getSex());
System.out.println("Città:" + profilo.getCity());
System.out.println("Stato:" + profilo.getStatus());

profilo.setCity("Napoli");</pre>
</div>
<p>L&#8217;oggetto <code>Profile</code> restituito dal metodo <code>getProfile()</code>, contiene le informazioni relative al profilo dell&#8217;utente skype attivo sul client, compreso lo stato attuale dell&#8217;utente (In linea, Non al computer, Occupato). Le informazioni sono richiamabili mediante i classici metodi getter. È possibile anche modificare tali proprietà utilizzando i metodi setter.</p>
<p><strong>Gli stati</strong> possibili di ciascun contatto sono i seguenti:</p>
<table class="tabella_htmlit" border="0">
<tbody>
<tr>
<td><code>User.Status.AWAY</code></td>
<td><code>User.Status.OFFLINE</code></td>
<td><code>User.Status.ONLINE</code></td>
</tr>
<tr>
<td><code>User.Status.UNKNOWN</code></td>
<td><code>User.Status.NA</code></td>
<td><code>User.Status.DND</code></td>
</tr>
</tbody>
</table>
<div class="boxcode">
<p>Visualizzazione dei contatti</p>
<pre>Friend[] contatti = Skype.getContactList().getAllFriends();

for (int i = 0; i &lt; contatti.length; i++)
{
  Friend contatto = contatti[i];
  System.out.println(contatto.getId() + " " + contatto.getFullName());
}</pre>
</div>
<p>Il metodo <code>getContactList()</code>, restituisce diverse informazioni sui contatti. Il metodo <code>getAllFriends()</code>, restituisce un array di oggetti <code>Friend</code> che contiene l&#8217;elenco completo di tutti i contatti. L&#8217;oggetto <code>Friend</code>, contiene tutte le informazioni sul profilo del contatto: id, nome, città, lingua, stato, email.</p>
<div class="boxcode">
<p>Creare un nuovo gruppo</p>
<pre>Skype.getContactList().addGroup("amici");</pre>
</div>
<p>Il metodo <code>addGroup()</code> ci permette di aggiungere un nuovo gruppo.</p>
<div class="boxcode">
<p>Inserire i contatti in un gruppo</p>
<pre>Group amici = Skype.getContactList().getGroup("amici");

Friend contatto1 = Skype.getContactList().getFriend("nick1");
Friend contatto2 = Skype.getContactList().getFriend("nick2");

amici.addFriend(contatto1);
amici.addFriend(contatto2);</pre>
</div>
<p>Per inserire i contatti all&#8217;interno di un gruppo occorre prima di tutto recuperare l&#8217;istanza del gruppo mediante il metodo <code>getGroup()</code>. Successivamente occorre recuperare l&#8217;istanza di ciascun contatto da inserire nel gruppo, mediante il metodo <code>getFriend(</code>), ed infine, richiamare il metodo <code>addFriend()</code> della classe Group.</p>
<div class="boxcode">
<p>Inviare un messaggio ad un contatto</p>
<pre>Friend contatto = Skype.getContactList().getFriend("pippo");

if (null != contatto &amp;&amp; contatto.getOnlineStatus().equals(User.Status.ONLINE))
  contatto.send("Ciao Pippo");
else
  System.out.println("Il contatto non è al PC. Il suo stato è '" + contatto.getOnlineStatus() + "'");</pre>
</div>
<p>Ottenuta l&#8217;instanza dell&#8217;oggetto <code>Friend</code>, mediante il metodo <code>getFriend(String)</code> della classe <code>ContactList</code>, corrispondente al contatto che ci interessa, e verificato il suo stato, possiamo inviargli un messaggio via chat utilizzando il metodo <code>send(String)</code>. Naturalmente, qualora il contatto richiesto non sia presente nella lista dei contatti, il metodo restituirà un riferimento null e quindi non sarà possibile inviargli un messaggio.</p>
<div class="boxcode">
<p>Effettuare una chiamata</p>
<pre>Friend contatto = Skype.getContactList().getFriend("pippo");

if (null != contatto &amp;&amp; contatto.getOnlineStatus().equals(User.Status.ONLINE))
  contatto.call();
else
  System.out.println("Il contatto non è al PC. Il suo stato è '" + contatto.getOnlineStatus() + "'");</pre>
</div>
<p>Con la stessa logica dell&#8217;esempio precedente, è possibile avviare una chiamata. L&#8217;unica differenza è il metodo della classe <code>Friend</code> da richiamare. Per inviare un messaggio di chat è necessario utilizzare il metodo <code>send(String)</code>, mentre per inoltrare una chiamata, occorre utilizzare il metodo <code>call()</code>.</p>
<div class="boxcode">
<p>Inviare un SMS</p>
<pre>Skype.sendSMS("134567890", "prova sms");</pre>
</div>
<p>Mediante il metodo <code>sendSMS()</code> è possibile inviare un SMS direttamente ad un numero specifico.</p>
<p>Oltre alla classe <code>Skype</code>, la libreria <code>Skype4Java</code>, mette a disposizione anche la <strong>classe SkypeClient</strong>, mediante la quale è possibile interagire direttamente con il client. Ad esempio, è possibile aprire la finestra delle impostazioni, la finestra dei contatti, etc.</p>
<ul>
<li><code>SkypeClient.showSkypeWindow()</code></li>
<li><code>SkypeClient.showProfileWindow()</code></li>
<li><code>SkypeClient.showSearchWindow()</code></li>
</ul>
<p>Per eseguire gli esempi proposti, è necessario includere nel proprio progetto la libreria specifica del sistema operativo. Nel pacchetto zip scaricabile dal sito ufficiale, infatti, sono inclusi i seguenti file jar:</p>
<ul>
<li><code>skype_linux.jar</code> per i sistemi linux</li>
<li><code>skype_osx.jar </code> per MAC</li>
<li><code>skype_win32.jar</code> per Windows</li>
</ul>
<p>Queste sono solo alcune delle funzionalità messe a disposizione dalla libreria Skype4Java, per iniziare a acquisire familiarità con la libreria.</p>
<p><a href="http://java.html.it/articoli/leggi/3030/skype4java-telefono-e-chat-nelle-applicazioni-java/">Skype4Java, telefono e chat nelle applicazioni Java</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Telefono e chat nelle applicazioni Java con Skype4Java" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Telefono+e+chat+nelle+applicazioni+Java+con+Skype4Java" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/06/telefono-e-chat-nelle-applicazioni-java-con-skype4java/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Cursore come tipo di ritorno in Oracle</title>
		<link>http://www.faceitweb.com/2009/06/cursore-come-tipo-di-ritorno-in-oracle/</link>
		<comments>http://www.faceitweb.com/2009/06/cursore-come-tipo-di-ritorno-in-oracle/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 13:44:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[oracle]]></category>
		<category><![CDATA[cursore]]></category>
		<category><![CDATA[database]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=294</guid>
		<description><![CDATA[A volte nasce l’esigenza di utilizzare una funzione che ritorna un cursore. Basti pensare ad un package centralizzato che gestisce funzionalita’ comuni. Il problema nasce nel momento in cui si voglia fare manutenzione al package comune senza dover modificare chi lo utilizza. Come dobbiamo comportarci con i tipi? Come definiamo la variabile che contiene il [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">A volte nasce l’esigenza di utilizzare una funzione che ritorna un cursore. Basti pensare ad un package centralizzato che gestisce funzionalita’ comuni. Il problema nasce nel momento in cui si voglia fare manutenzione al package comune senza dover modificare chi lo utilizza. Come dobbiamo comportarci con i tipi? Come definiamo la variabile che contiene il cursore di ritorno dalla funzione se tale cursore e’ una join di piu’ tabelle (quindi non possimo fare nome_tabella%rowtype), puo’ variare (per evoluzioni/correzioni) ed e’ dentro una funzione (quindi non possimo fare nome_cursore%rowtype)?</p>
<p>La risposta in breve e’: basta definire un tipo che sara’ il tipo della variabile che conterra’ il cursore e lo stesso tipo sara’ il tipo di ritorno della funzione. Nello specifico:</p>
<p>nell’header del PACKAGE comune definiamo un tipo record:</p>
<div>
<div class="wp-synhighlighter-inner">
<pre class="oracle8" style="font-family: monospace;">
<ol>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">TYPE</span> ty_tipo_ritorno_rec <span style="font-weight: bold; text-transform: uppercase; color: #993333;">IS</span> <span style="font-weight: bold; text-transform: uppercase; color: #993333;">RECORD</span> <span style="color: #66cc66;">(</span></li>
<li style="font-weight: normal; vertical-align: top;">nome       <span style="font-weight: bold; text-transform: uppercase; color: #993333;">varchar2</span><span style="color: #66cc66;">(</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">,</span></li>
<li style="font-weight: normal; vertical-align: top;">cognome    <span style="font-weight: bold; text-transform: uppercase; color: #993333;">varchar2</span><span style="color: #66cc66;">(</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">,</span></li>
<li style="font-weight: normal; vertical-align: top;">dt_nasc    <span style="font-weight: bold; text-transform: uppercase; color: #993333;">date</span><span style="color: #66cc66;">,</span></li>
<li style="font-weight: bold; vertical-align: top;">dt_ult_mod <span style="font-weight: bold; text-transform: uppercase; color: #993333;">date</span></li>
<li style="font-weight: normal; vertical-align: top;"><span style="color: #66cc66;">)</span>;</li>
</ol>

<span id="more-294"></span></pre>
</div>
</div>
<p style="text-align: center;"></p>
<p>Quindi definiamo subito un’altro tipo che sara’ un cursore generico fatto pero’ come il record appena descritto sopra.</p>
<div>
<div class="wp-synhighlighter-inner">
<pre class="oracle8" style="font-family: monospace;">
<ol>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">TYPE</span> ty_cursore_ritorno <span style="font-weight: bold; text-transform: uppercase; color: #993333;">IS</span> <span style="font-weight: bold; text-transform: uppercase; color: #993333;">REF</span> <span style="font-weight: bold; text-transform: uppercase; color: #993333;">CURSOR</span> <span style="font-weight: bold; text-transform: uppercase; color: #993333;">RETURN</span> ty_tipo_ritorno_rec;</li>
</ol>
</pre>
</div>
</div>
<p>La funzione del package comune che ritorna il cursore sara’ cosi’ definita:</p>
<div>
<div class="wp-synhighlighter-inner">
<pre class="oracle8" style="font-family: monospace;">
<ol>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">FUNCTION</span> get_utente<span style="color: #66cc66;">(</span>p_cognome <span style="font-weight: bold; text-transform: uppercase; color: #993333;">IN</span> <span style="font-weight: bold; text-transform: uppercase; color: #993333;">VARCHAR2</span><span style="color: #66cc66;">)</span></li>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">RETURN</span> ty_cursore_ritorno <span style="font-weight: bold; text-transform: uppercase; color: #993333;">IS</span></li>
<li style="font-weight: normal; vertical-align: top;"><span>/*variabile di ritorno*/</span></li>
<li style="font-weight: normal; vertical-align: top;">v_result ty_cursore_ritorno;</li>
<li style="font-weight: bold; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">BEGIN</span></li>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">OPEN</span> v_result <span style="font-weight: bold; text-transform: uppercase; color: #993333;">FOR</span></li>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">SELECT</span></li>
<li style="font-weight: normal; vertical-align: top;">U.NOME</li>
<li style="font-weight: normal; vertical-align: top;"><span style="color: #66cc66;">,</span>U.COGNOME</li>
<li style="font-weight: bold; vertical-align: top;"><span style="color: #66cc66;">,</span>U.DT_NASC</li>
<li style="font-weight: normal; vertical-align: top;"><span style="color: #66cc66;">,</span>M.DT_ULT_MOD</li>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">FROM</span> UTENTE U</li>
<li style="font-weight: normal; vertical-align: top;"><span style="color: #66cc66;">,</span>MODIFICHE M</li>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">WHERE</span> U.ID_UTENTE <span style="color: #66cc66;">=</span> M.ID_UTENTE</li>
<li style="font-weight: bold; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">AND</span> U.COGNOME   <span style="color: #66cc66;">=</span> p_cognome;</li>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">RETURN</span> v_result;</li>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">END</span>;</li>
</ol>
</pre>
</div>
</div>
<p>Il package chiamante che utilizza la funzione definita sopra sara’ cosi’ fatto:</p>
<p>definiamo due variabili, una per il tipo cursore di ritorno e l’altra per</p>
<p>fare il fetch delle righe:</p>
<div>
<div class="wp-synhighlighter-inner">
<pre class="oracle8" style="font-family: monospace;">
<ol>
<li style="font-weight: normal; vertical-align: top;">v_cursor     <span style="font-weight: bold; text-transform: uppercase; color: #993333;">SCHEMA</span>.NOME_PACKAGE_COMUNE.ty_cursore_ritorno;</li>
<li style="font-weight: normal; vertical-align: top;">v_cursor_rec <span style="font-weight: bold; text-transform: uppercase; color: #993333;">SCHEMA</span>.NOME_PACKAGE_COMUNE.ty_tipo_ritorno_rec;</li>
</ol>
</pre>
</div>
</div>
<p>quindi faremo:</p>
<div>
<div class="wp-synhighlighter-inner">
<pre class="oracle8" style="font-family: monospace;">
<ol>
<li style="font-weight: normal; vertical-align: top;">v_cursor :<span style="color: #66cc66;">=</span> <span style="font-weight: bold; text-transform: uppercase; color: #993333;">SCHEMA</span>.NOME_PACKAGE_COMUNE.get_utente<span style="color: #66cc66;">(</span><span style="color: #ff0000;">'ROSSI'</span><span style="color: #66cc66;">)</span>;</li>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">LOOP</span></li>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">FETCH</span> v_cursor <span style="font-weight: bold; text-transform: uppercase; color: #993333;">INTO</span> v_cursor_rec;</li>
<li style="font-weight: normal; vertical-align: top;"><span>/*facciamo le operazioni che ci servono*/</span></li>
<li style="font-weight: bold; vertical-align: top;">dbms_output.put_line <span style="color: #66cc66;">(</span>v_cursor.nome<span style="color: #66cc66;">)</span>;</li>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">EXIT</span> <span style="font-weight: bold; text-transform: uppercase; color: #993333;">WHEN</span> v_cursor%NOTFOUND;</li>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">END</span> <span style="font-weight: bold; text-transform: uppercase; color: #993333;">LOOP</span>;</li>
<li style="font-weight: normal; vertical-align: top;"><span style="font-weight: bold; text-transform: uppercase; color: #993333;">CLOSE</span> v_cursor;</li>
</ol>
</pre>
</div>
</div>
<p>Questo ci porta un notevole vantaggio: se il cursore del package comune viene ampliato per far fronte a nuove esigenze, al chiamante il cambiamento e’ trasparente.</p>
<p>L’unica cosa da fare per l’eventuale modifica del cursore e’ l’allineamento del tipo ty_tipo_ritorno_rec con i nuovi campi aggiunti/tolti.</p>
<p>Fonte: <a href="http://www.lucafavaretto.it/oracle/cursore_come_tipo_di_ritorno/">[Oracle] &#8211; Cursore come tipo di ritorno</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Cursore come tipo di ritorno in Oracle" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Cursore+come+tipo+di+ritorno+in+Oracle" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/06/cursore-come-tipo-di-ritorno-in-oracle/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Motore di ricerca nel sito</title>
		<link>http://www.faceitweb.com/2009/06/motore-di-ricerca-nel-sito/</link>
		<comments>http://www.faceitweb.com/2009/06/motore-di-ricerca-nel-sito/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 08:40:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[motore di ricerca]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=290</guid>
		<description><![CDATA[Un piccolo tutorial che spiega come realizzare un motore di ricerca in ASP, da integrare nel proprio sito web. La funzione di questo motore è quella di ricercare il contenuto di ogni singolo file presente sul sito. Andiamo ad analizzare il codice:
&#60;title&#62;Risultato della ricerca per &#60;/title&#62;

&#60;p align="center"&#62;
Risultato della ricerca per: &#60;b&#62;&#60;/b&#62;
&#60;/p&#62;

&#38;lt;%
Const fsoForReading = 1

'Dimensioniamo il [...]]]></description>
			<content:encoded><![CDATA[<p>Un piccolo tutorial che spiega come realizzare un motore di ricerca in ASP, da integrare nel proprio sito web. La funzione di questo motore è quella di ricercare il contenuto di ogni singolo file presente sul sito. Andiamo ad analizzare il codice:</p>
<pre class="php" style="font-family: monospace;"><span style="color: #339933;">&lt;</span>title<span style="color: #339933;">&gt;</span>Risultato della ricerca per <span style="color: #339933;">&lt;/</span>title<span style="color: #339933;">&gt;</span>

<span style="color: #339933;">&lt;</span>p align<span style="color: #339933;">=</span><span style="color: #0000ff;">"center"</span><span style="color: #339933;">&gt;</span>
Risultato della ricerca per<span style="color: #339933;">:</span> <span style="color: #339933;">&lt;</span>b<span style="color: #339933;">&gt;&lt;/</span>b<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>p<span style="color: #339933;">&gt;</span>

<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;%</span>
<span style="font-weight: bold; color: #000000;">Const</span> fsoForReading <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span>

<span style="color: #0000ff;">'Dimensioniamo il FileSytemObject
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

'</span>Impostiamo la directory in cui cercare usando MapPath
<span style="color: #0000ff;">'nel nostro caso impostiamo la root del sito
Dim objFolder
Set objFolder = objFSO.GetFolder(Server.MapPath("/"))

Dim objFile, objTextStream, ContenutoDelFile, FileTrovato
FileTrovato = False

'</span>Leggiamo il contenuto di ogni <span style="color: #990000;">file</span> trovato nella directory
<span style="color: #b1b100;">For</span> <span style="color: #990000;">Each</span> objFile in objFolder<span style="color: #339933;">.</span>Files
<span style="color: #b1b100;">If</span> Response<span style="color: #339933;">.</span>IsClientConnected then
Set objTextStream <span style="color: #339933;">=</span> objFSO<span style="color: #339933;">.</span>OpenTextFile<span style="color: #009900;">(</span>objFile<span style="color: #339933;">.</span>Path<span style="color: #339933;">,</span>fsoForReading<span style="color: #009900;">)</span>
ContenutoDelFile <span style="color: #339933;">=</span> objTextStream<span style="color: #339933;">.</span>ReadAll

<span style="color: #0000ff;">'Se nel contenuto del file è presente la stringa cercata...
'</span>Stampo a video il <span style="color: #990000;">link</span> ed in nome del <span style="color: #990000;">file</span>
<span style="color: #b1b100;">If</span> InStr<span style="color: #009900;">(</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span>ContenutoDelFile<span style="color: #339933;">,</span>CosaCercare<span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">)</span> then
Response<span style="color: #339933;">.</span>Write <span style="color: #0000ff;">"&lt;a&gt;"</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> objFile<span style="color: #339933;">.</span>Name <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #0000ff;">"&lt;/a&gt;&lt;br&gt;"</span>
FileTrovato <span style="color: #339933;">=</span> <span style="font-weight: bold; color: #000000;">True</span>
<span style="color: #990000;">End</span> <span style="color: #b1b100;">If</span>

<span style="color: #0000ff;">'Chiudo il file e proseguo nella ricerca
objTextStream.Close
End If
Next

'</span>Se nessun <span style="color: #990000;">file</span> contiene il termine cercato<span style="color: #339933;">...</span>
<span style="color: #b1b100;">if</span> Not FileTrovato then Response<span style="color: #339933;">.</span>Write <span style="color: #0000ff;">"Nessun risultato trovato..."</span>

<span style="color: #0000ff;">'Chiudo tutto...
Set objTextStream = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
%&amp;gt;
</span></pre>
<p><a href="http://www.programmando.net/2009/06/22/asp-motore-di-ricerca-nel-sito/">ASP: Motore di ricerca nel sito</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Motore di ricerca nel sito" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Motore+di+ricerca+nel+sito" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/06/motore-di-ricerca-nel-sito/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Scheduling in JAVA</title>
		<link>http://www.faceitweb.com/2009/06/scheduling-in-java/</link>
		<comments>http://www.faceitweb.com/2009/06/scheduling-in-java/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 16:47:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[Scheduling java]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=285</guid>
		<description><![CDATA[Java offre metodi nativi per poter supportare lo scheduling dei processi e delle azioni. Le classi deputate a tali compiti sono Timer e TimerTask. La classe TimerTask dovrà contenere il codice che vogliamo sia eseguito. Per far ciò, occorrerà sviluppare una nuova classe che estenda TimerTask, condizione fondamentale è la ridefinizione del metodo run() con [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Java</strong> offre metodi nativi per poter supportare lo <strong>scheduling dei processi</strong> e delle azioni. Le classi deputate a tali compiti sono <strong><em>Timer</em> </strong>e <strong><em>TimerTask</em></strong>. La classe TimerTask dovrà contenere il codice che vogliamo sia eseguito. Per far ciò, occorrerà sviluppare una nuova classe che <strong>estenda TimerTask</strong>, condizione fondamentale è la ridefinizione del metodo <strong>run()</strong> con le operazioni da schedulare, tale classe per chi ha dimestichezza con la gestione della concorrenza in <strong>Java </strong>somiglia ad una classe <strong>thread</strong>, ed infatti altro non è.</p>
<p>TimeTask implementa <strong>Runnable</strong>, e per poterla utilizzare occorre importare il <strong>package java.util.TimerTask</strong>. Implementata la nostra classe erede di TimerTask, occorrerà schedulare i nostri job all’interno del main principale, per far ciò ricorreremo all’oggetto <strong>Timer</strong>.</p>
<p>Ma vediamo un esempio per capire meglio. Supponiamo di voler stampare ogni 5 secondi una stringa di saluto:</p>
<p>import java.util.Timer;<br />
import java.util.TimerTask;<br />
public class ttask extends TimerTask{<br />
String stringa;<br />
public ttask(){<br />
stringa=&#8221;Ciao a tutti&#8221;;<br />
}<br />
public void run(){<br />
System.out.println(stringa);<br />
}<br />
}</p>
<p>E la nostra classe main sarà:</p>
<p>public static void main(String[] args) {<br />
Timer t=new Timer();<br />
ttask tt= new ttask();<br />
t.schedule(tt, 5000);<br />
}</p>
<p>Fonte: <a href="http://www.onlinetutorial.it/scheduling-con-java.html">Scheduling con Java</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Scheduling in JAVA" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Scheduling+in+JAVA" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/06/scheduling-in-java/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- www.000webhost.com Analytics Code -->
<script type="text/javascript" src="http://analytics.hosting24.com/count.php"></script>
<noscript><a href="http://www.hosting24.com/"><img src="http://analytics.hosting24.com/count.php" alt="web hosting" /></a></noscript>
<!-- End Of Code -->
