<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0"> <channel><title>MichelePierri.it | News - Android - Cloud Computing - Programmazione</title> <link>http://www.michelepierri.it</link> <description>Notizie esperienze ed altro dal mondo tecnologico e della programmazione!</description> <lastBuildDate>Tue, 21 May 2013 12:03:33 +0000</lastBuildDate> <language>it-IT</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.5.1</generator> <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/MichelePierri" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="michelepierri" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">MichelePierri</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Android e NFC – Leggere una scheda MIFARE CLASSIC da 1k</title><link>http://www.michelepierri.it/android/android-e-nfc-leggere-una-scheda-mifare-classic-da-1k/</link> <comments>http://www.michelepierri.it/android/android-e-nfc-leggere-una-scheda-mifare-classic-da-1k/#comments</comments> <pubDate>Thu, 16 May 2013 13:56:22 +0000</pubDate> <dc:creator>Michele</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[beam]]></category> <category><![CDATA[mifare]]></category> <category><![CDATA[nfc]]></category> <guid isPermaLink="false">http://www.michelepierri.it/?p=1482</guid> <description><![CDATA[In questo articolo mostro come leggere una scheda MIFARE CLASSIC da 1k usando la tecnologia Near Field Communication, implementata in molti dispositivi Android. Necessario: Una scheda MiFare Classic 1k Tag; Android SDK and IDE; Un dispositivo Android dotato di NFC<span
class="ellipsis">&#8230;</span><div
class="read-more"><a
href="http://www.michelepierri.it/android/android-e-nfc-leggere-una-scheda-mifare-classic-da-1k/">Leggi altro &#8250;</a></div>]]></description><div id="fb-root" /> <script>function wpvltr_callback(href, widget) {
				jQuery('.wpvltr_like_to_keep_reading_message .wpvmtext').html("Grazie!");
				jQuery('.wpvltr_like_to_keep_reading').show('slow');
									jQuery('.wpvltr_like_to_keep_reading_message_container').hide('slow');
				// make ajax request to set the cookie
				var data = {
					dlgroup: 'wpvltr_like_to_keep_reading',
					href: 'https://www.facebook.com/michelepierriit',
					action: 'wpvltr_setcookie'
				};
				jQuery.post('http://www.michelepierri.it/wp-admin/admin-ajax.php', data, function(response) {
					// alert(response);
				});
		}
		function wpvltr_gplus(plusone) {
				if (plusone.state == "on") {
					wpvltr_callback(null, null);
				}
		}
		  window.fbAsyncInit = function() {
			FB.init({
			  status     : true, // check login status
			  cookie     : true, // enable cookies to allow the server to access the session
			  xfbml      : true  // parse XFBML
			});
			FB.Event.subscribe('edge.create', function(href, widget) {
				wpvltr_callback(href, widget);
			 });
				twttr.ready(function (twttr) {
					twttr.events.bind("tweet", function(event) {
						wpvltr_callback(null, null);
					});
				});
		  };</script> <script>// Load the SDK Asynchronously
	  (function(d){
		 var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
		 if (d.getElementById(id)) {return;}
		 js = d.createElement('script'); js.id = id; js.async = true;
		 js.src = "//connect.facebook.net/en_US/all.js";
		 ref.parentNode.insertBefore(js, ref);
	   }(document));</script> <content:encoded><![CDATA[<p>In questo articolo mostro come leggere una scheda <a
title="mifare" href="http://it.wikipedia.org/wiki/MIFARE">MIFARE</a> CLASSIC da 1k usando la tecnologia <a
title="nfc" href="http://developer.android.com/guide/topics/connectivity/nfc/index.html">Near Field Communication</a>, implementata in molti dispositivi Android.</p><p>Necessario:</p><ul><li>Una scheda MiFare Classic 1k Tag;</li><li>Android SDK and IDE;</li><li>Un dispositivo Android dotato di NFC ( ad esempio Samsung Galaxy Nexus).</li></ul><p>Alcune nozioni di base sulla carta:</p><p>Nella scheda Mifare Classic 1k ci sono 16 settori divisi in 4 blocchi. All&#8217;interno dei settori vengono memorizzate le informazioni. È possibile memorizzare 16 byte in ogni blocco per un totale di circa 1024 byte di spazio di archiviazione ( ciò spega perchè 1K ) .</p><p>È possibile eseguire attività comuni come la lettura, la scrittura dei dati su questi blocchi, l&#8217;autenticazione, la navigazione dei settori incrementando o decrementando il conteggio dei blocchi.</p><p>Il primo settore contiene i dettagli del produttore e un ID univoco per la scheda.</p><p>Ogni settore sulla carta Mifare è fissato con due chiavi a 48 bit: A e B, che sono memorizzate nel blocco 3 di ogni settore. All&#8217;interno del 3 blocco sono inoltre definite le politiche di accesso, e le operazioni permesse su quel settore, definendo inoltre quale delle 2 chiavi occorre usare per l&#8217;operazione relativa.</p><p>Una carta Mifare ha di default i settori bloccati con una coppia di chiavi predefinita FFFFFFFFFFFF o 000000000000.</p><p>In questo tutorial useremo una scheda MIFARE con impostazioni di default.</p><p>Detto ciò passiamo subito alla parte implementativa. Apriamo il nostro nuovo progetto Android ed andiamo a configurare per prima cosa il file Manifest.xml.</p><p>Dobbiamo informare Android su che tipo di carta utilizzeremo nella nostra applicazione. Questo è spesso definito in un file XML memorizzato nella cartella delle risorse. Chiamiamo questo file filter_nfc.xml, e lo salviamo nella cartella res/xml:</p><p><pre class="devcodeblock" title="XML"><div class="devcodeoverflow"><ol><li><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;resources</span> <span style="color: #000066;">xmlns:xliff</span>=<span style="color: #ff0000;">&quot;urn:oasis:names:tc:xliff:document:1.2&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tech-list<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tech<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>android.nfc.tech.NfcA<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tech<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tech<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>android.nfc.tech.MifareClassic<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tech<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tech-list<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></li><li><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/resources<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> </li></ol></div></pre></p><p>Andiamo ora a impostare questo file nel Manifest. Immaginate che si desidera avviare un&#8217;attività in cui un tag viene toccato. Il manifest è il posto giusto per informare Android che la nostra app può gestire il tag rilevato.</p><p><pre class="devcodeblock" title="XML"><div class="devcodeoverflow"><ol><li><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;activity</span> <span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;@string/event_verify&quot;</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;verifytagscanact&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.nfc.action.TECH_DISCOVERED&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;meta-data</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.nfc.action.TECH_DISCOVERED&quot;</span> <span style="color: #000066;">android:resource</span>=<span style="color: #ff0000;">&quot;@xml/filter_nfc&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/activity<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></li></ol></div></pre></p><p>E&#8217; possibile far ciò anche direttamente via codice usando un NfcAdapter:</p><p><pre class="devcodeblock" title="Java"><div class="devcodeoverflow"><ol><li>NfcAdapter mAdapter <span style="color: #339933;">=</span> NfcAdapter.<span style="color: #006633;">getDefaultAdapter</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li></ol></div></pre></p><p>Quando un MiFare tag è scoperto, lo stack NFC ottiene i dettagli del tag e spedisce questo ad un nuovo intent della stessa attività. Per gestirlo, occorre quindi un istanza PendingIntent dall&#8217;attività corrente:</p><p><pre class="devcodeblock" title="Java"><div class="devcodeoverflow"><ol><li>PendingIntent mPendingIntent <span style="color: #339933;">=</span> PendingIntent.<span style="color: #006633;">getActivity</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, <span style="color: #cc66cc;">0</span>,</li><li><span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, getClass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">addFlags</span><span style="color: #009900;">&#40;</span>Intent.<span style="color: #006633;">FLAG_ACTIVITY_SINGLE_TOP</span><span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li></ol></div></pre></p><p>Impostiamo quindi un filtro nel quale definiamo il formato dei dati e la tecnologia:</p><p><pre class="devcodeblock" title="Java"><div class="devcodeoverflow"><ol><li>IntentFilter ndef <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> IntentFilter<span style="color: #009900;">&#40;</span>NfcAdapter.<span style="color: #006633;">ACTION_TECH_DISCOVERED</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li><span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span></li><li>ndef.<span style="color: #006633;">addDataType</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;*/*&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li><span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>MalformedMimeTypeException e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></li><li><span style="color: #000000; font-weight: bold;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">RuntimeException</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;fail&quot;</span>, e<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li><span style="color: #009900;">&#125;</span></li><li>mFilters <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> IntentFilter<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#123;</span></li><li>ndef,</li><li><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li><span style="color: #666666; font-style: italic;">// Setup a tech list for all NfcF tags</span></li><li>mTechLists <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#123;</span> MifareClassic.<span style="color: #000000; font-weight: bold;">class</span>.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li>Intent intent <span style="color: #339933;">=</span> getIntent<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li></ol></div></pre></p><p>Infine, quando il pending intent chiama nuovamente l&#8217;attività, andiamo a leggere il tag.</p><p>Per gestire l&#8217;evento di scoperta di un nuovo TAG all&#8217;interno del campo NFC, effettuiamo l&#8217;override del metodo onNewIntent:</p><p><pre class="devcodeblock" title="Java"><div class="devcodeoverflow"><ol><li>@Override</li><li> <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> onNewIntent<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> Intent intent<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></li><li> Toast.<span style="color: #006633;">makeText</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, <span style="color: #0000ff;">&quot;Tag Detected&quot;</span>, Toast.<span style="color: #006633;">LENGTH_SHORT</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li> createTag<span style="color: #009900;">&#40;</span>intent<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li> <span style="color: #009900;">&#125;</span></li></ol></div></pre></p><p>Nel metodo createTag andremo a controllare il tipo di tag scoperto, e se corretto, lanceremo il thread di gestione.</p><p><pre class="devcodeblock" title="Java"><div class="devcodeoverflow"><ol><li><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">void</span> createTag<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> Intent intent<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></li><li> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">Thread</span> thread <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Thread</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li> <span style="color: #666666; font-style: italic;">// The getParcelableExtra(String name), retrieves the extended data from the intent</span></li><li> <span style="color: #666666; font-style: italic;">// and returns the value of an item that previously added with putExtra()or</span></li><li> <span style="color: #666666; font-style: italic;">// returns null if no Parceable value was found.</span></li><li> <span style="color: #666666; font-style: italic;">// In this case it returns a Tag Object</span></li><li> mTagFromIntent <span style="color: #339933;">=</span> intent.<span style="color: #006633;">getParcelableExtra</span><span style="color: #009900;">&#40;</span>NfcAdapter.<span style="color: #006633;">EXTRA_TAG</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li> <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>mTagFromIntent <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></li><li> <span style="color: #666666; font-style: italic;">//The MifareClassic.get(Tag tag), gets an instance of MifareClassic for the given tag.</span></li><li> <span style="color: #666666; font-style: italic;">// It does not cause any RF activity and does not block.</span></li><li> mClassic <span style="color: #339933;">=</span> MifareClassic.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span>mTagFromIntent<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li> <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>mClassic <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></li><li> <span style="color: #666666; font-style: italic;">/* Create a new ProgessDialog */</span></li><li> mProgressDialog <span style="color: #339933;">=</span> ProgressDialog.<span style="color: #006633;">show</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, <span style="color: #0000ff;">&quot;Working..&quot;</span>, <span style="color: #0000ff;">&quot;Reading Classic&quot;</span>, <span style="color: #000066; font-weight: bold;">true</span>, <span style="color: #000066; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li> <span style="color: #666666; font-style: italic;">/* Start the thread to read the DESFire */</span></li><li> thread.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li> <span style="color: #009900;">&#125;</span></li><li> <span style="color: #009900;">&#125;</span></li><li> <span style="color: #009900;">&#125;</span></li><li></li></ol></div></pre></p><p>Al run del thread:</p><p><pre class="devcodeblock" title="Java"><div class="devcodeoverflow"><ol><li>@Override</li><li> <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> run<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></li><li> mData <span style="color: #339933;">=</span> readCard<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li> <span style="color: #009900;">&#125;</span></li></ol></div></pre></p><p>Il metodo readCard si occuperà di effettuare le operazioni che vogliamo all&#8217;interno della carta MIFARE:</p><p><pre class="devcodeblock" title="Java"><div class="devcodeoverflow"><ol><li>ByteArrayBuffer b <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ByteArrayBuffer<span style="color: #009900;">&#40;</span>mMaxSize<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> data <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span></li><li> StringBuilder sb <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> StringBuilder<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li> <span style="color: #000066; font-weight: bold;">int</span> sector <span style="color: #339933;">=</span> <span style="color: #cc66cc;">5</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li> <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span></li><li><span style="color: #339933;">&lt;</span>span style<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;&quot;</span><span style="color: #339933;">&gt;</span>writeAndRead<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;&lt;/</span>span<span style="color: #339933;">&gt;</span></li><li><span style="color: #339933;">&lt;</span>span style<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;</span></li><li> <span style="color: #666666; font-style: italic;">/* Catch the TagLostException */</span></li><li> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> TagLostException tag<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></li><li> tag.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li> sb.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Tag Lost&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li> <span style="color: #009900;">&#125;</span></li><li> <span style="color: #666666; font-style: italic;">/* Catch the IOException */</span></li><li> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">IOException</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></li><li> e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li> sb.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;IOException &quot;</span><span style="color: #339933;">+</span> e.<span style="color: #006633;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li> <span style="color: #009900;">&#125;</span></li><li>&nbsp;</li><li> <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>data <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span></li><li> sb <span style="color: #339933;">=</span> convertHex<span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li> <span style="color: #666666; font-style: italic;">/* Convert the bytes to hex */</span></li><li>&nbsp;</li><li> <span style="color: #000000; font-weight: bold;">return</span> sb.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li></ol></div></pre></p><p>Nel metodo writeAndRead effettuiamo una scrittura e lettura di un valore all&#8217;interno del primo settore disponibile:</p><p><pre class="devcodeblock" title="Java"><div class="devcodeoverflow"><ol><li><span style="color: #003399;">String</span> file_string <span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span></li><li>ByteArrayBuffer b <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ByteArrayBuffer<span style="color: #009900;">&#40;</span>mMaxSize<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li><span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> data <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span></li><li><span style="color: #000066; font-weight: bold;">boolean</span> success <span style="color: #339933;">=</span> authenticateOnBlock<span style="color: #009900;">&#40;</span>sector<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li>Log.<span style="color: #006633;">i</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;MIFARE CLASSIC&quot;</span>, <span style="color: #0000ff;">&quot;authenticateOnBlock &quot;</span> <span style="color: #339933;">+</span> sector <span style="color: #339933;">+</span> <span style="color: #003399;">String</span>.<span style="color: #006633;">valueOf</span><span style="color: #009900;">&#40;</span>success<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li><span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>success<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span></li><li><span style="color: #666666; font-style: italic;">//Return the number of blocks in the given sector. </span></li><li><span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">blockCountInSector</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">mClassic</span>.<span style="color: #006633;">getBlockCountInSector</span><span style="color: #009900;">&#40;</span>sector<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li>&nbsp;</li><li><span style="color: #000066; font-weight: bold;">int</span> firstBlock <span style="color: #339933;">=</span> mClassic.<span style="color: #006633;">sectorToBlock</span><span style="color: #009900;">&#40;</span>sector<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>Log.<span style="color: #006633;">i</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;MIFARE CLASSIC&quot;</span>, <span style="color: #0000ff;">&quot;first block of the given sector:&quot;</span> <span style="color: #339933;">+</span> firstBlock<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li>&nbsp;</li><li>writeTag<span style="color: #009900;">&#40;</span>firstBlock<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li>b <span style="color: #339933;">=</span> readSector<span style="color: #009900;">&#40;</span>firstBlock<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li>data <span style="color: #339933;">=</span> b.<span style="color: #006633;">toByteArray</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li><span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> data.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span></li><li><span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">!=</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span></li><li>file_string <span style="color: #339933;">+=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">char</span><span style="color: #009900;">&#41;</span> data<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></li><li><span style="color: #009900;">&#125;</span></li><li>Log.<span style="color: #006633;">i</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;MIFARE CLASSIC&quot;</span>, <span style="color: #0000ff;">&quot;TAG STORED &quot;</span> <span style="color: #339933;">+</span>file_string<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li><span style="color: #009900;">&#125;</span></li><li>mClassic.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">Boolean</span> authenticateOnBlock<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> s<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">IOException</span><span style="color: #009900;">&#123;</span></li><li><span style="color: #666666; font-style: italic;">/* Connect to the Tag */</span></li><li><span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">mClassic</span>.<span style="color: #006633;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li><span style="color: #000066; font-weight: bold;">boolean</span> success <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">mClassic</span>.<span style="color: #006633;">authenticateSectorWithKeyA</span><span style="color: #009900;">&#40;</span>s, MifareClassic.<span style="color: #006633;">KEY_DEFAULT</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li><span style="color: #000000; font-weight: bold;">return</span> success<span style="color: #339933;">;</span></li><li><span style="color: #009900;">&#125;</span></li><li>&nbsp;</li><li></li></ol></div></pre></p><p>Scarica il codice d&#8217;esempio&nbsp;cliccando su uno dei pulsanti social. Grazie!</p><div
class="wpvltr_like_to_keep_reading_message_container"><div
class="wpvltr_like_to_keep_reading_message" style="border-style: solid; border-color: #B9D2EE; border-width: 1px; background-color: #E1EBFF; "><div
class="wpvmtext" style="margin-bottom: 8px;">Per poter continuare a leggere, supportaci cliccando su uno dei pulsanti social. Grazie!</div><fb:like href="https://www.facebook.com/michelepierriit" send="false" layout="standard" action="like" colorscheme="light" ></fb:like><div><g:plusone size="standard" annotation="inline" callback="wpvltr_gplus" href="https://www.facebook.com/michelepierriit"></g:plusone></div><div><a
href="http://twitter.com/share" class="twitter-share-button" data-url="https://www.facebook.com/michelepierriit" data-text="Look at this: " data-size="medium" data-count="horizontal" data-lang="en">Tweet</a></div></div> <br
/></div><div
style="display: none;" class="wpvltr_like_to_keep_reading"> Qui</div> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichelePierri?a=bgwkQtZE1ZQ:3lEHcYtOFfI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=bgwkQtZE1ZQ:3lEHcYtOFfI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=bgwkQtZE1ZQ:3lEHcYtOFfI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=bgwkQtZE1ZQ:3lEHcYtOFfI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=bgwkQtZE1ZQ:3lEHcYtOFfI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=bgwkQtZE1ZQ:3lEHcYtOFfI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=bgwkQtZE1ZQ:3lEHcYtOFfI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=bgwkQtZE1ZQ:3lEHcYtOFfI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=bgwkQtZE1ZQ:3lEHcYtOFfI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded> <wfw:commentRss>http://www.michelepierri.it/android/android-e-nfc-leggere-una-scheda-mifare-classic-da-1k/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Pubblicata Android App Futsal Manager 2.0</title><link>http://www.michelepierri.it/pubblicata-android-app-futsal-manager-2-0/</link> <comments>http://www.michelepierri.it/pubblicata-android-app-futsal-manager-2-0/#comments</comments> <pubDate>Wed, 24 Apr 2013 16:27:54 +0000</pubDate> <dc:creator>Michele</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Portfolio]]></category> <category><![CDATA[calcetto]]></category> <category><![CDATA[futsal]]></category> <category><![CDATA[futsal manager]]></category> <guid isPermaLink="false">http://www.michelepierri.it/?p=1472</guid> <description><![CDATA[Pubblicata Firenze Around Me 2.0. L&#8217; applicazione è un aggiornamento a livello di codice e librerie della versione 1.0. Per scaricare l&#8217;applicazione:&#160; Futsal Manager Screenshot:]]></description> <content:encoded><![CDATA[<p>Pubblicata Firenze Around Me 2.0.<br
/> L&#8217; applicazione è un aggiornamento a livello di codice e librerie della versione 1.0.</p><p>Per scaricare l&#8217;applicazione:&nbsp;</p><ul><li><a
href="https://play.google.com/store/apps/details?id=it.michelepierri.futsalmanager">Futsal Manager</a></li></ul><p>Screenshot:</p><div
id="attachment_1348" class="wp-caption aligncenter" style="width: 178px"><a
href="http://www.michelepierri.it/wp-content/uploads/2012/11/Screenshot_2012-11-16-21-46-38.png"><img
class="size-medium wp-image-1348" title="Inserimento del numero di giocatori partecipanti" alt="" src="http://www.michelepierri.it/wp-content/uploads/2012/11/Screenshot_2012-11-16-21-46-38-168x300.png" width="168" height="300" /></a><p
class="wp-caption-text">Inserimento del numero di giocatori partecipanti</p></div><div
id="attachment_1346" class="wp-caption aligncenter" style="width: 178px"><a
href="http://www.michelepierri.it/wp-content/uploads/2012/11/Screenshot_2012-11-16-21-46-48.png"><img
class="size-medium wp-image-1346" title="Inserimento dei nomi dei giocatori" alt="" src="http://www.michelepierri.it/wp-content/uploads/2012/11/Screenshot_2012-11-16-21-46-48-168x300.png" width="168" height="300" /></a><p
class="wp-caption-text">Inserimento dei nomi dei giocatori</p></div><div
id="attachment_1347" class="wp-caption aligncenter" style="width: 178px"><a
href="http://www.michelepierri.it/wp-content/uploads/2012/11/Screenshot_2012-11-16-21-47-05.png"><img
class="size-medium wp-image-1347" title="Gestione cambi e tempo trascorso" alt="" src="http://www.michelepierri.it/wp-content/uploads/2012/11/Screenshot_2012-11-16-21-47-05-168x300.png" width="168" height="300" /></a><p
class="wp-caption-text">Gestione cambi e tempo trascorso</p></div> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichelePierri?a=_Wre2hhnq2A:BJWl-fSwZZM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=_Wre2hhnq2A:BJWl-fSwZZM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=_Wre2hhnq2A:BJWl-fSwZZM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=_Wre2hhnq2A:BJWl-fSwZZM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=_Wre2hhnq2A:BJWl-fSwZZM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=_Wre2hhnq2A:BJWl-fSwZZM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=_Wre2hhnq2A:BJWl-fSwZZM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=_Wre2hhnq2A:BJWl-fSwZZM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=_Wre2hhnq2A:BJWl-fSwZZM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded> <wfw:commentRss>http://www.michelepierri.it/pubblicata-android-app-futsal-manager-2-0/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Git – Caricare un progetto esistente in un repository remoto</title><link>http://www.michelepierri.it/android/git-caricare-un-progetto-esistente-in-un-repository-remoto/</link> <comments>http://www.michelepierri.it/android/git-caricare-un-progetto-esistente-in-un-repository-remoto/#comments</comments> <pubDate>Tue, 16 Apr 2013 13:08:38 +0000</pubDate> <dc:creator>Michele</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Programmazione]]></category> <guid isPermaLink="false">http://www.michelepierri.it/?p=1444</guid> <description><![CDATA[In questo articolo viene illustrato come caricare un progetto già esistente all&#8217;interno di una repository Git. Aperta la Shell ci dirigiamo all&#8217;interno della cartella del progetto e lanciamo il comando: $ git init A questo punto dobbiamo dire a Git<span
class="ellipsis">&#8230;</span><div
class="read-more"><a
href="http://www.michelepierri.it/android/git-caricare-un-progetto-esistente-in-un-repository-remoto/">Leggi altro &#8250;</a></div>]]></description> <content:encoded><![CDATA[<p>In questo articolo viene illustrato come caricare un progetto già esistente all&#8217;interno di una repository Git.<br
/> Aperta la Shell ci dirigiamo all&#8217;interno della cartella del progetto e lanciamo il comando:</p><p><pre class="devcodeblock" title="Bash"><div class="devcodeoverflow"><ol><li>$ <span style="color: #c20cb9; font-weight: bold;">git init</span> </li></ol></div></pre></p><p>A questo punto dobbiamo dire a Git che tipo di progetto dobbiamo caricare all&#8217;interno della repository. Per ogni progetto è necessario infatti caricare solamente le directory ed i file strettamente necessari.<br
/> Per far ciò dobbiamo dire a Git ciò che dovrà ignorare mediante un file di configurazione.<br
/> Possiamo trovarne alcuni già pronti <a
href="https://github.com/github/gitignore">GIT_IGNORE FILES</a>&nbsp;.<br
/> In questo articolo andremo quindi a caricare un progetto Android all&#8217;interno di un repository hostato su bitbucket.org:</p></p><p><pre class="devcodeblock" title="Bash"><div class="devcodeoverflow"><ol><li><span style="color: #c20cb9; font-weight: bold;">git config</span> <span style="color: #660033;">--global</span> core.excludefile c:<span style="color: #000000; font-weight: bold;">/</span>Android.git_ignore</li></ol></div></pre></p><p>Successivamente dobbiamo preparare git al commit successivo.</p><p><pre class="devcodeblock" title="Bash"><div class="devcodeoverflow"><ol><li><span style="color: #c20cb9; font-weight: bold;">git add</span> .</li></ol></div></pre></p><p>Questo comando, tipicamente, aggiunge il contenuto attuale della directory nel loro complesso, ma con alcune opzioni può anche essere utilizzato per aggiungere solo la parte delle modifiche apportate ai file di albero di lavoro, o rimuovere percorsi che non esistono più nella struttura di lavoro.</p><p>Aggiungiamo adesso il link al nostro repository e carichiamo successivamente il contenuto del nostro progetto mediante questi due comandi:</p><p><pre class="devcodeblock" title="Bash"><div class="devcodeoverflow"><ol><li><span style="color: #c20cb9; font-weight: bold;">git remote</span> add origin <span style="color: #000000; font-weight: bold;">&amp;</span>lt;repository_url<span style="color: #000000; font-weight: bold;">&amp;</span>gt;</li></ol></div></pre><pre class="devcodeblock" title="Bash"><div class="devcodeoverflow"><ol><li><span style="color: #c20cb9; font-weight: bold;">git push</span> <span style="color: #660033;">-u</span> origin --all</li></ol></div></pre></p><p>Il nostro progetto è ora presente nel repository remoto.</p><p> Riporto infine un immagine che illustra i vari stage di Git:</p> <a
href="http://www.michelepierri.it/wp-content/uploads/2013/04/MgaV9.png"><img
class="" title="Git Stages" alt="Git Stages" src="http://www.michelepierri.it/wp-content/uploads/2013/04/MgaV9.png" width="168" height="300" /></a> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichelePierri?a=bx6SXR3ay-Q:ssPbGS32gLY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=bx6SXR3ay-Q:ssPbGS32gLY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=bx6SXR3ay-Q:ssPbGS32gLY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=bx6SXR3ay-Q:ssPbGS32gLY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=bx6SXR3ay-Q:ssPbGS32gLY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=bx6SXR3ay-Q:ssPbGS32gLY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=bx6SXR3ay-Q:ssPbGS32gLY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=bx6SXR3ay-Q:ssPbGS32gLY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=bx6SXR3ay-Q:ssPbGS32gLY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded> <wfw:commentRss>http://www.michelepierri.it/android/git-caricare-un-progetto-esistente-in-un-repository-remoto/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Configurare GIT dopo l’installazione</title><link>http://www.michelepierri.it/programmazione/configurare-git-dopo-linstallazione/</link> <comments>http://www.michelepierri.it/programmazione/configurare-git-dopo-linstallazione/#comments</comments> <pubDate>Tue, 16 Apr 2013 12:34:20 +0000</pubDate> <dc:creator>Michele</dc:creator> <category><![CDATA[Programmazione]]></category> <guid isPermaLink="false">http://www.michelepierri.it/?p=1428</guid> <description><![CDATA[Come riportato sul sito ufficiale, Git è&#160;&#8221;. ..un sistema di controllo delle versioni libero e open source, progettato per gestire dai piccolo ai più grandi progetti con velocità ed efficienza. Git è facile da imparare e ha un piccolo ingombro<span
class="ellipsis">&#8230;</span><div
class="read-more"><a
href="http://www.michelepierri.it/programmazione/configurare-git-dopo-linstallazione/">Leggi altro &#8250;</a></div>]]></description> <content:encoded><![CDATA[<p>Come riportato sul sito ufficiale, Git è&nbsp;&#8221;. ..un sistema di controllo delle versioni libero e open source, progettato per gestire dai piccolo ai più grandi progetti con velocità ed efficienza. Git è facile da imparare e ha un piccolo ingombro con prestazioni alla velocità della luce. &#8221;</p><p>In questo articolo viene illustrato come configurare Git dopo l&#8217;installazione.<br
/> Per prima cosa lanciamo la shell e configuriamo la nostra identità:</p><p><pre class="devcodeblock" title="Bash"><div class="devcodeoverflow"><ol><li><span style="color: #007800;">$git</span> config <span style="color: #660033;">--global</span> user.name <span style="color: #ff0000;">&quot;John Doe&quot;</span></li><li><span style="color: #007800;">$git</span> config <span style="color: #660033;">--global</span> user.email johndoe<span style="color: #000000; font-weight: bold;">@</span>example.com</li></ol></div></pre></p><p>Ora che la nostra identità è impostata, è possibile configurare l&#8217;editor di testo predefinito, che verrà utilizzato quando Git ha bisogno di digitare un messaggio. Git usa l&#8217;editor di default del sistema, che è generalmente Vi o Vim se siamo su sistema Linux.</p><p>Se si desidera utilizzare un altro editor di testo come Emacs, è possibile usare il seguente comando:</p><p><pre class="devcodeblock" title="Bash"><div class="devcodeoverflow"><ol><li>$ <span style="color: #c20cb9; font-weight: bold;">git config</span> <span style="color: #660033;">--global</span> core.editor emacs</li></ol></div></pre></p><p>Un altra opzione utile è definire il tool di default, che dovrà mostrarci gli errori per risolvere i conflitti di merge delle modifiche ai file. In questo esempio definiamo come tool vimdiff:</p><p><pre class="devcodeblock" title="Bash"><div class="devcodeoverflow"><ol><li>$ <span style="color: #c20cb9; font-weight: bold;">git config</span> <span style="color: #660033;">--global</span> merge.tool vimdiff</li></ol></div></pre></p><p>&nbsp;</p><p>Al termine di questi passaggi possiamo controllare ciò che è stato impostato lanciando il comando:</p><p><pre class="devcodeblock" title="Bash"><div class="devcodeoverflow"><ol><li>$ <span style="color: #c20cb9; font-weight: bold;">git config</span> <span style="color: #660033;">--list</span></li><li></li></ol></div></pre></p> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichelePierri?a=sgqmI58_chQ:i-ycK8D1xdo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=sgqmI58_chQ:i-ycK8D1xdo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=sgqmI58_chQ:i-ycK8D1xdo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=sgqmI58_chQ:i-ycK8D1xdo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=sgqmI58_chQ:i-ycK8D1xdo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=sgqmI58_chQ:i-ycK8D1xdo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=sgqmI58_chQ:i-ycK8D1xdo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=sgqmI58_chQ:i-ycK8D1xdo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=sgqmI58_chQ:i-ycK8D1xdo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded> <wfw:commentRss>http://www.michelepierri.it/programmazione/configurare-git-dopo-linstallazione/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Aggiornata Futsal Manager alla versione 1.0!</title><link>http://www.michelepierri.it/aggiornata-futsal-manager-1-0/</link> <comments>http://www.michelepierri.it/aggiornata-futsal-manager-1-0/#comments</comments> <pubDate>Thu, 29 Nov 2012 17:48:12 +0000</pubDate> <dc:creator>Michele</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Portfolio]]></category> <category><![CDATA[app.calcio a 5]]></category> <category><![CDATA[calcio]]></category> <category><![CDATA[futsal]]></category> <category><![CDATA[web app]]></category> <guid isPermaLink="false">http://www.michelepierri.it/?p=1408</guid> <description><![CDATA[App nata come aiuto alla gestione di una squadra di calcio a 5. Principali funzioni: 1 &#8211; Inserimento nome squadra 2 &#8211; Inserimento nomi giocatori con numero presenze e gol 3 &#8211; Classifica presenze e gol 4 &#8211; Gestione dei<span
class="ellipsis">&#8230;</span><div
class="read-more"><a
href="http://www.michelepierri.it/aggiornata-futsal-manager-1-0/">Leggi altro &#8250;</a></div>]]></description> <content:encoded><![CDATA[<p>App nata come aiuto alla gestione di una squadra di calcio a 5.</p><p>Principali funzioni:</p><p>1 &#8211; Inserimento nome squadra</p><p>2 &#8211; Inserimento nomi giocatori con numero presenze e gol</p><p>3 &#8211; Classifica presenze e gol</p><p>4 &#8211; Gestione dei cambi durante una partita</p><p>5 &#8211; Resoconto di ogni partita con gol segnati dalla propria squadra e dagli avversari</p><p>La gestione dei cambi è effettuata mediante una lista di giocatori, ordinabile mediante drag &amp; drop. I giocatori in campo hanno sfondo verde, mentre quelli in panchina sfondo celeste.</p><p>Sono presenti due cronometri, uno per la durata del match e l&#8217;altro per i minuti dall&#8217;ultimo cambio.</p><p>Nel caso si decida di utilizzare il metodo della rotazione dei cambi, nel quale il giocatore entrato da più minuti esce per quello fuori da più minuti, basterà spostare ogni volta il giocatore entrante (l&#8217;ultimo) in cima alla lista. In questo modo, ad ogni cambio, il giocatore da più tempo in campo sarà il primo ad uscire, apparendo nella lista con colore celeste.</p><p>Google Play Store:&nbsp;<a
href="https://play.google.com/store/apps/details?id=it.michelepierri">Futsal Manager</a></p><p>Lingue: Italiano, Inglese.</p><p>Nota: 2/12 Effettuati alcuni bugfix e caricato nuovo apk su Google Play.</p> <a
href='http://www.michelepierri.it/aggiornata-futsal-manager-1-0/attachment/1-3/' title='1'><img
width="150" height="150" src="http://www.michelepierri.it/wp-content/uploads/2012/11/110-150x150.png" class="attachment-thumbnail" alt="1" /></a> <a
href='http://www.michelepierri.it/aggiornata-futsal-manager-1-0/attachment/2-3/' title='2'><img
width="150" height="150" src="http://www.michelepierri.it/wp-content/uploads/2012/11/22-150x150.png" class="attachment-thumbnail" alt="2" /></a> <a
href='http://www.michelepierri.it/aggiornata-futsal-manager-1-0/attachment/3-2/' title='3'><img
width="150" height="150" src="http://www.michelepierri.it/wp-content/uploads/2012/11/31-150x150.png" class="attachment-thumbnail" alt="3" /></a> <a
href='http://www.michelepierri.it/aggiornata-futsal-manager-1-0/attachment/4-2/' title='4'><img
width="150" height="150" src="http://www.michelepierri.it/wp-content/uploads/2012/11/41-150x150.png" class="attachment-thumbnail" alt="4" /></a> <a
href='http://www.michelepierri.it/aggiornata-futsal-manager-1-0/attachment/5-2/' title='5'><img
width="150" height="150" src="http://www.michelepierri.it/wp-content/uploads/2012/11/51-150x150.png" class="attachment-thumbnail" alt="5" /></a> <a
href='http://www.michelepierri.it/aggiornata-futsal-manager-1-0/attachment/6-2/' title='6'><img
width="150" height="150" src="http://www.michelepierri.it/wp-content/uploads/2012/11/61-150x150.png" class="attachment-thumbnail" alt="6" /></a> <a
href='http://www.michelepierri.it/aggiornata-futsal-manager-1-0/attachment/8-2/' title='8'><img
width="150" height="150" src="http://www.michelepierri.it/wp-content/uploads/2012/11/81-150x150.png" class="attachment-thumbnail" alt="8" /></a> <a
href='http://www.michelepierri.it/aggiornata-futsal-manager-1-0/attachment/9-2/' title='9'><img
width="150" height="150" src="http://www.michelepierri.it/wp-content/uploads/2012/11/91-150x150.png" class="attachment-thumbnail" alt="9" /></a> <a
href='http://www.michelepierri.it/aggiornata-futsal-manager-1-0/attachment/10-2/' title='10'><img
width="150" height="150" src="http://www.michelepierri.it/wp-content/uploads/2012/11/101-150x150.png" class="attachment-thumbnail" alt="10" /></a> <a
href='http://www.michelepierri.it/aggiornata-futsal-manager-1-0/attachment/11-4/' title='11'><img
width="150" height="150" src="http://www.michelepierri.it/wp-content/uploads/2012/11/112-150x150.png" class="attachment-thumbnail" alt="11" /></a> <a
href='http://www.michelepierri.it/aggiornata-futsal-manager-1-0/attachment/12-3/' title='12'><img
width="150" height="150" src="http://www.michelepierri.it/wp-content/uploads/2012/11/122-150x150.png" class="attachment-thumbnail" alt="12" /></a> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichelePierri?a=FvQg2m0NtI4:mFKMgk76Pow:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=FvQg2m0NtI4:mFKMgk76Pow:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=FvQg2m0NtI4:mFKMgk76Pow:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=FvQg2m0NtI4:mFKMgk76Pow:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=FvQg2m0NtI4:mFKMgk76Pow:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=FvQg2m0NtI4:mFKMgk76Pow:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=FvQg2m0NtI4:mFKMgk76Pow:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=FvQg2m0NtI4:mFKMgk76Pow:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=FvQg2m0NtI4:mFKMgk76Pow:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded> <wfw:commentRss>http://www.michelepierri.it/aggiornata-futsal-manager-1-0/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Formattare il testo in modo creativo con Lettering.js</title><link>http://www.michelepierri.it/lettering-js-effetti-creativi-font-css</link> <comments>http://www.michelepierri.it/lettering-js-effetti-creativi-font-css#comments</comments> <pubDate>Wed, 21 Nov 2012 15:05:42 +0000</pubDate> <dc:creator>Michele</dc:creator> <category><![CDATA[jQuery]]></category> <category><![CDATA[css graphics]]></category> <category><![CDATA[font]]></category> <category><![CDATA[lettering.js]]></category> <category><![CDATA[typography]]></category> <category><![CDATA[web]]></category> <guid isPermaLink="false">http://www.michelepierri.it/?p=1384</guid> <description><![CDATA[Lettering.js è una libreria javascript basata su jQuery, che consente di controllare sino ad ogni singola lettera di una parola, in modo da creare bellissimi effetti su titoli, messaggi e quant’altro debba essere messo in evidenza all’interno della nostra pagina<span
class="ellipsis">&#8230;</span><div
class="read-more"><a
href="http://www.michelepierri.it/lettering-js-effetti-creativi-font-css">Leggi altro &#8250;</a></div>]]></description><div id="fb-root" /><div id="fb-root" /> <content:encoded><![CDATA[<p><a
title="lettering.js" href="http://letteringjs.com/">Lettering.js</a> è una libreria javascript basata su <em>jQuery</em>, che consente di controllare sino ad ogni singola lettera di una parola, in modo da creare bellissimi effetti su titoli, messaggi e quant’altro debba essere messo in evidenza all’interno della nostra pagina web.</p><p>Qui di seguito alcuni esempi di styling dei font con questa libreria:</p><div
id="attachment_1387" class="wp-caption aligncenter" style="width: 240px"><a
href="http://www.michelepierri.it/wp-content/uploads/2012/11/lettering.png"><img
class="size-medium wp-image-1387" title="Esempi di utilizzo lettering.js" src="http://www.michelepierri.it/wp-content/uploads/2012/11/lettering-230x300.png" alt="" width="230" height="300" /></a><p
class="wp-caption-text">Esempi di utilizzo lettering.js</p></div><p>&nbsp;</p><p>Scarica questi esempi:</p><div
class="wpvltr_like_to_keep_reading_message_container"><div
class="wpvltr_like_to_keep_reading_message" style="border-style: solid; border-color: #B9D2EE; border-width: 1px; background-color: #E1EBFF; "><div
class="wpvmtext" style="margin-bottom: 8px;">Per poter continuare a leggere, supportaci cliccando su uno dei pulsanti social. Grazie!</div><fb:like href="https://www.facebook.com/michelepierriit" send="false" layout="standard" action="like" colorscheme="light" ></fb:like><div><g:plusone size="standard" annotation="inline" callback="wpvltr_gplus" href="https://www.facebook.com/michelepierriit"></g:plusone></div><div><a
href="http://twitter.com/share" class="twitter-share-button" data-url="https://www.facebook.com/michelepierriit" data-text="Look at this: " data-size="medium" data-count="horizontal" data-lang="en">Tweet</a></div></div> <br
/></div><div
style="display: none;" class="wpvltr_like_to_keep_reading"></p><p>Esempi: <a
title="Esempi" href="http://www.michelepierri.it/examples/letteringjs/Lettering.js-master/">clicca qui</a></p><p>Riferimenti: <a
title="Lettering.js official web site" href="http://letteringjs.com/">hlettering.js Official Web Site</a></p><p></div><p>&nbsp;</p><div
id="attachment_1388" class="wp-caption aligncenter" style="width: 97px"><a
href="http://www.michelepierri.it/wp-content/uploads/2012/11/letteringjs2.png"><img
class="size-medium wp-image-1388" title="lettering.js altri esempi" src="http://www.michelepierri.it/wp-content/uploads/2012/11/letteringjs2-87x300.png" alt="" width="87" height="300" /></a><p
class="wp-caption-text">lettering.js altri esempi</p></div><p>Scarica questi esempi:</p><div
class="wpvltr_like_to_keep_reading_message_container"><div
class="wpvltr_like_to_keep_reading_message" style="border-style: solid; border-color: #B9D2EE; border-width: 1px; background-color: #E1EBFF; "><div
class="wpvmtext" style="margin-bottom: 8px;">Per poter continuare a leggere, supportaci cliccando su uno dei pulsanti social. Grazie!</div><fb:like href="https://www.facebook.com/michelepierriit" send="false" layout="standard" action="like" colorscheme="light" ></fb:like><div><g:plusone size="standard" annotation="inline" callback="wpvltr_gplus" href="https://www.facebook.com/michelepierriit"></g:plusone></div><div><a
href="http://twitter.com/share" class="twitter-share-button" data-url="https://www.facebook.com/michelepierriit" data-text="Look at this: " data-size="medium" data-count="horizontal" data-lang="en">Tweet</a></div></div> <br
/></div><div
style="display: none;" class="wpvltr_like_to_keep_reading"></p><p>Esempi: <a
href="http://www.michelepierri.it/examples/letteringjs/TypographyStyles/">clicca qui</a></p><p>Riferimenti:&nbsp;http://tympanus.net/codrops/2012/09/12/creative-web-typography-styles/</p><p></div><p>&nbsp;</p> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichelePierri?a=ZXduc23AJJ8:dKhc3d6fPXU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=ZXduc23AJJ8:dKhc3d6fPXU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=ZXduc23AJJ8:dKhc3d6fPXU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=ZXduc23AJJ8:dKhc3d6fPXU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=ZXduc23AJJ8:dKhc3d6fPXU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=ZXduc23AJJ8:dKhc3d6fPXU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=ZXduc23AJJ8:dKhc3d6fPXU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=ZXduc23AJJ8:dKhc3d6fPXU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=ZXduc23AJJ8:dKhc3d6fPXU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded> <wfw:commentRss>http://www.michelepierri.it/lettering-js-effetti-creativi-font-css/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Inserire video a larghezza fluida con FitVid.js</title><link>http://www.michelepierri.it/video-dimensioni-fluide-fitvid</link> <comments>http://www.michelepierri.it/video-dimensioni-fluide-fitvid#comments</comments> <pubDate>Mon, 19 Nov 2012 12:08:15 +0000</pubDate> <dc:creator>Michele</dc:creator> <category><![CDATA[jQuery]]></category> <category><![CDATA[fitvid.js]]></category> <category><![CDATA[fluid dimension video]]></category> <category><![CDATA[fluid video]]></category> <category><![CDATA[ridimensiona video]]></category> <category><![CDATA[video]]></category> <category><![CDATA[video frame]]></category> <guid isPermaLink="false">http://www.michelepierri.it/?p=1362</guid> <description><![CDATA[Spesso capita di dove inserire nelle nostre pagine web, dei video tratti ad esempio da youtube.Vogliamo inoltre che la loro dimensione sia sempre la massima disponibile. Ecco quindi venirci incontro questo plugin (FitVid.js), risolvendo tale problematica. Vediamo il suo utilizzo:<span
class="ellipsis">&#8230;</span><div
class="read-more"><a
href="http://www.michelepierri.it/video-dimensioni-fluide-fitvid">Leggi altro &#8250;</a></div>]]></description><div id="fb-root" /> <content:encoded><![CDATA[<p>Spesso capita di dove inserire nelle nostre pagine web, dei video tratti ad esempio da youtube.Vogliamo inoltre che la loro dimensione sia sempre la massima disponibile.</p><p>Ecco quindi venirci incontro questo plugin (<a
title="fitvid.js" href="http://fitvidsjs.com/">FitVid.js</a>), risolvendo tale problematica.</p><p>Vediamo il suo utilizzo: Creiamo la nostra pagina html ed all’interno del tag body creiamo un div con classe container nel quale inseriremo un video youtube:</p><p>Fatto ciò poco, prima della chiusura del tag <em>body</em>, andiamo ad includere le librerie necessarie ed a inizializzare <a
title="fitvidsjs" href="http://fitvidsjs.com/"><em>fitvid.js</em></a>:</p><ul><li>jquery</li><li>fitvid.js</li></ul><p>Codice:</p><p><pre class="devcodeblock" title="HTML"><div class="devcodeoverflow"><ol><li><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;path/to/jquery.min.js&quot;</span>&gt;</span></li><li><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;path/to/jquery.fitvids.js&quot;</span>&gt;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></li></ol></div></pre></p><p>&nbsp;</p><p>Dobbiamo quindi inizializzare il plugin <a
title="fitvidsjs" href="http://fitvidsjs.com/"><em>fitvid.js</em></a> affinchè entri in azione ridimensionando i video automaticamente.</p><p>Per far questo, l’istruzione necessaria è:</p><p><pre class="devcodeblock" title="Javascript"><div class="devcodeoverflow"><ol><li> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#thing-with-videos&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fitVids</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> </li></ol></div></pre></p><p>&nbsp;</p><p>Con jQuery dobbiamo selezionare il div contenitore dei nostri video, che nel nostro caso è <em>container</em>. FitVid.js supporta automaticamente i seguenti video provider:</p><ul><li>YouTube;</li><li>Vimeo;</li><li>Blip.tv;</li><li>Viddler;</li><li>Kickstarter.</li></ul><p>Nel caso in cui, dovessimo includere un video di un provider non presente in questa lista, fitvid ci da la possibilità di farlo usando nel metodo fitVids() un parametro così strutturato:</p><p><pre class="devcodeblock" title="Javascript"><div class="devcodeoverflow"><ol><li>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#thing-with-videos&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fitVids</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> customSelector<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;iframe[src^='http://myvideoprovider.com']&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> </li></ol></div></pre></p><p>Basta quindi inserire al posto di http://myvideoprovider.com, il link del provider che contiene il video da includere. &nbsp;</p><p>Di seguito un video che illustra il funzionamento del plugin:</p><p><em><iframe
src="http://player.vimeo.com/video/28523422?byline=0&portrait=0" width="400" height="225" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen class=""></iframe></em></p><div>&nbsp;</div><p>A questo indirizzo è possible visualizzare un esempio funzionante:</p><div
class="wpvltr_like_to_keep_reading_message_container"><div
class="wpvltr_like_to_keep_reading_message" style="border-style: solid; border-color: #B9D2EE; border-width: 1px; background-color: #E1EBFF; "><div
class="wpvmtext" style="margin-bottom: 8px;">Per poter continuare a leggere, supportaci cliccando su uno dei pulsanti social. Grazie!</div><fb:like href="https://www.facebook.com/michelepierriit" send="false" layout="standard" action="like" colorscheme="light" ></fb:like><div><g:plusone size="standard" annotation="inline" callback="wpvltr_gplus" href="https://www.facebook.com/michelepierriit"></g:plusone></div><div><a
href="http://twitter.com/share" class="twitter-share-button" data-url="https://www.facebook.com/michelepierriit" data-text="Look at this: " data-size="medium" data-count="horizontal" data-lang="en">Tweet</a></div></div> <br
/></div><div
style="display: none;" class="wpvltr_like_to_keep_reading"> Esempio.</div><p>&nbsp;</p> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichelePierri?a=p2XJjtypxBU:qHzyHK99Jlo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=p2XJjtypxBU:qHzyHK99Jlo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=p2XJjtypxBU:qHzyHK99Jlo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=p2XJjtypxBU:qHzyHK99Jlo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=p2XJjtypxBU:qHzyHK99Jlo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=p2XJjtypxBU:qHzyHK99Jlo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=p2XJjtypxBU:qHzyHK99Jlo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=p2XJjtypxBU:qHzyHK99Jlo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=p2XJjtypxBU:qHzyHK99Jlo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded> <wfw:commentRss>http://www.michelepierri.it/video-dimensioni-fluide-fitvid/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Pubblicata Android App Futsal Manager</title><link>http://www.michelepierri.it/android-futsal-manager</link> <comments>http://www.michelepierri.it/android-futsal-manager#comments</comments> <pubDate>Sun, 18 Nov 2012 11:18:04 +0000</pubDate> <dc:creator>Michele</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Portfolio]]></category> <category><![CDATA[android-app]]></category> <category><![CDATA[applicazione]]></category> <category><![CDATA[calcetto]]></category> <category><![CDATA[calcio a 5]]></category> <category><![CDATA[calcio a 7]]></category> <category><![CDATA[futsal]]></category> <guid isPermaLink="false">http://www.michelepierri.it/?p=1345</guid> <description><![CDATA[Ci sono squadre di calcetto che adottano cambi a rotazione.&#160;Per cambi a rotazione si intende sostituire l&#8217;ultimo entrato (che è in campo da più tempo), con il giocatore in panchina da più tempo.&#160;In gergo informatico si chiama tecnica Last Input<span
class="ellipsis">&#8230;</span><div
class="read-more"><a
href="http://www.michelepierri.it/android-futsal-manager">Leggi altro &#8250;</a></div>]]></description> <content:encoded><![CDATA[<p>Ci sono squadre di calcetto che adottano cambi a rotazione.&nbsp;Per cambi a rotazione si intende sostituire l&#8217;ultimo entrato (che è in campo da più tempo), con il giocatore in panchina da più tempo.&nbsp;In gergo informatico si chiama tecnica Last Input First Output.</p><p>E&#8217; nata così l&#8217;idea di realizzare una piccolissima app in grado di tenere memoria del tempo trascorso dall&#8217;ultimo cambio di una partita, e dei giocatori che devono entrare o uscire dal campo di gioco.</p><p>E&#8217; stata sviluppata utilizzando le librerie Android insieme al framework PhoneGap e jQuery-mobile.</p><p>L&#8217;applicazione si sviluppa in 3 passi:<a
href="http://www.michelepierri.it/wp-content/uploads/2012/11/img-pres-e1353237557850.jpg"><img
class="alignright size-thumbnail wp-image-1350" title="img pres" alt="" src="http://www.michelepierri.it/wp-content/uploads/2012/11/img-pres-150x150.jpg" width="150" height="150" /></a></p><ol><li>Inserimento del numero di giocatori partecipanti al match;</li><li>Inserimento del nome dei giocatori;</li><li>Gestione dei cambi e del tempo trascorso durante il match e dall&#8217;ultimo cambio. I giocatori in campo sono colorati di verde, mentre quelli in panchina di celeste.</li></ol><p>Per effettuare il cambio secondo metodo a rotazione, basterà quindi una volta raggiunto il passo 3, trascinare l&#8217;ultimo giocatore colorato di celeste in cima alla lista.</p><p>Nota bene: se nella lista è incluso il portiere, e quest&#8217;ultimo rimarrà sempre in campo, dovremo trascinare il giocatore entrante nella seconda posizione.</p><p>Così facendo, i giocatori in campo, scorreranno nella lista verso il basso e, l&#8217;ultimo colorato in verde, cambierà colore in celeste in quanto sarà colui che dovrà uscire dal campo per far posto al nuovo.</p><p>Per scaricare l&#8217;applicazione:&nbsp;</p><ul><li><a
href="https://play.google.com/store/apps/details?id=it.michelepierri">Futsal Manager</a></li><li><a
title="Futsal Manager" href="http://www.appbrain.com/app/futsal-manager/it.michelepierri">AppBrain</a></li></ul><p>Se hai qualche idea o modifica da proporre all&#8217;applicazione contattami dalla sezione Contatti!</p><p>Screenshot:</p><div
id="attachment_1348" class="wp-caption aligncenter" style="width: 178px"><a
href="http://www.michelepierri.it/wp-content/uploads/2012/11/Screenshot_2012-11-16-21-46-38.png"><img
class="size-medium wp-image-1348" title="Inserimento del numero di giocatori partecipanti" alt="" src="http://www.michelepierri.it/wp-content/uploads/2012/11/Screenshot_2012-11-16-21-46-38-168x300.png" width="168" height="300" /></a><p
class="wp-caption-text">Inserimento del numero di giocatori partecipanti</p></div><div
id="attachment_1346" class="wp-caption aligncenter" style="width: 178px"><a
href="http://www.michelepierri.it/wp-content/uploads/2012/11/Screenshot_2012-11-16-21-46-48.png"><img
class="size-medium wp-image-1346" title="Inserimento dei nomi dei giocatori" alt="" src="http://www.michelepierri.it/wp-content/uploads/2012/11/Screenshot_2012-11-16-21-46-48-168x300.png" width="168" height="300" /></a><p
class="wp-caption-text">Inserimento dei nomi dei giocatori</p></div><div
id="attachment_1347" class="wp-caption aligncenter" style="width: 178px"><a
href="http://www.michelepierri.it/wp-content/uploads/2012/11/Screenshot_2012-11-16-21-47-05.png"><img
class="size-medium wp-image-1347" title="Gestione cambi e tempo trascorso" alt="" src="http://www.michelepierri.it/wp-content/uploads/2012/11/Screenshot_2012-11-16-21-47-05-168x300.png" width="168" height="300" /></a><p
class="wp-caption-text">Gestione cambi e tempo trascorso</p></div> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichelePierri?a=VKhbETjJ__U:9XO5KP2d44E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=VKhbETjJ__U:9XO5KP2d44E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=VKhbETjJ__U:9XO5KP2d44E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=VKhbETjJ__U:9XO5KP2d44E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=VKhbETjJ__U:9XO5KP2d44E:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=VKhbETjJ__U:9XO5KP2d44E:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=VKhbETjJ__U:9XO5KP2d44E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=VKhbETjJ__U:9XO5KP2d44E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=VKhbETjJ__U:9XO5KP2d44E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded> <wfw:commentRss>http://www.michelepierri.it/android-futsal-manager/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Auto, Smartphone e Cloud Computing. Il futuro è smart!</title><link>http://www.michelepierri.it/auto-smartphone-cloud-computing-nissan</link> <comments>http://www.michelepierri.it/auto-smartphone-cloud-computing-nissan#comments</comments> <pubDate>Fri, 09 Nov 2012 17:24:28 +0000</pubDate> <dc:creator>Michele</dc:creator> <category><![CDATA[Cloud Computing]]></category> <category><![CDATA[auto]]></category> <category><![CDATA[cloud computing]]></category> <category><![CDATA[mobile]]></category> <category><![CDATA[nissan]]></category> <category><![CDATA[NSC-2015]]></category> <category><![CDATA[smartphone]]></category> <guid isPermaLink="false">http://www.michelepierri.it/?p=1334</guid> <description><![CDATA[Si avvicina il tempo in cui, un giorno, toccando il nostro smartphone, inviteremo la nostra auto a raggiungerci in pochi secondi. Quasi un fischio alla Zorro, ed il nostro destriero, la nostra auto, sarà a portata di mano. Ma non<span
class="ellipsis">&#8230;</span><div
class="read-more"><a
href="http://www.michelepierri.it/auto-smartphone-cloud-computing-nissan">Leggi altro &#8250;</a></div>]]></description> <content:encoded><![CDATA[<p>Si avvicina il tempo in cui, un giorno, toccando il nostro smartphone, inviteremo la nostra auto a raggiungerci in pochi secondi.</p><p>Quasi un fischio alla Zorro, ed il nostro destriero, la nostra auto, sarà a portata di mano.</p><p>Ma non basta&#8230;.E se il tuo smartphone iniziasse a suonare improvvisamente? Probabilmente la tua auto ti starà avvisando che qualcuno si sta avvicinato cautamente alla tua auto!</p><p>No, non si tratta di una scena dall&#8217;ultimo film 007, ma è la realtà. Nissan NSC-2015, il presagio di quella fusione tra finzione e realtà, è una vettura elettronica che sta per intervenire sul mercato nel 2015. La vettura sarà collegato al telefono tramite il cloud computing, di conseguenza, può essere facilmente controllato tramite smartphone o qualsiasi altro dispositivo dotato di connessione Internet.</p><ol><li>Si tocca un tasto sul vostro smartphone e la macchina guiderà verso di voi. Quindi, non ci sarà alcun bisogno di preoccuparsi di avvistare l&#8217;auto nel parcheggio;</li><li>Tu sei da qualche parte lontano dalla vostra auto e una persona si avvicina molto al vostro veicolo. Riceverete immediatamente una notifica su di esso e la vostra auto vi chiederà di visualizzare in tempo reale la registrazione video. Al vostro consenso, la telecamera esterna in macchina inizierà la cattura a 360 gradi video che potete guardare sul vostro smartphone. Se non è in grado di riconoscere la persona, lo smartphone passa automaticamente l&#8217;allarme;</li><li>Che si tratti di scivolare in retromarcia, andare avanti, o fare un perfetto U, NSC 2015 può farlo per voi, di per sé, ma non può guidare a destinazione senza il vostro contributo, almeno le sue prime generazioni non avrà che auto-guida abilità.</li></ol><p>Tuttavia, NSC 2015 non sarà in grado di parcheggiarsi da sola, ma a lungo termine l&#8217;evoluzione cellulare e i sensori permetteranno di creare una mappa accurata delle macchine parcheggiate intorno, consentendo il raggiungimento di questa features. Le varie auto saranno in grado di comunicare le informazioni relative alla posizione e quant&#8217;altro permettendo di decifrare gran parte di ciò che la circonda. A riguardo è interessante leggere questo <a
href="http://www.forbes.com/sites/michaelkanellos/2012/10/03/nissans-robot-car-finds-its-own-parking-spots/">articolo</a></p><p>NSC 2015 indica un futuro in cui il cloud computing, smartphone e automobili lavoreranno insieme per rendere la vostra esperienza di guida più facile e più piacevole.</p> <iframe
src="http://www.youtube.com/embed/f11g_gUzF6Y?version=3&amp;wmode=transparent" width="560" height="340" style="background-color:#000;display:block;margin-bottom:0;max-width:100%;" title="YouTube video player" frameborder="0" allowfullscreen></iframe><p
style="font-size:11px;margin-top:0;"><a
href="http://www.youtube.com/watch?v=f11g_gUzF6Y" target="_blank" title="Watch on YouTube">Watch this video on YouTube</a>.</p> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichelePierri?a=Tavs_w9J0q8:MzQx4eI6bcU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=Tavs_w9J0q8:MzQx4eI6bcU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=Tavs_w9J0q8:MzQx4eI6bcU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=Tavs_w9J0q8:MzQx4eI6bcU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=Tavs_w9J0q8:MzQx4eI6bcU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=Tavs_w9J0q8:MzQx4eI6bcU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=Tavs_w9J0q8:MzQx4eI6bcU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=Tavs_w9J0q8:MzQx4eI6bcU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=Tavs_w9J0q8:MzQx4eI6bcU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded> <wfw:commentRss>http://www.michelepierri.it/auto-smartphone-cloud-computing-nissan/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Catturare la chiusura di pop-up</title><link>http://www.michelepierri.it/javascript/catturare-chiusura-popup</link> <comments>http://www.michelepierri.it/javascript/catturare-chiusura-popup#comments</comments> <pubDate>Sun, 04 Nov 2012 15:06:27 +0000</pubDate> <dc:creator>Michele</dc:creator> <category><![CDATA[Javascript]]></category> <category><![CDATA[chiudere pop-up]]></category> <category><![CDATA[close pop-up]]></category> <category><![CDATA[evento chiusura pop-up]]></category> <guid isPermaLink="false">http://www.michelepierri.it/?p=1310</guid> <description><![CDATA[In questo articolo viene mostrato come sapere se un pop-up è stato chiuso mediante codice javascript. Nell&#8217;esempio mostrato viene aperto un pop-up a GOOGLE e dopodichè, mostrato un messaggio di alert quando questo viene chiuso. Codice: var win = window.open&#40;&#34;http://www.google.it&#34;,'','height=500,width=500'&#41;;var<span
class="ellipsis">&#8230;</span><div
class="read-more"><a
href="http://www.michelepierri.it/javascript/catturare-chiusura-popup">Leggi altro &#8250;</a></div>]]></description><div id="fb-root" /> <content:encoded><![CDATA[<p>In questo articolo viene mostrato come sapere se un pop-up è stato chiuso mediante codice javascript.</p><p>Nell&#8217;esempio mostrato viene aperto un pop-up a GOOGLE e dopodichè, mostrato un messaggio di alert quando questo viene chiuso.</p><p>Codice:</p><p><pre class="devcodeblock" title="Javascript"><div class="devcodeoverflow"><ol><li><span style="color: #000066; font-weight: bold;">var</span> win <span style="color: #339933;">=</span> window.<span style="color: #660066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;http://www.google.it&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">''</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'height=500,width=500'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li><span style="color: #000066; font-weight: bold;">var</span> winTimer <span style="color: #339933;">=</span> window.<span style="color: #660066;">setInterval</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></li><li><span style="color: #009900;">&#123;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>win.<span style="color: #660066;">closed</span> <span style="color: #339933;">!==</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&#123;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #006600; font-style: italic;">// !== is required for compatibility with Opera</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.<span style="color: #660066;">clearInterval</span><span style="color: #009900;">&#40;</span>winTimer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'POP-UP CLOSED...'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&#125;</span></li><li><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li></ol></div></pre></p><p>Per poter visualizzare e scaricare l&#8217;esempio funzionante supporta il nostro sito con uno dei seguenti pulsanti social:</p><div
class="wpvltr_like_to_keep_reading_message_container"><div
class="wpvltr_like_to_keep_reading_message" style="border-style: solid; border-color: #B9D2EE; border-width: 1px; background-color: #E1EBFF; "><div
class="wpvmtext" style="margin-bottom: 8px;">Per poter continuare a leggere, supportaci cliccando su uno dei pulsanti social. Grazie!</div><fb:like href="https://www.facebook.com/michelepierriit" send="false" layout="standard" action="like" colorscheme="light" ></fb:like><div><g:plusone size="standard" annotation="inline" callback="wpvltr_gplus" href="https://www.facebook.com/michelepierriit"></g:plusone></div><div><a
href="http://twitter.com/share" class="twitter-share-button" data-url="https://www.facebook.com/michelepierriit" data-text="Look at this: " data-size="medium" data-count="horizontal" data-lang="en">Tweet</a></div></div> <br
/></div><div
style="display: none;" class="wpvltr_like_to_keep_reading"></p><p><a
href="http://jsfiddle.net/michelejs/8aDP7/1/">http://jsfiddle.net/michelejs/8aDP7/1/</a></p><p><iframe
style="width: 100%; height: 300px;" src="http://jsfiddle.net/michelejs/8aDP7/1/embedded/" frameborder="0" width="320" height="240"></iframe></p><p></div> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichelePierri?a=VErpct93QCY:qbGdsL9pKXM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=VErpct93QCY:qbGdsL9pKXM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=VErpct93QCY:qbGdsL9pKXM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=VErpct93QCY:qbGdsL9pKXM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=VErpct93QCY:qbGdsL9pKXM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=VErpct93QCY:qbGdsL9pKXM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=VErpct93QCY:qbGdsL9pKXM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichelePierri?i=VErpct93QCY:qbGdsL9pKXM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichelePierri?a=VErpct93QCY:qbGdsL9pKXM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichelePierri?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded> <wfw:commentRss>http://www.michelepierri.it/javascript/catturare-chiusura-popup/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
