<?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>Good2Know</title>
	<atom:link href="http://www.good2know.it/feed" rel="self" type="application/rss+xml" />
	<link>http://www.good2know.it</link>
	<description>Webmaster's blog</description>
	<lastBuildDate>Thu, 29 Mar 2012 20:39: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>Codemotion 2012 &#8211; Impressioni e tante emozioni.</title>
		<link>http://www.good2know.it/eventi/codemotion-2012-impressioni-e-tante-emozioni/</link>
		<comments>http://www.good2know.it/eventi/codemotion-2012-impressioni-e-tante-emozioni/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 12:00:38 +0000</pubDate>
		<dc:creator>Filippo Matteo Riggio</dc:creator>
				<category><![CDATA[Eventi]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[codemotion]]></category>
		<category><![CDATA[roma]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.good2know.it/?p=1566</guid>
		<description><![CDATA[Come alcuni di voi hanno avuto modo di sapere dal post precedente, ho partecipato come speaker al Codemotion 2012. Il Codemotion è un evento organizzato dalla Facoltà di Ingegneria Informatica di Roma 3. In questo evento, della durata di 2 giorni, vengono presentati talk con argomenti molto vari, si va dai linguaggi per il frontend, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.good2know.it/wp-content/uploads/2012/03/logo-codemotion.jpg"><img class="size-full wp-image-1567 alignleft" title="logo-codemotion" src="http://www.good2know.it/wp-content/uploads/2012/03/logo-codemotion.jpg" alt="" width="200" height="200" /></a></p>
<p>Come alcuni di voi hanno avuto modo di sapere dal <a href="http://www.good2know.it/news/codemotion-a-roma-il-23-24-marzo-2012-arduino-quando-un-aperitivo-avvicina-elettronica-ed-informatica">post precedente</a>, ho partecipato come speaker al <a href="www.codemotion.it">Codemotion 2012</a>.</p>
<p>Il Codemotion è un evento organizzato dalla Facoltà di Ingegneria Informatica di Roma 3.<br />
<span id="more-1566"></span><br />
In questo evento, della durata di 2 giorni, vengono presentati talk con argomenti molto vari, si va dai <strong>linguaggi per il frontend</strong>, a <strong>java</strong> passando per speech su <strong>elettronica e robotica</strong>.</p>
<p>Qui sotto trovate il talk che ho presentato.</p>
<div style="width:425px" id="__ss_12191044"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/FMRiggio/arduino-quando-un-aperitivo-avvicina-elettronica-ed-informatica" title="Arduino, quando un aperitivo avvicina elettronica ed informatica." target="_blank">Arduino, quando un aperitivo avvicina elettronica ed informatica.</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/12191044" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/thecroaker/death-by-powerpoint" target="_blank">PowerPoint</a> from <a href="http://www.slideshare.net/FMRiggio" target="_blank">Matteo Riggio</a> </div>
</p></div>
<h3>Emozioni</h3>
<p>Ovviamente c&#8217;è ne sono state a bizzeffe.<br />
Prima di tutto ansia ed <strong>agitazione</strong>, essendo il mio primo talk pubblico.<br />
Anche i partecipanti erano parecchi, <strong>circa 150</strong>.<br />
Quindi lo stato d&#8217;ansia era notevole, ma, una volta iniziato, questa si è trasformata in fiume di parole su questa meraviglia tecnologica.<br />
Oltre all&#8217;ansia, senz&#8217;altro lo stupore, iniziato con un fragoroso applauso e finito con un <strong>brainstorming</strong> al pomeriggio con <a href="http://www.bug.st/">Cristian Maglie</a>, uno dei collaboratori al progetto Arduino.</p>
<h3>I talk</h3>
<p>Gli speech che ho seguito si sono rivelati senz&#8217;altro interessanti, alcuni più di altri.<br />
E&#8217; senz&#8217;altro il caso di quello relativo a <a href="http://www.codemotion.it/talk/dal-modello-relazionale-al-grafo-cosa-cambia" target="_blank">GraphDB</a>, seguito a ruota da &#8220;<a href="http://www.codemotion.it/talk/git-happens" target="_blank">GIT Happens!</a>&#8221; e da <a href="http://www.codemotion.it/talk/crea-il-computer-di-bordo-la-tua-astronave" target="_blank">quello di Cristian Maglie</a>.<br />
Altri 2 talk molto interessanti sono &#8220;<a href="http://www.codemotion.it/talk/kinect-net-nui-interfacce-naturali-facili-con-kinect" target="_blank">Kinect + .NET</a>&#8221; e quello relativo a <a href="http://www.codemotion.it/talk/client-side-mvc-con-backbonejs" target="_blank">Backbone.js</a>.</p>
<p>Vi consiglio di aspettare i video dei talk sul sito del Codemotion per poter gustarveli a pieno.</p>
<h3>In conclusione</h3>
<p>Vi consiglio caldamente di andare a seguire questo evento se siete nei pressi di Roma.</p>
<p>Di lati negativi ne ho visti gran pochi, quindi inizio a tessere le lodi per quelli che sono stati gli aspetti più positivi a mio avviso.</p>
<p><em><strong>Organizzazione</strong></em><br />
Senz&#8217;altro all&#8217;altezza di un flusso di persone così ampio, <strong>tutto quanto ben disposto</strong> e al di sopra delle aspettative.<br />
<em><strong></strong></em></p>
<p><em><strong>Costo</strong></em><br />
Praticamente non c&#8217;è, l&#8217;evento è <strong>gratuito</strong>, ma intanto vieni ricoperto di meravigliosi gadget quali t-shirt, blocco note, manuali, ecc.<br />
<em><strong></strong></em></p>
<p><em><strong>Qualità dei talk</strong></em><br />
Senz&#8217;altro il punto di forza di questa manifestazione. I talk sono preparati tutti da persone molto competenti e che sanno il fatto loro. Il fatto poi che siano tanti, su argomenti vari ed in italiano, <strong>tiene l&#8217;attenzione dello spettatore alta</strong> e la mantiene costante nel tempo.</p>
<h3>Rigraziamenti</h3>
<p>I ringraziamenti sarebbero senz&#8217;altro infiniti, quindi ne faccio un paio generali.<br />
Il primo ad <a href="http://www.intesys.it" target="_blank">Intesys</a>, che dà ai suoi dipendenti la possibilità di crescere e accrescere le proprie competenze professionali.<br />
Il secondo al mio compagno di viaggio, <a href="https://twitter.com/#!/npasquetto" target="_blank">Niccolò</a>, che ha condiviso con me bei momenti, soprattutto quelli in compagnia di <strong>birra e &#8220;panino ca&#8217; sarciccia&#8221;</strong> di fronte al Colosseo.</p>
<p>Alla prossima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.good2know.it/eventi/codemotion-2012-impressioni-e-tante-emozioni//feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Codemotion a Roma il 23-24 Marzo 2012 &#8211; Arduino, quando un aperitivo avvicina elettronica ed informatica.</title>
		<link>http://www.good2know.it/news/codemotion-a-roma-il-23-24-marzo-2012-arduino-quando-un-aperitivo-avvicina-elettronica-ed-informatica/</link>
		<comments>http://www.good2know.it/news/codemotion-a-roma-il-23-24-marzo-2012-arduino-quando-un-aperitivo-avvicina-elettronica-ed-informatica/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 12:53:15 +0000</pubDate>
		<dc:creator>Filippo Matteo Riggio</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[codemotion]]></category>
		<category><![CDATA[elettronica]]></category>
		<category><![CDATA[informatica]]></category>

		<guid isPermaLink="false">http://www.good2know.it/?p=1561</guid>
		<description><![CDATA[Cari lettori di Good2know, è con piacere che vi dò l&#8217;annuncio della mia presenza al Codemotion di quest&#8217;anno. La mattina del Sabato 24 Marzo, alle ore 09.50, terrò un talk dal titolo leggermente bizzarro: &#8220;Arduino, quando un aperitivo avvicina elettronica ed informatica&#8220;. Il talk parla di Arduino, una piattaforma di prototipazione, sviluppata ad Ivrea, che [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.good2know.it/wp-content/uploads/2012/03/codemotion.jpg"><img class="alignnone size-full wp-image-1562" title="codemotion" src="http://www.good2know.it/wp-content/uploads/2012/03/codemotion.jpg" alt="" width="200" height="200" /></a>Cari lettori di Good2know, è con piacere che vi dò l&#8217;annuncio della <strong>mia presenza al Codemotion</strong> di quest&#8217;anno.<br />
La mattina del <strong>Sabato 24 Marzo, alle ore 09.50</strong>, terrò un talk dal titolo leggermente bizzarro: &#8220;<a href="http://www.codemotion.it/talk/arduino-quando-un-aperitivo-avvicina-elettronica-ed-informatica">Arduino, quando un aperitivo avvicina elettronica ed informatica</a>&#8220;.</p>
<p>Il talk parla di <strong>Arduino</strong>, una piattaforma di prototipazione, sviluppata ad Ivrea, che riesce a far sviluppare piccoli progetti di elettronica a programmatori che, come me, non capiscono una ceppa di elettronica.</p>
<p>Se per caso in quei giorni siete a Roma ed avete voglia di stare ad ascoltare le mie ciancie ne sarò ben lieto.<br />
Dato il post, sfrutto l&#8217;occasione per consigliarvi caldamente di partecipare al Codemotion, un&#8217;iniziativa davvero fatta bene, in cui si possono ascoltare talk riguardanti molte delle nuove tecnologie in circolazione.</p>
<p>Alla prossima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.good2know.it/news/codemotion-a-roma-il-23-24-marzo-2012-arduino-quando-un-aperitivo-avvicina-elettronica-ed-informatica//feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>La Successione di Fibonacci &#8211; Video</title>
		<link>http://www.good2know.it/curiosita/la-successione-di-fibonacci-video/</link>
		<comments>http://www.good2know.it/curiosita/la-successione-di-fibonacci-video/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 15:20:08 +0000</pubDate>
		<dc:creator>Filippo Matteo Riggio</dc:creator>
				<category><![CDATA[Curiosità]]></category>
		<category><![CDATA[fibonacci]]></category>
		<category><![CDATA[successione]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.good2know.it/?p=1557</guid>
		<description><![CDATA[Ultimamente mi sono appassionato a giochi matematici ed enigmi. Mentre programmo una rubrica su enigmi e giochi matematici da pubblicare qui su Good2know, vi propongo questo video che ho trovato girovagando sul web sulla successione di Fibonacci. Buona visione!]]></description>
			<content:encoded><![CDATA[<p>Ultimamente mi sono appassionato a giochi matematici ed enigmi.<br />
Mentre programmo una rubrica su enigmi e giochi matematici da pubblicare qui su Good2know, vi propongo questo video che ho trovato girovagando sul web sulla <strong>successione di Fibonacci</strong>.<br />
Buona visione!<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/P0tLbl5LrJ8" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.good2know.it/curiosita/la-successione-di-fibonacci-video//feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ecografia con l&#8217;iPhone</title>
		<link>http://www.good2know.it/nuove-tecnologie/ecografia-con-liphone/</link>
		<comments>http://www.good2know.it/nuove-tecnologie/ecografia-con-liphone/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 12:43:26 +0000</pubDate>
		<dc:creator>Filippo Matteo Riggio</dc:creator>
				<category><![CDATA[Nuove tecnologie]]></category>
		<category><![CDATA[ecografia]]></category>
		<category><![CDATA[gadget]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.good2know.it/?p=1553</guid>
		<description><![CDATA[Se è vero il motto &#8220;C&#8217;è un&#8217;applicazione per tutto&#8221; anche il numero di gadget per smartphone sta raggiungendo questa definizione. E&#8217; il caso di un piccolo strumento per medici che permette di fare ecografie mediante uno smartphone: l&#8217;iPhone. Il sito dove poter acquistare questa piccola meraviglia dell&#8217;umano ingegno è http://www.mobisante.com/product-overview. I video che potrete effettuare [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.good2know.it/wp-content/uploads/2011/11/ecografia-iphone.jpg"><img class="alignnone size-full wp-image-1554" title="ecografia-iphone" src="http://www.good2know.it/wp-content/uploads/2011/11/ecografia-iphone.jpg" alt="" width="200" height="200" /></a></p>
<p>Se è vero il motto &#8220;<strong>C&#8217;è un&#8217;applicazione per tutto</strong>&#8221; anche il numero di gadget per smartphone sta raggiungendo questa definizione.</p>
<p><span id="more-1553"></span>E&#8217; il caso di un piccolo strumento per medici che <strong>permette di fare ecografie mediante uno smartphone</strong>: l&#8217;iPhone.</p>
<p>Il sito dove poter acquistare questa piccola meraviglia dell&#8217;umano ingegno è <a href="http://www.mobisante.com/product-overview/" target="_blank">http://www.mobisante.com/product-overview</a>.</p>
<p>I <strong>video</strong> che potrete effettuare con l&#8217;ecografo saranno poi <strong>condivisibili</strong> e consultabili da altri medici per ulteriori pareri sanitari.</p>
<p>Di seguito un video di un&#8217;ecografia effettuata con il dispositivo.<br />
<iframe width="560" height="320" src="http://www.youtube.com/embed/SKvx7VVI6IM?feature=player_embedded" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.good2know.it/nuove-tecnologie/ecografia-con-liphone//feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Text shadow animation, testo in 3D con CSS3</title>
		<link>http://www.good2know.it/programmazione/text-shadow-animation-testo-in-3d-con-css3/</link>
		<comments>http://www.good2know.it/programmazione/text-shadow-animation-testo-in-3d-con-css3/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 20:33:20 +0000</pubDate>
		<dc:creator>Filippo Matteo Riggio</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[text shadow]]></category>
		<category><![CDATA[transition]]></category>

		<guid isPermaLink="false">http://www.good2know.it/?p=1544</guid>
		<description><![CDATA[Girovagando per il web ho trovato un effetto con i nuovi css3 molto carino., fatto utilizzando i tag introdotti nella terza versione di CSS. Attraverso questi nuovi standard si possono applicare effetti molto carini al testo. Seguendo questo link potrete vedere una demo. Per prima cosa l&#8217;HTML: la suddivisione del testo del link in span [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.good2know.it/wp-content/uploads/2011/11/css3text-shadow-animation.jpg"><img class="size-full wp-image-1545 alignnone" title="css3text-shadow-animation" src="http://www.good2know.it/wp-content/uploads/2011/11/css3text-shadow-animation.jpg" alt="" width="200" height="200" /></a></p>
<p>Girovagando per il web ho trovato un effetto con i nuovi css3 molto carino., fatto utilizzando i tag introdotti nella terza versione di CSS.</p>
<p>Attraverso questi nuovi standard si possono applicare effetti molto carini al testo.</p>
<p><span id="more-1544"></span></p>
<p>Seguendo questo link potrete vedere una <a title="Text shadow animation" href="http://www.good2know.it/examples/css3-text-shadow-animation/index.html" target="_blank">demo</a>.</p>
<p>Per prima cosa l&#8217;HTML: la suddivisione del testo del link in span serve per la stilizzazione attraverso i CSS.</p>
<pre class="brush: php; title: ; notranslate">
&lt;div id=&quot;animationWrapper&quot;&gt;
   &lt;a href=&quot;/&quot;&gt;
      &lt;span&gt;Good2know&lt;/span&gt;
      &lt;span&gt;F. Matteo&lt;/span&gt;
      &lt;span&gt;Riggio&lt;/span&gt;
      &lt;span&gt;Webmaster's Blog&lt;/span&gt;
   &lt;/a&gt;
&lt;/div&gt;
</pre>
<p>Ora la parte del codice CSS:<strong> molto interessante l&#8217;utilizzo della sintassi per l&#8217;animazione applicata sul link e sugli span</strong>.</p>
<pre class="brush: css; title: ; notranslate">
/* wrapper dell'animazione */
#animationWrapper  {
  width:530px;
  font-family: Arial,sans-serif;
  background: #222;
  padding:40px;
}

/* link che include gli span */
#animationWrapper a {
  font-weight: 800;
  text-transform: uppercase;
  font-size: 42px;
  line-height: 0.9em;
  margin-bottom: 10px;
  display: block;
  position: relative;
  color: #E58;
  text-decoration: none
}

/* animazioni css 3 */
#animationWrapper a, #animationWrapper span {
  -webkit-transition: all 0.12s ease-out;
  -moz-transition: all 0.12s ease-out;
  -o-transition: all 0.12s ease-out;
  -ms-transition: all 0.12s ease-out;
  transition: all 0.12s ease-out;
}

#animationWrapper span {
  display: block;
  color: #555;
  text-shadow: 1px 1px black, 2px 2px black, 3px 3px black, 4px 4px black, 5px 5px black, 6px 6px black, 7px 7px black, 8px 8px black;
}

/* dimensioni speciali per il primo span */
#animationWrapper .span1 {
  font-size: 76px;
  line-height: 0.8em;
}

#animationWrapper a:hover {
    color: #fff ;
    top: -3px;
    left: -3px;
}

/* gli span diventano bianchi sull'hover */
#animationWrapper a:hover span {
  color:#fff;
}

/* colori differenti per gli span */
#animationWrapper a:hover .span1 {
    text-shadow: 1px 1px #58E, 2px 2px #58E, 3px 3px #58E, 4px 4px #58E, 5px 5px #58E, 6px 6px #58E, 7px 7px #58E, 8px 8px #58E, 9px 9px #58E, 10px 10px #58E, 11px 11px #58E;
}

#animationWrapper a:hover .span2 {
    text-shadow: 1px 1px #F90, 2px 2px #F90, 3px 3px #F90, 4px 4px #F90, 5px 5px #F90, 6px 6px #F90, 7px 7px #F90, 8px 8px #F90, 9px 9px #F90, 10px 10px #F90, 11px 11px #F90;
}

#animationWrapper a:hover .span3 {
    text-shadow: 1px 1px #3C7, 2px 2px #3C7, 3px 3px #3C7, 4px 4px #3C7, 5px 5px #3C7, 6px 6px #3C7, 7px 7px #3C7, 8px 8px #3C7, 9px 9px #3C7, 10px 10px #3C7, 11px 11px #3C7;
}

#animationWrapper a:hover .span4 {
    text-shadow: 1px 1px #E58, 2px 2px #E58, 3px 3px #E58, 4px 4px #E58, 5px 5px #E58, 6px 6px #E58, 7px 7px #E58, 8px 8px #E58, 9px 9px #E58, 10px 10px #E58, 11px 11px #E58;
}
</pre>
<p>Potrete utilizzare questo effetto per header o banner ad effetto senza andare ad utilizzare javascript o flash.<br />
In un prossimo articolo descriverò più in profondità quelle che sono le varie transizioni possibili con CSS 3.<br />
Alla prossima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.good2know.it/programmazione/text-shadow-animation-testo-in-3d-con-css3//feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>E dopo robots.txt è il momento di humans.txt</title>
		<link>http://www.good2know.it/programmazione/e-dopo-robots-txt-e-il-momento-di-humans-txt/</link>
		<comments>http://www.good2know.it/programmazione/e-dopo-robots-txt-e-il-momento-di-humans-txt/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 12:57:56 +0000</pubDate>
		<dc:creator>Filippo Matteo Riggio</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[humans.txt]]></category>
		<category><![CDATA[robots.txt]]></category>
		<category><![CDATA[team di sviluppo]]></category>

		<guid isPermaLink="false">http://www.good2know.it/?p=1536</guid>
		<description><![CDATA[Il file robots.txt penso che lo conosciamo tutti, è un file txt per aiutare i crawler dei motori di ricerca nell&#8217;indicizzazione. Bene, dopo i robot nei siti internet conteranno anche gli umani, è questa l&#8217;idea di fondo di humanstxt.org, un movimento online che cerca di far utilizzare questo txt per descrivere chi sta dietro ad [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.good2know.it/wp-content/uploads/2011/11/humanstxt-robotstxt.jpg"><img class="size-full wp-image-1542 alignnone" title="humanstxt-robotstxt" src="http://www.good2know.it/wp-content/uploads/2011/11/humanstxt-robotstxt.jpg" alt="" width="200" height="200" /></a></p>
<p>Il file robots.txt penso che lo conosciamo tutti, è un file txt per aiutare i crawler dei motori di ricerca nell&#8217;indicizzazione.</p>
<p>Bene, dopo i robot nei siti internet conteranno anche gli umani, è questa l&#8217;idea di fondo di <a href="http://humanstxt.org" target="_blank">humanstxt.org</a>, un movimento online che cerca di far utilizzare questo txt per<strong> descrivere chi sta dietro ad un sito web</strong>: developer, designer, seo, copywriter, ecc.<br />
<span id="more-1536"></span>Esiste già anche una sintassi a riguardo:</p>
<blockquote><p><strong>/* TEAM */<br />
Your title: Your name.<br />
Site: email, link to a contact form, etc.<br />
Twitter: your Twitter username.<br />
Location: City, Country.</strong></p>
<p><strong>/* THANKS */<br />
Name: name or url</strong></p>
<p><strong>/* SITE */<br />
Last update: YYYY/MM/DD<br />
Standards: HTML5, CSS3,..<br />
Components: Modernizr, jQuery, etc.<br />
Software: Software used for the development </strong></p></blockquote>
<p>Chi lo utilizza già? Tra i grandi <a href="http://www.google.com/humans.txt" target="_blank">google.com</a> e <a href="http://www.flickr.com/humans.txt">flickr.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.good2know.it/programmazione/e-dopo-robots-txt-e-il-momento-di-humans-txt//feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend_Acl e Zend_Auth &#8211; Sistema di autenticazione e autorizzazione con Zend Framework</title>
		<link>http://www.good2know.it/programmazione/zend_acl-e-zend_auth-sistema-di-autenticazione-e-autorizzazione-con-zend-framework/</link>
		<comments>http://www.good2know.it/programmazione/zend_acl-e-zend_auth-sistema-di-autenticazione-e-autorizzazione-con-zend-framework/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 12:00:35 +0000</pubDate>
		<dc:creator>Filippo Matteo Riggio</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[zend_acl]]></category>
		<category><![CDATA[zend_auth]]></category>
		<category><![CDATA[zend_framework]]></category>

		<guid isPermaLink="false">http://www.good2know.it/?p=1510</guid>
		<description><![CDATA[Zend_Acl è una delle tante classi di Zend molto utili. Consiste in una serie di funzionalità che permettono un controllo molto facile di CHI può fare COSA aumentando il livello di protezione del sistema e diminuendo le possibilità di errore da parte dello sviluppatore. Un esempio: L&#8217;amministratore del sistema potrà fare tutto. Un utente normale [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.good2know.it/wp-content/uploads/2010/12/ZendFramework-logo-2.png"><img class="alignleft size-thumbnail wp-image-1449" title="ZendFramework-logo-2" src="http://www.good2know.it/wp-content/uploads/2010/12/ZendFramework-logo-2-150x150.png" alt="" width="150" height="150" /></a></p>
<p><strong>Zend_Acl</strong> è una delle tante classi di <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend</a> molto utili.</p>
<p>Consiste  in una serie di funzionalità che permettono un <strong>controllo molto facile  di CHI può fare COSA</strong> aumentando il livello di protezione del sistema e diminuendo le possibilità di errore da parte dello sviluppatore.<br />
<span id="more-1510"></span><br />
Un esempio:<br />
L&#8217;amministratore del sistema potrà fare tutto.<br />
Un utente normale potrà accedere solo ad alcune pagine(o risorse).</p>
<p><strong>Risorse e ruoli.</strong><br />
Queste sono le due entità fondamentali quando si parla di controllo degli accessi.</p>
<p><strong>Le risorse</strong><br />
Una serie di oggetti che si possono controllare, nel caso di pattern MVC, possono essere controller, action, percorsi, ecc.</p>
<p><strong>I ruoli</strong><br />
Sono gli attori attivi del sistema che devono accedere alle risorse, ad esempio amministratori, utenti normali, moderatori, ecc.</p>
<p>Quindi andremo a crea un plugin di Zend che effettuerà i controlli.</p>
<p>I metodi da inserire nel plugin sono 2 :</p>
<ul>
<li><strong>__construct()</strong> : in cui andremo a specificare risorse, ruoli e permessi</li>
<li><strong>preDispatch()</strong> : l&#8217;operazione preliminare alla chiamata di una action in cui effettuare il controllo</li>
</ul>
<p>Operazioni da implementare nel <strong>__construct()</strong></p>
<ol>
<li>Creazione dell&#8217; istanza di Zend_Acl</li>
<li>Creazione della risorsa</li>
<li>Creazione del ruolo</li>
<li>Aggiunta della risorsa all&#8217; Access Control List</li>
<li>Aggiunta del ruolo all&#8217; Access Control List</li>
<li>Definizione dei permessi su una risorsa da parte di un ruolo</li>
</ol>
<p>Quindi di seguito il codice:</p>
<pre class="brush: php; title: ; notranslate">
public function __construct() {
   // Creiamo l'istanza
   $acl = new Zend_Acl();

   // Creiamo la risorsa
   $resource1 = new Zend_Acl_Resource('nomeController1');
   $resource2 = new Zend_Acl_Resource('nomeController2');

   // Creiamo il ruolo
   $role = new new Zend_Acl_Role('nomeRuolo');

   // Associamo la risorsa all' ACL
   $acl-&gt;add($resource1);
   $acl-&gt;add($resource2);

   // Associamo il ruolo all' ACL
   $acl-&gt;addRole($role);

   // Andiamo a specificare i vari permessi
   // ad es: permettiamo al ruolo di accedere alla risorsa 1 e gli neghiamo la 2
   $acl-&gt;allow('nomeRuolo', 'nomeController1');
   $acl-&gt;deny('nomeRuolo', 'nomeController2');
}
</pre>
<p>Operazioni da implementare del <strong>preDispatch():</strong></p>
<ol>
<li>Controllo dell&#8217;autenticazione dell&#8217;utente</li>
<li>Controllo sui permessi della richiesta effettuata dall&#8217;utente</li>
</ol>
<p>Quindi di seguito il codice:</p>
<pre class="brush: php; title: ; notranslate">
// nel preDispatch() ho la richiesta fatta
public function preDispatch(Zend_Controller_Request_Abstract $request) {
   // controllo se l'utente è autenticato altrimenti lo credo un qualsiasi ospite
   if ($this-&gt;auth-&gt;hasIdentity()) {
      $role = $this-&gt;auth-&gt;getIdentity()-&gt;tipo_utente;
   } else {
      $role = 'ospite';
   }

   // controllo se il ruolo è contemplato nell'ACL
   if (!$this-&gt;acl-&gt;hasRole($role)) {
      $role = 'ospite';
   }

   // prendo il nome del controller come risorsa alla quale l'utente vuole accedere
   $resource = $request-&gt;controller;

   // prendo il nome dell'azione come privilegio alla quale l'utente vuole accedere
   $privilege = $request-&gt;action;

   // controllo se la risorsa è contemplata dall'ACL
   if (!$this-&gt;acl-&gt;has($resource)) {
      $resource = null;
   }

   // controllo se il ruolo non ha accesso alla risorsa e lo reindirizzo alla pagina per gli ospiti
   if (!$this-&gt;acl-&gt;isAllowed($role, $resource, $privilege)) {
      $request-&gt;setControllerName($this-&gt;_authController['controller']);
      $request-&gt;setActionName($this-&gt;_authController['action']);
   }
}
</pre>
<p>Questo è <strong>il plugin da andare ad aggiungere all&#8217;applicazione</strong>.<br />
Per <strong>aggiungerlo</strong> andate <strong>nel file di bootstrap</strong> dell&#8217;applicazione (index.php o bootstrap.php) e aggiungete il plugin così:</p>
<pre class="brush: php; title: ; notranslate">
// istanzio la Zend_Auth
$auth = Zend_Auth::getInstance();
$auth-&gt;setStorage(new Zend_Auth_Storage_Session());

// istanzio il Zend_Controller_Front
$controller = Zend_Controller_Front::getInstance();
$controller-&gt;registerPlugin(new CustomControllerAclManager($auth));
</pre>
<p>Abbiamo quasi finito, bisogna <strong>aggiungere la fase di checking dell&#8217;identità nel preDispatch()</strong> dei vari controller:</p>
<pre class="brush: php; title: ; notranslate">
class CustomControllerAction extends Zend_Controller_Action {

   public function preDispatch() {
      $auth = Zend_Auth::getInstance();
      if ($auth-&gt;hasIdentity()) {
         $this-&gt;view-&gt;authenticated = true;
         $this-&gt;view-&gt;identity = $auth-&gt;getIdentity();
      } else {
         $this-&gt;view-&gt;authenticated = false;
      }
   }

}
</pre>
<p>Bene, con questo il sistema di accessi è terminato.<br />
Possiamo far <strong>ereditare il controller ad altri controller figli</strong> così che non dobbiamo specificare il checking nel preDispatch() di tutti.</p>
<p>Per dubbi o chiarimenti commentate qui sotto!<br />
Alla prossima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.good2know.it/programmazione/zend_acl-e-zend_auth-sistema-di-autenticazione-e-autorizzazione-con-zend-framework//feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Zend_Auth &#8211; Gestire le autenticazioni semplicemente</title>
		<link>http://www.good2know.it/programmazione/zend_auth-gestire-le-autenticazioni-semplicemente/</link>
		<comments>http://www.good2know.it/programmazione/zend_auth-gestire-le-autenticazioni-semplicemente/#comments</comments>
		<pubDate>Wed, 11 May 2011 12:05:55 +0000</pubDate>
		<dc:creator>Filippo Matteo Riggio</dc:creator>
				<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://www.good2know.it/?p=1512</guid>
		<description><![CDATA[Zend_Auth è una classe di Zend Framework che permette la gestione dell&#8217;autenticazione su un sito in maniera molto semplice. Consiste in una serie di adapter per gli scenari d&#8217;uso più comuni. Da notare bene che esso gestisce solo l&#8217;autenticazione e non l&#8217;autorizzazione, che sono due cose ben diverse. Per quanto concerne l&#8217;autorizzazione scriverò prossimamente un [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.good2know.it/wp-content/uploads/2010/12/ZendFramework-logo-2.png"><img class="alignleft size-thumbnail wp-image-1449" title="ZendFramework-logo-2" src="http://www.good2know.it/wp-content/uploads/2010/12/ZendFramework-logo-2-150x150.png" alt="" width="150" height="150" /></a><br />
Zend_Auth è una classe di Zend Framework che permette la gestione dell&#8217;autenticazione su un sito in maniera molto semplice.</p>
<p>Consiste in una serie di adapter per gli scenari d&#8217;uso più comuni.</p>
<p><span id="more-1512"></span></p>
<p>Da notare bene che esso gestisce solo l&#8217;autenticazione e non l&#8217;autorizzazione, che sono due cose ben diverse.</p>
<p>Per quanto concerne l&#8217;autorizzazione scriverò prossimamente un articolo su Zend_Acl.</p>
<p><strong>Adapter</strong><br />
I sistemi di autenticazione sono svariati, LDAP, OpenId, Digest, ecc.<br />
Proprio per questo Zend mette a disposizione svariati tipi di adapter, che andranno ad interfacciarsi con Zend_Auth.<br />
I vari adapter sono:</p>
<ul>
<li>Zend_Auth_Adapter_DbTable per i database RDBMS (MySql, Postgresql, ecc.)</li>
<li>Zend_Auth_Adapter_LDAP per l&#8217;autenticazione tramite LDAP (sistema di utenti di Windows)</li>
<li>Zend_Auth_Adapter_Digest per l&#8217;autenticazione senza trasmissione di password (Digest)</li>
<li>Zend_Auth_Adapter_Http per l&#8217;autenticazione Digest, Basic e RFC-2617 (poco usata)</li>
<li>Zend_Auth_Adapter_OpenId per l&#8217;autenticazione tramite OpenId</li>
</ul>
<p><strong>Esempio</strong><br />
In genere l&#8217;autenticazione viene fatta utilizzando una username ed una password salvata su un database,<br />
proprio per questo nel mio esempio utilizzerò un adapter per la connessione ad un database RDBMS.</p>
<p>Il setup è abbastanza semplice:</p>
<pre class="brush: php; title: ; notranslate">
$adapter = new Zend_Auth_Adapter_DbTable($adapterDb,
                                                             'nome_tabella_utenti',
                                                             'colonna_identificativo',
                                                             'colonna_credenziale',
                                                             'controllo_sulla_credenziale');
</pre>
<p>Successivamente basterà passare all&#8217;adapter, identificativo e credenziale(username e password da un form) ed effettuare il controllo tramite la funzione authenticate di zend_auth.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
class AccountController extends ZendControllerAction {

   public function loginAction() {

      // se un utente è già autenticato lo rimando alla homepage
      $auth = Zend_Auth::getInstance();

      if ($auth-&gt;hasIdentity()){
         $this-&gt;_redirect('/index/');
      }

       // controllo se è stata inviata la richiesta dal form di login
      if ($this-&gt;getRequest()-&gt;isPost()) {

         // prendo i dati di login
         $username = $request-&gt;getPost('username');
         $password = $request-&gt;getPost('password');

         // faccio il setup dell'adapter di zend_auth per i database
         $adapter = new Zend_Auth_Adapter_DbTable($this-&gt;db,
                                                                      'nome_tabella',
                                                                      'username',
                                                                      'password',
                                                                      'md5(?)');

         $adapter-&gt;setIdentity($username);
         $adapter-&gt;setCredential($password);

         // provo ad autenticare l'utente
         $result = $auth-&gt;authenticate($adapter);

         // se è valido salvo nello storage di zend_auth (una variabile di sessione)
         // l'identità dell'utente e faccio il redirect alla home
         if ($result-&gt;isValid()) {

            // l'adapter restituisce un array associativo con i dati dell'utente
            $user = $adapter-&gt;getResultRowObject();

            // Scrivo nello storage l'utente autenticato
            $auth-&gt;getStorage()-&gt;write($user['id_utente']);

            // send user to page they originally request
            $this-&gt;_redirect('/index');
         }

         // autenticazione fallita, rimando al login, magari con un messaggio d'errore
         $this-&gt;_redirect('/login');

      }
   }
}
?&gt;
</pre>
<p>L&#8217;esempio, ovviamente, è incompleto, mancano eventuali controlli e messaggi d&#8217;errore, ma ci dà una piccola panoramica della semplicità d&#8217;autenticazione di Zend.<br />
Manca anche la parte di View dell&#8217;azione, ma penso che chiunque sappia ormai fare una form di login, no? <img src='http://www.good2know.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Nel prossimo articolo parleremo di Zend_Acl, che combinato con Zend_Auth permette di controllare facilmente tutta la parte di autenticazione e autorizzaione di un sito/progetto.</p>
<p>Alla prossima!<br />
 <img src='http://www.good2know.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.good2know.it/programmazione/zend_auth-gestire-le-autenticazioni-semplicemente//feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aumentare le prestazioni di PHP con Facebook HipHop</title>
		<link>http://www.good2know.it/programmazione/aumentare-le-prestazioni-di-php-con-facebook-hiphop/</link>
		<comments>http://www.good2know.it/programmazione/aumentare-le-prestazioni-di-php-con-facebook-hiphop/#comments</comments>
		<pubDate>Mon, 02 May 2011 11:34:24 +0000</pubDate>
		<dc:creator>Filippo Matteo Riggio</dc:creator>
				<category><![CDATA[Nuove tecnologie]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.good2know.it/?p=1505</guid>
		<description><![CDATA[I carissimi programmatori di Facebook hanno rilasciato un piccolo progetto che ottimizza notevolmente le prestazioni, in fase di esecuzione, di codice php: Facebook HipHop. Come funziona? Questa applicazione trasforma codice PHP in codice compilato in C++ con il sacrificio di qualche funzione php, tipo eval(). Per chi non lo sapesse, la differenza tra un linguaggio [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.good2know.it/wp-content/uploads/2011/05/facebook-hiphop.jpg"><img class="alignnone size-full wp-image-1507" title="facebook-hiphop" src="http://www.good2know.it/wp-content/uploads/2011/05/facebook-hiphop.jpg" alt="" width="200" height="200" /></a></p>
<p>I carissimi programmatori di Facebook hanno rilasciato un piccolo progetto che ottimizza notevolmente le prestazioni, in fase di esecuzione, di codice php: <a href="https://github.com/facebook/hiphop-php/wiki/">Facebook HipHop</a>.</p>
<p><span id="more-1505"></span>Come funziona?</p>
<p>Questa applicazione <strong>trasforma codice PHP in codice compilato in C++</strong> con il sacrificio di qualche funzione php, tipo <strong>eval()</strong>.</p>
<p>Per chi non lo sapesse, la differenza tra un linguaggio intepretato ed uno compilato è appunto nella fase di interpretazione del codice, cosa che in C++ non avviene una volta compilato il codice.</p>
<p>Il miglioramento delle prestazioni è notevole: si guadagna il 50% di risparmio di CPU; in questo modo i server di FB valgono il doppio rispetto ad un normale server linux-php (anche in termini di denaro <img src='http://www.good2know.it/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</p>
<p>Di seguito trovate la <a href="https://www.facebook.com/notes/facebook-engineering/hiphop-for-php-more-optimizations-for-efficient-servers/">pagina facebook del progetto</a> e il <a href="https://github.com/facebook/hiphop-php/wiki/">progetto su GitHub</a> con licenza Open Source.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.good2know.it/programmazione/aumentare-le-prestazioni-di-php-con-facebook-hiphop//feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GoPano micro &#8211; lente per iPhone 4 per registrare video a 360 gradi</title>
		<link>http://www.good2know.it/tecnologia/gopano-micro-lente-per-iphone-4-per-registrare-video-a-360-gradi/</link>
		<comments>http://www.good2know.it/tecnologia/gopano-micro-lente-per-iphone-4-per-registrare-video-a-360-gradi/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 07:25:47 +0000</pubDate>
		<dc:creator>Filippo Matteo Riggio</dc:creator>
				<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[special gadgets]]></category>
		<category><![CDATA[video 360 gradi]]></category>

		<guid isPermaLink="false">http://www.good2know.it/?p=1497</guid>
		<description><![CDATA[Salve a tutti cari lettori, oggi vi vorrei presentare questo gadget per iPhone 4 che permette di registrare video a 360 gradi. Di seguito potete vedere un video d&#8217;esempio. Potete trovare tutto il progetto su KickStarter.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.good2know.it/wp-content/uploads/2011/04/special_gadgets.jpg"></a><a href="http://www.good2know.it/wp-content/uploads/2011/04/gopano-micro.jpg"><img class="alignnone size-full wp-image-1498" title="gopano-micro" src="http://www.good2know.it/wp-content/uploads/2011/04/gopano-micro.jpg" alt="" width="450" height="300" /></a></p>
<p>Salve a tutti cari lettori, oggi vi vorrei presentare questo gadget per iPhone 4 che permette di registrare video a 360 gradi.<br />
<span id="more-1497"></span><br />
Di seguito potete vedere un video d&#8217;esempio.</p>
<p><iframe title="YouTube video player" width="460" height="289" src="http://www.youtube.com/embed/9o8AAOtOiPQ" frameborder="0" allowfullscreen></iframe></p>
<p>Potete trovare tutto il progetto su <a title="GoPano micro" href="http://www.kickstarter.com/projects/1106196796/the-gopano-micro-a-lens-for-capturing-360-video-on">KickStarter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.good2know.it/tecnologia/gopano-micro-lente-per-iphone-4-per-registrare-video-a-360-gradi//feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

