<?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>corradoignoti.it</title>
	<atom:link href="http://www.corradoignoti.it/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.corradoignoti.it</link>
	<description>un informatico che si crede un fotografo</description>
	<lastBuildDate>Thu, 19 Jan 2012 17:34:17 +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>Safer Internet Day 2012</title>
		<link>http://www.corradoignoti.it/2012/01/19/saferinternetday2012/</link>
		<comments>http://www.corradoignoti.it/2012/01/19/saferinternetday2012/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 17:34:17 +0000</pubDate>
		<dc:creator>corradoignoti</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.corradoignoti.it/?p=1376</guid>
		<description><![CDATA[Iniziano i preparativi per il Safer Internet Day 2012, l&#8217;iniziativa nata dall&#8217;Unione Europea con lo scopo di insegnare un uso sicuro di internet. L&#8217;evento, per quest&#8217;anno, è programmato per il 7 Febbraio. Il titolo dell&#8217;evento di quest&#8217;anno sarà &#8220;Scoprire il mondo digitale insieme&#8230;. in modo sicuro!&#8221; e sarà centrato sulla co-educazione adulti-ragazzi, anche i giovani [...]]]></description>
			<content:encoded><![CDATA[<p>Iniziano i preparativi per il <a href="http://www.saferinternet.org/web/guest/safer-internet-day" title="Visita il sito ufficiale del SID">Safer Internet Day 2012</a>, l&#8217;iniziativa nata dall&#8217;Unione Europea con lo scopo di insegnare un uso sicuro di internet.<br />
L&#8217;evento, per quest&#8217;anno, è programmato per il 7 Febbraio.<br />
Il titolo dell&#8217;evento di quest&#8217;anno sarà &#8220;Scoprire il mondo digitale insieme&#8230;. in modo sicuro!&#8221; e sarà centrato sulla co-educazione adulti-ragazzi, anche i giovani &#8216;nativi digitali&#8217; possono insegnare ai propri genitori come navigare in maniera sicura.<br />
Sono previste incontri e manifestazioni organizzati spontaneamente in tutto il territorio dell&#8217;Unione Europea.<br />
Di seguito, il video promozionale dell&#8217;iniziativa.<br />
<br/><br />

  <!-- Begin Video.js -->
  <video class="video-js vjs-default-skin" width="640" height="360" controls 0 data-setup="{}">
    <source src="http://www.corradoignoti.it/wp-content/uploads/2012/01/SID2012-VIDEO-IT.mp4" type='video/mp4' />
    
    
  </video>
  <!-- End Video.js -->
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.corradoignoti.it/2012/01/19/saferinternetday2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.corradoignoti.it/wp-content/uploads/2012/01/SID2012-VIDEO-IT.mp4" length="7186686" type="video/mp4" />
		</item>
		<item>
		<title>Node.js: qualche considerazione</title>
		<link>http://www.corradoignoti.it/2011/11/25/node-js-qualche-considerazione/</link>
		<comments>http://www.corradoignoti.it/2011/11/25/node-js-qualche-considerazione/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 11:55:22 +0000</pubDate>
		<dc:creator>corradoignoti</dc:creator>
				<category><![CDATA[Opensource]]></category>

		<guid isPermaLink="false">http://www.corradoignoti.it/?p=1352</guid>
		<description><![CDATA[In un precedente post mi ero divertito a giocare un po&#8217; con node.js. Si giocare è il termine giusto, ho provato a leggere qualche tutorial, installarlo e scriverci 10 righe di codice. L&#8217;idea che sta alla base del progetto è sicuramente interessante, creare un server performante e totalmente adattabile sulle esigenze del software che stiamo [...]]]></description>
			<content:encoded><![CDATA[<p>In un precedente <a title="node.js: un'introduzione" href="http://www.corradoignoti.it/2011/10/04/node-js-introduzione/">post</a> mi ero divertito a giocare un po&#8217; con node.js. Si giocare è il termine giusto, ho provato a leggere qualche tutorial, installarlo e scriverci 10 righe di codice.<br />
<img style="margin: 10px;" src="https://lh5.googleusercontent.com/-xyPsTcSn1Dc/TpBCno4uewI/AAAAAAAAAkk/c5mZWWbUdKU/s144/nodejs.png" alt="node.js logo" />L&#8217;idea che sta alla base del progetto è sicuramente interessante, creare un server performante e totalmente adattabile sulle esigenze del software che stiamo scrivendo. Bello anche il fatto che il server non venga appesantito da moduli che potrebbero essere solo potenzialmente usati: se il codice non utilizza primitive di un modulo, questo non viene caricato. Come dire, rispettiamo al massimo il concetto che &#8220;quello che non c&#8217;è non si rompe&#8221;.</p>
<p>Ma alla base del progetto c&#8217;è qualcosa che non mi convince. Partiamo dal presupposto che il server web è il software più esposto ai vari attacchi: è quello che sta proprio in frontiera, tutte le chiamate vengono in prima istanza gestite dal questo software. Se oggi usiamo <a title="Wikipedia: Apache Web Server (en)" href="http://en.wikipedia.org/wiki/Apache_HTTP_Server" target="_blank">Apache</a> nella maggior parte delle installazioni, lo facciamo perché il software è sopravvissuto ai vari attacchi e alle varie traversie che, la storia insegna, hanno colpito questa categoria di software. Apache è stato creato a forza di &#8220;pezze&#8221; (<em>&#8216;a patchy&#8217;</em>) messe su <a title="Wikipedia: NCSA httpd" href="http://en.wikipedia.org/wiki/NCSA_HTTPd" target="_blank">NCSA httpd</a>.</p>
<p>Ma in generale tutta l&#8217;architettura LAMP ha una storia di successi ed insuccessi, che l&#8217;hanno portata ad essere quella che conosciamo tutti. Una della caratteristiche principali di questa architettura è che i vari compiti sono svolti da pezzi diversi di software. Pensiamo al semplice interprete PHP, la storia delle pagine dinamiche è vecchia come l&#8217;informatica. Abbiamo iniziato con i <a title="Wikipedia: CGI (it)" href="http://it.wikipedia.org/wiki/Common_Gateway_Interface" target="_blank">CGI</a> e poi con la tecnologia <a title="Wikipedia: Server Side Include (it)" href="http://it.wikipedia.org/wiki/Server_Side_Include" target="_blank">SSI</a> (Server Side Include), e alla fine la tecnologia che si è affermata è quella delle <a title="Wikipedia: pagine dinamiche (en)" href="http://en.wikipedia.org/wiki/Dynamic_web_page" target="_blank">pagine dinamiche</a><br />
I linguaggi più utilizzati per scrivere pagine dinamiche, oggi, sono: VBScript, Java, PHP e JavaScript.</p>
<p>In tutti questi casi la separazione fra il server web e l&#8217;interprete dei comandi è netta. Le ottimizzazioni di performance e di sicurezza sono in carico ad almeno due software diversi. Software scritti da gruppi di lavoro diversi. </p>
<p>In Node.js tutte queste cose sono fuse in un solo software che serve pagine statiche, elabora script&#8230; forse gli stiamo dando un po&#8217; troppa responsabilità!</p>
<p>Qual&#8217;è il vero guadagno nel mettere in campo questa nuova tecnologia? La scalabilità? Penso che Apache e PHP abbiano dato prova più volte di essere scalabili senza grossi problemi. Le performance? Se Apache vi sembra troppo pesante provate a dare un&#8217;occhiata a <a title="Lighttpd: sito web ufficiale (en)" href="http://www.lighttpd.net/" target="_blank">lightttpd</a> Pensate che il vostro sito web debba servire 10.000 client contemporaneamente (il problema del C10K)? Provate a dare un&#8217;occhiata a <a title="nginx, sito web ufficiale (en)" href="http://wiki.nginx.org/" target="_blank">nginx</a> che serve pagine per sitarelli dalle dimensioni di GitHub, WordPress.com, SourceForge.<br />
L&#8217;idea di creare un server web &#8216;<a title="wikipedia: programmazione ad eventi (en)" href="http://it.wikipedia.org/wiki/Programmazione_a_eventi" target="_blank">event driven</a>&#8216; è vincente: nginx ne è la prova. Node.js aggiunge il fatto di implementare in maniera asincrona i meccanismi di lettura e scrittura (<a title="Wikipedia: Asynchronous I/O (en)" href="http://en.wikipedia.org/wiki/Asynchronous_I/O" target="_blank">Asynchronous I/O</a>).</p>
<p>In definitiva, mi piace Node.js come progetto. Bella l&#8217;idea di dare a JavScript un posto un po&#8217; più importante rispetto a quello di abbellire qualche pagina HTML. L&#8217;architettura di Node.js è ben pensata e in fatto di scalabilità promette bene. Mi spaventa un po&#8217; la sicurezza intrinseca del prodotto e il fatto che lo studio e l&#8217;introduzione di questa nuova tecnologia in ambiente di produzione, non porta nessuna grossa novità.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.corradoignoti.it/2011/11/25/node-js-qualche-considerazione/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Non usate iCloud in situazioni &#8220;strane&#8221;</title>
		<link>http://www.corradoignoti.it/2011/10/31/non-usate-icloud-in-situazioni-strane/</link>
		<comments>http://www.corradoignoti.it/2011/10/31/non-usate-icloud-in-situazioni-strane/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 12:30:30 +0000</pubDate>
		<dc:creator>corradoignoti</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.corradoignoti.it/?p=1364</guid>
		<description><![CDATA[Come i più sapranno, con l&#8217;arrivo di iOS5 e di iCloud, Apple ha inserito la funzione di PhotoStream nei propri &#8220;igiocattoli&#8221;. Attraverso l&#8217;attivazione di questa funzione è possibile fare in modo che le proprie fotografie finiscano in maniera automatica nel cloud non appena vengono scattate. Da li possono essere copiate, sempre in maniera totalmente automatica [...]]]></description>
			<content:encoded><![CDATA[<p>Come i più sapranno, con l&#8217;arrivo di iOS5 e di iCloud, Apple ha inserito la funzione di PhotoStream nei propri &#8220;igiocattoli&#8221;.</p>
<p>Attraverso l&#8217;attivazione di questa funzione è possibile fare in modo che le proprie fotografie finiscano in maniera automatica nel cloud non appena vengono scattate. Da li possono essere copiate, sempre in maniera totalmente automatica sugli altri &#8220;igiocattoli&#8221; configurati.</p>
<p>Fin qui tutto bene, la parte sana della tecnologia. </p>
<p>Adesso la parte insana: dopo che una fotografia è finita in quesito giro di nuvole e di idevice, non può più essere cancellata. Scatti una foto, la mandi su iCloud e la puoi solo cancellare dal tuo device e non da quelli sulla quale la foto si è copiata attraverso il photostream!!!</p>
<p>Ora provate a pensare a cosa succede se, durante una serata, qualcuno vi fa una foto diciamo&#8230;. compromettente??</p>
<p>L&#8217;unico modo che avete per cancellarla e quello di fare l&#8217;upload di altre 1.000 fotografie. iCloude gestisce, infatti, una coda circolare di 1.000 slot.</p>
<p>State attenti a non usare PhotoStream quando&#8230;.. siete ubriachi&#8230;. non ubriacatevi è meglio!! <img src='http://www.corradoignoti.it/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.corradoignoti.it/2011/10/31/non-usate-icloud-in-situazioni-strane/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Street View</title>
		<link>http://www.corradoignoti.it/2011/10/07/google-street-view/</link>
		<comments>http://www.corradoignoti.it/2011/10/07/google-street-view/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 18:02:44 +0000</pubDate>
		<dc:creator>corradoignoti</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.corradoignoti.it/?p=1345</guid>
		<description><![CDATA[Anche la mitica Google, quando entra nelle città per fotografarle, deve chiedere il permesso alle Amministrazioni Comunali. Ed ecco la mitica macchina di Google parcheggiata ed in attesa di ricevere il permesso per entrare nella zona a traffico limitato di Cremona.]]></description>
			<content:encoded><![CDATA[<p>Anche la mitica Google, quando entra nelle città per fotografarle, deve chiedere il permesso alle Amministrazioni Comunali.</p>
<p>Ed ecco la mitica macchina di Google parcheggiata ed in attesa di ricevere il permesso per entrare nella zona a traffico limitato di Cremona.</p>
<p><img alt="" src="https://lh6.googleusercontent.com/-_ghY_e5pS-4/To88zaj5aPI/AAAAAAAAAkg/s1SjqBjt3Us/s400/IMG_0331.jpg" title="La macchina di Google Street View" class="aligncenter" width="400" height="299" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.corradoignoti.it/2011/10/07/google-street-view/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>node.js: un&#8217;introduzione</title>
		<link>http://www.corradoignoti.it/2011/10/04/node-js-introduzione/</link>
		<comments>http://www.corradoignoti.it/2011/10/04/node-js-introduzione/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 14:12:02 +0000</pubDate>
		<dc:creator>corradoignoti</dc:creator>
				<category><![CDATA[Opensource]]></category>

		<guid isPermaLink="false">http://www.corradoignoti.it/?p=1324</guid>
		<description><![CDATA[Per chi ancora non ne avesse sentito parlare, Node.js è un framework per l’utilizzo server-side di JavaScript, implementato su un motore JavaScrpit (il V8) scritto da Google. Secondo gli sviluppatori del progetto, il linguaggio scelto è particolarmente adatto per gestire un web server, perché basato sugli eventi. Christopher Roach, in un suo articolo, sottolinea ad [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://lh3.googleusercontent.com/-QwkvMT7HeJ0/TosSCeXWYJI/AAAAAAAAAkM/x9mbjkXfMi4/s800/nodejs-dark.png" alt="node.js logo" style="margin: 10px;"/><br />
Per chi ancora non ne avesse sentito parlare, <a href="http://nodejs.org/" title="Node.js sito ufficiale" target="_blank">Node.js</a> è un framework per l’utilizzo server-side di JavaScript, implementato su un motore JavaScrpit (il <a href="http://code.google.com/p/v8/" title="Goggle motore JavaScript" target="_blank">V8</a>) scritto da Google.</p>
<p>Secondo gli sviluppatori del progetto, il linguaggio scelto è particolarmente adatto per gestire un web server, perché basato sugli eventi. Christopher Roach, in un suo articolo, sottolinea ad esempio come un server web trascorra la maggior parte del tempo ad aspettare l’esito di operazioni di I/O, quindi la possibilità di lavorare in modo asincrono tramite le funzioni di callback è una grande opportunità per aumentarne l’efficienza. </p>
<p>L&#8217;architettura di Node.js è modulare. Vi sono diversi moduli per compiere le funzioni più comuni di un server web. Questi possono essere utilizzati previa inclusione nel codice con il comando require:</p>
<div class="codecolorer-container javascript mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> http <span style="color: #339933;">=</span> require<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;http&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> &nbsp;<br />
&nbsp; &nbsp; sys <span style="color: #339933;">=</span> require<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;sys&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Queste due istruzioni includono due moduli: il primo che implementa le funzioni per la comunicazione via HTTP mentre, il secondo, implementa il modulo per la comunicazione via terminale.</p>
<p>A questo punto possiamo creare il server con il metodo createServer, al quale possiamo passare delle funzioni anonime, che si attiveranno ogni qualvolta esso riceverà una richiesta dalla porta passata al metodo listen:</p>
<div class="codecolorer-container javascript mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http.<span style="color: #660066;">createServer</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>request<span style="color: #339933;">,</span> response<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; response.<span style="color: #660066;">sendHeader</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">200</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">&quot;Content-Type&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;text/html&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; response.<span style="color: #000066; font-weight: bold;">write</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;fizban was here!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; response.<span style="color: #000066;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">listen</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">8080</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>In questo brevissimo esempio, tratto da un tutorial di Devon Govett, viene creato un server in ascolto sulla porta 8080, che manda una risposta via HTTP con un header e codice HTTP 200.</p>
<p>Come è ormai tradizione consolidata, nei nostri progetti non utilizzeremo direttamente le API di Node.js. L&#8217;ecosistema che sta attorno al progetto ha creato una serie di framework che semplificano e velocizzano la scrittura di codice.</p>
<p><a href="http://expressjs.com/index.html" title="express.js official site" target="_blank">express.js</a> è una conoscenza che dovrà fare chi è interessato a scrivere applicazioni webbased. Dalla filosofia molto simile a quella di Rails, express è un framework in sviluppo attivo molto utilizzato.<br />
Fra le caratteristiche principali:</p>
<ul>
<li>Supporto delle route (alla Rails)</li>
<li>Basato sulla logica MVC</li>
<li>Sviluppato per alte performance</li>
<li>Le configurazioni sono basate su ambienti (sviluppo, produzione, test&#8230;.)</li>
<li>E&#8217; dotato di eseguibili per la generazione delle applicazioni in modo veloce</li>
</ul>
<p>Ecco l&#8217;esempio di prima, riscritto utilizzando express:</p>
<div class="codecolorer-container javascript mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> express <span style="color: #339933;">=</span> require <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'express'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #003366; font-weight: bold;">var</span> app <span style="color: #339933;">=</span> express.<span style="color: #660066;">createServer</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
app.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>req<span style="color: #339933;">,</span> res<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; res.<span style="color: #660066;">send</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Fizban was here'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
app.<span style="color: #660066;">listen</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">8080</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Express non è l&#8217;unico framework attivamente sviluppato, la lista è lunga. Guardando sul <a href="https://github.com/joyent/node/wiki/modules" title="node.js wiki" target="_blank">wiki</a> di node.js c&#8217;è veramente da stupirsi vedendo quanta gente ha già implementato moduli. L&#8217;ecosistema che sta attorno al progetto è molto attivo.<br />
Una chicca, vi piace la logica di Ruby on Rails ma non vi piace Ruby? <a href="http://railwayjs.com/" title="Railwayjs sito ufficiale" target="_blank">Railswaysjs</a> è modulo che fa per voi</p>
<p>Dove reperire informazioni:</p>
<ul>
<li>Sul sito ufficiale di <a href="http://nodejs.org/docs/v0.4.12/api/" title="node.js sito ufficiale" target="_blank">node.js</a></li>
<li><a href="http://howtonode.org/" title="HowToNode blog" target="_blank">HowToNode</a> blog con vari howto per realizzare progetti con Node.js</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.corradoignoti.it/2011/10/04/node-js-introduzione/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone, macchina fotografica compatta?</title>
		<link>http://www.corradoignoti.it/2011/09/03/iphone-macchina-fotografica-compatta/</link>
		<comments>http://www.corradoignoti.it/2011/09/03/iphone-macchina-fotografica-compatta/#comments</comments>
		<pubDate>Sat, 03 Sep 2011 06:44:30 +0000</pubDate>
		<dc:creator>corradoignoti</dc:creator>
				<category><![CDATA[Fotografie]]></category>

		<guid isPermaLink="false">http://www.corradoignoti.it/?p=1312</guid>
		<description><![CDATA[Usare l&#8217;iPhone come macchina fotografica? In tanti dicono che si possa fare. Sempre più blog e podcast tematici ne consigliano l&#8217;uso come macchina fotografica. Dalle statistiche, risulta che il telefono con la mela è lo strumento più utilizzato dagli utenti di Flickr. Mi sono incuriosito e ci ho provato anch&#8217;io. L&#8217;ottica del telefono, tutto sommato, [...]]]></description>
			<content:encoded><![CDATA[<p><img align="left" style="margin: 10px;" src="https://lh4.googleusercontent.com/-xD9V9JDNH-Y/TmHShaBdSQI/AAAAAAAAAjo/P4SGMjY604g/s144/camera-plus-icon.png" alt="camera+ icon" /><br />
Usare l&#8217;iPhone come macchina fotografica? In tanti dicono che si possa fare. Sempre più blog e podcast tematici ne consigliano l&#8217;uso come macchina fotografica.<br />
<br/><br />
Dalle statistiche, risulta che il telefono con la mela è lo strumento più utilizzato dagli utenti di <a href="http://www.flickr.com" target="_new">Flickr</a>.<br />
<br/><br />
Mi sono incuriosito e ci ho provato anch&#8217;io. L&#8217;ottica del telefono, tutto sommato, è buona. I 5 megapixel a disposizione possono bastare. Il problema sono le dimensioni: il telefono è piccolo, il tasto di scatto sullo schermo è estremamente scomodo.<br/><br />
La prossima versione di iOS dovrebbe correggere questo problema, permettendo di configurare uno dei tasti della regolazione del volume affiché si comporti come pulsante di scatto.<br/><br />
Girando qua e la ho trovato un po&#8217; di applicazioni interessanti, che rendono più gradevole l&#8217;uso del telefono come macchina fotografica.<br/><br />
<a href="http://itunes.apple.com/it/app/id329670577?mt=8" title="iTunes Camera+" target="_blank"><strong>Camera+</strong></a> aggiunge tantissime funzioni utili all’applicazione fotocamera come lo stabilizzatore, uno zoom di maggior qualità, la possibilità di scattare foto multiple e tutti i settaggi utili per catturare la luce in maniera adeguata, evitando foto troppo luminose o troppo scure.<br />
<br/><br />
L’applicazione sviluppata dalla tap tap tap contiene anche alcuni strumenti utili per il fotoritocco, quali la possibilità di tagliare le foto, aggiungere bordi e cornici e tantissimi altri effetti speciali.<br/><br />
<a href="http://instagr.am/" title="instagr.am" target="_blank"><strong>Instagram</strong></a> nome complicato per identificare un&#8217;applicazione che permette di creare un flusso di fotografie prese dal proprio iPhone. Carina, permette di applicare effetti non troppo invasivi alle foto.<br />
Una volta scattate le fotografie possono essere condivise facilmente su molti social network, fra i quali:</p>
<ul>
<li>Flickr</li>
<li>Twitter</li>
<li>Facebook</li>
<li>foursquare</li>
</ul>
<p><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.corradoignoti.it/2011/09/03/iphone-macchina-fotografica-compatta/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ios-static-libraries: librerie crittografiche pronte all&#8217;uso</title>
		<link>http://www.corradoignoti.it/2011/08/11/ios-static-libraries-librerie-per-crittografiche-pronte-alluso/</link>
		<comments>http://www.corradoignoti.it/2011/08/11/ios-static-libraries-librerie-per-crittografiche-pronte-alluso/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 08:49:37 +0000</pubDate>
		<dc:creator>corradoignoti</dc:creator>
				<category><![CDATA[iPhone-devel]]></category>

		<guid isPermaLink="false">http://www.corradoignoti.it/?p=1303</guid>
		<description><![CDATA[Stanchi di cercare online le versioni di: OpenSSL libEtPan zlib libssh2 Cyrus SASL cURL per i vostri progetti sugli iDevices per poi doverveli compilare? ios-static-libraries è il progetto che fa per voi. O meglio questo è il progetto che ha fatto per me Il progetto fornisce: uno script per la compilazione delle librerie citate i [...]]]></description>
			<content:encoded><![CDATA[<p>Stanchi di cercare online le versioni di:</p>
<ul>
<li><a href="http://www.openssl.org/" target="_blank">OpenSSL</a></li>
<li><a href="http://libetpan.sourceforge.net/libetpan/index.html" target="_blank">libEtPan</a></li>
<li><a href="http://www.zlib.net/" target="_blank">zlib</a></li>
<li><a href="http://www.libssh2.org/" target="_blank">libssh2</a></li>
<li><a href="http://asg.web.cmu.edu/sasl/sasl-library.html" target="_blank">Cyrus SASL</a></li>
<li><a href="http://curl.haxx.se/" target="_blank">cURL</a></li>
</ul>
<p>per i vostri progetti sugli iDevices per poi doverveli compilare? <a href="http://code.google.com/p/ios-static-libraries/">ios-static-libraries</a> è il progetto che fa per voi. O meglio questo è il progetto che ha fatto per me <img src='http://www.corradoignoti.it/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Il progetto fornisce:</p>
<ul>
<li>uno script per la compilazione delle librerie citate</li>
<li>i binari delle stesse librerie pronti per essere utilizzati nei propri progetti</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.corradoignoti.it/2011/08/11/ios-static-libraries-librerie-per-crittografiche-pronte-alluso/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cremona&#8230;. vista da un cremonese</title>
		<link>http://www.corradoignoti.it/2011/06/17/cremona-vista-da-un-cremonese/</link>
		<comments>http://www.corradoignoti.it/2011/06/17/cremona-vista-da-un-cremonese/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 08:04:10 +0000</pubDate>
		<dc:creator>corradoignoti</dc:creator>
				<category><![CDATA[Fotografie]]></category>

		<guid isPermaLink="false">http://www.corradoignoti.it/?p=1280</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div align="center">
						<div class="flickr-gallery image none"><a href="http://www.flickr.com/photos/fizban/348980092"><img class="flickr medium" title="Piazza del Duomo \"a matita\"" alt="Piazza del Duomo \"a matita\"" src="http://farm1.static.flickr.com/144/348980092_ec8a81ae7f.jpg" /></a></div>
					
</div>
				<div id="gallery-ae90e2b3" class="flickr-gallery photoset">
													<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=348955622"><img class="photo" title="Piazza Stradivari" src="http://farm1.static.flickr.com/135/348955622_3b891ececf_s.jpg" alt="Piazza Stradivari" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=348955508"><img class="photo" title="Piazza Stradivari" src="http://farm1.static.flickr.com/154/348955508_2042d96fde_s.jpg" alt="Piazza Stradivari" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=348955350"><img class="photo" title="Piazza del Duomo" src="http://farm1.static.flickr.com/128/348955350_f772f896c7_s.jpg" alt="Piazza del Duomo" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=348955255"><img class="photo" title="Piazza del Duomo" src="http://farm1.static.flickr.com/145/348955255_c5031ac6da_s.jpg" alt="Piazza del Duomo" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=348955157"><img class="photo" title="Piazza del Duomo" src="http://farm1.static.flickr.com/136/348955157_a6dead87c5_s.jpg" alt="Piazza del Duomo" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=348955039"><img class="photo" title="La Cattedrale di Notte" src="http://farm1.static.flickr.com/166/348955039_86f283381b_s.jpg" alt="La Cattedrale di Notte" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=348954937"><img class="photo" title="Il Battistero e il Torrazzo" src="http://farm1.static.flickr.com/145/348954937_c167d9bea7_s.jpg" alt="Il Battistero e il Torrazzo" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=348954888"><img class="photo" title="La Cattedrale di Cremona" src="http://farm1.static.flickr.com/149/348954888_ddd727de0a_s.jpg" alt="La Cattedrale di Cremona" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=348925735"><img class="photo" title="Cremona Piazza del Duomo" src="http://farm1.static.flickr.com/159/348925735_ea10eaa8aa_s.jpg" alt="Cremona Piazza del Duomo" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=348965675"><img class="photo" title="La neve in Piazza del Duomo" src="http://farm1.static.flickr.com/142/348965675_9969832f8d_s.jpg" alt="La neve in Piazza del Duomo" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=351984544"><img class="photo" title="Piazza Duomo Cremona Natale 2006" src="http://farm1.static.flickr.com/133/351984544_606981fe0d_s.jpg" alt="Piazza Duomo Cremona Natale 2006" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=355902462"><img class="photo" title="Piazza Duomo a Natale" src="http://farm1.static.flickr.com/138/355902462_38a4be53a8_s.jpg" alt="Piazza Duomo a Natale" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=348980092"><img class="photo" title="Piazza del Duomo \"a matita\"" src="http://farm1.static.flickr.com/144/348980092_ec8a81ae7f_s.jpg" alt="Piazza del Duomo \"a matita\"" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=424297380"><img class="photo" title="Tramonto sul Po" src="http://farm1.static.flickr.com/185/424297380_93b8453b4d_s.jpg" alt="Tramonto sul Po" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=424297320"><img class="photo" title="Il Po...al tramonto" src="http://farm1.static.flickr.com/148/424297320_63e454ff3e_s.jpg" alt="Il Po...al tramonto" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=359405705"><img class="photo" title="Piazza del Duomo schizzo a colori" src="http://farm1.static.flickr.com/166/359405705_1e5777da81_s.jpg" alt="Piazza del Duomo schizzo a colori" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=357068606"><img class="photo" title="Piazza Duomo un panorama a Matita" src="http://farm1.static.flickr.com/148/357068606_0a9a6a340f_s.jpg" alt="Piazza Duomo un panorama a Matita" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=355919442"><img class="photo" title="Il Po e la nebbia" src="http://farm1.static.flickr.com/159/355919442_1b212ae9d2_s.jpg" alt="Il Po e la nebbia" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=355919398"><img class="photo" title="Un po' di natura in città" src="http://farm1.static.flickr.com/161/355919398_180acfbde0_s.jpg" alt="Un po' di natura in città" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=424297446"><img class="photo" title="Albero" src="http://farm1.static.flickr.com/162/424297446_3b5c71c132_s.jpg" alt="Albero" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=424297548"><img class="photo" title="Albero" src="http://farm1.static.flickr.com/164/424297548_cb6e91c5d7_s.jpg" alt="Albero" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=424297610"><img class="photo" title="Un fosso vicino a Cremona" src="http://farm1.static.flickr.com/161/424297610_05afaa6ec8_s.jpg" alt="Un fosso vicino a Cremona" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=424297685"><img class="photo" title="Un fosso vicino a Cremona" src="http://farm1.static.flickr.com/148/424297685_849c17ffb5_s.jpg" alt="Un fosso vicino a Cremona" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=424297752"><img class="photo" title="Vista della Campagna di Cremona in inverno" src="http://farm1.static.flickr.com/163/424297752_86951e796b_s.jpg" alt="Vista della Campagna di Cremona in inverno" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=424297824"><img class="photo" title="Vista della Campagna di Cremona in inverno" src="http://farm1.static.flickr.com/182/424297824_7af593e0fc_s.jpg" alt="Vista della Campagna di Cremona in inverno" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=424297870"><img class="photo" title="Tramonto sul Po" src="http://farm1.static.flickr.com/152/424297870_0e2a8355a1_s.jpg" alt="Tramonto sul Po" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=496023828"><img class="photo" title="Acqua e Cielo" src="http://farm1.static.flickr.com/211/496023828_97cf87ca29_s.jpg" alt="Acqua e Cielo" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=496023874"><img class="photo" title="Temporale" src="http://farm1.static.flickr.com/216/496023874_76616c9be7_s.jpg" alt="Temporale" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=487177313"><img class="photo" title="Temporale" src="http://farm1.static.flickr.com/196/487177313_1c65454d00_s.jpg" alt="Temporale" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=865119849"><img class="photo" title="Piazza del Duomo dalle finestre del Comune" src="http://farm2.static.flickr.com/1375/865119849_40d27c0265_s.jpg" alt="Piazza del Duomo dalle finestre del Comune" /></a>
								</div>
												<div class="fg-clear"></div>
				</div>
									<div class="fg-clear" id="fg-ae90e2b3-nav">
						<div id="fg-ae90e2b3-next" class="flickr-gallery-next" style="float: right"><a href="#">Next Page &rsaquo;</a></div>
						<div id="fg-ae90e2b3-prev" class="flickr-gallery-prev" style="display: none; float: left"><a href="#">&lsaquo; Previous Page</a></div>
					</div>
												<div class="fg-clear"></div>
							<script type="text/javascript">
											jQuery(document).ready(function(){
							jQuery("#gallery-ae90e2b3 .flickr-thumb img").flightbox({size_callback: get_sizes});
						});
										
											var flickr_gallery_ae90e2b3_page = 1;
						(function($){
							$(document).ready(function(){
								$("#fg-ae90e2b3-next a, #fg-ae90e2b3-prev a").click(function(e){
									if ( $(e.target).parent().is("#fg-ae90e2b3-next") ) {
										flickr_gallery_ae90e2b3_page++;
									} else {
										flickr_gallery_ae90e2b3_page--;
									}
									$("#gallery-ae90e2b3 .flickr-thumb").css("visibility", "hidden");
									//$("#gallery-ae90e2b3").css("background", "transparent url(http://www.corradoignoti.it/wp-content/plugins/flickr-gallery/flightbox/images/loading-2.gif) scroll no-repeat center center");
									$.post("/feed/", {
										action: 'flickr-gallery-page',
										pager: "O:15:\"phpFlickr_pager\":5:{s:6:\"method\";s:26:\"flickr.photosets.getPhotos\";s:4:\"args\";a:4:{s:11:\"photoset_id\";s:17:\"72157594464877382\";s:6:\"extras\";s:6:\",media\";s:8:\"per_page\";i:30;s:4:\"page\";i:1;}s:8:\"per_page\";s:2:\"30\";s:4:\"page\";i:1;s:6:\"_extra\";N;}",
										page: flickr_gallery_ae90e2b3_page
									}, function(rsp){
										$("#gallery-ae90e2b3").html(rsp.html);
																					$("#gallery-ae90e2b3 .flickr-thumb img").flightbox({size_callback: get_sizes});
																				if ( rsp.page == 1 ) {
											$("#fg-ae90e2b3-prev").hide();
										} else {
											$("#fg-ae90e2b3-prev").show();
										}
										if ( rsp.page == rsp.pages ) {
											$("#fg-ae90e2b3-next").hide();
										} else {
											$("#fg-ae90e2b3-next").show();
										}
									}, 'json');
									return false;
								});
							});
						})(jQuery);
										//-->
				</script>
			
]]></content:encoded>
			<wfw:commentRss>http://www.corradoignoti.it/2011/06/17/cremona-vista-da-un-cremonese/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Come usare un sensore di prossimità con Arduino</title>
		<link>http://www.corradoignoti.it/2011/06/07/sonic-range-srf05/</link>
		<comments>http://www.corradoignoti.it/2011/06/07/sonic-range-srf05/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 11:38:59 +0000</pubDate>
		<dc:creator>corradoignoti</dc:creator>
				<category><![CDATA[Arduino]]></category>

		<guid isPermaLink="false">http://www.corradoignoti.it/?p=1250</guid>
		<description><![CDATA[Collegare un sensore di prossimità ad Arduino per calcolare la distanza da un oggetto. Esistono diversi circuiti integrati che assolvono questo compito. Le tecnologie utilizzate sono sostanzialmente due: infrarossi ed ultrasuoni. La mia scelta è caduta sul Sonic SRF05 che impiega la seconda tecnologia: dal datasheet e dai vari post che ho visto in giro, [...]]]></description>
			<content:encoded><![CDATA[<p>Collegare un sensore di prossimità ad Arduino per calcolare la distanza da un oggetto.<br />
Esistono diversi circuiti integrati che assolvono questo compito.<br />
Le tecnologie utilizzate sono sostanzialmente due: infrarossi ed ultrasuoni. La mia scelta è caduta sul Sonic SRF05 che impiega la seconda tecnologia: dal datasheet e dai vari post che ho visto in giro, sembrava quello più affidabile, più economico e più semplice da impiegare.<br />
Ho acquistato l&#8217;integrato in Italia su <a href="http://www.robot-italy.com">Robot-Italy</a><br />
Il circuito si presenta così:<br/><br />
<a rel="lightbox[roadtrip]" href="https://lh4.googleusercontent.com/-mrEtDjfH6Tg/TeyGxo51amI/AAAAAAAAAgo/LRHpRP2gc4A/s800/srf05a.jpg" title="SRF05"><br />
<img title="SRF05" src="https://lh4.googleusercontent.com/-mrEtDjfH6Tg/TeyGxo51amI/AAAAAAAAAgo/LRHpRP2gc4A/s288/srf05a.jpg" alt="" width="288" height="194" /><br />
</a><br />
Il funzionamento è semplice, avviene inviando un impulso ad ultrasuoni (frequenza attorno ai 40Khz), attendendo che l&#8217;impulso ritorni dopo aver colpito un oggetto. Misurando il tempo impiegato fra il momento in cui l&#8217;impulso è stato emesso e quello in cui questo ritorna, viene calcolata la distanza fra il sensore e l&#8217;oggetto. Le distanze misurabili vanno dai 3 cm ai 4 metri.</p>
<p>Interfacciare il sensore ad Arduino è veramente molto semplice, ci sono solo 4 connettori di cui preoccuparsi: alimentazione, massa, trigger ed echo. L&#8217;alimentazione richiesta è pari a 5V, esattamente la tensione emessa da Arduino, per cui per alimentarlo è sufficiente collegarlo al controllore senza l&#8217;ausilio di alimentazioni esterne.<br />
<a rel="lightbox[roadtrip]" href="https://lh6.googleusercontent.com/-WD5pYOhyiLE/Te0AGlNOHPI/AAAAAAAAAg0/br88jB2nWAM/s800/IMG_0217%252520copy.jpg" title="Come usare un sensore di prossimità con Arduino"><br />
<img src="https://lh6.googleusercontent.com/-WD5pYOhyiLE/Te0AGlNOHPI/AAAAAAAAAg0/br88jB2nWAM/s288/IMG_0217%252520copy.jpg" alt="Schema di collegamento" /></a></p>
<p>Colleghiamo il connettore &#8216;echo&#8217; al Pin 2 del controllore, quello trigger al Pin 3 e, in fine, i due Pin di alimentazione (+5V e GND).<br />
Fatti i dovuti collegamenti hardware passiamo alla parte software, useremo questo algoritmo per la lettura della misura: dopo aver inizializzato le variabili e i PIN del controllore, eseguiamo 10 letture consecutive, ne calcoliamo le media e prendiamo quella come valore della distanza in cm.</p>
<p>Di seguito il codice sorgente:</p>
<div class="codecolorer-container cpp mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br /></div></td><td><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff0000; font-style: italic;">/*<br />
&nbsp;* Autore: Corrado Ignoti<br />
&nbsp;* <br />
&nbsp;* Descrizione: Interfaccia un SFR05 con Arduino<br />
&nbsp;*<br />
&nbsp;* Maggiori informazioni su: http://www.corradoignoti.it<br />
&nbsp;*/</span><br />
<br />
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> numOfReadings <span style="color: #000080;">=</span> <span style="color: #0000dd;">10</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666;">// numero di letture</span><br />
<span style="color: #0000ff;">int</span> readings<span style="color: #008000;">&#91;</span>numOfReadings<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
<span style="color: #0000ff;">int</span> arrayIndex <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666;">// contatore per ciclare nell'array</span><br />
<span style="color: #0000ff;">int</span> total <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
<span style="color: #0000ff;">int</span> averageDistance <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #666666;">// distanza media</span><br />
<br />
<span style="color: #666666;">// inizializzo i PIN per collegare la scheda SFR05</span><br />
<span style="color: #0000ff;">int</span> echoPin <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #666666;">// echo (digital 2)</span><br />
<br />
<span style="color: #0000ff;">int</span> initPin <span style="color: #000080;">=</span> <span style="color: #0000dd;">3</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #666666;">// trigger &nbsp;(digital 3)</span><br />
<span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">long</span> pulseTime <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
<span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">long</span> distance <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666;">// distanza in cm</span><br />
<br />
<span style="color: #666666;">//setup</span><br />
<span style="color: #0000ff;">void</span> setup<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; pinMode<span style="color: #008000;">&#40;</span>initPin, OUTPUT<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; pinMode<span style="color: #008000;">&#40;</span>echoPin, INPUT<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> &nbsp; &nbsp;<br />
&nbsp; <br />
&nbsp; <span style="color: #666666;">// inizializza un array delle letture</span><br />
&nbsp; <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> thisReading <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> thisReading <span style="color: #000080;">&lt;</span> numOfReadings<span style="color: #008080;">;</span> thisReading<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; readings<span style="color: #008000;">&#91;</span>thisReading<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp;Serial.<span style="color: #007788;">begin</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">9600</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> &nbsp;<span style="color: #666666;">//inizializza la seriale</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #666666;">// loop principale</span><br />
<span style="color: #0000ff;">void</span> loop<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; <span style="color: #666666;">//manda un impulso di ampiezza 10 us</span><br />
&nbsp; digitalWrite<span style="color: #008000;">&#40;</span>initPin, HIGH<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; delayMicroseconds<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; digitalWrite<span style="color: #008000;">&#40;</span>initPin, LOW<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; pulseTime <span style="color: #000080;">=</span> pulseIn<span style="color: #008000;">&#40;</span>echoPin, HIGH<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666;">// Aspetta l'eco di risposta</span><br />
&nbsp; distance <span style="color: #000080;">=</span> pulseTime<span style="color: #000040;">/</span><span style="color: #0000dd;">58</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #666666;">// Distance = tempo impulso / 58 per calcolare i [cm] di distanza.</span><br />
&nbsp; <br />
&nbsp;<span style="color: #666666;">//Per diminuire l'errore crea un array con le letture e calcola la media</span><br />
&nbsp; total<span style="color: #000080;">=</span> total <span style="color: #000040;">-</span> readings<span style="color: #008000;">&#91;</span>arrayIndex<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; readings<span style="color: #008000;">&#91;</span>arrayIndex<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> distance<span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; total<span style="color: #000080;">=</span> total <span style="color: #000040;">+</span> readings<span style="color: #008000;">&#91;</span>arrayIndex<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; arrayIndex <span style="color: #000080;">=</span> arrayIndex <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; <br />
&nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>arrayIndex <span style="color: #000080;">&gt;=</span> numOfReadings<span style="color: #008000;">&#41;</span> &nbsp;<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; arrayIndex <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; averageDistance <span style="color: #000080;">=</span> total <span style="color: #000040;">/</span> numOfReadings<span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp;<span style="color: #666666;">//Media dei valori delle distanze acquisite</span><br />
&nbsp; <br />
&nbsp; <span style="color: #666666;">//Scrive il valore della distanza media sulla seriale</span><br />
&nbsp; Serial.<span style="color: #007788;">print</span> <span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Distanza (media): &quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; Serial.<span style="color: #007788;">println</span><span style="color: #008000;">&#40;</span>averageDistance, DEC<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; delay<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
<span style="color: #008000;">&#125;</span></div></td></tr></tbody></table></div>
<p>All&#8217;inizio del ciclo <strong>loop()</strong> questa porzione di codice:</p>
<div class="codecolorer-container cpp mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; digitalWrite<span style="color: #008000;">&#40;</span>initPin, HIGH<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; delayMicroseconds<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; digitalWrite<span style="color: #008000;">&#40;</span>initPin, LOW<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; pulseTime <span style="color: #000080;">=</span> pulseIn<span style="color: #008000;">&#40;</span>echoPin, HIGH<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; distance <span style="color: #000080;">=</span> pulseTime<span style="color: #000040;">/</span><span style="color: #0000dd;">58</span><span style="color: #008080;">;</span></div></td></tr></tbody></table></div>
<p>manda un impulso per 10us aspetta e si mette in ascolto aspettando l&#8217;eco di risposta. Attraverso la primitiva <strong>pulseIn()</strong>, calcola il tempo fra l&#8217;emissione del segnale e la ricezione dell&#8217;impulso di risposta. La distanza in cm si ottiene dividendo per 58 questo valore.<br />
La seconda parte del codice, esegue 10 letture consecutive, le mette in un array. Calcola la media delle letture e stampa questo valore sulla seriale.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.corradoignoti.it/2011/06/07/sonic-range-srf05/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Chi ha paura di facebook?</title>
		<link>http://www.corradoignoti.it/2011/05/21/chi-ha-paura-di-facebook/</link>
		<comments>http://www.corradoignoti.it/2011/05/21/chi-ha-paura-di-facebook/#comments</comments>
		<pubDate>Sat, 21 May 2011 12:15:07 +0000</pubDate>
		<dc:creator>corradoignoti</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.corradoignoti.it/?p=1237</guid>
		<description><![CDATA[Chi ha paura di facebook A giudicare da quello che ho visto&#8230;. i genitori e non i bambini. Ma la mia opinione è che anche i più piccoli devono sapere che navigare su internet è bello ma nasconde dei pericoli. Pubblico le slide di un intervento che ho tenuto alle quinte della Scuola Elementare Marconi [...]]]></description>
			<content:encoded><![CDATA[<div style="width:425px" id="__ss_8051016"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/corradoignoti/chi-ha-paura-di-facebook" title="Chi ha paura di facebook">Chi ha paura di facebook</a></strong><object id="__sse8051016" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=navigaresicuribambini-110521065513-phpapp02&#038;stripped_title=chi-ha-paura-di-facebook&#038;userName=corradoignoti" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse8051016" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=navigaresicuribambini-110521065513-phpapp02&#038;stripped_title=chi-ha-paura-di-facebook&#038;userName=corradoignoti" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<p><br/><br />
A giudicare da quello che ho visto&#8230;. i genitori e non i bambini. Ma la mia opinione è  che anche i più piccoli devono sapere  che navigare su internet è bello ma nasconde dei pericoli.<br />
Pubblico le slide di un intervento che ho tenuto alle quinte della Scuola Elementare Marconi di Casalmaggiore (CR), su questo argomento.<br />
E&#8217; possibile scaricare le <a href='http://www.corradoignoti.it/wp-content/uploads/2011/05/chiHaPauraDiFacebook.pdf'>slide dell&#8217;intervento</a> in formato PDF </p>
]]></content:encoded>
			<wfw:commentRss>http://www.corradoignoti.it/2011/05/21/chi-ha-paura-di-facebook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

