<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2italianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Computer Geek - Only For Computer Lovers</title>
	
	<link>http://www.computergeek.it</link>
	<description>Blog di discussione sull'informatica e la programmazione. Informazione più pratica e meno teorica...</description>
	<lastBuildDate>Thu, 21 Apr 2011 15:43:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ComputerGeekIt" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="computergeekit" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/content?lg=it&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FComputerGeekIt" src="http://eur.i1.yimg.com/eur.yimg.com/i/it/my/mioya1.gif">Subscribe with Mio Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FComputerGeekIt" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/ComputerGeekIt" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FComputerGeekIt" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FComputerGeekIt" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FComputerGeekIt" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FComputerGeekIt" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2FComputerGeekIt" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FComputerGeekIt" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FComputerGeekIt" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FComputerGeekIt" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FComputerGeekIt" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FComputerGeekIt" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FComputerGeekIt" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FComputerGeekIt" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item>
		<title>Parte 1 – Come realizzare un’applicazione Client-Server in Java, un esempio col TexasHold’em</title>
		<link>http://www.computergeek.it/2010/06/programmazione/parte-1-come-realizzare-unapplicazione-client-server-in-java-un-esempio-col-texasholdem/</link>
		<comments>http://www.computergeek.it/2010/06/programmazione/parte-1-come-realizzare-unapplicazione-client-server-in-java-un-esempio-col-texasholdem/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 07:04:34 +0000</pubDate>
		<dc:creator>Raffaello Marasco</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[architettura client server]]></category>
		<category><![CDATA[client-server java]]></category>
		<category><![CDATA[java API server]]></category>
		<category><![CDATA[java client server API]]></category>
		<category><![CDATA[texas hold'em java]]></category>

		<guid isPermaLink="false">http://computergeek.it/blog/?p=387</guid>
		<description><![CDATA[Quando cominciai a sviluppare <strong>le mie prime applicazioni in Java</strong>, non pensavo nemmeno lontanamente che sviluppare delle applicazioni che facessero <strong>dialogare un client con un server</strong>, che sfruttassero il <strong>multithreading</strong> e che permettessero ad un numero arbitrario di client di fare richieste al server, fosse così facile.

E’ un po’ come quando decidi di <strong>crearti un sito web</strong>. Navighi in quelli degli altri e ti chiedi “<em>Ma quanto cavolo di tempo ci vorrà per fare una cosa del genere?</em>”.

Un paio di ricerche sull’argomento e … scopri che <strong>per fare tutto quello di cui hai bisogno ti bastano non più di un paio di click</strong>. Tutto questo grazie a chi ha lavorato prima di noi, molte volte senza pretendere niente in cambio.]]></description>
			<content:encoded><![CDATA[<p><a href="http://computergeek.it/wp-content/uploads/2010/06/Thumb-Texas-Holdem-Java.gif"><img class="alignnone size-full wp-image-388" title="Thumb Texas Holdem Java" src="http://computergeek.it/wp-content/uploads/2010/06/Thumb-Texas-Holdem-Java.gif" alt="" width="285" height="150" /></a></p>
<p>Quando cominciai a sviluppare <strong>le mie prime applicazioni in Java</strong>, non pensavo nemmeno lontanamente che sviluppare delle applicazioni che facessero <strong>dialogare un client con un server</strong>, che sfruttassero il <strong>multithreading</strong> e che permettessero ad un numero arbitrario di client di fare richieste al server, fosse così facile.</p>
<p>E’ un po’ come quando decidi di <strong>crearti un sito web</strong>. Navighi in quelli degli altri e ti chiedi “<em>Ma quanto cavolo di tempo ci vorrà per fare una cosa del genere?</em>”.</p>
<p>Un paio di ricerche sull’argomento e … scopri che <strong>per fare tutto quello di cui hai bisogno ti bastano non più di un paio di click</strong>. Tutto questo grazie a chi ha lavorato prima di noi, molte volte senza pretendere niente in cambio.</p>
<p><strong>Non hai bisogno di reinventare la ruota!</strong></p>
<p><span id="more-387"></span></p>
<p>Questa è una frase che devi tenere bene a mente sia nella programmazione, sia in tantissime altre occasioni della vita. Nella programmazione in particolare è opportuno conoscere tutte le tecniche, tutti i meccanismi che regolano una determinata procedura, ma <strong>al fine di una personalizzazione, non di una creazione dal nulla</strong>.</p>
<p>Pensa ad esempio se tu dovessi ora creare dal nulla una procedura di login per il tuo sito web. Certo, non è nulla di complicato, ma perché devo farlo se con una ricerca su Google ne trovo 1000 di form di login?</p>
<p>Devi però conoscere le procedure che regolano quel login, il linguaggio con cui è stato scritto … <strong>devi saperlo personalizzare, non creare</strong>.</p>
<p>Tornando all’argomento di questo articolo, con le <strong>librerie e le API già integrate in Java </strong>riuscirai a creare un sistema completo di dialogo tra <strong>un server ed un client </strong>con tanto di supporto per il <strong>multithreading</strong>. Mentre avanzeremo con questa applicazione, nei prossimi articoli, andremo a creare una vera e propria sala da gioco che supporta fino a 10 giocatori in contemporanea per il famosissimo gioco di poker <strong>TexasHoldem</strong>.</p>
<p>E adesso, vediamo come si fa.</p>
<p><strong>ALCUNE BASI SUL NETWORKING</strong></p>
<p><strong> </strong></p>
<p>Prima di vedere il codice, voglio fare un brevissimo ripasso su alcuni concetti che hai bisogno di sapere per poter realizzare un’applicazione del genere.</p>
<p>(Se pensi di sapere già tutto ciò che occorre puoi saltare questa parte)</p>
<p><strong>Ogni computer connesso alla rete </strong>(qualsiasi rete, che sia quella locale o che sia Internet) <strong>possiede un proprio indirizzo IP numerico</strong>. Per contattare un computer in rete è quindi necessario conoscere il suo IP (<em>Internet Protocol</em>), ma fortunatamente c’è un particolare servizio che si chiama <strong>DNS</strong> che permette di associare a questo IP un nome più semplice o comunque più vicino alla logica umana, ad esempio <a href="http://www.computergeek.it/">www.computergeek.it</a>.</p>
<p>Direttamente collegato a questi c’è il <strong>concetto di socket</strong>, un particolare sistema che permette di associare all’indirizzo un secondo valore, la <strong>porta</strong>.</p>
<p><strong>Cosa fa il server?</strong></p>
<p>Non fa altro che “<em>ascoltare</em>” (è così che si dice) una porta in attesa di eventuali connessioni in entrata. Tanto per farti un esempio, i server FTP ascoltano la porta 21, quelli Web la porta 80 e così via per tutti i servizi esistenti.</p>
<p><strong>Cosa fa il client?</strong></p>
<p>Il client è l’altra faccia del server, colui che <strong>utilizza i servizi forniti dal server</strong>. Per stabilire una connessione il client deve conoscere l’indirizzo IP del server e la relativa porta ascoltata.</p>
<p>Stabilita la connessione comincia lo scambio dati tra i due computer (<strong>client e server</strong>) che avviene seguendo delle precise regole, il protocollo applicativo, che dà un senso alle sequenze di byte scambiate.</p>
<p><strong>Stabiliamo il protocollo applicativo …</strong></p>
<p>Non è altro che un insieme di regole che dobbiamo determinare per far si che la <strong>comunicazione avvenga in modo giusto e senza problemi</strong>.<br />
Ad esempio, di che natura deve essere il dato scambiato? In questo caso utilizzeremo il <strong>protocollo ASCII</strong>.<br />
Utilizzando questo protocollo sorgono subito altri problemi: come trattare i caratteri accentati che non rientrano nel <strong>charset ASCII</strong>?<br />
I comandi hanno questa forma:</p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family:monospace;">COMANDO PARAMETRO1 PARAMETRO2</pre>
</div>
</div>
<p>Come trattare quei dati che contengono degli spazi, come un semplice testo?</p>
<p><strong>Questi due problemi</strong> (che dobbiamo risolvere per permettere poi agli utenti di chattare, nel nostro esempio) <strong>possiamo risolverli</strong> utilizzando <strong>l’URL Encoding</strong> che permette di aggiungere un “+” al posto dello spazio e sostituire i caratteri accentati con delle particolari sequenze.</p>
<p><em>Può sembrarti complicato, ma con le API di Java possiamo fare tutto questo davvero con pochissimo codice e con facilità.</em></p>
<p>Il paradigma sul quale faremo basare l’intero protocollo è quello del <strong>request-response</strong>: il client invia una richiesta e il server risponde. Ovviamente, ad una richiesta possono seguire diverse risposte da parte del server.</p>
<p>Come avrai già capito quindi, i <strong>comandi</strong> <strong>disponibili</strong> (e i parametri leciti) vengono stabiliti dal programmatore. Il server andrà ad ignorare e a restituire determinati messaggi quando non riconoscerà il comando inviato.</p>
<p>Ti faccio adesso qualche esempio di possibili comandi che andremo ad inviare, tanto per farti capire quello che ti ho detto finora.</p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family:monospace;">Dal client<span style="color: #339933;">:</span> MESSAGE Questo<span style="color: #339933;">+</span>e<span style="color: #339933;">+</span>un<span style="color: #339933;">+</span>messaggio
Dal server<span style="color: #339933;">:</span> BEGIN
		TEXAS<span style="color: #339933;">-</span>SERVER <span style="color: #009900;">&#40;</span>Messaggio di saluto all’atto della connessione<span style="color: #009900;">&#41;</span>
	      END</pre>
</div>
</div>
<p>Questi sono solo due di tutti i comandi che andremo a stabilire.</p>
<p>Tanto per anticiparti qualcosa, i primi comandi che svilupperemo saranno <em>VERSION</em> e <em>EXIT</em>.</p>
<p>Il primo non fa altro che restituire la versione dell’applicazione, l’altro richiede la chiusura della connessione e restituisce un messaggio di saluto.</p>
<p>La struttura quindi sarà qualcosa di questo tipo:</p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family:monospace;">Dal client<span style="color: #339933;">:</span> VERSION
Dal server<span style="color: #339933;">:</span> BEGIN
		TEXAS<span style="color: #339933;">-</span>SERVER <span style="color: #cc66cc;">1.0</span>
	      END
&nbsp;
Dal client<span style="color: #339933;">:</span> EXIT
Dal server<span style="color: #339933;">:</span> BEGIN
		BYE
	      END</pre>
</div>
</div>
<p>Perfetto, adesso possiamo davvero <strong>passare alla pratica</strong>.</p>
<p>Per questione di pulizia dell’articolo, questa volta non includo tutto il codice all’interno, ma mi limito a spiegarlo. Il <strong>codice completo</strong> come sempre puoi trovarlo in fondo all’articolo. Ciascuna istruzione è spiegata all’interno del codice stesso <strong>tramite i commenti</strong>.</p>
<p>Eccoti spiegate le <strong>tre classi essenziali </strong>per poter costruire un <strong>architettura client/server in JAVA </strong>col supporto del <strong>multithreading</strong>.</p>
<p>L’intero modulo in generale funziona in questo modo:</p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family:monospace;">Server server <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Server<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
server.<span style="color: #006633;">init</span><span style="color: #009900;">&#40;</span>porta<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">----------------------</span>
Server.<span style="color: #006633;">destroy</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p><span style="font-size: x-large;"><strong>La classe Server</strong></span></p>
<p><strong> </strong></p>
<p>Cosa viene fatto qui? Quali sono i moduli che la classe offre?</p>
<p><span style="font-size: large;"> <strong>Il metodo init(porta)</strong></span></p>
<p>Questo è il metodo base, il metodo che <strong>inizializza il server</strong>. Possiamo avere due tipi di chiamate al metodo, una in cui indichiamo una porta arbitraria, l’altro in cui non indichiamo alcuna porta e verrà usata quindi quella impostata per default dal codice.</p>
<p>Anzitutto viene creato un oggetto <strong>Java (ServerSocket)</strong> che è in grado di attendere e ricevere le <strong>connessioni TCP</strong>. Dopo viene chiamato l’oggetto <strong>Thread</strong> (da questo dipende il supporto del multithreading) che permette di eseguire su un <strong>thread parallelo</strong> la routine di istruzioni espressa dal metodo <strong>run().</strong></p>
<p><span style="font-size: large;"><strong>Il metodo run()</strong></span></p>
<p>E’ formato da un ciclo che ad ogni giro attende che un client si connetta al server. Il metodo accept() di ServerSocket ne ferma l’esecuzione fin quando non avviene un contatto da parte del client. Quando avviene, la connessione è restituita sotto oggetto Socket. L’oggetto Socket a sua volta serve ad istanziare una seconda classe: Connection.</p>
<p>Tutte le connessioni vengono memorizzate in un ArrayList di nome connections che abbiamo dichiarato nel modulo Server. Così facendo siamo sempre a conoscenza di quanti e quali connessioni sono gestite. La connessione comunque viene automaticamente eliminata dall’ArrayList quando viene terminata la sessione.</p>
<p><span style="font-size: large;"><strong>Il metodo connectionTerminated(Connection connection)</strong></span></p>
<p>Questo metodo serve a terminare la sessione di un solo client.</p>
<p><span style="font-size: large;"><strong>Il metodo destroy()</strong></span></p>
<p>Serve a <strong>terminare tutte le sessioni</strong>, il <strong>Thread</strong> non è più in attesa di una connessione e tutte le connessioni vengono <strong>eliminate svuotando l’ArrayList.</strong></p>
<p><span style="font-size: x-large;"><strong>La classe Connection</strong></span></p>
<p>Anzitutto vengono definite tutte le variabili, principalmente quella del Server, del Socket, del Thread e del flag dello stato della connessione.</p>
<p><span style="font-size: large;"><strong>Il metodo Connection(Server server, Socket socket)</strong></span></p>
<p>Prepara l’oggetto per la connessione, impostandone il server e il socket.</p>
<p><span style="font-size: large;"><strong>Il metodo init()</strong></span></p>
<p>Crea ed <strong>avvia il Thread parallelo</strong> per il supporto al multithreading attraverso il flusso di istruzioni del metodo run().</p>
<p><span style="font-size: large;"><strong>Il metodo run()</strong></span></p>
<p>Vengono stabiliti i <strong>canali di comunicazione</strong> di entrata e di uscita. Come abbiamo già visto è importante definirli per stabilire con quale protocollo devono viaggiare ed essere scambiate le comunicazioni. Vengono quindi stabilite le sorgenti (<strong>stream</strong>) di <strong>input</strong> e di <strong>output</strong>, viene stabilita la natura di questi messaggi (<strong>stringhe codificate in ASCII</strong>) e per comodità vengono utilizzati <strong>BufferedReader</strong> e <strong>BufferedWriter</strong>, che hanno la capacità di leggere il testo riga per riga attraverso il metodo <strong>readLine</strong>().</p>
<p><span style="font-size: large;"><strong>Il metodo release()</strong></span></p>
<p>Serve a <strong>rilasciare le risorse occupate</strong> quando il termine della connessione è stato riscontrato e non forzato tramite l’utilizzo del metodo <strong>destroy</strong>().</p>
<p>Quindi viene eseguito quando la chiusura della connessione avviene a causa di un guasto della rete oppure quando è il client a chiudere la connessione.</p>
<p><span style="font-size: large;"><strong>Il metodo readRequest(BufferedReader reader)</strong></span></p>
<p>Si occupa di <strong>leggere il messaggio inviato dal client, elaborarlo ed inviare una risposta da parte del server</strong>.</p>
<p>Essenzialmente si tratta di leggere il comando, convertirlo tramite appositi metodi in <strong>UTF-8</strong> in modo tale da leggere gli spazi, i caratteri speciali etc…</p>
<p><span style="font-size: large;"><strong>Il metodo writeResponse</strong></span></p>
<p>In questo metodo viene composto il vero e proprio <strong>corpo della risposta del server</strong>. Come abbiamo concordato in precedenza, la risposta comincia con <strong>BEGIN</strong>, seguita dal messaggio e termina con <strong>END</strong>.</p>
<p><strong> </strong></p>
<p><span style="font-size: large;"><strong>Il metodo handleRequest()</strong></span></p>
<p>Qui vengono elaborate le richieste riconoscendo i vari comandi impartiti dal client. Come abbiamo già detto, gli unici <strong>comandi riconosciuti </strong>in questa versione sono <strong>VERSION</strong> ed <strong>EXIT</strong>. Tutti gli altri comandi causano una risposta <strong>UNKNOWN</strong> proprio perché non riconosciuti.  Torneremo su questa classe nei prossimi articoli per creare tutta una serie di comandi riconosciuti per rendere il nostro programma utile allo scopo.</p>
<p>Oltre alle tre classi principali che poi rappresentano il cuore dell’intero funzionamento Server, c’è la <strong>classe GUI</strong> (<em>Graphic User Interface</em>) che serve ad avere un <strong>interfaccia grafica</strong> per <strong>avviare</strong> o <strong>arrestare</strong> il server. I metodi e le istruzioni presenti riguardano solamente il lato grafico del problema, quindi non le andremo ad analizzare.</p>
<p>Comunque, in sostanza vengono utilizzate le <strong>API grafiche Swing di Java</strong>.</p>
<p><span style="font-size: large;"><strong>COME TESTARE IL PROGRAMMA</strong></span></p>
<p>Perfetto. Abbiamo finito ed il nostro server è già funzionante e <strong>pronto per essere testato</strong>.</p>
<p>Per farlo apri il <strong>prompt dei comandi</strong> e digita “<em>telnet localhost 63301</em>”.</p>
<p>Così facendo stabilisci una connessione con te stesso (dichiarata da localhost) attraverso <strong>telnet</strong> (attento che sia abilitato) sulla <strong>porta 63301</strong>, o su qualsiasi altra porta hai avviato il tuo server.</p>
<p>Stabilita la connessione riceverai subito il messaggio di saluto e provando i comandi che abbiamo concordato riceverai le risposte desiderate.</p>
<p><strong>Ecco finalmente il link da cui puoi scaricare l&#8217;intero codice, inclusi tutti i commenti relativi (molti dei quali però non sono i miei):</strong><br />
Note: There is a file embedded within this post, please visit this post to download the file.</p>
<p><!--0fef3e03a14c459ca8be051d7db10afc--></p>

<p><a href="http://feedads.g.doubleclick.net/~a/UJHhsQMyd6DkB7-4R78DWHsKfuY/0/da"><img src="http://feedads.g.doubleclick.net/~a/UJHhsQMyd6DkB7-4R78DWHsKfuY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/UJHhsQMyd6DkB7-4R78DWHsKfuY/1/da"><img src="http://feedads.g.doubleclick.net/~a/UJHhsQMyd6DkB7-4R78DWHsKfuY/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.computergeek.it/2010/06/programmazione/parte-1-come-realizzare-unapplicazione-client-server-in-java-un-esempio-col-texasholdem/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Fai interagire le API di Google Maps con le applicazioni di Facebook</title>
		<link>http://www.computergeek.it/2010/06/programmazione/fai-interagire-le-api-di-google-maps-con-le-applicazioni-di-facebook/</link>
		<comments>http://www.computergeek.it/2010/06/programmazione/fai-interagire-le-api-di-google-maps-con-le-applicazioni-di-facebook/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 18:14:28 +0000</pubDate>
		<dc:creator>Raffaello Marasco</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[applicazioni facebook]]></category>
		<category><![CDATA[creare applicazioni facebook]]></category>
		<category><![CDATA[facebook app]]></category>
		<category><![CDATA[google maps]]></category>

		<guid isPermaLink="false">http://computergeek.it/blog/?p=384</guid>
		<description><![CDATA[Finalmente sono riuscito a risolvere tutti i grattacapi per <strong>l’integrazione di Google Maps in un’applicazione Facebook</strong>.

Sono riuscito a farlo grazie ad un articolo presente sulla rivista specialistica “<strong>ioProgrammo</strong>”, ma come è giusto che sia la guida presentava alcune omissioni e/o imprecisioni che mi hanno portato via un po’ di tempo.

<strong>Ho risolto tutto</strong>, la funzione principale dell’applicazione funziona a meraviglia e sono qui proprio per <strong>spiegartela</strong> più <strong>in dettaglio</strong> che posso (<strong>per qualsiasi problema puoi lasciare un commento</strong>).]]></description>
			<content:encoded><![CDATA[<p><a href="http://computergeek.it/wp-content/uploads/2010/06/Thumbnail_Google_Maps_API.gif"><img class="alignnone size-full wp-image-385" title="Thumbnail_Google_Maps_API" src="http://computergeek.it/wp-content/uploads/2010/06/Thumbnail_Google_Maps_API.gif" alt="" width="285" height="150" /></a></p>
<p>Finalmente sono riuscito a risolvere tutti i grattacapi per <strong>l’integrazione di Google Maps in un’applicazione Facebook</strong>.</p>
<p>Sono riuscito a farlo grazie ad un articolo presente sulla rivista specialistica “<strong>ioProgrammo</strong>”, ma come è giusto che sia la guida presentava alcune omissioni e/o imprecisioni che mi hanno portato via un po’ di tempo.</p>
<p><strong>Ho risolto tutto</strong>, la funzione principale dell’applicazione funziona a meraviglia e sono qui proprio per <strong>spiegartela</strong> più <strong>in dettaglio</strong> che posso (<strong>per qualsiasi problema puoi lasciare un commento</strong>).</p>
<p><strong>N.B.</strong> Prima di continuare a leggere e se non hai ancora le conoscenze base ti consiglio di leggere i precedenti articoli che riguardano lo <strong>sviluppo di applicazioni Facebook</strong>, dato che verranno date alcune cose per scontate.</p>
<p>Ma non preoccuparti, <strong>è tutto spiegato qui</strong>:<br />
<a title="Creiamo insieme la nostra prima applicazione Facebook – Primi  Passi" href="../2010/06/facebook/creiamo-insieme-la-nostra-prima-applicazione-facebook-%e2%80%93-primi-passi/">Creiamo insieme la nostra prima applicazione Facebook – Primi Passi</a><br />
<a title="Creiamo insieme la nostra prima applicazione Facebook –  Impostiamo Tutte Le Opzioni" href="../2010/06/facebook/creiamo-insieme-la-nostra-prima-applicazione-facebook-%e2%80%93-impostiamo-tutte-le-opzioni/">Creiamo insieme la nostra prima applicazione Facebook – Impostiamo Tutte Le Opzioni</a><br />
<a title="Visualizza il Feed RSS del tuo blog su Facebook creando  un’applicazione ed invita i tuoi amici ad usarla" href="../2010/06/facebook/visualizza-il-feed-rss-del-tuo-blog-su-facebook-creando-un%e2%80%99applicazione-ed-invita-i-tuoi-amici-ad-usarla/">Visualizza il Feed RSS del tuo blog su Facebook creando un’applicazione ed invita i tuoi amici ad usarla</a></p>
<p><span style="text-decoration: underline;"> </span></p>
<p><span id="more-384"></span></p>
<p><strong>IN COSA CONSISTE L’APPLICAZIONE</strong></p>
<p><strong> </strong></p>
<p>Questa <strong>applicazione Facebook </strong>ti permette di <strong>visualizzare la mappa di Google Maps </strong>ed inserirvi un posto che hai visitato correlato da una descrizione.</p>
<p>Una volta inserita la località le <strong>API</strong> troveranno automaticamente le <strong>coordinate</strong> (se esiste) e l’applicazione memorizzerà queste informazioni in un database (che dovrà risiedere sul tuo hosting).</p>
<p>In sostanza, l’applicazione <strong>mostra i luoghi visitati</strong> da te e tutti coloro che l’hanno utilizzata.<br />
Inutile dirlo, l’applicazione possiede tutti i controlli principali della <strong>Google Maps</strong> (zoom, satellite etc…).</p>
<p>In questo momento l’applicazione è piuttosto semplice dato che non include particolari funzionalità che ho intenzione di mettere, resta comunque molto più <strong>complessa</strong> della <a href="http://www.computergeek.it/2010/06/facebook/visualizza-il-feed-rss-del-tuo-blog-su-facebook-creando-un%e2%80%99applicazione-ed-invita-i-tuoi-amici-ad-usarla/">precedente</a>.</p>
<p>Senza che mi dilungo troppo nella spiegazione di cosa fa l’applicazione (dato che lo vedrai tu stesso con il link che ti fornirò) cominciamo subito a spiegarti il <strong>codice che ho utilizzato</strong> (ometterò ciò che ho già spiegato negli articoli precedenti, ma trovi comunque il <strong>codice completo in fondo all’articolo</strong>).</p>
<p>Eccoti allora le istruzioni per far <strong>interagire correttamente le API di Google Maps all’interno di un’applicazione Facebook</strong>.</p>
<p><strong>OPERAZIONI PRELIMINARI </strong></p>
<p>Prima di cimentarti nella creazione di questa applicazione <strong>devi creare</strong> <strong>tramite</strong> il pannello di amministrazione di <strong>PhpMyAdmin</strong> (o similari) che ti è fornito dal tuo hosting <strong>una nuova tabella in MySQL</strong>. Meglio se crei un intero database (se ti è possibile) <strong>interamente dedicato alle applicazioni Facebook </strong>che di volta in volta svilupperai.</p>
<p>Ad ogni modo la tabella che ho preso in considerazione per questo <strong>tutorial </strong>si chiama “punti” e ha i seguenti campi:</p>
<p><strong>id</strong> | BIGINT | AUTO_INCREMENT<strong>Facebook_id </strong>| BIGINT<br />
<strong>latitudine</strong> | BIGINT | NOT_NULL | DEFAULT: 0<br />
<strong>longitudine</strong> | BIGINT | NOT_NULL | DEFAULT: 0<br />
<strong>descrizione</strong> | TEXT<br />
<strong>citta</strong> | TEXT</p>
<p><strong>N.B.</strong> Voglio ricordarti che nell’articolo <strong>non</strong> è spiegato tutto il codice, ma solo le parti che riguardano l’utilizzo di <strong>Google Maps</strong> e le rispettive <strong>API all’interno di Facebook</strong>. Puoi visualizzare il codice completo scaricandolo dal link in fondo e chiedendo qualsiasi cosa <strong>attraverso i commenti</strong>.</p>
<p><strong>INTEGRIAMO GOOGLE MAPS API</strong></p>
<p>Con questo codice vai ad <strong>includere la tua API di Google Maps</strong>. E’ una chiave che <strong>devi richiedere</strong> tu stesso direttamente tramite <a href="http://code.google.com/intl/it-IT/apis/maps/signup.html">questa pagina web</a>, inserire il tuo sito web e automaticamente ti viene assegnata una <strong>CHIAVE API per utilizzare le Google Maps all’interno del tuo sito</strong>.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://maps.google.com/maps?file=api&amp;v=2&amp;key=TUA_API_GOOGLE_MAPS&quot;</span> type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre>
</div>
</div>
<p><strong>FUNCTION CREATEMARKER</strong></p>
<p>Con questa funzione <strong>crei un etichetta </strong>(label o <strong>marker</strong>) sulla mappa con le indicazioni che passi come parametro.<br />
I parametri sono:  ID di Facebook, coordinate, località e descrizione.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> createMarker<span style="color: #009900;">&#40;</span>user<span style="color: #339933;">,</span>point<span style="color: #339933;">,</span>citta<span style="color: #339933;">,</span>descrizione<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #006600; font-style: italic;">// Variabile marker</span>
<span style="color: #003366; font-weight: bold;">var</span> marker <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> GMarker<span style="color: #009900;">&#40;</span>point<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// Crea listener per il click sull'oggetto</span>
GEvent.<span style="color: #660066;">addListener</span><span style="color: #009900;">&#40;</span>marker<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
marker.<span style="color: #660066;">openInfoWindowHtml</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;L'utente &lt;strong&gt;&quot;</span> <span style="color: #339933;">+</span> user <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot; &lt;/strong&gt;ha visitato &lt;br&gt; &lt;strong&gt;&quot;</span> <span style="color: #339933;">+</span> citta <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;&lt;/strong&gt;&lt;br/&gt;&quot;</span> <span style="color: #339933;">+</span> descrizione<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">return</span> marker<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre>
</div>
</div>
<p><strong>FUNCTION LOAD</strong></p>
<p>Questa funzione viene eseguita appena viene avviata l’applicazione. Non fa altro che <strong>creare la mappa integrandone tutti i controlli</strong> necessari. Vengono inoltre <strong>creati</strong> anche <strong>i marker</strong> riferiti ai luoghi già visitati dagli altri utenti <strong>prelevandoli dal database</strong>.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> load<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>GBrowserIsCompatible<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #006600; font-style: italic;">// Crea mappa</span>
geocoder <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> GClientGeocoder<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
map <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> GMap2<span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;map&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// Visualizza i controlli - TIPO MAPPA (Mappa, Satellite)</span>
map.<span style="color: #660066;">addControl</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> GMapTypeControl<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// Visualizza i controlli - ZOOM GRANDE</span>
map.<span style="color: #660066;">addControl</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> GSmallMapControl<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// Imposta le coordinate iniziali</span>
map.<span style="color: #660066;">setCenter</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> GLatLng<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">45.4419</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">9.1419</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">6</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #339933;">&lt;?</span>php
<span style="color: #006600; font-style: italic;">// Esegue una query sul database per prelevare i dati</span>
$connection <span style="color: #339933;">=</span> mysql_connect<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;host&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;username&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;password&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
mysql_select_db<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;nome database&quot;</span><span style="color: #339933;">,</span> $connection<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
error_reporting<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$sql <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;SELECT DISTINCT * FROM punti WHERE Facebook_id = &quot;</span> . <span style="color: #660066;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span>$user<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
$result <span style="color: #339933;">=</span> mysql_query<span style="color: #009900;">&#40;</span>$sql<span style="color: #339933;">,</span>$connection<span style="color: #009900;">&#41;</span> or die<span style="color: #009900;">&#40;</span>$sql. <span style="color: #3366CC;">&quot; &quot;</span> . <span style="color: #660066;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// Stampa tutti i marker risultanti dalla query sulla mappa</span>
<span style="color: #000066; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>$row <span style="color: #339933;">=</span> mysql_fetch_assoc<span style="color: #009900;">&#40;</span>$result<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
echo <span style="color: #3366CC;">&quot;point = new GLatLng({$row[&quot;</span>latitudine<span style="color: #3366CC;">&quot;]},{$row[&quot;</span>longitudine<span style="color: #3366CC;">&quot;]});<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
echo <span style="color: #3366CC;">&quot;map.addOverlay(createMarker('&quot;</span>.<span style="color: #660066;">addslashes</span><span style="color: #009900;">&#40;</span>$row<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;Facebook_id&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>.<span style="color: #3366CC;">&quot;', point, '&quot;</span>.<span style="color: #660066;">addslashes</span><span style="color: #009900;">&#40;</span>$row<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;citta&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>.<span style="color: #3366CC;">&quot;','&quot;</span>.<span style="color: #660066;">addslashes</span><span style="color: #009900;">&#40;</span>$row<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;descrizione&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>.<span style="color: #3366CC;">&quot;'));<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//echo &quot;map.addOverlay(new GMarker(point));\n&quot;;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">?&gt;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre>
</div>
</div>
<p><strong>FUNCTION SALVASEGNALAZIONE</strong></p>
<p>Con questa funzione vengono passati tutti i parametri ad una pagina che si occupa di <strong>raccoglierli e memorizzarli nel database</strong> tramite una <strong>richiesta AJAX con JQUERY di tipo POST</strong>.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> salvaSegnalazione<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
latLong<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> user <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;input#user&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> citta <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;input#citta&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> desc <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;input#desc&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> dataString <span style="color: #339933;">=</span> <span style="color: #3366CC;">'citta='</span><span style="color: #339933;">+</span> citta <span style="color: #339933;">+</span><span style="color: #3366CC;">'&amp;user='</span><span style="color: #339933;">+</span> user <span style="color: #339933;">+</span><span style="color: #3366CC;">'&amp;desc='</span><span style="color: #339933;">+</span> desc <span style="color: #339933;">+</span><span style="color: #3366CC;">'&amp;latitudine='</span><span style="color: #339933;">+</span> latitudine <span style="color: #339933;">+</span><span style="color: #3366CC;">'&amp;longitudine='</span><span style="color: #339933;">+</span> longitudine<span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> url <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;salvasegnalazione.php&quot;</span><span style="color: #339933;">;</span>
&nbsp;
$.<span style="color: #660066;">post</span><span style="color: #009900;">&#40;</span>
url<span style="color: #339933;">,</span>
dataString<span style="color: #339933;">,</span>
<span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Eseguito&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre>
</div>
</div>
<p><strong>FUNCTION LATLONG</strong></p>
<p>Questa è una funzione molto importante perché riceve come parametro la località che hai visitato ed in caso esiste ne vengono <strong>determinate le coordinate</strong>. Se vengono determinate le coordinate la mappa viene <strong>automaticamente spostata</strong> alla località che hai appena inserito.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> latLong<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> address <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;input#citta&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
geocoder.<span style="color: #660066;">getLatLng</span><span style="color: #009900;">&#40;</span>address<span style="color: #339933;">,</span>
<span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>point<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>point<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #006600; font-style: italic;">// Indirizzo non trovato, cerca nel database.</span>
<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>address <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot; non trovato!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000066; font-weight: bold;">else</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #006600; font-style: italic;">// Inserisco i dati nel modulo</span>
<span style="color: #003366; font-weight: bold;">var</span> user <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;input#user&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
latitudine <span style="color: #339933;">=</span> point.<span style="color: #660066;">y</span><span style="color: #339933;">;</span>
longitudine <span style="color: #339933;">=</span> point.<span style="color: #660066;">x</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// Muovo la mappa</span>
map.<span style="color: #660066;">setCenter</span><span style="color: #009900;">&#40;</span>point<span style="color: #339933;">,</span> <span style="color: #CC0000;">15</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// Aggiungo marker</span>
map.<span style="color: #660066;">addOverlay</span><span style="color: #009900;">&#40;</span>createMarker<span style="color: #009900;">&#40;</span>user<span style="color: #339933;">,</span>point<span style="color: #339933;">,</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;input#citta&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;input#desc&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre>
</div>
</div>
<p><strong>IL FILE “SALVASEGNALAZIONE.PHP”</strong></p>
<p>Questo file si occupa di ricevere ed elaborare tutti i dati che devono essere <strong>memorizzati all’interno del database MySQL</strong>.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;?</span>php
require<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;config/config.inc.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$is_tab <span style="color: #339933;">=</span> isset<span style="color: #009900;">&#40;</span>$_POST<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'fb_sig_in_profile_tab'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>$is_tab<span style="color: #009900;">&#41;</span>
$user <span style="color: #339933;">=</span> $facebook<span style="color: #339933;">-&gt;</span>require_login<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$connection <span style="color: #339933;">=</span> mysql_connect<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;host&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;user&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;pass&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
mysql_select_db<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;nome database&quot;</span><span style="color: #339933;">,</span> $connection<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$user2 <span style="color: #339933;">=</span> $_POST<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'user'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
$latitudine <span style="color: #339933;">=</span> $_POST<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'latitudine'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
$longitudine <span style="color: #339933;">=</span> mysql_real_escape_string<span style="color: #009900;">&#40;</span>$_POST<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'longitudine'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
$desc <span style="color: #339933;">=</span> mysql_real_escape_string<span style="color: #009900;">&#40;</span>$_POST<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'desc'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
$citta <span style="color: #339933;">=</span> mysql_real_escape_string<span style="color: #009900;">&#40;</span>$_POST<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'citta'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$sql <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;INSERT INTO punti(Facebook_id,latitudine,longitudine,descrizione,citta) VALUES(
'$user',
'$latitudine',
'$longitudine',
'$desc',
'$citta');&quot;</span><span style="color: #339933;">;</span>
&nbsp;
mysql_query<span style="color: #009900;">&#40;</span>$sql<span style="color: #009900;">&#41;</span> or die<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Errore: &quot;</span> . $sql . <span style="color: #3366CC;">&quot; &quot;</span> . <span style="color: #660066;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">?&gt;</span></pre>
</div>
</div>
<p>Questo è tutto. Credo di averti spiegato tutto ciò che serve per far <strong>interagire Google Maps con Facebook</strong>.</p>
<p><strong>Se vuoi dare un’occhiata all’applicazione eccoti il link</strong>, l’ho chiamata “Dove Sei Stato?” J<br />
<a href="http://apps.facebook.com/dove_sei_stato/">http://apps.facebook.com/dove_sei_stato/</a></p>
<p><strong>Qui puoi trovare il codice completo</strong>:<br />
Note: There is a file embedded within this post, please visit this post to download the file.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/tWeXQzqWC-79RinXxoLp86T-p20/0/da"><img src="http://feedads.g.doubleclick.net/~a/tWeXQzqWC-79RinXxoLp86T-p20/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tWeXQzqWC-79RinXxoLp86T-p20/1/da"><img src="http://feedads.g.doubleclick.net/~a/tWeXQzqWC-79RinXxoLp86T-p20/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.computergeek.it/2010/06/programmazione/fai-interagire-le-api-di-google-maps-con-le-applicazioni-di-facebook/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>LOG4J: come creare e gestire un file di log nelle nostre applicazioni Java con Eclipse</title>
		<link>http://www.computergeek.it/2010/06/programmazione/log4j-come-creare-e-gestire-un-file-di-log-nelle-nostre-applicazioni-java-con-eclipse/</link>
		<comments>http://www.computergeek.it/2010/06/programmazione/log4j-come-creare-e-gestire-un-file-di-log-nelle-nostre-applicazioni-java-con-eclipse/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 15:01:39 +0000</pubDate>
		<dc:creator>Raffaello Marasco</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[creare log]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[file di log]]></category>
		<category><![CDATA[LOG4E]]></category>
		<category><![CDATA[LOG4J]]></category>

		<guid isPermaLink="false">http://computergeek.it/blog/?p=377</guid>
		<description><![CDATA[
Sicuramente ti sarà capitato, se sei un <strong>programmatore</strong> ed utilizzi il <strong>Java</strong>, di avere bisogno di creare un file che effettui il <strong>log delle operazioni</strong> più critiche o che comunque reputi più importanti.

L’importanza di un <strong>file di log</strong> è data da diversi fattori e dai più svariati motivi. Puoi ad esempio risalire facilmente a <strong>tutte le operazioni effettuate dal programma</strong>, compreso i valori assunti dalle variabili. Puoi fornire un’assistenza più efficiente al cliente, prendendo visione del log creato dal tuo programma e andando direttamente a stabilire qual è la causa dell’eventuale <strong>problema</strong> che si è riscontrato e <strong>come risolverlo</strong>.

Senza dubbio, un file di log è inutile quando si tratta di poche righe di codice, ma diventa essenziale quando il codice diventa più complesso e soprattutto quando si lavora in un team.

Quali <strong>strumenti</strong> abbiamo che ci vengono incontro a queste esigenze? Come possiamo <strong>creare un file di log</strong> delle azioni del nostro programma nella maniera più comoda e veloce possibile?]]></description>
			<content:encoded><![CDATA[<p><a href="http://computergeek.it/wp-content/uploads/2010/06/Thumbnail-Creare-Log-Java-Con-Eclipse.gif"><img class="alignnone size-full wp-image-378" title="Thumbnail Creare Log Java Con Eclipse" src="http://computergeek.it/wp-content/uploads/2010/06/Thumbnail-Creare-Log-Java-Con-Eclipse.gif" alt="" width="285" height="150" /></a></p>
<p>Sicuramente ti sarà capitato, se sei un <strong>programmatore</strong> ed utilizzi il <strong>Java</strong>, di avere bisogno di creare un file che effettui il <strong>log delle operazioni</strong> più critiche o che comunque reputi più importanti.</p>
<p>L’importanza di un <strong>file di log</strong> è data da diversi fattori e dai più svariati motivi. Puoi ad esempio risalire facilmente a <strong>tutte le operazioni effettuate dal programma</strong>, compreso i valori assunti dalle variabili. Puoi fornire un’assistenza più efficiente al cliente, prendendo visione del log creato dal tuo programma e andando direttamente a stabilire qual è la causa dell’eventuale <strong>problema</strong> che si è riscontrato e <strong>come risolverlo</strong>.</p>
<p>Senza dubbio, un file di log è inutile quando si tratta di poche righe di codice, ma diventa essenziale quando il codice diventa più complesso e soprattutto quando si lavora in un team.</p>
<p>Quali <strong>strumenti</strong> abbiamo che ci vengono incontro a queste esigenze? Come possiamo <strong>creare un file di log</strong> delle azioni del nostro programma nella maniera più comoda e veloce possibile?</p>
<p><span id="more-377"></span></p>
<p>Lo <strong>strumento</strong> di cui ti sto per parlare si chiama <strong>LOG4J</strong> e serve esattamente a questo, <strong>creare automaticamente un file di log</strong> contenente le operazioni che il programma ha effettuato. Ovviamente dovrai essere tu ad indicare le operazioni che vuoi vengano inserite nel log.</p>
<p>La prima cosa da fare è <strong>scaricare LOG4J </strong>(ovviamente è <strong>gratuito</strong>) e puoi farlo da qui:<br />
<a href="http://bit.ly/abtBtV">http://bit.ly/abtBtV</a></p>
<p>Per l’esempio di questo articolo, ci serviremo di un programma molto elementare che ho realizzato in Java.</p>
<p>Non fa altro che effettuare una conversione Euro/Dollaro inserito il fattore di conversione. Ma a noi serve sapere solo <strong>come inserire LOG4J al nostro programma e come farlo funzionare</strong> (poi i casi in cui può essere utilizzato sono illimitati).</p>
<p>Puoi trovare il <strong>download dell’esempio con il sorgente in fondo all’articolo</strong>.</p>
<p>Dopo aver <strong>scaricato</strong> ed estratto <strong>l’archivio di LOG4J</strong>, ti troverai di fronte ad un bel po’ di file che includono però anche tutta la <strong>documentazione</strong> necessaria. Ciò che serve a te però è solamente il file .JAR che si trova nella cartella principale: <strong>log4j-1.2.16.jar</strong></p>
<p>Dopo aver creato un <strong>nuovo progetto Java con Eclipse</strong>, come di consueto ti è stata creata la cartella “<em>src</em>” che contiene appunto i <strong>sorgenti dell’applicazione</strong>. Se vuoi puoi inserire nel tuo progetto il mio sorgente di esempio, altrimenti puoi usarne uno tuo, è una tua scelta e non cambia assolutamente nulla.</p>
<p>Nella stessa directory in cui si trova “<em>src</em>” crea un’altra cartella chiama “<em>lib</em>” in cui devi incollare il file .JAR che ti ho indicato prima.</p>
<p>Fatto questo, <strong>aggiornando Eclipse</strong> con F5 dovresti vedere una nuova cartella al livello di “<em>src</em>” in <strong>Package Explore</strong>, per l’appunto “<em>lib</em>”. Seleziona il file JAR che ci trovi all’interno, click di tasto destro e vai su “<em>Build Path -&gt; Add to Build Path</em>”. Adesso la <strong>libreria sarà disponibile</strong> per essere utilizzata nell’intero progetto.</p>
<p>Prima di poter utilizzare la libreria però abbiamo bisogno di creare un file all’interno della cartella “<em>src</em>” chiamando “<em>log4j.properties</em>” con questo contenuto (puoi inserirlo col Blocco Note):</p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family:monospace;">log4j.<span style="color: #006633;">rootLogger</span><span style="color: #339933;">=</span>DEBUG, A1
log4j.<span style="color: #006633;">appender</span>.<span style="color: #006633;">A1</span><span style="color: #339933;">=</span>org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">log4j</span>.<span style="color: #006633;">FileAppender</span>
log4j.<span style="color: #006633;">appender</span>.<span style="color: #006633;">A1</span>.<span style="color: #003399;">File</span><span style="color: #339933;">=</span>log.<span style="color: #006633;">txt</span>
log4j.<span style="color: #006633;">appender</span>.<span style="color: #006633;">A1</span>.<span style="color: #006633;">layout</span><span style="color: #339933;">=</span>org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">log4j</span>.<span style="color: #006633;">PatternLayout</span>
log4j.<span style="color: #006633;">appender</span>.<span style="color: #006633;">A1</span>.<span style="color: #006633;">layout</span>.<span style="color: #006633;">ConversionPattern</span><span style="color: #339933;">=%-</span>4r <span style="color: #009900;">&#91;</span><span style="color: #339933;">%</span>t<span style="color: #009900;">&#93;</span> <span style="color: #339933;">%-</span>5p <span style="color: #339933;">%</span>c <span style="color: #339933;">%</span>x <span style="color: #339933;">-</span> <span style="color: #339933;">%</span>m<span style="color: #339933;">%</span>n</pre>
</div>
</div>
<p>Così facendo impostiamo come <strong>canale di uscita</strong> (dove verranno visualizzati i nostri log) proprio nel file “<em>log.txt</em>” in modo da essere facilmente consultabile.</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/06/Creare-File-di-Log-Con-Eclipse.gif"><img class="alignnone size-full wp-image-379" title="Creare File di Log Con Eclipse" src="http://computergeek.it/wp-content/uploads/2010/06/Creare-File-di-Log-Con-Eclipse.gif" alt="" width="264" height="172" /></a></p>
<p>Ora possiamo passare alla modifica del nostro codice per <strong>l’inserimento dei log</strong>.</p>
<p>Anzitutto, inserisci in alto al tuo sorgente questa <strong>riga di codice</strong> che non fa altro che <strong>importare le funzionalità di LOG4J</strong></p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.log4j.Logger</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>Adesso devi creare <strong>l’oggetto logger</strong> per poterlo utilizzare all’interno del tuo programma. Puoi farlo attraverso questa semplice riga. Ciò che puoi modificare a tuo piacimento sono il <strong>nome del logger</strong> e il <strong>nome della classe</strong> che deve corrispondere a quella che stai utilizzando. Qui è stato utilizzato per semplicità proprio il nome logger all’oggetto.</p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> Logger logger <span style="color: #339933;">=</span> Logger.<span style="color: #006633;">getLogger</span><span style="color: #009900;">&#40;</span>LoggingTrial.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>Adesso puoi usare <strong>l’oggetto logger</strong> per <strong>creare i tuoi log</strong> attraverso i vari metodi che mette a disposizione, qui te ne elenco alcuni ma ti consiglio di <strong>leggere la documentazione</strong> per avere una visione più completa ed un utilizzo più approfondito di questa libreria.</p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family:monospace;">logger.<span style="color: #006633;">debug</span><span style="color: #009900;">&#40;</span>“Messaggio di DEBUG”<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
logger.<span style="color: #006633;">info</span><span style="color: #009900;">&#40;</span>“Messaggio INFO”<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
logger.<span style="color: #006633;">warn</span><span style="color: #009900;">&#40;</span>“Messaggio di WARNING”<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
logger.<span style="color: #006633;">error</span><span style="color: #009900;">&#40;</span>“Messaggio di ERRORE”<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
logger.<span style="color: #006633;">fatal</span><span style="color: #009900;">&#40;</span>“Messaggio FATAL”<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>Per <strong>l’utilizzo dei metodi </strong>puoi servirti della <strong>prassi di programmazione</strong>:<br />
<strong>DEBUG</strong>: Puoi tracciare un pò tutte le operazioni che il programma esegue, soprattutto i valori che le variabili assumono nel corso dell’esecuzione.<strong>INFO</strong>: Puoi utilizzarlo per tracciare i principali eventi di sistema come ad esempio l’avvio e l’arresto dell’applicazione.<br />
<strong>WARN</strong>: Con questo prendi nota delle situazioni non proprio ottimali ma che comunque non<br />
provocano l’arresto o problem seri al software.<br />
<strong>ERROR</strong>: Con error puoi tracciare tutti gli errori che non sono previsti.<br />
<strong>FATAL</strong>: Lo puoi utilizzare per tracciare tutte quelle operazioni che causano il blocco del programma.</p>
<p>Passiamo adesso al <strong>codice da inserire</strong> per utilizzare i metodi. Per farlo come ti ho già detto useremo un applicazione in Java semplicissima, eccola:</p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">Log</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Scanner</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.log4j.Logger</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> LoggingTrial
<span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> Logger logger <span style="color: #339933;">=</span> Logger.<span style="color: #006633;">getLogger</span><span style="color: #009900;">&#40;</span>LoggingTrial.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">double</span> cambio<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">double</span> euro<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">double</span> dollars<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">boolean</span> sw<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>logger.<span style="color: #006633;">isDebugEnabled</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
logger.<span style="color: #006633;">debug</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;main(String[]) - Avvio&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
Scanner in <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Scanner<span style="color: #009900;">&#40;</span><span style="color: #003399;">System</span>.<span style="color: #006633;">in</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Inserisci il tasso di conversione: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
cambio <span style="color: #339933;">=</span> in.<span style="color: #006633;">nextDouble</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
sw <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
logger.<span style="color: #006633;">info</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Tasso di conversione: &quot;</span> <span style="color: #339933;">+</span> cambio<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>sw<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Inserisci il valore in dollari: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
dollars <span style="color: #339933;">=</span> in.<span style="color: #006633;">nextDouble</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
euro <span style="color: #339933;">=</span> dollars <span style="color: #339933;">*</span> cambio<span style="color: #339933;">;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Valore in euro: &quot;</span> <span style="color: #339933;">+</span> euro <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;€&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
sw <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>logger.<span style="color: #006633;">isDebugEnabled</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
logger.<span style="color: #006633;">debug</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;main(String[]) - Fine&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre>
</div>
</div>
<p><strong>UTILIZZIAMO LOG4E PER AUTOMATIZZARE L’OPERAZIONE</strong></p>
<p>Tutte queste operazioni e righe di codice però potresti trovarle piuttosto noiose per inserirle <strong>manualmente</strong>. Ecco perché esiste un <strong>plugin gratuito di Eclipse</strong> che serve proprio ad <strong>automatizzare l’inserimento degli avvisi di log</strong>.</p>
<p>Questo <strong>plugin</strong> si chiama <strong>LOG4E</strong> e puoi <strong>scaricarlo direttamente da qui</strong>:<br />
<a href="http://bit.ly/byjXfE">http://bit.ly/byjXfE</a></p>
<p>L’archivio contiene due cartelle: <em>features</em> e <em>plugin </em>che dovrai scompattare direttamente all’interno della cartella principale in cui hai installato <strong>Eclipse</strong>. Una volta fatto avrai aggiunto <strong>LOG4E</strong> a Eclipse.</p>
<p>A questo punto per utilizzarlo devi semplicemente cliccare in <strong>Eclipse</strong> di tasto destro sulla classe a cui vuoi aggiungere il log. Ci troverai una nuova voce, proprio quella di <strong>LOG4E</strong>, andando poi in “<em>Log this class</em>” ti si aprirà la schermata per poter <strong>automaticamente inserire dei logging a livello di DEBUG</strong> per poter tracciare l’avvio e l’uscita di ciascun metodo.</p>
<p>Se hai bisogno di inserire dei log in un punto preciso del tuo codice non devi far altro che posizionarti nel punto in cui vuoi inserirli, cliccare di tasto destro e andare su “<em>LOG4E/Log at this position</em>”. Seleziona la classe e nella schermata successiva devi inserire il messaggio che vuoi visualizzare, i parametri e le variabili disponibili. Un po’ più sotto in “<em>Level</em>” seleziona a quale livello deve appartenere il log (DEBUG, WARN ecc…).</p>
<p>Clicca su “<em>Finish</em>” ed hai terminato, il tuo log è stato inserito in una maniera un po’ più comoda rispetto a quella manuale.</p>
<p>Puoi scaricare direttamente da qui il file contenente il sorgente dell&#8217;applicazione di prova:<br />
Note: There is a file embedded within this post, please visit this post to download the file.</p>
<p>Mi raccomando, <strong>se hai riscontrato qualsiasi tipo di problema non devi far altro che lasciare un commento</strong> e nel più breve tempo possibile ricevere una risposta.</p>
<p>A presto.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/TO7iSGdTkc3samTzQWf4TayPMBM/0/da"><img src="http://feedads.g.doubleclick.net/~a/TO7iSGdTkc3samTzQWf4TayPMBM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/TO7iSGdTkc3samTzQWf4TayPMBM/1/da"><img src="http://feedads.g.doubleclick.net/~a/TO7iSGdTkc3samTzQWf4TayPMBM/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.computergeek.it/2010/06/programmazione/log4j-come-creare-e-gestire-un-file-di-log-nelle-nostre-applicazioni-java-con-eclipse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Visualizza il Feed RSS del tuo blog su Facebook creando un’applicazione ed invita i tuoi amici ad usarla</title>
		<link>http://www.computergeek.it/2010/06/facebook/visualizza-il-feed-rss-del-tuo-blog-su-facebook-creando-un%e2%80%99applicazione-ed-invita-i-tuoi-amici-ad-usarla/</link>
		<comments>http://www.computergeek.it/2010/06/facebook/visualizza-il-feed-rss-del-tuo-blog-su-facebook-creando-un%e2%80%99applicazione-ed-invita-i-tuoi-amici-ad-usarla/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 15:35:34 +0000</pubDate>
		<dc:creator>Raffaello Marasco</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[applicazioni facebook]]></category>
		<category><![CDATA[creare applicazioni facebook]]></category>
		<category><![CDATA[facebook app]]></category>
		<category><![CDATA[facebook developer]]></category>

		<guid isPermaLink="false">http://computergeek.it/blog/?p=370</guid>
		<description><![CDATA[Questa è la <strong>terza parte </strong>della guida alla <strong>creazione di un’applicazione Facebook </strong>di <strong>ComputerGeek</strong>.

Come ho già detto nel primo articolo, sto imparando anch’io ancora adesso come <strong>creare delle applicazioni Facebook </strong>ed ho pensato di rendere noto anche ai lettori di questo blog questo mio viaggio.

Te le consiglio perché da adesso in poi gli articoli riguardanti le <strong>applicazioni Facebook </strong>saranno quasi ed esclusivamente riguardanti il <strong>codice</strong> (opportunamente <strong>spiegato e commentato</strong>).

Passiamo subito alla <strong>parte applicativa </strong>quindi, se tutto è andato nel verso giusto adesso hai creato una <strong>struttura delle cartelle ottimale</strong> per lo sviluppo della tua applicazione ed hai creato, dato un nome ed impostato correttamente tutti i parametri imposti da <strong>Facebook</strong> alla tua prima applicazione.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://computergeek.it/wp-content/uploads/2010/06/Thumbnail-Applicazione-Facebook.gif"><img class="alignnone size-full wp-image-371" title="Thumbnail Applicazione Facebook" src="http://computergeek.it/wp-content/uploads/2010/06/Thumbnail-Applicazione-Facebook.gif" alt="" width="285" height="150" /></a></p>
<p>Questa è la <strong>terza parte </strong>della guida alla <strong>creazione di un’applicazione Facebook </strong>di <strong>ComputerGeek</strong>.</p>
<p>Come ho già detto nel primo articolo, sto imparando anch’io ancora adesso come <strong>creare delle applicazioni Facebook </strong>ed ho pensato di rendere noto anche ai lettori di questo blog questo mio viaggio.</p>
<p>Prima di continuare voglio dirti che per comprendere pienamente questa parte della guida devi <strong>assolutamente leggere </strong>(se non l’hai già fatto) le <strong>precedenti due lezioni </strong>che puoi raggiungere da qui:<br />
<a href="../2010/06/facebook/creiamo-insieme-la-nostra-prima-applicazione-facebook-%e2%80%93-primi-passi/">Creiamo insieme la nostra prima applicazione Facebook – Primi Passi</a><br />
<a href="../2010/06/facebook/creiamo-insieme-la-nostra-prima-applicazione-facebook-%e2%80%93-impostiamo-tutte-le-opzioni/">Creiamo insieme la nostra prima applicazione Facebook – Impostiamo Tutte Le Opzioni</a></p>
<p>Te le consiglio perché da adesso in poi gli articoli riguardanti le <strong>applicazioni Facebook </strong>saranno quasi ed esclusivamente riguardanti il <strong>codice</strong> (opportunamente <strong>spiegato e commentato</strong>).</p>
<p>Passiamo subito alla <strong>parte applicativa </strong>quindi, se tutto è andato nel verso giusto adesso hai creato una <strong>struttura delle cartelle ottimale</strong> per lo sviluppo della tua applicazione ed hai creato, dato un nome ed impostato correttamente tutti i parametri imposti da <strong>Facebook</strong> alla tua prima applicazione.</p>
<p><span id="more-370"></span><br />
Adesso non ti resta che sapere come dar vita alla tua idea e la cosa migliore da fare, è un esempio. Ti mostrerò come ho costruito e sviluppato io la mia prima <strong>Facebook App </strong>spiegandoti tutto il codice in modo tale da poterlo gestire a tuo piacimento senza aver bisogno di essere un esperto.</p>
<p>Il codice che ti mostrerò è stato ripulito in modo tale da ottenere un codice più scorrevole e con più parametrizzazioni possibili.</p>
<p>Il programma che andremo a sviluppare, mostrerà in un App di Facebook <strong>gli ultimi articoli inseriti in ComputerGeek.it </strong>con la possibilità di <strong>invitare i propri amici ad utilizzare l’applicazione</strong>. Ovviamente capito il meccanismo, puoi creare qualsiasi cosa tu voglia una volta capito <strong>come utilizzare le API </strong>messe a disposizione da <strong>Facebook</strong>.</p>
<p><span style="text-decoration: underline;"><strong>Il file “config.inc.php”</strong></span></p>
<p>In questo file andremo ad inserire tutte quelle istruzioni che sono <strong>universali nella nostra applicazione</strong> e che quindi possono essere ripetute più volte nei vari file che la compongono. Inserendole tutte in “<em>config.inc.php</em>” possiamo semplicemente richiamare quel file senza doverle ogni volta ripetere. Il <strong>codice è spiegato attraverso i commenti</strong>:</p>
<div class="wp_syntax">
<div class="code">
<pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">// INCLUDO LE LIBRERIE CHE CI SERVONO PER L'APPLICAZIONE: SIMPLEPIE PER IL PARSING DEL FEEDRSS e </span>
<span style="color: #666666; font-style: italic;">// FACEBOOK.PHP CHE RAPPRESENTA LA FACEBOOK PHP CLIENT LIBRARY</span>
<span style="color: #b1b100;">require</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'DOCUMENT_ROOT'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;/facebook_app/ComputerGeek_XYZ/include/simplepie.inc.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">require</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'DOCUMENT_ROOT'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;/facebook_app/ComputerGeek_XYZ/client/facebook.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// FACEBOOK API KEYS. SONO LE CHIAVI CHE TI VENGONO ASSEGNATE OGNI QUAL VOLTA CREI UN'APPLICAZIONE FACEBOOK.</span>
<span style="color: #000088;">$api_key</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$secret</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// VIENE CREATO UN OGGETTO FACEBOOK</span>
<span style="color: #000088;">$facebook</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Facebook<span style="color: #009900;">&#40;</span><span style="color: #000088;">$api_key</span><span style="color: #339933;">,</span> <span style="color: #000088;">$secret</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// DETTAGLI APPLICAZIONE. SONO IL NOME, LA CANVAS PAGE URL E LA CANVAS CALLBACK URL</span>
<span style="color: #000088;">$appName</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;ComputerGeek Feed&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$appUrl</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://apps.facebook.com/computergeek_feed/&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$appcallbackurl</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://computergeek.it/facebook_app/ComputerGeek_XYZ/&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// URL RSS DEL MIO BLOG (ISCRIVITI! :-)</span>
<span style="color: #000088;">$rssUrl</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://computergeek.it/feed/rss/&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre>
</div>
</div>
<p><span style="text-decoration: underline;"><strong>Il file “index.php”</strong></span></p>
<p>Questa sarà la <strong>home page</strong> della nostra applicazione, la pagina in cui tutti coloro che decideranno di utilizzarla approderanno per primi. Vediamo quindi cosa ho scritto io nel mio caso, nella speranza che possa esserti d’aiuto nello sviluppo di una <strong>tua applicazione personale</strong>:</p>
<div class="wp_syntax">
<div class="code">
<pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">// RICHIAMA IL FILE CONFIG.INC.PHP</span>
<span style="color: #b1b100;">require</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;config/config.inc.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// CHIEDIAMO ALL'UTENTE DI FAR COMPARIRE L'APPLICAZIONE ALL'INTERNO DEL SUO PROFILO</span>
<span style="color: #000088;">$is_tab</span> <span style="color: #339933;">=</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'fb_sig_in_profile_tab'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$is_tab</span><span style="color: #009900;">&#41;</span>
<span style="color: #000088;">$user</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$facebook</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">require_login</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">// RICHIAMO GLI STILI DA APPLICARE ALLA NOSTRA APPLICAZIONE</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;style type=&quot;text/css&quot;&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">require</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;include/style.css&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;/style&gt;'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// CARICHIAMO IL FEED RSS CON IL PARSING TRAMITE SIMPLEPIE</span>
<span style="color: #000088;">$feed</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> SimplePie<span style="color: #009900;">&#40;</span><span style="color: #000088;">$rssUrl</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$feed</span><span style="color: #339933;">-&gt;</span> <span style="color: #004000;">set_cache_location</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'cache'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$feed</span><span style="color: #339933;">-&gt;</span> <span style="color: #004000;">init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$feed</span> <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">handle_content_type</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
&lt;!-- FB:HEADER E' UNA ISTRUZIONE FBML DI CUI TI HO PARLATO --&gt;
&lt;fb:header&gt;
Articoli ComputerGeek.it
&lt;/fb:header&gt;
&nbsp;
&lt;!-- QUI HO INSERITO IL LINK CHE PORTA ALLA PAGINA PER INVITARE I TUOI AMICI AD UTILIZZARE L'APPLICAZIONE --&gt;
  &lt;a href=&quot;include/invitaAmici.php&quot;&gt;
    Invita i tuoi amici ad usare l'applicazione
    &lt;/a&gt;
&nbsp;
&lt;!-- QUI VIENE EFFETTUATO IL PARSING FORNITO DA SIMPLEPIE PER CIASCUN ARTICOLO PRESO DAL FEED RSS DEL MIO BLOG --&gt;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;ul&gt;'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$feed</span> <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">get_items</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$item</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;div&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$item</span> <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">get_permalink</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span> <span style="color: #0000ff;">'&quot;&gt;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$item</span> <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">get_title</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;/a&gt;&lt;/li&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;/div&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;/ul&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre>
</div>
</div>
<p><strong>P.S.</strong> Puoi vedere <strong>tutte le istruzioni FBML</strong> messe a disposizione da <strong>Facebook</strong> a questo indirizzo:<br />
 <a href="http://developers.facebook.com/docs/reference/fbml/">http://developers.facebook.com/docs/reference/fbml/</a></p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/06/HOME-APPLICAZIONE.gif"><img class="alignnone size-medium wp-image-374" title="HOME APPLICAZIONE" src="http://computergeek.it/wp-content/uploads/2010/06/HOME-APPLICAZIONE-300x105.gif" alt="" width="300" height="105" /></a></p>
<p><span style="text-decoration: underline;"><strong>Il file “invitaAmici.php”</strong></span></p>
<p>Puoi creare ed inserire questo file all’interno della cartella “<em>include</em>”.</p>
<p>Con questo codice sarai in grado di inserire una <strong>funzione importantissima</strong> all’interno del tuo programma, quella di poter <strong>invitare gli amici ad utilizzare l’applicazione</strong>. Altrimenti che <strong>applicazione sociale</strong> è? :-)<br />
Questo codice è funzionante, ma ti assicuro che all’inizio ho avuto un po’ di grattacapi.</p>
<p>Comunque se hai qualche problema con questo o gli altri codici <strong>non esitare ad inserire un commento</strong> e sicuramente <strong>riceverai una risposta</strong>.</p>
<div class="wp_syntax">
<div class="code">
<pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">require</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;../config/config.inc.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// RICHIEDO l'IFRAME IN CUI VERRA' VISUALIZZATA LA PAGINA PER IL MODULO DI INVITO</span>
<span style="color: #000088;">$facebook</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">require_frame</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$user</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$facebook</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">require_login</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// CON QUESTO IF VIENE FATTA UNA SELEZIONE TRA GLI INVITI GIA' MANDATI E QUELLI ANCORA DA MANDARE.</span>
<span style="color: #666666; font-style: italic;">// SE E' IMPOSTATA LA VARIABILE IDS VUOL DIRE CHE I NOSTRI INVITI SONO STATI MANDATI, ALTRIMENTI VIENE MOSTRATA LA LISTA DI</span>
<span style="color: #666666; font-style: italic;">// AMICI A CUI MANDARE ANCORA L'INVITO</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;ids&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;center&gt;Grazie per aver invitato &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;ids&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; dei tuoi amici ad usare &lt;b&gt;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>http://apps.facebook.com/computergeek_feed/<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$appName</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;/a&gt;&lt;/b&gt;.&lt;br&gt;&lt;br&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;h2&gt;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>http://apps.facebook.com/computergeek_feed/<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;Clicca qui per tornare a &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$appName</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;/a&gt;.&lt;/h2&gt;&lt;/center&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">// VIENE FATTA UNA RICHIESTA AL DATABASE DI FACEBOOK (TRAMITE IL LINGUAGGIO FQL, MOLTO SIMILE ALL'SQL)</span>
<span style="color: #666666; font-style: italic;">// RECUPERANDO GLI UTENTI CHE GIA' SONO ISCRITTI ALL'APPLICAZIONE </span>
<span style="color: #000088;">$fql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1='</span><span style="color: #339933;">.</span><span style="color: #000088;">$user</span><span style="color: #339933;">.</span><span style="color: #0000ff;">') AND is_app_user = 1'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$_friends</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$facebook</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">api_client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// ESTRAE GLI USERID E LI INSERISCE IN UNA LISTA (ARRAY)</span>
<span style="color: #000088;">$friends</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_friends</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_friends</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_friends</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$friend</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$friends</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$friend</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'uid'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// CONVERTE LA LISTA DEGLI ID UTENTE IN UNA STRINGA</span>
<span style="color: #000088;">$friends</span> <span style="color: #339933;">=</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">','</span><span style="color: #339933;">,</span> <span style="color: #000088;">$friends</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// TESTO CHE VERRA' VISUALIZZATO ALL'AMICO CHE VIENE INVITATO</span>
<span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;fb:name uid=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$user</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span> firstnameonly=<span style="color: #000099; font-weight: bold;">\&quot;</span>true<span style="color: #000099; font-weight: bold;">\&quot;</span> shownetwork=<span style="color: #000099; font-weight: bold;">\&quot;</span>false<span style="color: #000099; font-weight: bold;">\&quot;</span>/&gt; sta usando l'applicazione &lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #006699; font-weight: bold;">{$appUrl}</span>/<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$appName</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;/a&gt; e pensa possa esserti utile!<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;fb:req-choice url=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$appUrl</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span> label=<span style="color: #000099; font-weight: bold;">\&quot;</span>Aggiungi &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$appName</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; al tuo profilo<span style="color: #000099; font-weight: bold;">\&quot;</span>/&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
&lt;!-- QUESTA E' LA CREAZIONE DEL MODULO DI INVITO VERO E PROPRIO FATTA COL COMANDO FBML FB:REQUEST-FORM E FB:MULTI-FRIEND-SELECTOR
IN ACTION: LA PAGINA DA VISUALIZZARE DOPO AVER ACCETTATO L'INVITO (OPPURE QUANDO CHI INVITA CLICCA SU 'SALTA'
     IN TYPE: IL NOME DELLA VOSTRA APPLICAZIONE
     IN ACTIONTEXT: IL MESSAGGIO CHE DEVE APPARIRE IN ALTO A CHI INVITA
--&gt;
&lt;fb:request-form action=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$appUrl</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot; method=&quot;post&quot; type=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$appName</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot; content=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span>  <span style="color: #b1b100;">echo</span> <span style="color: #990000;">htmlentities</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$content</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot;&gt;
&lt;fb:multi-friend-selector actiontext=&quot;Ecco l'elenco dei tuoi amici che ancora non usano <span style="color: #000000; font-weight: bold;">&lt;?php</span>  <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$appName</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>. Invitali, &amp;egrave; gratis!&quot; exclude_ids=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$friends</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot; /&gt;
&lt;/fb:request-form&gt;
&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">// Fine if </span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre>
</div>
</div>
<p><a href="http://computergeek.it/wp-content/uploads/2010/06/Invita-Amici-Applicazione.gif"><img class="alignnone size-medium wp-image-372" title="Invita Amici Applicazione" src="http://computergeek.it/wp-content/uploads/2010/06/Invita-Amici-Applicazione-300x55.gif" alt="" width="300" height="55" /></a></p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/06/Invio-Richiesta.gif"><img class="alignnone size-medium wp-image-373" title="Invio Richiesta" src="http://computergeek.it/wp-content/uploads/2010/06/Invio-Richiesta-300x73.gif" alt="" width="300" height="73" /></a></p>
<p>Con quest’ultimo file abbiamo terminato. Questa è un’<strong>applicazione</strong> decisamente <strong>completa</strong> e pronta per essere utilizzata da te e tutti i tuoi amici. Ovviamente non mi sono soffermato sugli stili e su altri codici che non riguardano propriamente la <strong>programmazione in Facebook</strong>, dato che sarebbe stato troppo lungo farlo.</p>
<p>Come ti ho già detto comunque, non dimenticarti di <strong>lasciare un commento </strong>se hai provato a <strong>sviluppare un’applicazione di questo tipo</strong> e per qualsiasi problema che hai riscontrato nello sviluppo.</p>
<p><strong>P.S.</strong> Mi farebbe piacere se anche tu utilizzassi <strong>l’applicazione ComputerGeek Feed</strong> su <strong>Facebook invitando gli amici</strong> a cui credi possa interessare.</p>
<p>L’indirizzo per raggiungerla (anche se credo ormai l’avrai capito) è:<br />
<a href="http://apps.facebook.com/computergeek_feed/">http://apps.facebook.com/computergeek_feed/</a></p>
<p><strong>Grazie davvero per la collaborazione.</strong></p>

<p><a href="http://feedads.g.doubleclick.net/~a/Z_xuqqLOKmJ3g_yZdiiNEwUv-6s/0/da"><img src="http://feedads.g.doubleclick.net/~a/Z_xuqqLOKmJ3g_yZdiiNEwUv-6s/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Z_xuqqLOKmJ3g_yZdiiNEwUv-6s/1/da"><img src="http://feedads.g.doubleclick.net/~a/Z_xuqqLOKmJ3g_yZdiiNEwUv-6s/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.computergeek.it/2010/06/facebook/visualizza-il-feed-rss-del-tuo-blog-su-facebook-creando-un%e2%80%99applicazione-ed-invita-i-tuoi-amici-ad-usarla/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Creiamo insieme la nostra prima applicazione Facebook – Impostiamo Tutte Le Opzioni</title>
		<link>http://www.computergeek.it/2010/06/facebook/creiamo-insieme-la-nostra-prima-applicazione-facebook-%e2%80%93-impostiamo-tutte-le-opzioni/</link>
		<comments>http://www.computergeek.it/2010/06/facebook/creiamo-insieme-la-nostra-prima-applicazione-facebook-%e2%80%93-impostiamo-tutte-le-opzioni/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 14:52:32 +0000</pubDate>
		<dc:creator>Raffaello Marasco</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[applicazioni facebook]]></category>
		<category><![CDATA[creare applicazioni facebook]]></category>
		<category><![CDATA[facebook app]]></category>
		<category><![CDATA[facebook developer]]></category>

		<guid isPermaLink="false">http://computergeek.it/blog/?p=358</guid>
		<description><![CDATA[Finalmente con qualche giorno di ritardo sono riuscito a scrivere la <strong>seconda parte</strong> della guida dedicata alla <strong>creazione di applicazioni Facebook</strong>. Come ti ho promesso, non è difficile, ma ho dovuto prima capire alcune cose ed entrare nella logica della <strong>programmazione in Facebook</strong> per potertele riversare nella maniera più <strong>semplice</strong>, <strong>corretta</strong> e <strong>aggiornata</strong> possibile.

In ogni caso, sono riuscito a <strong>creare e pubblicare la mia prima</strong>, semplicissima <strong>applicazione Facebook</strong>.

E se leggi l’articolo e la guida fino in fondo, <strong>saprai crearla anche tu</strong>, puoi contarci.]]></description>
			<content:encoded><![CDATA[<p><a href="http://computergeek.it/wp-content/uploads/2010/06/Thumb_Facebook_Applicazione1.gif"><img class="alignnone size-full wp-image-359" title="Thumb_Facebook_Applicazione" src="http://computergeek.it/wp-content/uploads/2010/06/Thumb_Facebook_Applicazione1.gif" alt="" width="285" height="150" /></a></p>
<p>Finalmente con qualche giorno di ritardo sono riuscito a scrivere la <strong>seconda parte</strong> della guida dedicata alla <strong>creazione di applicazioni Facebook</strong>. Come ti ho promesso, non è difficile, ma ho dovuto prima capire alcune cose ed entrare nella logica della <strong>programmazione in Facebook</strong> per potertele riversare nella maniera più <strong>semplice</strong>, <strong>corretta</strong> e <strong>aggiornata</strong> possibile.</p>
<p>In ogni caso, sono riuscito a <strong>creare e pubblicare la mia prima</strong>, semplicissima <strong>applicazione Facebook</strong>.</p>
<p>E se leggi l’articolo e la guida fino in fondo, <strong>saprai crearla anche tu</strong>, puoi contarci.</p>
<p><span id="more-358"></span><br />
La <a href="http://www.computergeek.it/2010/06/facebook/creiamo-insieme-la-nostra-prima-applicazione-facebook-%e2%80%93-primi-passi/">prima parte della guida</a> a dire la verità è stata molto, molto introduttiva e per questo ho cercato di farmi perdonare scrivendo la seconda parte in maniera un po’ più approfondita.</p>
<p>Prima di cominciare a scrivere del codice vero e proprio voglio farti vedere quel’è la <strong>struttura delle directory</strong> che ho utilizzato io (e che ti consiglio di seguire) per <strong>sviluppare l’applicazione</strong>:</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/06/Struttura-cartelle-applicazione-Facebook.gif"><img class="alignnone size-full wp-image-360" title="Struttura cartelle applicazione Facebook" src="http://computergeek.it/wp-content/uploads/2010/06/Struttura-cartelle-applicazione-Facebook.gif" alt="" width="151" height="169" /></a></p>
<p>Crea una cartella chiamandola col <strong>nome</strong> della tua nuova applicazione. Al suo interno crea le cartelle “<em>cache</em>”, “<em>client</em>”, “<em>config</em>”, “<em>images</em>” e “<em>include</em>”.</p>
<p>All’interno della cartella “<em>client</em>” devi inserire la <strong>Facebook PHP Client Library</strong> che puoi scaricare da qui:<br />
<a href="http://github.com/facebook/php-sdk/archives/master">http://github.com/facebook/php-sdk/archives/master</a></p>
<p><strong>N.B. </strong>La pecca di queste librerie è che funzionano solo con <strong>PHP5</strong> ed ho notato che parecchi servizi di hosting utilizzano ancora il PHP4. Tra cui anche il mio, ma ho notato che c’è la possibilità di <strong>abilitare il PHP5</strong>. Io l’ho fatto senza problemi e ti consiglio di farlo anche tu.</p>
<p>Se invece non hai proprio la possibilità di utilizzare la versione 5 di PHP, girando un po’ in rete ho trovato la <strong>libreria per il PHP4</strong>, non l’ho provata ma spero possa esserti d’aiuto. Puoi scaricarla da qui:<br />
<a href="http://www.computergeek.it/risorse/Facebook%20PHP4%20Client%20Library.rar">www.computergeek.it/risorse/Facebook%20PHP4%20Client%20Library.rar</a></p>
<p>Nella cartella “<em>config</em>” invece, devi creare un file con questo nome ed estensione “<em>config.inc.php</em>”.</p>
<p>La cartella “<em>images</em>” serve per eventuali immagini che vuoi utilizzare nella tua applicazione.</p>
<p>La cartella “<em>include</em>” verrà utilizzata per inserire librerie, stili ed altri oggetti che eventualmente devi utilizzare nello <strong>sviluppo dell’applicazione</strong>.</p>
<p>Qui dobbiamo inserire alcune componenti che ci renderanno la vita più facile, ovvero <strong>FBToolBox</strong> di cui puoi scaricare la versione modificata di <strong>Daniele Ghidoli</strong> di <strong><a href="http://www.bigthink.it/">BigThink</a></strong> da qui: <a href="http://www.bigthink.it/download/10/">http://www.bigthink.it/download/10/</a> e <strong>SimplePie</strong> che ci sarà utile per il <strong>parsing del Feed RSS</strong> (ti spiegherò dopo perché), puoi scaricarlo da qui: <a href="http://simplepie.org/downloads/">http://simplepie.org/downloads/</a></p>
<p>Se vi dovesse servire, in questa cartella puoi inserire anche il file per gli <strong>stili CSS</strong>.</p>
<p>Nella <strong>cartella principale dell’applicazione </strong>invece puoi creare il classico “<em>index.php</em>” che sarà la <strong>home</strong> della nostra applicazione su Facebook.</p>
<p>Ok, dopo aver fatto un po’ di ordine nella <strong>struttura delle cartelle</strong> che utilizzeremo possiamo cominciare a <strong>creare</strong> davvero <strong>la nostra applicazione impostandone tutti i passaggi</strong> necessari per una corretta esecuzione.</p>
<p>Entra nell’applicazione <strong>Developer di Facebook</strong> e clicca su “<em>Imposta Nuova Applicazione</em>” in alto a destra.</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/06/Imposta-Nuova-Applicazione.gif"><img class="alignnone size-full wp-image-364" title="Imposta Nuova Applicazione" src="http://computergeek.it/wp-content/uploads/2010/06/Imposta-Nuova-Applicazione.gif" alt="" width="207" height="47" /></a></p>
<p>Adesso devi semplicemente <strong>scegliere il nome per la tua nuova applicazione</strong> (mi raccomando a rispettare i termini di Facebook), mettere il flag su “<em>Sono d’accordo</em>” e cliccare su “<em>Crea un’applicazione</em>”.</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/06/Nome-nuova-applicazione1.gif"><img class="alignnone size-medium wp-image-365" title="Nome nuova applicazione" src="http://computergeek.it/wp-content/uploads/2010/06/Nome-nuova-applicazione1-300x95.gif" alt="" width="300" height="95" /></a></p>
<p>Adesso verrai automaticamente inviato sulla pagina per <strong>l’impostazione di tutte le informazioni </strong>che riguardano la tua applicazione.<br />
Le prime informazioni che ti verranno subito mostrate sono la tua <strong>Chiave API </strong>(pubblica) e il tuo <strong>Segreto</strong> (chiave privata). Ti consiglio di <strong>annotartele su un documento di testo</strong> perché sono molto importanti.<br />
Le successive opzioni della schermata <strong>Principale</strong> riguardano la <em>Descrizione</em>, l’<em>Icona</em>, il <em>Logo</em>, l’<em>Email</em> dello sviluppatore ed altre informazioni che puoi rifinire anche in un secondo momento.</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/06/Impostazioni-Facebook.gif"><img class="alignnone size-medium wp-image-362" title="Impostazioni Facebook" src="http://computergeek.it/wp-content/uploads/2010/06/Impostazioni-Facebook-300x118.gif" alt="" width="300" height="118" /></a></p>
<p>Ciò che devi invece immediatamente fare è andare sulla scheda <strong>Modelli</strong> (la selezioni dal menù a sinistra) e scegliere la tua <strong>Canvas Page URL</strong> (che è l’indirizzo di Facebook della tua applicazione, del tipo: http://apps.facebook.com/nome_applicazione/ ) e la tua <strong>Canvas Callback URL</strong> (l’indirizzo della tua applicazione sul tuo hosting personale, questa pagina verrà richiamata automaticamente da Facebook).</p>
<p>Fatto questo, un po’ più sotto troverai la voce “<em>Canvas Settings</em>” ed è molto importante che imposti come “<em>Metodi di restituzione</em>” l’<strong>FBML</strong> e non l’<strong>iFrame</strong>, altrimenti non saranno disponibili i <strong>comandi FBML</strong>.<br />
Terminate queste poche impostazioni puoi cliccare su “<em>Salva modifiche</em>”.</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/06/Impostazioni-Facebook-02.gif"><img class="alignnone size-medium wp-image-363" title="Impostazioni Facebook 02" src="http://computergeek.it/wp-content/uploads/2010/06/Impostazioni-Facebook-02-300x113.gif" alt="" width="300" height="113" /></a></p>
<p>Seppur in maniera approssimativa e superficiale, <strong>hai impostato tutto ciò che serve al tuo programma per funzionare su Facebook e per utilizzare il linguaggio FBML</strong> (capirai in seguito la sua estrema comodità).</p>
<p>Da ora in poi tutto ciò che inserirai nella pagina “<em>index.php</em>” della root della tua applicazione apparirà sulla pagina <a href="http://apps.facebook.com/nome_applicazione/">http://apps.facebook.com/nome_applicazione/</a> proprio sotto forma di <strong>applicazione Facebook</strong>.</p>
<p>La seconda parte della guida finisce qui, ti chiedo davvero scusa se ancora non ho inserito del codice. Avevo intenzione di inserirlo in questa seconda parte ma poi mi sono accorto che sarebbe stato troppo lungo perciò ho deciso di rimandare al prossimo articolo per renderlo anche più pulito.</p>
<p><strong>P.S.</strong> Non dimenticarti di <strong>lasciare un commento</strong> in merito all’articolo. Hai avuto dei problemi o non capisci qualche impostazione? Chiedi aiuto con un <strong>commento</strong> o nel <strong>forum di discussione</strong>, sono qui pronto ad aiutarti.</p>
<p><strong>P.P.S.</strong> Se non l’hai ancora fatto di consiglio di <strong><a href="http://www.computergeek.it/feed/rss/">iscriverti gratuitamente ai Feed RSS</a></strong> per rimanere sempre aggiornato quando viene pubblicato un nuovo articolo su ComputerGeek e non perderti le prossime lezioni.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/tu_CnAasnGvA7PeCtIU1XE77YEM/0/da"><img src="http://feedads.g.doubleclick.net/~a/tu_CnAasnGvA7PeCtIU1XE77YEM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tu_CnAasnGvA7PeCtIU1XE77YEM/1/da"><img src="http://feedads.g.doubleclick.net/~a/tu_CnAasnGvA7PeCtIU1XE77YEM/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.computergeek.it/2010/06/facebook/creiamo-insieme-la-nostra-prima-applicazione-facebook-%e2%80%93-impostiamo-tutte-le-opzioni/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Creiamo insieme la nostra prima applicazione Facebook – Primi Passi</title>
		<link>http://www.computergeek.it/2010/06/facebook/creiamo-insieme-la-nostra-prima-applicazione-facebook-%e2%80%93-primi-passi/</link>
		<comments>http://www.computergeek.it/2010/06/facebook/creiamo-insieme-la-nostra-prima-applicazione-facebook-%e2%80%93-primi-passi/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 13:29:33 +0000</pubDate>
		<dc:creator>Raffaello Marasco</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[applicazioni facebook]]></category>
		<category><![CDATA[creare applicazioni facebook]]></category>
		<category><![CDATA[facebook app]]></category>
		<category><![CDATA[facebook developer]]></category>

		<guid isPermaLink="false">http://computergeek.it/blog/?p=352</guid>
		<description><![CDATA[Facebook è un mondo troppo grande per non entrare a farne parte nella maniera migliore possibile: <strong>creando applicazioni per gli utenti</strong>. E’ da un po’ che volevo provarci e finalmente ho deciso di cominciare, ma non senza i miei lettori. Mi sono munito di guide cartacee e non, per iniziare un viaggio e spero che al termine sia io che tutti coloro che mi seguono e/o che decideranno di seguirmi riusciranno a creare in maniera del tutto autonoma <strong>applicazioni per Facebook</strong>, sia semplici che complesse, e chissà, magari ricavarne anche qualche soldo (uno dei fattori che mi ha convinto ad entrare in questo settore :-)]]></description>
			<content:encoded><![CDATA[<p><a href="http://computergeek.it/wp-content/uploads/2010/06/Thumb_Facebook_Applicazione.gif"><img class="alignnone size-full wp-image-353" title="Thumb_Facebook_Applicazione" src="http://computergeek.it/wp-content/uploads/2010/06/Thumb_Facebook_Applicazione.gif" alt="" width="285" height="150" /></a></p>
<p>Facebook è un mondo troppo grande per non entrare a farne parte nella maniera migliore possibile: <strong>creando applicazioni per gli utenti</strong>. E’ da un po’ che volevo provarci e finalmente ho deciso di cominciare, ma non senza i miei lettori. Mi sono munito di guide cartacee e non, per iniziare un viaggio e spero che al termine sia io che tutti coloro che mi seguono e/o che decideranno di seguirmi riusciranno a creare in maniera del tutto autonoma <strong>applicazioni per Facebook</strong>, sia semplici che complesse, e chissà, magari ricavarne anche qualche soldo (uno dei fattori che mi ha convinto ad entrare in questo settore :-)</p>
<p>Forse lo sai già, ma tantissimi <strong>programmatori professionisti </strong>hanno deciso di buttarsi a capofitto nella <strong>programmazione di applicazioni per Facebook</strong>. Il motivo di tutto questo è ovvio: Facebook ha raggiunto la cifra di ben <strong>350.000.000 di iscritti </strong>(ho scritto volutamente gli zeri, per farti capire l’importanza di questo numero). Probabilmente, mentre sto scrivendo la cifra è salita ancora e non si arresterà per un bel po’. Facebook ha avuto il più alto tasso di crescita mai visto ed è l’unico concorrente che <strong><a href="http://www.google.com/">Google</a></strong> al momento teme. Non ricordo la data precisa  ma Facebook nel marzo, 2009 o 2010 non ricordo, ha superato Google (.com, precisiamo) in traffico, ed è un risultato strepitoso che lascia molto da pensare.</p>
<p><span id="more-352"></span><br />
In questo primo articolo non parlerò ancora di alcun codice, ma vedremo insieme le <strong>terminologie utilizzate</strong> e faremo insieme il <strong>primo passo</strong> per cominciare a costruire la nostra <strong>prima applicazione con Facebook</strong>.</p>
<p>Tutto quello che ti chiedo è di <strong>partecipare a questo progetto</strong> attivamente. <strong>Lasciami commenti</strong>, dimmi cosa ne pensi, mostrami la tua applicazione o ancora meglio, dimmi quale sarebbe l’applicazione ideale per te su Facebook. Vedrai che ne trarremo entrambi dei benefici.</p>
<p>Ancora meglio, puoi <strong><a href="http://computergeek.it/feed/rss/">abbonarti gratuitamente ai Feed RSS</a></strong> di ComputerGeek così da non perderti le future lezioni di questa serie di articoli.</p>
<p>Di seguito ti spiego le prima cose da fare, la terminologia e il materiale base da scaricare.</p>
<p>So che ti può sembrare dura all’inizio, specie se ancora non conosci i linguaggi base del web come l’<strong>HTML</strong> o il <strong>PHP</strong>, ma cercherò di inserire più spiegazioni possibili nei codici che via via inserirò per rendertelo il più possibile di <strong>facile comprensione</strong>.</p>
<p>Ok, possiamo finalmente cominciare ed entrare nel fantastico mondo delle <strong>applicazioni Facebook</strong>.</p>
<p>Molto probabilmente crederai che <strong>creare applicazioni facebook </strong>sia difficile, o che venga utilizzato un linguaggio specialistico difficile da imparare. Ma voglio sfatare queste tue credenze dicendoti che puoi programmare queste applicazioni con i <strong>linguaggi più comunemente utilizzati per il web: PHP, HTML, o Javascript.</strong> Ed è vero, forse si tratta di un linguaggio specialistico, il <strong>FBML</strong> (<em>Facebook Markup Language</em>) un sottoinsieme dell’HTML, quindi niente di nuovo e il <strong>FBJS</strong> (<em>Facebook JavaScript</em>) un sottoinsieme del Javascript, ancora niente di nuovo. Facebook però ci dà un vantaggio piuttosto elevato, quello di mettere a <strong>disposizione degli sviluppatori le proprie API </strong>(che dovrai scaricare).</p>
<p>In particolare, ciò che ci permette di fare l’<strong>FBML</strong> è di creare della applicazioni che abbiano la <strong>stessa grafica di Facebook</strong>, in modo da farle sembrare integrate perfettamente all’interno del sito web.</p>
<p>Il protocollo su cui si basano le <strong>API</strong> di Facebook è quello <strong>REST</strong>, cioè effettua delle richieste ai server di Facebook basate su <strong>GET </strong>o <strong>POST</strong>, rendendo così le API <strong>compatibili con quasi tutti i linguaggi di programmazione del web </strong>(in primis, quello che useremo maggiormente, il <strong>PHP</strong>).</p>
<p>Ecco le prime 4 azioni che devi compiere se vuoi <strong>programmare un’applicazione per Facebook</strong>:</p>
<p>1)      <strong>Registrati su Facebook</strong>. Lo so, sono sicuro che l’hai già un profilo su Facebook ma l’ho scritto ugualmente per completezza.</p>
<p>2)      Devi <strong>installare l’applicazione “Developer” su Facebook</strong>, da utilizzare come pannello di controllo per tutte le tue applicazioni.</p>
<p>Per farlo vai su <a href="http://www.facebook.com/developers/">http://www.facebook.com/developers/</a> e conferma l’installazione dell’applicazione (se ti viene richiesta) e poi clicca su “<em>Imposta Nuova Applicazione</em>” (Set New App) in alto a destra. A questo punto ti verrà chiesto di inserire subito il <strong>nome della tua applicazione</strong>.</p>
<p>3)      Questo è un passo opzionale ma ci avvantaggia molto. Scarica le <strong>Facebook PHP Client Library</strong> che puoi trovare a questo indirizzo: <a href="http://github.com/facebook/php-sdk/archives/master">http://github.com/facebook/php-sdk/archives/master</a> clicca su “ZIP” se hai Windows e scarica il pacchetto.</p>
<p>4)      <strong>Devi avere un tuo servizio di hosting</strong> (a pagamento o gratuito) per ospitare tutti i file che andremo a creare. Purtroppo non è possibile inviare i nostri file direttamente ai server di Facebook.</p>
<p>Terminato il download per ora puoi lasciare tutto così com’è. Perché dalla prossima lezione cominciamo a vedere come implementarlo e come scrivere le prime porzioni di codice per realizzare la nostra prima applicazione Facebook.</p>
<p>Se vuoi <strong>sentiti libero di commentare questo articolo</strong>, per qualsiasi critica o suggerimento in merito a questo piccolo progetto che voglio cominciare e portare avanti <strong>insieme a te</strong>.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/L3za2Qb4CIPTUlT5ia94WQJB9ig/0/da"><img src="http://feedads.g.doubleclick.net/~a/L3za2Qb4CIPTUlT5ia94WQJB9ig/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/L3za2Qb4CIPTUlT5ia94WQJB9ig/1/da"><img src="http://feedads.g.doubleclick.net/~a/L3za2Qb4CIPTUlT5ia94WQJB9ig/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.computergeek.it/2010/06/facebook/creiamo-insieme-la-nostra-prima-applicazione-facebook-%e2%80%93-primi-passi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Guida per il recupero dei dati, ecco come recuperare le email di Outlook e Thunderbird con OLmailRestore – Parte 5</title>
		<link>http://www.computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ecco-come-recuperare-le-email-di-outlook-e-thunderbird-con-olmailrestore-%e2%80%93-parte-5/</link>
		<comments>http://www.computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ecco-come-recuperare-le-email-di-outlook-e-thunderbird-con-olmailrestore-%e2%80%93-parte-5/#comments</comments>
		<pubDate>Mon, 17 May 2010 16:45:49 +0000</pubDate>
		<dc:creator>Raffaello Marasco</dc:creator>
				<category><![CDATA[Ottimizzazione]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[recuperare email]]></category>
		<category><![CDATA[recupero email]]></category>
		<category><![CDATA[ripristinare email]]></category>
		<category><![CDATA[ripristino email]]></category>
		<category><![CDATA[ripristino thunderbird]]></category>

		<guid isPermaLink="false">http://computergeek.it/blog/?p=342</guid>
		<description><![CDATA[Eccoci qui giunti all’ultimo articolo di <strong>ComputerGeek</strong> riguardante la <strong>Guida per il recupero dei dati</strong>. Se hai seguito tutti i post precedenti puoi aver notato come abbiamo parlato del <strong>ripristino</strong> di quasi tutti i tipi di file del tuo sistema.

Oggi parliamo invece di come puoi <strong>recuperare le tue email</strong>, con due diversi metodi, uno per <strong>Outlook</strong> e uno per <strong>Thunderbird</strong>, che sono più o meno i client di posta più utilizzati al momento.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://computergeek.it/wp-content/uploads/2010/05/Thumbnail_Recuperare_Email.gif"><img class="alignnone size-full wp-image-341" title="Thumbnail_Recuperare_Email" src="http://computergeek.it/wp-content/uploads/2010/05/Thumbnail_Recuperare_Email.gif" alt="" width="285" height="150" /></a></p>
<p>Eccoci qui giunti all’ultimo articolo di <strong>ComputerGeek</strong> riguardante la <strong>Guida per il recupero dei dati</strong>. Se hai seguito tutti i post precedenti puoi aver notato come abbiamo parlato del <strong>ripristino</strong> di quasi tutti i tipi di file del tuo sistema.</p>
<p>Ma anche se non l’hai fatto non preoccuparti, qui di seguito ti riporto i link diretti ai precedenti articoli:<br />
-  <strong>Recupero file eliminati</strong> (<a title="Guida per il recupero dei dati, ripristinare i file eliminati  con Undelete Plus – Parte 1" href="http://computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ripristinare-i-file-eliminati-con-undelete-plus-parte-1/">Guida per il recupero dei dati, ripristinare i file eliminati con Undelete Plus – Parte 1</a>)<br />
-  <strong>Recupero hard disk</strong> (<a title="Guida per il recupero dei dati, recuperiamo gli Hard Disk  danneggiati o corrotti con TestDisk – Parte 2" href="http://computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-recuperiamo-gli-hard-disk-danneggiati-o-corrotti-con-testdisk-%e2%80%93-parte-2/">Guida per il recupero dei dati, recuperiamo gli Hard Disk danneggiati o corrotti con TestDisk – Parte 2</a>)<br />
-  <strong>Recupero CD/DVD</strong> (<a title="Guida per il recupero dei dati, ecco come leggere i cd o dvd  danneggiati con CD Recovery Toolbox – Parte 3" href="http://computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ecco-come-leggere-i-cd-o-dvd-danneggiati-con-cd-recovery-toolbox-%e2%80%93-parte-3/">Guida per il recupero dei dati, ecco come leggere i cd o dvd danneggiati con CD Recovery Toolbox – Parte 3</a>)<br />
-  <strong>Recupero foto, filmati e archivi</strong> (<a title="Guida per il recupero dei dati, ecco come recuperare foto,  filmati e archivi con PC Inspector, DivFix++ e Object Fix Zip – Parte 4" href="http://computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ecco-come-recuperare-foto-filmati-e-archivi-con-pc-inspector-divfix-e-object-fix-zip-%e2%80%93-parte-4/">Guida per il recupero dei dati, ecco come recuperare foto, filmati e archivi con PC Inspector, DivFix++ e Object Fix Zip – Parte 4</a>)</p>
<p>Oggi parliamo invece di come puoi <strong>recuperare le tue email</strong>, con due diversi metodi, uno per <strong>Outlook</strong> e uno per <strong>Thunderbird</strong>, che sono più o meno i client di posta più utilizzati al momento.</p>
<p><span id="more-342"></span><br />
<strong>COME RECUPERARE LE EMAIL ELIMINATE DI OUTLOOK TRAMITE OLMAILRESTORE</strong></p>
<p>Per farlo utilizzeremo un programma in tedesco, di cui non è disponibile una traduzione, né in inglese né tanto meno in italiano. Comunque anche questa volta ti guiderò <strong>passo passo</strong> facendoti vedere i vari screenshot e quali sono le varie opzioni che hai bisogno di impostare. Il software ovviamente è <strong>gratuito</strong> e puoi trovare il <strong>link per il download</strong> in fondo all’articolo.</p>
<p>Quando clicchi sul file di <strong>installazione</strong> non farti spaventare dal tedesco, la procedura è sempre la stessa. Clicca sempre su “<em>Weiter</em>” (Avanti) e poi su “<em>Installieren</em>”.</p>
<p>Quando termina la procedura lascia spuntato “<em>Programm starten</em>” e clicca quindi su “<em>Fertig stellen</em>” per <strong>lanciare il programma</strong>.</p>
<p>Bene, la procedura di installazione, nonostante la lingua tedesca, l’abbiamo terminata.</p>
<p>Quando si aprirà il software, ecco la schermata che ti troverai di fronte</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/05/OLmailRestore.gif"><img class="alignnone size-medium wp-image-339" title="OLmailRestore" src="http://computergeek.it/wp-content/uploads/2010/05/OLmailRestore-300x217.gif" alt="" width="300" height="217" /></a></p>
<p>Lascia spuntato “<em>OLmailRestore starten</em>” e clicca su “<em>Weiter</em>”.</p>
<p>Nella prossima schermata devi <strong>selezionare</strong> su quale <strong>dispositivo</strong> vuoi che <strong>OLmailRestore</strong> controlli se ci sono delle <strong>email che possono essere recuperate </strong>e che verranno indicate come file PST.</p>
<p>Clicca quindi sulla freccetta accanto al simbolo del cerca (la lente di ingrandimento) e seleziona quale dispositivo vuoi controllare.</p>
<p><strong>Terminata la ricerca</strong>, se il software ha trovato dei file PST che possono essere recuperati, te li segnalerà. Tu devi <strong>selezionarli</strong> con l’apposita spunta sulla checkbox laterale e clicca di nuovo su “<em>Weiter</em>” cominciando così la <strong>procedura di recupero</strong>. Una volta completato, il ripristino dei file ti verrà notificato tramite un bollino verde.</p>
<p>A questo punto puoi cliccare su “<em>Fertig stellen</em>” per chiudere il programma.</p>
<p>Tutte le email che <strong><a href="http://www.za-ass-software.de/">OLmailRestore</a></strong> è stato in grado di recuperare sono state ripristinate nella cartella della <strong>Posta eliminata di Outlook</strong>.</p>
<p>Comunque, nel mio caso non c’è stata nessuna <strong>email da recuperare</strong>, anche perché non uso Outlook ma <strong>Thunderbird</strong>. Ecco quindi la schermata che si aprirà se non ci sarà nessuna email da recuperare, in questo caso puoi semplicemente chiudere il programma cliccando sulla “X” in alto a destra.</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/05/OLmailRestore_02.gif"><img class="alignnone size-medium wp-image-340" title="OLmailRestore_02" src="http://computergeek.it/wp-content/uploads/2010/05/OLmailRestore_02-300x219.gif" alt="" width="300" height="219" /></a></p>
<p><strong>COME RECUPERARE LE EMAIL ELIMINATE DI THUNDERBIRD</strong></p>
<p>Fortunatamente, non hai bisogno di installare nessun programma per <strong>ripristinare</strong> le <strong>email eliminate accidentalmente in Thunderbird</strong>.</p>
<p>Ora ti descriverò una semplice procedura da fare che con molta probabilità ti permetterà di <strong>recuperare le tue email</strong>.</p>
<p>Ecco cosa devi fare:</p>
<p>Anzitutto, controlla e assicurati che la cartella contenente le tue email non sia compressa.</p>
<p>Per farlo devi chiudere <strong>Thunderbird</strong> e andare al seguente percorso, che può variare da un sistema operativo all’altro ma fondamentalmente si trova sempre nella stessa posizione (io tengo conto di Windows 7): “<em>C:\Utenti\Nome utente\AppData\Roaming\Thunderbird</em>”.</p>
<p>Molto probabilmente la cartella AppData sarà nascosta, quindi per vederla devi <strong>abilitare la visualizzazione di file e cartelle nascoste</strong>.</p>
<p>Fatto questo devi trovare la cartella che contiene tutti i <strong>tuoi account di posta elettronica</strong> di Thunderbird. Nel mio caso il percorso era questo, ma a te potrebbe essere diverso: “<em>Profiles\Default\Mail\”.</em></p>
<p>In questa cartella troverai tutti i tuoi account di posta elettronica. Clicca su quello che ti interessa e che <strong>contiene l’email che vuoi cercare di recuperare</strong>.</p>
<p>A questo punto devi ricordare se il <strong>messaggio che vuoi recuperare</strong> si trovava tra le email ricevute, quelle inviate oppure nel cestino. Rispettivamente i file che devi controllare sono <strong>Inbox, Sent e Trash</strong>. Di solito ci sono due versioni delle stesso file, quello che devi aprire con blocco note è quello con la <strong>dimensione maggiore</strong>.</p>
<p>Dopo che avrai aperto il file che ti interessa con blocco note vedrai tutta una seria di carattere abbastanza incomprensibili, entro i quali c’è anche il tuo messaggio. Per trovarlo facilmente puoi usare la <strong>funzione trova</strong> del blocco note.</p>
<p>Dopo che hai trovato l’email che ti interessa, devi dare un occhiata alla sua intestazione e trovare la riga “<em>X-Mozilla-Status: 0009</em>”, ma il numero può anche cambiare. Comunque, cambia quel numero in 0001 e <strong>salva il file</strong>.</p>
<p>Adesso devi <strong>eliminare il file Inbox.msf</strong> nel caso hai cercato l’email tra le email ricevute, oppure cancella <strong>Trash.msf</strong> o <strong>Sent.msf</strong> nei rispettivi casi. In questo modo non farai altro che <strong>ricreare la posta elettronica al riavvio di Thunderbird</strong>.</p>
<p>Detto questo, <strong>l’email che volevi è ritornata al proprio posto</strong>.</p>
<p><strong>Ecco il link per il download di OLmailRestore:</strong><br />
<a href="http://bit.ly/b77fvT">http://bit.ly/b77fvT</a><br />
(Clicca su “<em>Download starten</em>”)</p>

<p><a href="http://feedads.g.doubleclick.net/~a/E4-ZYAhZ6HRCZ2y8vsywFxW0NRQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/E4-ZYAhZ6HRCZ2y8vsywFxW0NRQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/E4-ZYAhZ6HRCZ2y8vsywFxW0NRQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/E4-ZYAhZ6HRCZ2y8vsywFxW0NRQ/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ecco-come-recuperare-le-email-di-outlook-e-thunderbird-con-olmailrestore-%e2%80%93-parte-5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Guida per il recupero dei dati, ecco come recuperare foto, filmati e archivi con PC Inspector, DivFix++ e Object Fix Zip – Parte 4</title>
		<link>http://www.computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ecco-come-recuperare-foto-filmati-e-archivi-con-pc-inspector-divfix-e-object-fix-zip-%e2%80%93-parte-4/</link>
		<comments>http://www.computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ecco-come-recuperare-foto-filmati-e-archivi-con-pc-inspector-divfix-e-object-fix-zip-%e2%80%93-parte-4/#comments</comments>
		<pubDate>Sat, 15 May 2010 18:01:48 +0000</pubDate>
		<dc:creator>Raffaello Marasco</dc:creator>
				<category><![CDATA[Ottimizzazione]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[recuperare foto]]></category>
		<category><![CDATA[recuperare video]]></category>
		<category><![CDATA[recupero foto e video]]></category>
		<category><![CDATA[ripristino video e foto]]></category>

		<guid isPermaLink="false">http://computergeek.it/blog/?p=328</guid>
		<description><![CDATA[
Siamo giunti alla penultima lezione della serie <strong>Guida per il recupero dei dati</strong>. In questo articolo vedremo come <strong>recuperare file</strong> come <strong>foto</strong>, <strong>video</strong> oppure <strong>archivi</strong> utilizzando diversi programmi che andrò a descrivere più o meno dettagliatamente a seconda del formato.

Dopo questa piccola premessa posso cominciare a descriverti dettagliatamente ciascun metodo e ciascun programma.
(Come sempre tutti i link per il download delle risorse e dei programmi utilizzati sono in fondo all’articolo)
]]></description>
			<content:encoded><![CDATA[<p><a href="http://computergeek.it/wp-content/uploads/2010/05/Thumb_Recuperare_Foto_Video_Archivi.gif"><img class="alignnone size-full wp-image-327" title="Thumb_Recuperare_Foto_Video_Archivi" src="http://computergeek.it/wp-content/uploads/2010/05/Thumb_Recuperare_Foto_Video_Archivi.gif" alt="" width="285" height="150" /></a></p>
<p>Siamo giunti alla penultima lezione della serie <strong>Guida per il recupero dei dati</strong>. In questo articolo vedremo come <strong>recuperare file</strong> come <strong>foto</strong>, <strong>video</strong> oppure <strong>archivi</strong> utilizzando diversi programmi che andrò a descrivere più o meno dettagliatamente a seconda del formato.</p>
<p>Come al solito ti ricordo i <strong>link ai precedenti articoli</strong> riguardanti questa serie:<br />
<a title="Guida per il recupero dei dati, ripristinare i file eliminati  con Undelete Plus – Parte 1" href="http://computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ripristinare-i-file-eliminati-con-undelete-plus-parte-1/">Guida per il recupero dei dati, ripristinare i file eliminati con Undelete Plus – Parte 1</a><br />
<a title="Guida per il recupero dei dati, recuperiamo gli Hard Disk  danneggiati o corrotti con TestDisk – Parte 2" href="http://computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-recuperiamo-gli-hard-disk-danneggiati-o-corrotti-con-testdisk-%e2%80%93-parte-2/">Guida per il recupero dei dati, recuperiamo gli Hard Disk danneggiati o corrotti con TestDisk – Parte 2</a><br />
<a title="Guida per il recupero dei dati, ecco come leggere i cd o dvd  danneggiati con CD Recovery Toolbox – Parte 3" href="http://computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ecco-come-leggere-i-cd-o-dvd-danneggiati-con-cd-recovery-toolbox-%e2%80%93-parte-3/">Guida per il recupero dei dati, ecco come leggere i cd o dvd danneggiati con CD Recovery Toolbox – Parte 3</a></p>
<p>Dopo questa piccola premessa posso cominciare a descriverti dettagliatamente ciascun metodo e ciascun programma.<br />
(Come sempre tutti i link per il download delle risorse e dei programmi utilizzati sono in fondo all’articolo)</p>
<p><span id="more-328"></span><br />
<strong>COME RECUPERARE LE FOTO CORROTTE E DANNEGGIATE CON PC INSPECTOR SMART RECOVERY</strong></p>
<p>Uno dei migliori software per <strong>riparare le foto</strong> <strong>corrotte</strong> è sicuramente <strong>PC Inspector Smart Recovery</strong>.</p>
<p>Dopo averlo scaricato dal link suggerito in fondo all’articolo e dopo averlo installato come una normalissima applicazione, aprilo e … molto probabilmente ti darà un errore che riguarda il file <em>gif89.dll</em>.</p>
<p>Ho cercato un po’ su Google e molti altri hanno avuto lo stesso problema, la soluzione suggerita è quella di de-registrare il file <em>gif89.dll </em>tramite il comando “<em>regsvr32 /</em><em>u gif89</em><em>.</em><em>dll</em><em>” </em>digitato in<em> “</em><em>Esegui</em><em>”. </em>Sinceramente non capisco se questa soluzione possa funzionare o meno, a me non ha funzionato. Il problema si risolve in maniera molto molto più semplice: clicca di tasto destro sull’eseguibile di <strong>PC Inspector Smart Recovery</strong> e poi vai su “Esegui come amministratore”. Come per magia il problema non si presenterà, misteri di <strong>Windows</strong>.</p>
<p>Ovviamente, se il problema non ti si è presentato puoi tranquillamente passare avanti.</p>
<p>Una particolarità di questo software è quella di riconoscere direttamente i <strong>dispositivi collegati al computer</strong>, ma anche di recuperare file di formati proprietari come Kodak, Nikon e Olympus.</p>
<p><em><a href="http://computergeek.it/wp-content/uploads/2010/05/PC_Inspector_Smart_Recovery.gif"><img class="alignnone size-medium wp-image-329" title="PC_Inspector_Smart_Recovery" src="http://computergeek.it/wp-content/uploads/2010/05/PC_Inspector_Smart_Recovery-300x218.gif" alt="" width="300" height="218" /></a></em></p>
<p>Anche questo <strong>software</strong> è semplicissimo da impostare, sono solo <strong>tre opzioni </strong>da mettere:<br />
nella parte sinistra abbiamo la <strong>selezione del dispositivo </strong>dal quale vuoi tentare di <strong>recuperare le foto</strong>, ti ricordo che legge qualsiasi dispositivo collegato al computer, incluse fotocamere digitali e penne USB.<br />
La seconda opzione è quella di scegliere il <strong>formato di fotografie </strong>che si vogliono recuperare, l’assortimento è molto vasto quindi credo proprio che non avrai problemi nel trovare il formato adatto a te.<br />
L’altra opzione riguarda la <strong>scelta della destinazione</strong>. Voglio farti notare che non puoi scegliere la cartella di destinazione nello stesso dispositivo in cui effettui la scansione delle foto da recuperare.<br />
Dopo averla scelta, clicca su “<em>Avvio</em>”. Potrebbe apparirti un immagine di <strong>Warning</strong> senza testo.<br />
Clicca su “<em>Si</em>” e come prossima schermata potrebbe uscirti un qualcosa riguardante i <strong>dispositivi NTFS</strong> e la <strong>modalità rapida</strong>. Comunque anche in questo caso stai tranquillo e conferma cliccando su “<em>Ok</em>” per far cominciare la <strong>scansione del dispositivo</strong>.</p>
<p>Come alternativa alle schermate che ti ho detto sopra potrebbe uscirti una che indica che il <strong>dispositivo è danneggiato</strong> e per questo passare alla <strong>modalità intensiva</strong> (oppure interrompere), a me stranamente mi è uscito questo con una pen drive funzionante perfettamente (almeno credo).</p>
<p>Comunque anche in questo caso clicca su <em>“</em><em>Ok</em><em>” </em>senza problemi.</p>
<p><em> </em></p>
<p>Ok, per quanto riguarda il <strong>recupero di foto</strong> abbiamo terminato, spero che questo metodo risolverà il tuo problema.</p>
<p><strong>COME RECUPERARE I VIDEO DANNEGGIATI CON DIVFX++</strong></p>
<p>Dopo averti spiegato come <strong>recuperare file fotografici</strong>, è giusto che ti spieghi anche come recuperare, eventualmente, anche <strong>video corrotti o danneggiati</strong>.</p>
<p>Tutto questo si fa semplicemente con <strong>VirtualDub</strong>, aprendo normalmente il video cliccando su<em> “</em><em>Edit/Open Video File</em><em>” </em>e facendolo ricomporre automaticamente da <strong>VirtualDub</strong>. Ora non dovrai fare altro che salvarlo nuovamente con<em> “</em><em>File/Save as AVI</em><em>”.</em></p>
<p><em> </em></p>
<p>Tuttavia però questa è una soluzione piuttosto semplicistica e potrebbe molte volte fallire. Ciò che potresti utilizzare in questo caso è <strong>DivFix++</strong>, specializzato in video che si interrompono o che non riesci a mandare avanti con l’avanzamento veloce con il tuo lettore divx da tavolo. Un limite però che ha <strong>DivFix++</strong> è che ripara solo file video in <strong>formato DiVx</strong>.</p>
<p>Una qualità però di <strong>DivFix++</strong> che sicuramente apprezzerai è quella di essere <strong>stand-alone</strong> e quindi non ha bisogno di installazione.</p>
<p><em> </em></p>
<p>Una volta aperto il programma ecco la schermata che si presenterà:</p>
<p><em><a href="http://computergeek.it/wp-content/uploads/2010/05/DivFx.gif"><img class="alignnone size-medium wp-image-330" title="DivFx" src="http://computergeek.it/wp-content/uploads/2010/05/DivFx-300x175.gif" alt="" width="300" height="175" /></a></em></p>
<p>Ora clicca su<em> “</em><em>Add Files</em><em>” </em>e seleziona il file video che vuoi <strong>analizzare</strong> ed eventualmente <strong>riparare</strong>.</p>
<p>Dopo averlo aperto clicca su<em> “</em><em>Check Errors</em><em>” </em>per vedere se effettivamente il video contiene degli errori che <strong>DivFx++</strong> può riparare.</p>
<p>(Prima di fare qualsiasi cosa ti consiglio di <strong>creare una copia del file video</strong>, solo per evitare eventuali problemi e non perdere l’originale)</p>
<p><em><a href="http://computergeek.it/wp-content/uploads/2010/05/DivFx_02.gif"><img class="alignnone size-full wp-image-331" title="DivFx_02" src="http://computergeek.it/wp-content/uploads/2010/05/DivFx_02.gif" alt="" width="295" height="151" /></a></em></p>
<p>Dopo aver verificato la presenza di eventuali errori, puoi cliccare sia su<em> “</em><em>Strip Index</em><em>” </em>che <strong>rimuove alcune parti dal tuo video</strong> che lo rendono problematico per l’avanzamento veloce (in questo caso devi togliere la spunta su<em> “</em><em>Cut Out Bad Parts</em><em>” </em>e <em>“</em><em>Keep Original File</em><em>”</em>) e sia su<em> “</em><em>Fix</em><em>”.</em></p>
<p><em> </em></p>
<p>Fatto questo dovresti aver risolto il problema del tuo video. Credimi, <strong>DivFx++</strong> è uno strumento portentoso e molto probabilmente funzionerà.</p>
<p><strong>COME RECUPERARE GLI ARCHIVI ZIP COMPRESSI CON OBJECT FIX ZIP</strong></p>
<p>Dopo aver <strong>scaricato</strong> dal link in fondo all’articolo il programma, devi <strong>installarlo</strong> normalmente. Apri l’eseguibile e la prima cosa che ti verrà chiesta è di <strong>scegliere la lingua</strong>, ovviamente scegli l’Italiano.</p>
<p>Dopo di che si avvierà direttamente una <strong>procedura automatica</strong> che ti permetterà di <strong>recuperare il tuo archivio</strong> in quattro semplici passi, in maniera completamente gratuita e senza sforzi.</p>
<p>Il primo passo è quello di <strong>selezionare l’archivio zip</strong> che si vuole <strong>recuperare</strong>.</p>
<p>(N.B. E’ importante che l’archivio sia in formato .zip, altri formati come il .rar non funzioneranno e ti verrà restituito un errore)</p>
<p>Clicca su<em> “</em><em>Avanti</em><em>” </em>per il prossimo passo.</p>
<p><em><a href="http://computergeek.it/wp-content/uploads/2010/05/Object_Fix_Zip.gif"><img class="alignnone size-medium wp-image-332" title="Object_Fix_Zip" src="http://computergeek.it/wp-content/uploads/2010/05/Object_Fix_Zip-300x239.gif" alt="" width="300" height="239" /></a></em></p>
<p>Il <strong>passo numero due</strong> ti mostra alcune impostazioni che puoi eventualmente modificare, ma io ti consiglio di lasciarle così come sono.</p>
<p><em><a href="http://computergeek.it/wp-content/uploads/2010/05/Object_Fix_Zip_02.gif"><img class="alignnone size-medium wp-image-333" title="Object_Fix_Zip_02" src="http://computergeek.it/wp-content/uploads/2010/05/Object_Fix_Zip_02-300x240.gif" alt="" width="300" height="240" /></a></em></p>
<p>Nel terzo passo il file viene <strong>controllato</strong> ed eventualmente <strong>riparato in maniera automatica</strong>.</p>
<p><em><a href="http://computergeek.it/wp-content/uploads/2010/05/Object_Fix_Zip_03.gif"><img class="alignnone size-medium wp-image-334" title="Object_Fix_Zip_03" src="http://computergeek.it/wp-content/uploads/2010/05/Object_Fix_Zip_03-300x218.gif" alt="" width="300" height="218" /></a></em></p>
<p>L’ultimo passo è semplicemente un riepilogo con alcune operazioni che puoi fare come <strong>esplorare i files zip</strong> riparati oppure i <strong>file estratti direttamente dallo zip</strong>, <strong>recuperare un altro archivio</strong> ed <strong>inviare un commento</strong>.</p>
<p><em><a href="http://computergeek.it/wp-content/uploads/2010/05/Object_Fix_Zip_04.gif"><img class="alignnone size-medium wp-image-335" title="Object_Fix_Zip_04" src="http://computergeek.it/wp-content/uploads/2010/05/Object_Fix_Zip_04-300x240.gif" alt="" width="300" height="240" /></a></em></p>
<p>Con questo ho finalmente concluso questo articolo che ti mostra in maniera abbastanza dettagliata (spero) <strong>come è possibile recuperare foto, video ed archivi con diversi strumenti gratuiti messi a disposizione</strong>.</p>
<p><em> </em></p>
<p><strong>Ecco i diversi link da cui puoi scaricare i vari programmi utilizzati all’interno dell’articolo:<br />
</strong>PC Inspector Smart Recovery<strong>: <a href="http://bit.ly/b7S0A2">http://bit.ly/b7S0A2</a><br />
</strong>Virtual Dub<strong>: <a href="http://bit.ly/wtLgr">http://bit.ly/wtLgr</a><br />
</strong>DivFx++<strong>: <a href="http://bit.ly/bOltgO">http://bit.ly/bOltgO</a><br />
</strong>Object Fix Zip<strong>: <a href="http://bit.ly/dk93Kx">http://bit.ly/dk93Kx</a></strong></p>

<p><a href="http://feedads.g.doubleclick.net/~a/IAIl8izFKpz7MXT7_NzEPbFzh5k/0/da"><img src="http://feedads.g.doubleclick.net/~a/IAIl8izFKpz7MXT7_NzEPbFzh5k/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/IAIl8izFKpz7MXT7_NzEPbFzh5k/1/da"><img src="http://feedads.g.doubleclick.net/~a/IAIl8izFKpz7MXT7_NzEPbFzh5k/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ecco-come-recuperare-foto-filmati-e-archivi-con-pc-inspector-divfix-e-object-fix-zip-%e2%80%93-parte-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Guida per il recupero dei dati, ecco come leggere i cd o dvd danneggiati con CD Recovery Toolbox – Parte 3</title>
		<link>http://www.computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ecco-come-leggere-i-cd-o-dvd-danneggiati-con-cd-recovery-toolbox-%e2%80%93-parte-3/</link>
		<comments>http://www.computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ecco-come-leggere-i-cd-o-dvd-danneggiati-con-cd-recovery-toolbox-%e2%80%93-parte-3/#comments</comments>
		<pubDate>Fri, 14 May 2010 16:10:58 +0000</pubDate>
		<dc:creator>Raffaello Marasco</dc:creator>
				<category><![CDATA[Ottimizzazione]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[cd recovery]]></category>
		<category><![CDATA[cd recovery toolbox]]></category>
		<category><![CDATA[recupero cd]]></category>
		<category><![CDATA[recupero dvd]]></category>
		<category><![CDATA[recupero hard disk]]></category>
		<category><![CDATA[ripristino dati]]></category>

		<guid isPermaLink="false">http://computergeek.it/blog/?p=318</guid>
		<description><![CDATA[Ciao, con l’articolo di oggi, ovvero la <strong>parte terza</strong> della <strong>Guida per il recupero dei dati</strong> di <strong>ComputerGeek</strong> voglio farti vedere come può essere possibile <strong>recuperare dei dati e dei file da un cd o un dvd danneggiato</strong> o corrotto con un software, ancora una volta gratuito: <strong>CD Recovery Toolbox</strong>, giunto alla sua versione <strong>1.0.8.</strong>
L’unica pecca è che è in lingua inglese, ma le opzioni che bisogna impostare sono talmente poche ed elementari che la lingua non fa alcuna differenza.

Come al solito, trovi il <strong>link per il download del programma</strong> in fondo all’articolo, nel frattempo ti mostro in anticipo ciò a cui andrai incontro e come devi fare passo-passo per <strong>ripristinare dei dati da un cd</strong>.]]></description>
			<content:encoded><![CDATA[<p><a href="http://computergeek.it/wp-content/uploads/2010/05/Thumb_CD_Recovery_Toolbox.gif"><img class="alignnone size-full wp-image-319" title="Thumb_CD_Recovery_Toolbox" src="http://computergeek.it/wp-content/uploads/2010/05/Thumb_CD_Recovery_Toolbox.gif" alt="" width="285" height="150" /></a></p>
<p>Ciao, con l’articolo di oggi, ovvero la <strong>parte terza</strong> della <strong>Guida per il recupero dei dati</strong> di <strong>ComputerGeek</strong> voglio farti vedere come può essere possibile <strong>recuperare dei dati e dei file da un cd o un dvd danneggiato</strong> o corrotto con un software, ancora una volta gratuito: <strong>CD Recovery Toolbox</strong>, giunto alla sua versione <strong>1.0.8.</strong><br />
L’unica pecca è che è in lingua inglese, ma le opzioni che bisogna impostare sono talmente poche ed elementari che la lingua non fa alcuna differenza.</p>
<p>Come al solito, trovi il <strong>link per il download del programma</strong> in fondo all’articolo, nel frattempo ti mostro in anticipo ciò a cui andrai incontro e come devi fare passo-passo per <strong>ripristinare dei dati da un cd</strong>.</p>
<p>Colgo l’occasione per ricordarti quali erano i temi dei precedenti articoli per il recupero dei dati, ecco i link diretti:<br />
<a title="Guida per il recupero dei dati, ripristinare i file eliminati  con Undelete Plus – Parte 1" href="http://computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ripristinare-i-file-eliminati-con-undelete-plus-parte-1/">Guida per il recupero dei dati, ripristinare i file eliminati con Undelete Plus – Parte 1</a><br />
<a title="Guida per il recupero dei dati, recuperiamo gli Hard Disk  danneggiati o corrotti con TestDisk – Parte 2" href="http://computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-recuperiamo-gli-hard-disk-danneggiati-o-corrotti-con-testdisk-%e2%80%93-parte-2/">Guida per il recupero dei dati, recuperiamo gli Hard Disk danneggiati o corrotti con TestDisk – Parte 2</a></p>
<p>Ok, possiamo cominciare.</p>
<p><span id="more-318"></span><br />
Dopo aver installato alla solita maniera <strong>CD Recovery Toolbox</strong>, ti si aprirà una semplice schermata in cui verranno elencati i <strong>Lettori CD/DVD </strong>in cui hai inserito ovviamente un CD o un DVD. Nel caso non hai inserito nessun CD/DVD la schermata sarà diversa, semplicemente ti avviserà che nessun lettore contiene un disco. In tal caso, inserisci il disco che vuoi tentare di <strong>recuperare</strong>.</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/05/CD_Recovery_Tools_03.gif"><img class="alignnone size-medium wp-image-320" title="CD_Recovery_Tools_03" src="http://computergeek.it/wp-content/uploads/2010/05/CD_Recovery_Tools_03-300x178.gif" alt="" width="300" height="178" /></a></p>
<p>Dopo aver <strong>selezionato il CD/DVD</strong> che vuoi tentare di <strong>ripristinare</strong> clicca su “<em>Next</em>”. Ora devi solo selezionare a quale <strong>cartella di destinazione</strong> vuoi inoltrare i file recuperati da <strong>CD Recovery Toolbox</strong>.</p>
<p>Una volta che hai scelto la destinazione potrai vedere un <strong>riepilogo delle memorie</strong> coinvolte nell’operazione, quindi Etichetta, spazio libero, spazio totale e tipo sia della memoria di origine (il CD o DVD) e sia di quella di destinazione (la cartella da te scelta).</p>
<p>Dopo aver visto che è tutto apposto, puoi confermare cliccando su “<em>Next</em>”.</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/05/CD_Recovery_Tools_04.gif"><img class="alignnone size-medium wp-image-321" title="CD_Recovery_Tools_04" src="http://computergeek.it/wp-content/uploads/2010/05/CD_Recovery_Tools_04-300x176.gif" alt="" width="300" height="176" /></a></p>
<p>La nuova schermata ti mostrerà i file e i dati che il programma è in grado o vuole <strong>tentare di recuperare</strong>. Seleziona quelli che vuoi ripristinare (ovviamente andranno a finire nella cartella che hai impostato in precedenza) mettendo la spunta sulla checkbox accanto ad ogni file e terminiamo il tutto cliccando su “<em>Save</em>”.</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/05/CD_Recovery_Tools_05.gif"><img class="alignnone size-medium wp-image-322" title="CD_Recovery_Tools_05" src="http://computergeek.it/wp-content/uploads/2010/05/CD_Recovery_Tools_05-300x131.gif" alt="" width="300" height="131" /></a></p>
<p>Adesso devi solo aspettare che <strong><a href="http://www.recoverytoolbox.com/cd.html">CD Recovery Toolbox</a></strong> svolga l’operazione di <strong>recupero file</strong>, il tempo necessario dipende molto dalla grandezza dei file e su quale disco (se interno o esterno) li hai destinati.</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/05/CD_Recovery_Tools.gif"><img class="alignnone size-medium wp-image-323" title="CD_Recovery_Tools" src="http://computergeek.it/wp-content/uploads/2010/05/CD_Recovery_Tools-300x114.gif" alt="" width="300" height="114" /></a></p>
<p>Finita la <strong>procedura di ripristino</strong> ti verrà visualizzata una semplice <strong>schermata di riepilogo</strong> con scritti i nomi dei file che sono stati <strong>recuperati con successo</strong>, puoi verificare la buona riuscita dell’operazione e cliccare su “<em>Exit</em>”. Fatto questo sei uscito dal programma e hai terminato correttamente e con successo (si spera) l’attività di <strong>recupero file</strong>.</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/05/CD_Recovery_Tools_02.gif"><img class="alignnone size-medium wp-image-324" title="CD_Recovery_Tools_02" src="http://computergeek.it/wp-content/uploads/2010/05/CD_Recovery_Tools_02-300x125.gif" alt="" width="300" height="125" /></a></p>
<p><strong>Ecco il link da cui puoi scaricare <a href="http://www.recoverytoolbox.com/cd.html">CD Recovery Toolbox</a> (devi andare in basso e trovare Recovery Toolbox for CD Free):</strong><br />
<a href="http://bit.ly/caHvsp">http://bit.ly/caHvsp</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/QDQ46UwzLbWc-2YrvcsKQFQCEbg/0/da"><img src="http://feedads.g.doubleclick.net/~a/QDQ46UwzLbWc-2YrvcsKQFQCEbg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QDQ46UwzLbWc-2YrvcsKQFQCEbg/1/da"><img src="http://feedads.g.doubleclick.net/~a/QDQ46UwzLbWc-2YrvcsKQFQCEbg/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ecco-come-leggere-i-cd-o-dvd-danneggiati-con-cd-recovery-toolbox-%e2%80%93-parte-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Guida per il recupero dei dati, recuperiamo gli Hard Disk danneggiati o corrotti con TestDisk – Parte 2</title>
		<link>http://www.computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-recuperiamo-gli-hard-disk-danneggiati-o-corrotti-con-testdisk-%e2%80%93-parte-2/</link>
		<comments>http://www.computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-recuperiamo-gli-hard-disk-danneggiati-o-corrotti-con-testdisk-%e2%80%93-parte-2/#comments</comments>
		<pubDate>Thu, 13 May 2010 16:13:53 +0000</pubDate>
		<dc:creator>Raffaello Marasco</dc:creator>
				<category><![CDATA[Ottimizzazione]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[hard disk corrotto]]></category>
		<category><![CDATA[hard disk danneggiato]]></category>
		<category><![CDATA[problemi hard disk]]></category>
		<category><![CDATA[recuperare hard disk]]></category>
		<category><![CDATA[ripristinare hard disk]]></category>
		<category><![CDATA[undelete plus]]></category>

		<guid isPermaLink="false">http://computergeek.it/blog/?p=309</guid>
		<description><![CDATA[Eccomi di nuovo con la <strong>seconda parte</strong> della <strong>Guida per il recupero dei dati</strong> di <strong>ComputerGeek.it</strong>.

Se vuoi leggere la prima che riguardava il <strong>recupero e il ripristino dei file eliminati</strong> (anche dal cestino) ti rimando a questo link:
<a title="Guida per il recupero dei dati, ripristinare i file eliminati  con Undelete Plus – Parte 1" href="http://computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ripristinare-i-file-eliminati-con-undelete-plus-parte-1/">Guida per il recupero dei dati, ripristinare i file eliminati con Undelete Plus – Parte 1</a>

Questa seconda parte riguarda invece il <strong>recupero di un Hard Disk danneggiato</strong> o eventualmente corrotto utilizzando un semplice tool che non richiede installazione (stand-alone) e dall’aspetto un po’ spartano.]]></description>
			<content:encoded><![CDATA[<p><a href="http://computergeek.it/wp-content/uploads/2010/05/Thumb_Test_Disk.gif"><img class="alignnone size-full wp-image-308" title="Thumb_Test_Disk" src="http://computergeek.it/wp-content/uploads/2010/05/Thumb_Test_Disk.gif" alt="" width="285" height="150" /></a></p>
<p>Eccomi di nuovo con la <strong>seconda parte</strong> della <strong>Guida per il recupero dei dati</strong> di <strong>ComputerGeek.it</strong>.</p>
<p>Se vuoi leggere la prima che riguardava il <strong>recupero e il ripristino dei file eliminati</strong> (anche dal cestino) ti rimando a questo link:<br />
<a title="Guida per il recupero dei dati, ripristinare i file eliminati  con Undelete Plus – Parte 1" href="http://computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-ripristinare-i-file-eliminati-con-undelete-plus-parte-1/">Guida per il recupero dei dati, ripristinare i file eliminati con Undelete Plus – Parte 1</a></p>
<p>Questa seconda parte riguarda invece il <strong>recupero di un Hard Disk danneggiato</strong> o eventualmente corrotto utilizzando un semplice tool che non richiede installazione (stand-alone) e dall’aspetto un po’ spartano.</p>
<p>Si chiama <strong>TestDisk</strong> che, al momento in cui scrivo, è giunto alla versione <strong>6.11.3</strong> (6.12 quella beta che però non consideriamo).</p>
<p>Come al solito trovi il <strong>link per il download</strong> di <strong>TestDisk 6.11.3</strong> in fondo all’articolo.</p>
<p><span id="more-309"></span><br />
Voglio ricordare che <strong>TestDisk</strong> è completamente <strong>gratuito</strong> (come quasi tutti i software che vengono proposti in questo blog) e l’unica pecca di questo software è forse proprio quella di essere un po’ troppo “retrò” ed in lingua inglese. Comunque ho cercato di semplificare al massimo il suo utilizzo, descrivendoti dettagliatamente le operazioni che devi compiere se vuoi <strong>ripristinare un hard disk danneggiato</strong>.</p>
<p>Possiamo cominciare …</p>
<p>Una volta scaricato il programma, decomprimilo in una cartella a tuo piacere. Mi sento di consigliarti di avere una <em>pen drive dedicata completamente a software di ripristino, protezione e sicurezza</em> in modo tale da non sporcare il tuo computer dei tanti programmi che purtroppo molte volte è necessario installare. (Comunque <strong>TestDisk</strong> è senza installazione, tutto ciò che eventualmente dovresti fare è copiare i file dell’archivio nella pen drive).</p>
<p>Una volta decompresso l’archivio devi andare nella cartella ‘<em>win</em>’ e cliccare su ‘<em>testdisk_win.exe</em>’.</p>
<p>Come ti ho detto in precedenza, il suo aspetto non è molto confortante, specie se sei abituato a soli software con interfaccia grafica, la così detta <strong>GUI</strong> (Graphic User Interface). Ecco comunque la schermata che si aprirà</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/05/TestDisk.gif"><img class="alignnone size-medium wp-image-310" title="TestDisk" src="http://computergeek.it/wp-content/uploads/2010/05/TestDisk-300x151.gif" alt="" width="300" height="151" /></a></p>
<p>Le varie opzioni si comandano tramite i cursori su-giù-destra-sinistra della tastiera e con il test “<em>Invio</em>” per la conferma.</p>
<p>In realtà le opzioni che devi impostare sono davvero poche. In questa prima schermata non devi fare altro che decidere se creare un <strong>file di log</strong> in cui vengono memorizzate tutte le informazioni riguardanti le operazioni, le analisi e i risultati oppure non memorizzare assolutamente niente e non visualizzare le varie informazioni successive. Qualsiasi scelta tu faccia, non è importante al fine della buona riuscita dell’operazione, se non ti interessa nulla sapere cosa è successo durante il <strong>recupero dell’hard disk</strong> puoi semplicemente andare con il cursore su “<em>No Log</em>”, premere “<em>Invio</em>” ed andare avanti, in caso contrario, seleziona pure “<em>Create</em>” senza problemi.</p>
<p>Nella prossima schermata dovrai scegliere <strong>l’Hard Disk da analizzare</strong> ed eventualmente recuperare. Seleziona l’Hard Disk che vuoi ripristinare e conferma con “<em>Proceed</em>”.</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/05/TestDisk_02.gif"><img class="alignnone size-medium wp-image-311" title="TestDisk_02" src="http://computergeek.it/wp-content/uploads/2010/05/TestDisk_02-300x152.gif" alt="" width="300" height="152" /></a></p>
<p>Adesso dovrai indicare a <a href="http://www.cgsecurity.org/wiki/TestDisk"><strong>TestDisk</strong></a> il <strong>tipo</strong> <strong>di Hard Disk</strong> che hai, generalmente è Intel a meno che non si tratta di un tipo un po’ più particolare. Ad ogni modo, selezionare il tipo di Hard Disk e premi “<em>Invio</em>”.</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/05/TestDisk_03.gif"><img class="alignnone size-medium wp-image-312" title="TestDisk_03" src="http://computergeek.it/wp-content/uploads/2010/05/TestDisk_03-300x151.gif" alt="" width="300" height="151" /></a></p>
<p>La prossima schermata forse ti spaventerà un po’, ma la sola opzione a cui ci serve accedere per il nostro scopo è “<em>Analyse</em>”, selezionala con il cursore e premi “<em>Invio</em>”.</p>
<p><a href="http://computergeek.it/wp-content/uploads/2010/05/TestDisk_04.gif"><img class="alignnone size-medium wp-image-313" title="TestDisk_04" src="http://computergeek.it/wp-content/uploads/2010/05/TestDisk_04-300x151.gif" alt="" width="300" height="151" /></a></p>
<p>Adesso ti verrà mostrata la <strong>struttura</strong> piuttosto dettagliata del tuo Hard Disk e di tutte le unità logiche. Come fare per vedere se ci sono <strong>settori difettosi</strong>? Basta guardare se ci sono partizioni visualizzate due volte. In tal caso esistono settori difettosi e con le successive operazioni andremo ad effettuare la riparazione.</p>
<p>Se nel tuo caso ci sono dei <strong>settori danneggiati</strong>, devi selezionare “<em>Quick Search</em>” per avviare la ricerca della <strong>parte corrotta dell’hard disk</strong>. Quando e se TestDisk ha ritrovato le unità danneggiate puoi selezionare “<em>Write</em>” per recuperarle.</p>
<p>Se manca ancora una parte per completare il tuo hard disk puoi continuare la ricerca con “<em>Deeper Search</em>” ed attendere il suo termine (questa volta però potrebbe essere più lenta, proprio perché và più in profondità). Terminata la scansione se il programma mostra le parti mancanti vuol dire che ha avuto successo e puoi selezionare di nuovo “<em>Write</em>” per ripristinare.</p>
<p>Se ancora manca qualcosa molto probabilmente vuol dire che purtroppo non hai potuto recuperare questi dati.</p>
<p>Nella schermata successiva <a href="http://www.cgsecurity.org/wiki/TestDisk"><strong>TestDisk</strong></a> indica i settori difettosi di avvio ed in questo caso puoi utilizzare (sempre nel caso ci fossero errori) un tool integrato direttamente in TestDisk: <strong>Back-up BS</strong>.</p>
<p>Terminata anche questa procedura non ti resta che riavviare nella speranza di aver <strong>recuperato completamente il tuo hard disk con i relativi dati</strong>.</p>
<p><strong>Ecco il link da cui puoi scaricare TestDisk 6.11.3 o se vuoi la 6.12:</strong><br />
<a href="http://bit.ly/cmH1G2">http://bit.ly/cmH1G2</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/g32ftWOrjwi2k3ws2jNxRQpmIuA/0/da"><img src="http://feedads.g.doubleclick.net/~a/g32ftWOrjwi2k3ws2jNxRQpmIuA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/g32ftWOrjwi2k3ws2jNxRQpmIuA/1/da"><img src="http://feedads.g.doubleclick.net/~a/g32ftWOrjwi2k3ws2jNxRQpmIuA/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.computergeek.it/2010/05/software/guida-per-il-recupero-dei-dati-recuperiamo-gli-hard-disk-danneggiati-o-corrotti-con-testdisk-%e2%80%93-parte-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 1.847 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-02-21 18:19:18 -->

