<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Marco Valsecchi's RSS Feed]]></title><description><![CDATA[Personal blog by Marco Valsecchi. ]]></description><link>https://marcovalsecchi.it</link><generator>GatsbyJS</generator><lastBuildDate>Sat, 30 Aug 2025 07:23:51 GMT</lastBuildDate><item><title><![CDATA[La condivisione è più veloce del Coronavirus]]></title><description><![CDATA[Dopo tanti giorni ieri sera con mia moglie e il nostro piccolo di 11 mesi nel passeggino 👨‍👩‍👦 ci siamo concessi una passeggiata per il…]]></description><link>https://marcovalsecchi.it/la-condivisione-e-piu-veloce-del-coronavirus</link><guid isPermaLink="false">https://marcovalsecchi.it/la-condivisione-e-piu-veloce-del-coronavirus</guid><pubDate>Sun, 21 Jun 2020 06:27:00 GMT</pubDate><content:encoded>&lt;p&gt;Dopo tanti giorni ieri sera con mia moglie e il nostro piccolo di 11 mesi nel passeggino 👨‍👩‍👦 ci siamo concessi una passeggiata per il lungolago della nostra Lecco… Bhe di sicuro non siamo stati gli unici ad avere la stessa idea dato che trovar parcheggio è stato più impossibile che prima della quarantena 😅&lt;/p&gt;
&lt;p&gt;È stato bello rivedere alcuni amici dopo mesi, riscoprire la semplicità di fare due passi in compagnia, confrontarsi su quello che è successo e come il tutto ha cambiato e sta cambiando le nostre vite.&lt;/p&gt;
&lt;p&gt;Solo il fatto di indossare tutti la mascherina (bhe non proprio tutti, purtroppo) ci fa capire il livello della gravità che abbiamo raggiunto… criticavamo i pullman di turisti orientali imbardati dalla testa ai piedi ma solo ora mi rendo conto del grande rispetto che hanno sempre avuto nel confronto degli altri.&lt;/p&gt;
&lt;p&gt;Tra una voglia di McDonald’s non soddisfatta (già a Lecco chiude alle 23 😖) e un’ultima scarpinata verso la macchina, giungiamo finalmente a casa… e ci rendiamo conto che il fantastico porta ciuccio di Enea non era più attaccato al passeggino; “va bhe controlleremo meglio domani” ma neanche il tempo di tuffarsi nel letto e controllare gli ultimi messaggi di WhatsApp, news di Google, tweet, immagini e stories di Instagram, newsfeed di Facebook e le altre mille mila sottoscrizioni in giro per il web…che una nostra amica (grazie Giulia 😁) ci invia in WhatsApp un post di un &lt;a href=&quot;https://www.facebook.com/groups/easymami/?ref=share&quot;&gt;gruppo&lt;/a&gt; di Facebook in cui veniva segnalato il ritrovamento di un porta ciuccio proprio sul lungolago di Lecco con tanto di foto e dove poterlo recuperare.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSP6JqSH7nyJrvSD66erxZ9f7w7vwhXBkdCgtK1goL1lgXMBqhcoGsfQCgfbCLXEVrwQOb2OMLSq4maQVxrgr1O5_L8h1Dj7cnw3UOWidzs64yIdspfrsaAOdYGkB0L9GzlvtGK71z0vby/s351/IMG_20200621_081935.jpg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSP6JqSH7nyJrvSD66erxZ9f7w7vwhXBkdCgtK1goL1lgXMBqhcoGsfQCgfbCLXEVrwQOb2OMLSq4maQVxrgr1O5_L8h1Dj7cnw3UOWidzs64yIdspfrsaAOdYGkB0L9GzlvtGK71z0vby/s320/IMG_20200621_081935.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ora, si sta parlando di un oggetto di cui avrei potuto fare a meno, anche mio figlio se ne sarebbe fatta una ragione ma la cosa che mi ha fatto pensare è il meccanismo, la potenza e la velocità che ha portato alla risoluzione del mistero… E la prima cosa che mi è balzata in mente è stata l’applicazione &lt;a href=&quot;https://bit.ly/312w2Cv&quot;&gt;Immuni&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Provate a pensare se invece di un porta ciuccio la ragazza avesse condiviso il suo risultato di un tampone e che questo fosse stato positivo: grazie a questa app in un istante tutte le persone che sono state esposte con lei verrebbero avvisate del possibile rischio e da lì poi sta ad ognuno di noi adottare tutte le misure di sicurezza del caso. Già perché la differenza sta proprio nel fatto che chi viene avvisato da Immuni non sa dove e quando è stato esposto questo perché non viene tracciato nessun nostro dato personale o posizione… giusto o sbagliato che sia in ogni caso sarebbe stato il caso di ringraziare questa ragazza di aver fatto questo bellissimo gesto di condivisione 🤗.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Come nascondere gli allegati di WhatsApp nella galleria del telefono]]></title><description><![CDATA[Quante volte ci è capitato di vedere tra una foto e l’altra della nostra galleria, qualche immagine o video di WhatsApp di gruppi che…]]></description><link>https://marcovalsecchi.it/come-nascondere-gli-allegati-di-whatsapp</link><guid isPermaLink="false">https://marcovalsecchi.it/come-nascondere-gli-allegati-di-whatsapp</guid><pubDate>Sun, 26 Jan 2020 22:59:00 GMT</pubDate><content:encoded>&lt;p&gt;Quante volte ci è capitato di vedere tra una foto e l’altra della nostra galleria, qualche immagine o video di WhatsApp di gruppi che solitamente noi maschietti facciamo orgogliosamente parte… magari mentre mostriamo le nostre foto delle vacanze in TV o peggio ancora è nostro figlio che si diverte a curiosare nel nostro telefono?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;Per fortuna WhatsApp ci mette a disposizione una comoda funzionalità per ovviare alle nostre figure barbine: tramite la voce ”&lt;strong&gt;Visibilità dei media&lt;/strong&gt;” che si trova nella sezione ”&lt;strong&gt;Chat&lt;/strong&gt;” delle ”&lt;strong&gt;Impostazioni&lt;/strong&gt;” dell’applicazione, è possibile rendere disponibile o meno l’allegato scaricato nella nostra galleria: &lt;em&gt;questa impostazione vale solo per i files successivi alla sua impostazione&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2EqqaDjfDg5YYEXl-D5RJU8OLbVGYwGSb6sA-a2f2B4bUGiGm-MCDfnsL9KeGXttOH5-Ksrsg5OCaLhGD_HgFge0VYbiMv1ccI0WJ7XelNJjU4f9X9vQ6m6NZZG4C3vV6hCpKwnCytC-j/s1600/Screenshot_20200126_232623_com.whatsapp.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2EqqaDjfDg5YYEXl-D5RJU8OLbVGYwGSb6sA-a2f2B4bUGiGm-MCDfnsL9KeGXttOH5-Ksrsg5OCaLhGD_HgFge0VYbiMv1ccI0WJ7XelNJjU4f9X9vQ6m6NZZG4C3vV6hCpKwnCytC-j/s320/Screenshot_20200126_232623_com.whatsapp.png&quot; alt=&quot;Visibilità dei media&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Di base questo settaggio è attivo, vale a dire che &lt;em&gt;tutti i files saranno visibili&lt;/em&gt;… inoltre oltre che a livello globale, è possibile variare il comportamento anche a livello di singola chat e/o gruppo, nel caso volessimo escludere gli allegati solo di alcune conversazioni; per il singolo contatto basta accedere alla voce ”&lt;strong&gt;Visibilità dei media&lt;/strong&gt;” in ”&lt;strong&gt;Mostra contatto&lt;/strong&gt;” mentre per i gruppi la stessa voce la si trova tra le ”&lt;strong&gt;Info gruppo&lt;/strong&gt;”. Si potrà optare se mantenere il comportamento predefinito, cioè quello scelto a livello globale, oppure se disabilitare o rendere sempre attiva la visibilità.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwrSFkJufTMU9wOaLTKZRvw_F-pkt6_11gBcfbcBMuogywxGP6bI_TWCIBpqXeGhMy2PfkCsqXtvKiMYu5UB8bI14EMyvM1H-8FhTtoxuvyXEkUu2Kl7mSHE3le8u-axrrvrA9hMzpKKQ6/s1600/Screenshot_20200126_233007_com.whatsapp.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwrSFkJufTMU9wOaLTKZRvw_F-pkt6_11gBcfbcBMuogywxGP6bI_TWCIBpqXeGhMy2PfkCsqXtvKiMYu5UB8bI14EMyvM1H-8FhTtoxuvyXEkUu2Kl7mSHE3le8u-axrrvrA9hMzpKKQ6/s320/Screenshot_20200126_233007_com.whatsapp.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A livello di file system quello che WhatsApp introduce con questa opzione, è la creazione di una cartella ”&lt;strong&gt;Private&lt;/strong&gt;” all’interno delle cartelle dei files media presenti nella nostra memoria interna del telefono.&lt;br&gt;
Per nascondere anche le immagini, i video o i documenti scaricati prima della modifica della visibilità, basta spostare tale files nella corrispondente cartella figlia “Private” ed il gioco è fatto ;)&lt;/p&gt;
&lt;p&gt;Prima di questa comoda funzionalità o nel caso in cui volessimo escludere completamente tutti i files di WhatsApp si puo’ ricorrere alla creazione di un file denominato ”&lt;strong&gt;.nomedia&lt;/strong&gt;” nella radice della cartella ”&lt;strong&gt;Media&lt;/strong&gt;” della nostra applicazione: in questo modo l’esclusione sarà globale e a prescindere dell’impostazione scelta.&lt;/p&gt;
&lt;p&gt;Personalmente tendevo ad escludere integralmente WhatsApp dalle cartelle della mia galleria, soprattutto in termini di backup ma ho trovato molto utile l’esclusione a livello di singolo gruppo in modo da avere un maggior controllo sui miei allegati.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Android adoptable storage: come risolvere il problema della memoria quasi piena sui dispositivi Samsung J5]]></title><description><![CDATA[Non sono un amante degli smartphone Samsung, sia perché hanno i tasti al contrario 😛 sia per la personalizzazione software che non mi è mai…]]></description><link>https://marcovalsecchi.it/android-adoptable-storage-come</link><guid isPermaLink="false">https://marcovalsecchi.it/android-adoptable-storage-come</guid><pubDate>Sat, 17 Jun 2017 16:12:00 GMT</pubDate><content:encoded>&lt;p&gt;Non sono un amante degli smartphone Samsung, sia perché hanno i tasti al contrario 😛 sia per la personalizzazione software che non mi è mai piaciuta (troppe app preinstallate di dubbia utilità) e a meno che non siete un felice possessore di un top di gamma come l’ultimo S8 con millemila giga di spazio e potenza, dite la verità… quante volte vi è capitato di vedere o sentire lamentele dai vostri amici a causa di questo messaggio:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Memoria quasi piena (È possibile che alcune funzioni del sistema non siano attive)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWOIoFeZKxf9z9r-sl03Cj5274SswAGlleNb5EfS5tl_O1AofE8bKpbKfqkN5pyQbOZnYn-TP0hueMCYEYzkaCYEHKleq4-I_O8Hz7Hqt76oSgKqs-j5aftdmofq6tui4kcajLpI_RQkWp/s1600/memoriaquasipiena.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWOIoFeZKxf9z9r-sl03Cj5274SswAGlleNb5EfS5tl_O1AofE8bKpbKfqkN5pyQbOZnYn-TP0hueMCYEYzkaCYEHKleq4-I_O8Hz7Hqt76oSgKqs-j5aftdmofq6tui4kcajLpI_RQkWp/s320/memoriaquasipiena.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Il problema principalmente sta, ovviamente, nella scarsa memoria interna con cui device come il Samsung J5 vengono venduti: 8GB di spazio ormai non sono per niente sufficienti; si basta a pensare che più della metà viene occupato dal sistema operativo (con relativi aggiornamenti) e applicazioni preinstallate.&lt;/p&gt;
&lt;p&gt;Per di più tutti usiamo WhatsApp e pochi bloccano il download delle immagini allegate, andando a riempire ulteriormente il nostro risicato storage 😓&lt;/p&gt;
&lt;p&gt;A questo punto la prima cosa che ti viene in mente qual’è? Compriamo una bella scheda microSD da 128GB così potrò installare tutte le app del mondo e fare miliardi di foto a qualsiasi cosa si muove!&lt;/p&gt;
&lt;p&gt;Peccato che una volta installata la scheda il problema non sparisce e così siamo costretti a cominciare ad eliminare app, foto, documenti e tutto quello che è necessario per cercare di sopravvivere con un telefono che ormai è con i byte alla gola 😰&lt;/p&gt;
&lt;p&gt;Perché la scheda aggiuntiva non ha funzionato? In realtà lei il suo dovere lo fa: come quando inseriamo una chiavetta USB nel nostro PC, ci siamo ritrovati un bel &lt;strong&gt;portable storage&lt;/strong&gt;, uno spazio di archiviazione portatile dove poter archiviare e spostare dati come foto e media in genere.&lt;/p&gt;
&lt;p&gt;Per fortuna il team Android con la versione 6.x (Marshmallow) ha introdotto un modo alternativo di utilizzare la scheda di memoria aggiuntiva: l’&lt;strong&gt;&lt;a href=&quot;https://source.android.com/devices/storage/adoptable&quot;&gt;adoptable storage&lt;/a&gt;&lt;/strong&gt;. In soldoni questa modalità permette virtualmente di estendere la memoria interna del nostro telefono andando ad ottenere, per esempio con una scheda da 32GB, uno spazio totale di ben 40GB!&lt;/p&gt;
&lt;p&gt;Peccato che il nostro simpaticone Samsung ha bloccato questa possibilità: è qui che entra in gioco la community dei &lt;a href=&quot;https://it.wikipedia.org/wiki/XDA_Developers&quot;&gt;XDA Developers&lt;/a&gt; che hanno sempre la chiave giusta per risolvere ogni problema.&lt;/p&gt;
&lt;p&gt;Da qui in avanti la faccenda si fa un po’ più tosta e se non siete dei gran smanettoni o non vi fidate delle vostre capacità, potete girare la guida al vostro “uomo del computer” di fiducia che vi saprà completare i prossimi step senza grossi problemi.&lt;/p&gt;
&lt;p&gt;Quello che ho di fronte è un Samsung Galaxy J5 modello SM-J500FN, ha 8GB di memoria interna e 120MB di spazio disponibile 😱… e una scheda microSD da 16GB 💪.&lt;/p&gt;
&lt;p&gt;È disponibile anche un aggiornamento software che ahimè, è impossibile da completare così come aggiungere o aggiornare applicazioni: alcune tra l’altro non si aprono più (come la Galleria) e le altre fanno fatica a partire… cosa facciamo?&lt;/p&gt;
&lt;h4&gt;Backup&lt;/h4&gt;
&lt;p&gt;Per prima cosa copiamo tutto quello che ci serve sul nostro PC, verifichiamo che i contatti sono sincronizzati nella rubrica dell’account Google e non dimentichiamoci di salvare nel cloud l’ultimo stato di WhatsApp.&lt;/p&gt;
&lt;h4&gt;Inizializzazione del dispositivo&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Togliamo la scheda microSD&lt;/em&gt; e facciamo una bella inizializzazione da zero con l’ultima versione disponibile aggiornata!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;scarichiamo e installiamo &lt;a href=&quot;http://www.samsung.com/it/support/smartswitch/&quot;&gt;Smart Switch&lt;/a&gt; sal sito Samsung.&lt;/li&gt;
&lt;li&gt;colleghiamo il nostro J5 al PC&lt;/li&gt;
&lt;li&gt;in alto a destra premete il tasto “More” e quindi “Emergency software recovery and initialization” (la batteria deve essere carica oltre il 50%):&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJW0BhVGuRiiBpCdHuooX3ni4HQwo97OUpNu574aADLiTTWvgV5c3MpEDD-EME9LX8XImbar1QHjnfOefHB9CUEYtBiMQC77kHN3ICYqOo5yvI2RJQMbnm63dTRTG8mCQ1fWEoyAIscuMb/s1600/ss1.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJW0BhVGuRiiBpCdHuooX3ni4HQwo97OUpNu574aADLiTTWvgV5c3MpEDD-EME9LX8XImbar1QHjnfOefHB9CUEYtBiMQC77kHN3ICYqOo5yvI2RJQMbnm63dTRTG8mCQ1fWEoyAIscuMb/s320/ss1.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;scegliamo “Device initialization” e confermiamo il tutto fino all’avvio dell’inizializzazione… a questo punto possiamo anche andare a bere un caffè in attesa del completamento del download dell’ultimo firmware e relativa installazione.&lt;/li&gt;
&lt;li&gt;a questo punto avremo un bel telefono nuovo di pacca: colleghiamolo al wifi, impostiamo l’account Google e completiamo la fase iniziale &lt;em&gt;senza però installare le nostre app fin da subito&lt;/em&gt;… altrimenti saremo ancora senza spazio 😅&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Installazione TWRP 3.1.x&lt;/h4&gt;
&lt;p&gt;La patch che abilita l’adoptable storage deve essere installata da questa &lt;a href=&quot;http://www.androidworld.it/forum/guide-e-tutorial-11/%5Bguida%5D-cosa-%C3%A8-una-custom-recovery-e-perch%C3%A9-averne-una-166994/&quot;&gt;custom recovery&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;abilitiamo il menu sviluppatore: Impostazioni -&gt; Info sul telefono e tap per sette volte il numero build, fino a quando compare la popup “Sei uno sviluppatore” 🙌&lt;/li&gt;
&lt;li&gt;&lt;em&gt;sblocchiamo l’OEM&lt;/em&gt;: questa operazione è fondamentale e non dovrà mai essere più disabilitata altrimenti ci troveremo con un bel soprammobile invece che uno smartphone di “ultima” generazione; Impostazioni -&gt; Opzioni sviluppatore -&gt; Sblocco OEM&lt;/li&gt;
&lt;li&gt;spegniamo e accediamo nella modalità download (Download Mode): Power+Volume Basso+Home quindi proseguiamo scegliendo Volume Alto&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnvdWvN6_fHhyphenhyphenKBEB8iau84ukIh5DXJy8DLZKPCsDxZUcmui-DznXD9hkf4IFRSihyphenhyphenvx4z0q8XY7Hf6_MqBNSZnElN5cezScvAvOOU0RAl3GxmEB8MNSABI1vLHvp9tHtb-007nD9hTwcs/s1600/downloadmode.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnvdWvN6_fHhyphenhyphenKBEB8iau84ukIh5DXJy8DLZKPCsDxZUcmui-DznXD9hkf4IFRSihyphenhyphenvx4z0q8XY7Hf6_MqBNSZnElN5cezScvAvOOU0RAl3GxmEB8MNSABI1vLHvp9tHtb-007nD9hTwcs/s320/downloadmode.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;colleghiamo di nuovo il J5 al PC e attraverso l’utility Odin dobbiamo installare la custom recovery: Odin e il file della recovery li trovate &lt;a href=&quot;https://forum.xda-developers.com/galaxy-j5/development/unofficial-twrp-3-1-x-galaxy-sm-j500h-t3588533&quot;&gt;in questa discussione&lt;/a&gt; del forum XDA Developers.&lt;br&gt;
Aprite Odin, scegliete il file md5 della recovery attraverso il tasto AP&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvlE4gz2ER4VHpP4UuC-LnZ3QRLGjSIIiuA3FmxRuR3petxPD_I02ECWdWg-I899GiVghYFqAnaR5k_pwMKhGDHJgYXiwt7vok10Bnw-rLR83vzBwi8Ip8Nsu7niJtLnQhdgbhLovBXEXS/s1600/odinap.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvlE4gz2ER4VHpP4UuC-LnZ3QRLGjSIIiuA3FmxRuR3petxPD_I02ECWdWg-I899GiVghYFqAnaR5k_pwMKhGDHJgYXiwt7vok10Bnw-rLR83vzBwi8Ip8Nsu7niJtLnQhdgbhLovBXEXS/s320/odinap.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Start e in pochi secondi avrete la conferma dell’avvenuta installazione di TWRP&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Patch adoptable storage&lt;/h4&gt;
&lt;p&gt;Con il telefono ancora collegato al PC copiate nella root della memoria interna la patch che potete trovare in &lt;a href=&quot;https://forum.xda-developers.com/galaxy-j5/how-to/patch-adoptable-storage-enabler-t3489326&quot;&gt;questo thread&lt;/a&gt; (adoptable_storage_enabler_ashyx_13916.zip):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;scolleghiamo e spegniamo il telefono&lt;/li&gt;
&lt;li&gt;entriamo in TWRP attraverso la combinazione di tasti: Power+Volume Alto+Home&lt;/li&gt;
&lt;li&gt;dobbiamo fare swipe per proseguire verso il menu dove scegliamo la voce Install&lt;/li&gt;
&lt;li&gt;ci si presenta la root del nostro dispositivo, selezioniamo lo zip precedentemente caricato ed attendiamo il completamento dell’installazione della patch&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjocUSd2OfK9asOH2jEkWmOaOkK_DPFa0SW_S8CJlMP9DYzcYcd92VPeOVlqenXUd8Mb0s05jrVzHglD9bAnsYw272YVTaws6YIwzZb7dwBc4lRis6QwgB8WSLj8SZPNrkP543g2mGTI5lK/s1600/twrpinstall.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjocUSd2OfK9asOH2jEkWmOaOkK_DPFa0SW_S8CJlMP9DYzcYcd92VPeOVlqenXUd8Mb0s05jrVzHglD9bAnsYw272YVTaws6YIwzZb7dwBc4lRis6QwgB8WSLj8SZPNrkP543g2mGTI5lK/s320/twrpinstall.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Notare la frase “Enabling adoptable storage… sorry Samsung you loose again!!!”&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Adoptable storage&lt;/h4&gt;
&lt;p&gt;Tutto è pronto per poter inserire la nostra scheda microSD, a me piace farlo da telefono acceso, come una chiavetta USB appunto 😛 (anche se nel nostro caso n_on si dovrà più togliere_!)&lt;/p&gt;
&lt;p&gt;Comparirà la seguente schermata:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcWbdTXlWdbtq5ZL37rOTq1UHWadUilmGBMrWz3BfSkK6Oz8mxl49c6FPiftSvzsKVeY3oWZiW0BjKgdaPQMH5nh6T8aaFYbdu5RVFxm7eS9Hwmrt0u-rbTP8ZFy8Sgxoa_IyW0V01j2CZ/s1600/adoptablestorage.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcWbdTXlWdbtq5ZL37rOTq1UHWadUilmGBMrWz3BfSkK6Oz8mxl49c6FPiftSvzsKVeY3oWZiW0BjKgdaPQMH5nh6T8aaFYbdu5RVFxm7eS9Hwmrt0u-rbTP8ZFy8Sgxoa_IyW0V01j2CZ/s320/adoptablestorage.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;…la scelta è d’obbligo: “Usa come memoria interna”: la scheda verrà formattata, criptata e starà al servizio del sistema operativo che la userà come pare e piace!&lt;/p&gt;
&lt;h4&gt;Consigli ed info post installazione&lt;/h4&gt;
&lt;p&gt;Da questo momento le applicazioni che andrete ad installare potrebbero finire nella scheda esterna: ho usato il condizionale perché la gestione della memoria totale (interna + esterna) sarà totalmente trasparente salvo le applicazioni predisposte a stare su una memoria esterna (es. Candy Crush Saga, Instagram ed Hearthstone). Per queste app potete verificare la loro posizione corrente nella “Gestione delle applicazioni” alla voce “Memoria”.&lt;/p&gt;
&lt;p&gt;La memoria interna rimarrà più libera è vero ma bisogna comunque stare attenti a non riempirla nuovamente; per questo consiglio di non installare gli aggiornamenti per alcune app che potremo disattivare, come per esempio Excel, Word e PowerPoint.&lt;/p&gt;
&lt;p&gt;So per certo che lo spazio usato da WhatsApp sarà destinato alla memoria esterna e questo è di sicuro un bel guadagno.&lt;/p&gt;
&lt;p&gt;Ci sono vari pareri riguardo l’adoptable storage: chi lo consiglia e chi invece lo maledice. Questo perché ci sono alcuni fattori da tenere in considerazione:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la memoria esterna non è veloce quanto quella interna e si potranno notare dei cali di prestazioni&lt;/li&gt;
&lt;li&gt;in questo modo la scheda è maggiormente sotto carico a discapito della sua durabilità nel tempo&lt;/li&gt;
&lt;li&gt;in caso di guasto della microSD il telefono potrebbe diventare inutilizzabile&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Per questi motivi una &lt;a href=&quot;https://www.amazon.it/gp/product/B06XFWPXYD/ref=as_li_tl?ie=UTF8&amp;#x26;camp=3414&amp;#x26;creative=21718&amp;#x26;creativeASIN=B06XFWPXYD&amp;#x26;linkCode=as2&amp;#x26;tag=marcovalsecch-21&amp;#x26;linkId=384ef576522fedb3b7a6cfd988f0c6c7&quot;&gt;buona scheda&lt;/a&gt;&lt;img src=&quot;//ir-it.amazon-adsystem.com/e/ir?t=marcovalsecch-21&amp;#x26;l=am2&amp;#x26;o=29&amp;#x26;a=B06XFWPXYD&quot; alt=&quot;&quot;&gt; è d’obbligo (classe 10) e piuttosto che cambiare telefono per un problema simile, credo che l’adoptable storage sia una soluzione più che dignitosa.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Spotify disponibile per Samsung Tizen smart TV]]></title><description><![CDATA[Finalmente è possibile scaricare l’app Spotify anche sulle ultime Samsung Smart TV con Tizen OS!  Con un comunicato ufficiale Spotify ha…]]></description><link>https://marcovalsecchi.it/spotify-disponibile-per-samsung-tizen</link><guid isPermaLink="false">https://marcovalsecchi.it/spotify-disponibile-per-samsung-tizen</guid><pubDate>Sun, 23 Oct 2016 08:37:00 GMT</pubDate><content:encoded>&lt;p&gt;Finalmente è possibile scaricare l’app Spotify anche sulle ultime Samsung Smart TV con Tizen OS!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5ufEpwlmqZeTlbP7d-BRpcm74HmBA3z7vk1PNeXQVP6vrWLpZZBrjr2eS8SaNapuNNYU0aIzi5MaV_NaWPDMitzXfu02ZLVQkFIv_JyZURuE1PKh3vloERHgf9Je5J_obxmmzkSy_Itm6/s1600/1477211878910.jpg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5ufEpwlmqZeTlbP7d-BRpcm74HmBA3z7vk1PNeXQVP6vrWLpZZBrjr2eS8SaNapuNNYU0aIzi5MaV_NaWPDMitzXfu02ZLVQkFIv_JyZURuE1PKh3vloERHgf9Je5J_obxmmzkSy_Itm6/s400/1477211878910.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;Con un &lt;a href=&quot;https://news.spotify.com/us/2016/10/20/spotify-now-available-on-2015-and-2016-samsung-smart-tvs-2/&quot;&gt;comunicato ufficiale&lt;/a&gt; Spotify ha reso pubblica la sua nuova esperienza per l’ home entertainment e, dopo pochi minuti di utilizzo, devo dire che l’attesa è stata ripagata!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPIaetB4jE-2dr23RvAuYR1IxmxHwT1pMLXr-Bs4wEVVgl7BvvflXdtJIkNIy8pSN-S2uhJFPAx0LWdUj3h31yvBgYl0-hfRNyVeoqInzxmBRufpe4o6rmEdwm2nYhAqNdKGuY4Hsrp3ti/s1600/1477211747695.jpg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPIaetB4jE-2dr23RvAuYR1IxmxHwT1pMLXr-Bs4wEVVgl7BvvflXdtJIkNIy8pSN-S2uhJFPAx0LWdUj3h31yvBgYl0-hfRNyVeoqInzxmBRufpe4o6rmEdwm2nYhAqNdKGuY4Hsrp3ti/s400/1477211747695.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A questo pare, limitatamente agli ultimi modelli del 2015/2016, non c’è la necessità di essere possessori di un abbonamento Premium…&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitOzRiTWke0hDzOqy-ljbxTYXY4VMsUZZhoWPcDP4mmvrhc-2MYSZx_2GciiuJG-_nAmCpYs87amso1YvbdTfc0BlzH1Z2MyyCmG-vKbbgDImMoXELPKBadspFCG7y36USa0kbSVnma2Lp/s1600/1477212297044.jpg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitOzRiTWke0hDzOqy-ljbxTYXY4VMsUZZhoWPcDP4mmvrhc-2MYSZx_2GciiuJG-_nAmCpYs87amso1YvbdTfc0BlzH1Z2MyyCmG-vKbbgDImMoXELPKBadspFCG7y36USa0kbSVnma2Lp/s400/1477212297044.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La configurazione con il proprio profilo è immediata se si opta di passare per la wifi di casa e trasmettere la musica dal proprio device mobile sulla TV.&lt;/p&gt;
&lt;p&gt;La navigazione tra le varie sezioni è veloce ed intuitiva e la home cambia giornalmente: per esempio oggi mi propone “la colonna sonora della tua domenica!“… Perfetta per iniziare con “una carica di espresso” questa giornata un pò grigia ma illuminata da questa piacevole novità 😉.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[jwspack: package JW Player Skins on the fly]]></title><description><![CDATA[I’m using JW Player from some months for my latest projects and I made this useful tool to package the skins so the loading and the…]]></description><link>https://marcovalsecchi.it/jwspack-package-jw-player-skins-on-fly</link><guid isPermaLink="false">https://marcovalsecchi.it/jwspack-package-jw-player-skins-on-fly</guid><pubDate>Tue, 09 Apr 2013 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m using &lt;a href=&quot;http://www.longtailvideo.com/jw-player/&quot;&gt;JW Player&lt;/a&gt; from some months for my latest projects and I made this useful tool to package the skins so the loading and the distribution is much faster then keep linked all the source image files.&lt;/p&gt;
&lt;p&gt;You can find it at this url:&lt;br&gt;
&lt;a href=&quot;http://jwspack.azurewebsites.net/&quot;&gt;http://jwspack.azurewebsites.net/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Zip your skin folder (&lt;em&gt;the zip file name must be equals to the skin name&lt;/em&gt;) and then you can copy the final encoded xml source from the result textarea.&lt;/p&gt;
&lt;p&gt;Please let me know of your suggestions, if any.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Use CSS Agent in a ASP.NET MVC web application]]></title><description><![CDATA[CSS Agent is an ASP.NET handler that provides automatic vendor prefixes, CSS constants and minification to your style sheets. I always use…]]></description><link>https://marcovalsecchi.it/use-css-agent-in-aspnet-mvc-web</link><guid isPermaLink="false">https://marcovalsecchi.it/use-css-agent-in-aspnet-mvc-web</guid><pubDate>Mon, 06 Aug 2012 21:26:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.keithclark.co.uk/labs/cssagent/&quot;&gt;CSS Agent&lt;/a&gt; is an ASP.NET handler that provides automatic vendor prefixes, CSS constants and minification to your style sheets.&lt;/p&gt;
&lt;p&gt;I always use it on my last ASP.NET Web Forms applications without any problems but since I moved to ASP.NET MVC web applications I must remember to ignore the specified CSS URL route on the RegitserRoutes method on my Global.asax.cs file:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt; routes.IgnoreRoute(&quot;screen-min.css&quot;);  &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Where “screen-min.css” is the relative path to my stylesheet file.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Google cerca per immagine]]></title><description><![CDATA[Da oggi il grande motore di ricerca Google ha introdotto un nuovo metodo di ricerca: per Immagine!  Per utilizzarla bisogna accedere alla…]]></description><link>https://marcovalsecchi.it/google-cerca-per-immagine</link><guid isPermaLink="false">https://marcovalsecchi.it/google-cerca-per-immagine</guid><pubDate>Fri, 17 Jun 2011 12:48:00 GMT</pubDate><content:encoded>&lt;p&gt;Da oggi il grande motore di ricerca Google ha introdotto un nuovo metodo di ricerca: per &lt;strong&gt;Immagine&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjY3EnjepULFSroZT-YiZ6poI_uL6OjvPuDd_aoMAlz5iIvhiGVlzL7OhoOlh322SQIKza_FJg6raREudRjGh1UMFIkkIq-chtpKuX98l0EvdT8XzH9SriGTa2DN-XlieDnl1k-fLn-Xnkg/s1600/gi_1.jpg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjY3EnjepULFSroZT-YiZ6poI_uL6OjvPuDd_aoMAlz5iIvhiGVlzL7OhoOlh322SQIKza_FJg6raREudRjGh1UMFIkkIq-chtpKuX98l0EvdT8XzH9SriGTa2DN-XlieDnl1k-fLn-Xnkg/s1600/gi_1.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJuoU4JvvB4H4HhmcGZTKZuWzq18zW147TgPOcMgWkRwD7_Y4vWvDX9FILEYD7YBkXhUpDSj1b-PYOX_cSc7EY7D9loOIHlZhuiZY0lLcQpEp5Tk0T8lO8VtWrvs2ayGyHvfPFmJpKIBwq/s1600/gi_2.jpg&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;Per utilizzarla bisogna accedere alla sezione &lt;a href=&quot;https://images.google.it/&quot;&gt;Immagini di Google&lt;/a&gt; e quindi ci sono due modalità a seconda del browser che si sta usando o semplicemente per comodita:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cliccare sulla macchina fotografica in fondo a destra del campo di ricerca&lt;/li&gt;
&lt;li&gt;trascinare dentro al browser la foto in questione.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nel primo caso Google ci mette a disposizione anche la possibilità di inserire un url relativo all’immagine di origine.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJuoU4JvvB4H4HhmcGZTKZuWzq18zW147TgPOcMgWkRwD7_Y4vWvDX9FILEYD7YBkXhUpDSj1b-PYOX_cSc7EY7D9loOIHlZhuiZY0lLcQpEp5Tk0T8lO8VtWrvs2ayGyHvfPFmJpKIBwq/s1600/gi_2.jpg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJuoU4JvvB4H4HhmcGZTKZuWzq18zW147TgPOcMgWkRwD7_Y4vWvDX9FILEYD7YBkXhUpDSj1b-PYOX_cSc7EY7D9loOIHlZhuiZY0lLcQpEp5Tk0T8lO8VtWrvs2ayGyHvfPFmJpKIBwq/s320/gi_2.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una volta che è stata presa in carico ci vengono esposti vari risultati: nel mio esmpio ho caricato una foto di Wentworth Miller nei panni di Michael Scofield nella serie televisiva Prison Break.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCj_ZaNDX-Hu8rON3VE7Xc0pmfPzk5DqKf4ntzwHK23NMgLjLY11cWlKOLkj9_Pkv5M5yi94Gq2Z4K7eXDi_eoxmi5piCSNyjdtzNmWhI3W-g6XbOW5IhSLxhK8VMUrucbynUv0usmYWC1/s1600/gi_3.jpg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCj_ZaNDX-Hu8rON3VE7Xc0pmfPzk5DqKf4ntzwHK23NMgLjLY11cWlKOLkj9_Pkv5M5yi94Gq2Z4K7eXDi_eoxmi5piCSNyjdtzNmWhI3W-g6XbOW5IhSLxhK8VMUrucbynUv0usmYWC1/s320/gi_3.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A partire da solo questa immagine Google è stato in grado di capire chi era il personaggio ipotizzandi che fosse “wentworth miller prison break”, mi propone la pagina relativa dell’attore in IMDd ed anche una serie di ”&lt;strong&gt;Immagini visivamente simili&lt;/strong&gt;” che rappresentano altre foto di Michael sia nella serie che nella vita reale.&lt;/p&gt;
&lt;p&gt;Infine mi vengono proposte anche le ”&lt;strong&gt;Pagine che contengono immagini corrispondenti&lt;/strong&gt;” ossia siti che contengono non solo la mia stessa immagine ma anche se questa è un ritaglio di una foto più grande!&lt;/p&gt;
&lt;p&gt;Con questa nuova feature Google ha mostrato di nuovo di cosa è capace… dove una chiave di ricerca puo’ dare tanti risultati l’aggiunta di un’idea visiva a quello che cerchiamo rende il tutto molto più facile e potente!&lt;/p&gt;</content:encoded></item><item><title><![CDATA[IE9 CSS3 gradient support: .NET workaround solution]]></title><description><![CDATA[This is the .NET version of this PHP workaround to support CSS3 gradient on IE9.  I used a generic handler called “gradient.ashx”; here the…]]></description><link>https://marcovalsecchi.it/ie9-css3-gradient-support-net</link><guid isPermaLink="false">https://marcovalsecchi.it/ie9-css3-gradient-support-net</guid><pubDate>Wed, 23 Mar 2011 09:15:00 GMT</pubDate><content:encoded>&lt;p&gt;This is the .NET version of &lt;a href=&quot;http://stackoverflow.com/questions/5029159/do-css-gradients-work-in-ie9/5314937#5314937&quot;&gt;this&lt;/a&gt; PHP workaround to support CSS3 gradient on IE9.&lt;br&gt;
&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
I used a generic handler called “gradient.ashx”; here the source code:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt; &amp;lt;%@ WebHandler Language=&quot;C#&quot; Class=&quot;gradient&quot; %&gt; 
   
 using System;  
 using System.Web;  
 using System.Xml.Linq;  
   
 public class gradient : IHttpHandler  
 {     
   public void ProcessRequest(HttpContext context)  
   {  
     context.Response.ContentType = &quot;image/svg+xml; charset=utf-8&quot;;  
   
     string fromStop = context.Request.QueryString[&quot;from&quot;] != null ? context.Request.QueryString[&quot;from&quot;] : &quot;000000&quot;;  
     string toStop = context.Request.QueryString[&quot;to&quot;] != null ? context.Request.QueryString[&quot;to&quot;] : &quot;000000&quot;;  
   
     XNamespace w3 = &quot;http://www.w3.org/2000/svg&quot;;  
   
     var svg = new XDocument(new XDeclaration(&quot;1.0&quot;, &quot;utf-8&quot;, &quot;yes&quot;),  
       new XElement(w3 + &quot;svg&quot;,  
         new XAttribute(XNamespace.Xmlns + &quot;xlink&quot;, &quot;http://www.w3.org/1999/xlink&quot;),  
         new XAttribute(&quot;version&quot;, &quot;1.0&quot;),  
         new XAttribute(&quot;preserveAspectRatio&quot;, &quot;none&quot;),  
         new XAttribute(&quot;width&quot;, &quot;100%&quot;),  
         new XAttribute(&quot;height&quot;, &quot;100%&quot;),  
         new XElement(w3 + &quot;defs&quot;,  
           new XElement(w3 + &quot;linearGradient&quot;,  
             new XAttribute(&quot;id&quot;, &quot;linear-gradient&quot;),  
             new XAttribute(&quot;x1&quot;, &quot;0%&quot;),  
             new XAttribute(&quot;y1&quot;, &quot;0%&quot;),  
             new XAttribute(&quot;x2&quot;, &quot;0%&quot;),  
             new XAttribute(&quot;y2&quot;, &quot;100%&quot;),  
             new XAttribute(&quot;spreadMethod&quot;, &quot;pad&quot;),  
             new XElement(w3 + &quot;stop&quot;,  
               new XAttribute(&quot;offset&quot;, &quot;0%&quot;),  
               new XAttribute(&quot;stop-color&quot;, &quot;#&quot; + fromStop),  
               new XAttribute(&quot;stop-opacity&quot;, &quot;1&quot;)  
             ),  
             new XElement(w3 + &quot;stop&quot;,  
               new XAttribute(&quot;offset&quot;, &quot;100%&quot;),  
               new XAttribute(&quot;stop-color&quot;, &quot;#&quot; + toStop),  
               new XAttribute(&quot;stop-opacity&quot;, &quot;1&quot;)  
             )  
           )  
         ),  
         new XElement(w3 + &quot;rect&quot;,  
           new XAttribute(&quot;width&quot;, &quot;100%&quot;),  
           new XAttribute(&quot;height&quot;, &quot;100%&quot;),  
           new XAttribute(&quot;style&quot;, &quot;fill: url(#linear-gradient);&quot;)  
         )  
       )  
     );  
   
     context.Response.Write(svg.ToString());  
   }  
   
   public bool IsReusable  
   {  
     get  
     {  
       return false;  
     }  
   }  
   
 }  &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Upload it in the same css folder and call the URL like so:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt; gradient.ashx?from=f00&amp;amp;to=00f  &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Firefox 4 disponibile in FTP]]></title><description><![CDATA[Finalmente Firefox 4 è disponibile al download…  per chi come me non vuole aspettare l’aggiornamento del sito è comunque già pronto via FTP…]]></description><link>https://marcovalsecchi.it/firefox-4-disponibile-in-ftp</link><guid isPermaLink="false">https://marcovalsecchi.it/firefox-4-disponibile-in-ftp</guid><pubDate>Tue, 22 Mar 2011 11:20:00 GMT</pubDate><content:encoded>&lt;p&gt;Finalmente Firefox 4 è disponibile al download…&lt;br&gt;
&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
per chi come me non vuole aspettare l’aggiornamento del sito è comunque già pronto via FTP:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;ftp://releases.mozilla.org/pub/mozilla.org/firefox/releases/4.0/win32/it/&quot;&gt;ftp://releases.mozilla.org/pub/mozilla.org/firefox/releases/4.0/win32/it/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaQMZ1rWoA0OEiOeieMBrSCpQMnjFUHqVoN0EPvecVeuM3e9FIOzwT8hC3o-hULsr5HfDqCms6znw98r5zbhmRjfRQO-z4HS3oB1MbEoOxyddi96bzndOqQs7MVY3dqmJAKLhJn37VQfSq/s1600/ff4.jpg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaQMZ1rWoA0OEiOeieMBrSCpQMnjFUHqVoN0EPvecVeuM3e9FIOzwT8hC3o-hULsr5HfDqCms6znw98r5zbhmRjfRQO-z4HS3oB1MbEoOxyddi96bzndOqQs7MVY3dqmJAKLhJn37VQfSq/s320/ff4.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[How to identify last item in a nested .Net Repeater]]></title><description><![CDATA[If you have a typical Orders/Products page and you want to show every product inside every order I think the best solution is to use a…]]></description><link>https://marcovalsecchi.it/how-to-identify-last-item-in-nested-net</link><guid isPermaLink="false">https://marcovalsecchi.it/how-to-identify-last-item-in-nested-net</guid><pubDate>Thu, 10 Mar 2011 08:50:00 GMT</pubDate><content:encoded>&lt;p&gt;If you have a typical Orders/Products page and you want to show every product inside every order I think the best solution is to use a Repeater (of products) inside a parent Repeater (of orders).&lt;/p&gt;
&lt;p&gt;If you must do something in the last product template of a order how can you reach this condition?&lt;br&gt;
&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
In the OnItemDataBound of a nested Repeater you can count his DataSource casting it to the item collection type; for example:&lt;/p&gt;
&lt;p&gt;if (e.Item.ItemIndex == ((List)((Repeater)sender).DataSource).Count - 1)&lt;br&gt;
{&lt;br&gt;
// do something&lt;br&gt;
}&lt;/p&gt;</content:encoded></item><item><title><![CDATA[DISQUS data synchronization tips]]></title><description><![CDATA[I’m using DISQUS comments platform in my last project and I developed a .Net Windows service for synchronize the site’s comments locally…]]></description><link>https://marcovalsecchi.it/disqus-data-synchronization-tips</link><guid isPermaLink="false">https://marcovalsecchi.it/disqus-data-synchronization-tips</guid><pubDate>Fri, 04 Mar 2011 15:32:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m using DISQUS comments platform in my last project and I developed a .Net Windows service for synchronize the site’s comments locally.&lt;/p&gt;
&lt;p&gt;DISQUS exposes some useful &lt;a href=&quot;http://disqus.com/api/docs/&quot;&gt;API&lt;/a&gt; to accomplish my needs and I used the ”&lt;a href=&quot;http://disqus.com/api/docs/forums/listPosts/&quot;&gt;forums/listPosts&lt;/a&gt;” call.&lt;/p&gt;
&lt;p&gt;I’m getting started from &lt;a href=&quot;http://docs.disqus.com/help/58/&quot;&gt;this&lt;/a&gt; example on their site, so my service synchronizes all new comments every 10 minutes.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
All seems to works fine but in my API request I must pay attention to fill these arguments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;since: this is a &lt;strong&gt;Unix timestamp&lt;/strong&gt; to catch comments from a specific date (in my case of the last saved comment) but it is referred to the &lt;strong&gt;EST&lt;/strong&gt; time zone!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;edit&lt;/em&gt;: from my latest tests I preferred to use a &lt;strong&gt;standard iso&lt;/strong&gt; (yyyy-mm-ddThh24:mi:ss) datetime format instead of timestamp.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;order: the order by which the comments are extract… by default it’s descending… I must set it to &lt;strong&gt;asc&lt;/strong&gt; for the newest comments.&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[Video upload: Plupload with ASP.Net 3.5]]></title><description><![CDATA[Recently I’m moving from swfupload because even if this is a great tool I’m needing to let my users upload larger file. So I’m testing…]]></description><link>https://marcovalsecchi.it/video-upload-plupload-with-aspnet-35</link><guid isPermaLink="false">https://marcovalsecchi.it/video-upload-plupload-with-aspnet-35</guid><pubDate>Tue, 19 Oct 2010 09:10:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently I’m moving from &lt;a href=&quot;http://code.google.com/p/swfupload/&quot;&gt;swfupload&lt;/a&gt; because even if this is a great tool I’m needing to let my users upload larger file.&lt;/p&gt;
&lt;p&gt;So I’m testing &lt;a href=&quot;http://www.plupload.com/&quot;&gt;Plupload&lt;/a&gt;: this uploader supports HTML5, &lt;a href=&quot;http://gears.google.com/&quot;&gt;Gears&lt;/a&gt;, &lt;a href=&quot;http://www.silverlight.net/&quot;&gt;Silverlight&lt;/a&gt;, &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Flash&lt;/a&gt;, &lt;a href=&quot;http://browserplus.yahoo.com/&quot;&gt;BrowserPlus&lt;/a&gt; and &lt;strong&gt;chunked uploads&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
Server side I’m using ASP.Net so thanks to Alan for &lt;a href=&quot;http://www.angrymonkeys.com.au/blog/2010/02/26/using-plupload-with-asp-net/&quot;&gt;this post&lt;/a&gt; that helped me on start… but I must edit his code because the final file results were always corrupted because the first bytes of it was as this example lines:&lt;/p&gt;
&lt;p&gt;------pluploadboundary634230768900613890&lt;br&gt;
Content-Disposition: form-data; name=“file”; filename=“file.wmv”&lt;br&gt;
Content-Type: application/octet-stream&lt;/p&gt;
&lt;p&gt;This is because Alan reads from Request.InputStream and not from Request.Files that it isn’t empty like he thinks.&lt;/p&gt;
&lt;p&gt;My final code that does this is:&lt;/p&gt;
&lt;p&gt;int chunk = Request.QueryString[“chunk”] != null ? int.Parse(Request.QueryString[“chunk”]) : 0;&lt;br&gt;
&lt;br&gt;
string fileName = Request.QueryString[“name”] != null ? Request.QueryString[“name”] : string.Empty;&lt;/p&gt;
&lt;p&gt;HttpPostedFile fileUpload = Request.Files[0];       &lt;br&gt;
&lt;br&gt;
using (FileStream fs = new FileStream(Server.MapPath(“/public/” + fileName), chunk == 0 ? FileMode.Create : FileMode.Append))&lt;br&gt;
{           &lt;br&gt;
Byte[] buffer = new Byte[fileUpload.InputStream.Length];&lt;br&gt;
fileUpload.InputStream.Read(buffer, 0, buffer.Length);&lt;br&gt;
&lt;br&gt;
fs.Write(buffer, 0, buffer.Length);           &lt;br&gt;
fs.Close();&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;This works great with larger files up to 2GB with Silverlight as runtime: if I try also with a file of 6GB the upload stops to 2GB even if it is segmented by 1MB chunks… and I don’t know why?!&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Directory.Delete() elimina le sessioni e la cache in memoria... dho!]]></title><description><![CDATA[La situazione è questa: sito asp.net 3.5 (C#) in cui sfrutto l’oggetto cache per velocizzare il caricamento di alcune collezioni provenienti…]]></description><link>https://marcovalsecchi.it/directorydelete-elimina-le-sessioni-e</link><guid isPermaLink="false">https://marcovalsecchi.it/directorydelete-elimina-le-sessioni-e</guid><pubDate>Thu, 24 Jun 2010 05:20:00 GMT</pubDate><content:encoded>&lt;p&gt;La situazione è questa: sito asp.net 3.5 (C#) in cui sfrutto l’oggetto cache per velocizzare il caricamento di alcune collezioni provenienti da query o sempre uguali o troppo onerose per farle sempre…&lt;/p&gt;
&lt;p&gt;…fin qua tutto ok fino a quando dopo aver implementato un sistema di upload di immagini noto che il server in cui risiede l’applicazione va in bomba dopo ogni upload (che possono essere anche multipli) :-|&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
Ma che cavolo è? Un accurato trace mi identifica il colpevole: &lt;strong&gt;Directory.Delete()&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Dopo ogni upload io eliminavo una cartella temporanea di appoggio e questo comando (anche la rinomina di una cartella) genera un recycle del worker process IIS… e nel mio caso causava la rigenerazione della cache per ogni file uploadato!&lt;/p&gt;
&lt;p&gt;Come risolvere?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;o non si elimina la cartella (brutto e dove starebbe il divertimento :-)&lt;/li&gt;
&lt;li&gt;Mr Google mi fa trovare questo blog (&lt;a href=&quot;http://dotnetslackers.com/Community/blogs/haissam/archive/2008/11/12/disable-session-expiration-when-using-directory-delete.aspx&quot;&gt;Haissam [MCAD]&lt;/a&gt;) in cui propone una soluzione attraverso Reflection.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Basta aggiungere questa parte di codice nell’&lt;strong&gt;Application_Start&lt;/strong&gt; del** Global .asax**:&lt;/p&gt;
&lt;p&gt;PropertyInfo p = typeof(System.Web.HttpRuntime).GetProperty(“FileChangesMonitor”, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static);&lt;br&gt;
object o = p.GetValue(null, null);&lt;br&gt;
FieldInfo f = o.GetType().GetField(“_dirMonSubdirs”, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.IgnoreCase);&lt;br&gt;
object monitor = f.GetValue(o);&lt;br&gt;
MethodInfo m = monitor.GetType().GetMethod(“StopMonitoring”, BindingFlags.Instance | BindingFlags.NonPublic);&lt;br&gt;
m.Invoke(monitor, new object[] { }); &lt;/p&gt;
&lt;p&gt;Ricordando di importare il name space &lt;strong&gt;System.Reflection&lt;/strong&gt;.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Errore download con RapidShare Premium e JDownloader]]></title><description><![CDATA[Tanto per cambiare qualcosa ha smesso di funzionare… …oggi è toccato a RapidShare Premium e JDownloader. Ogni tentativo di download fallisce…]]></description><link>https://marcovalsecchi.it/errore-download-con-rapidshare-premium</link><guid isPermaLink="false">https://marcovalsecchi.it/errore-download-con-rapidshare-premium</guid><pubDate>Sat, 29 May 2010 12:57:00 GMT</pubDate><content:encoded>&lt;p&gt;Tanto per cambiare qualcosa ha smesso di funzionare…&lt;br&gt;
…oggi è toccato a RapidShare Premium e JDownloader.&lt;/p&gt;
&lt;p&gt;Ogni tentativo di download fallisce con questo strano messaggio in tedesco:&lt;/p&gt;
&lt;p&gt;“Der Download kann nicht bereitgestellt werden. Bitte prüfen sie ob ihr Browser die Ausführung von javascript erlaubt”… eh?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
Per fortuna Google interviene in mio soccorso e trovo la soluzione: basta loggarsi nella Premium Zone di RapidShare e verificare che sia flaggata la voce “Direct downloads, requested files are saved without redirection via RapidShare” sotto la sezione “Settings”.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmOpvJspCchreKNeqIPZg2Z5BD6d8kM4BZA78PC3DFhlwAEszedKreQ7ZYWqk5SLrpz5DMAh1iRrkTWr90w3EkaiO_YFK4FdLZHZKRH7JgQWeb0nMviW7rrMjdGX8mmXzTZ3wFOHAO503M/s1600/rapishare-settings.gif&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmOpvJspCchreKNeqIPZg2Z5BD6d8kM4BZA78PC3DFhlwAEszedKreQ7ZYWqk5SLrpz5DMAh1iRrkTWr90w3EkaiO_YFK4FdLZHZKRH7JgQWeb0nMviW7rrMjdGX8mmXzTZ3wFOHAO503M/s400/rapishare-settings.gif&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ora facendo un resume dei download in corso tutto dovrebbe ripartire normalmente ;-)&lt;/p&gt;</content:encoded></item><item><title><![CDATA[La nuova Alfa Giulietta!]]></title><description><![CDATA[Domani è il gran giorno di presentazione della nuova Alfa Giulietta e tornando a casa dall’ufficio me ne ritrovo una “abbandonata” in un…]]></description><link>https://marcovalsecchi.it/la-nuova-alfa-giulietta</link><guid isPermaLink="false">https://marcovalsecchi.it/la-nuova-alfa-giulietta</guid><pubDate>Fri, 21 May 2010 18:58:00 GMT</pubDate><content:encoded>&lt;p&gt;Domani è il gran giorno di presentazione della nuova Alfa Giulietta e tornando a casa dall’ufficio me ne ritrovo una “abbandonata” in un parcheggio…&lt;br&gt;
…a dir poco stupenda!&lt;/p&gt;
&lt;p&gt;Ecco qua le prime foto…&lt;br&gt;
&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFS-jGHURgJ9iQZ4f1hpgzvcZ3n7MKR1ce6NDQsN-onJJJ2Y0JKXXfhkWIvKbP8meW66g1SsWwlcdi15C13zEWXOA_4FjT4BNKGRdr88fMRVL_hcfXwoQacqnby0kZNDFsYK7zn7fqJXvZ/s1600/21052010206.jpg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFS-jGHURgJ9iQZ4f1hpgzvcZ3n7MKR1ce6NDQsN-onJJJ2Y0JKXXfhkWIvKbP8meW66g1SsWwlcdi15C13zEWXOA_4FjT4BNKGRdr88fMRVL_hcfXwoQacqnby0kZNDFsYK7zn7fqJXvZ/s200/21052010206.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAiTrun0B05MIC_bzqKGxR05PN6oAD6FL9qq9wsX8chakTzLEUzbqqDwu-VlMVBeHAkV1eO_8BXGxG7TgbqKlTHD3-ANIuLUwxPMRhg7xP-VKoc7fOpkrtLz_VH9JnpGr2VGHZzjRpdi3V/s1600/21052010207.jpg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAiTrun0B05MIC_bzqKGxR05PN6oAD6FL9qq9wsX8chakTzLEUzbqqDwu-VlMVBeHAkV1eO_8BXGxG7TgbqKlTHD3-ANIuLUwxPMRhg7xP-VKoc7fOpkrtLz_VH9JnpGr2VGHZzjRpdi3V/s200/21052010207.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE9LdWnivce45DJzBir3CHX2noyAGY_TePgQJ5htR_9zuwZud4Rqra4iYYUpmmjqtPomAJjPPhXeUfKCrQtoyx8B3M8d69A9oQCYHCuIb-50cl_YkMeDQsu2NECltLKOcwpDxbTDUrLFU4/s1600/21052010208.jpg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE9LdWnivce45DJzBir3CHX2noyAGY_TePgQJ5htR_9zuwZud4Rqra4iYYUpmmjqtPomAJjPPhXeUfKCrQtoyx8B3M8d69A9oQCYHCuIb-50cl_YkMeDQsu2NECltLKOcwpDxbTDUrLFU4/s200/21052010208.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;…solo 3 perché mi è morto il cellulare :-(&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Calling ASP.net AJAX services from jQuery with unknown generic parameters]]></title><description><![CDATA[I love REST web applications and I must thank Dave Ward with his Encosia blog that introduced me to this kind of architecture. Recently I…]]></description><link>https://marcovalsecchi.it/calling-aspnet-ajax-services-from</link><guid isPermaLink="false">https://marcovalsecchi.it/calling-aspnet-ajax-services-from</guid><pubDate>Tue, 16 Mar 2010 14:08:00 GMT</pubDate><content:encoded>&lt;p&gt;I love &lt;a href=&quot;http://en.wikipedia.org/wiki/Representational_State_Transfer&quot;&gt;REST&lt;/a&gt; web applications and I must thank Dave Ward with his &lt;a href=&quot;http://encosia.com/&quot;&gt;Encosia&lt;/a&gt; blog that introduced me to this kind of architecture.&lt;/p&gt;
&lt;p&gt;Recently I had to do a function in common script that calls some web services and I used json object approach to solve this (see &lt;a href=&quot;http://encosia.com/2009/07/21/simplify-calling-asp-net-ajax-services-from-jquery/&quot;&gt;Simplify calling ASP.NET AJAX services from jQuery&lt;/a&gt; for more info).&lt;/p&gt;
&lt;p&gt;All worked fine but I had to pass different params to different services without making custom class for every specific javascript object.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
Example:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;var data = new Object();
data.Param1Int = 1;
data.Param2String = &quot;hello&quot;;
data.Param3Decimal = 2.5;

var param = new Object();
param.p = data;

$.ajax({
   url: &apos;/Service.asmx/DoSomething&apos;,
   data: JSON.stringify(param),
   success: function(msg){ ... }
});&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This is the jQuery AJAX call to my service… and in this case I need to pass three params.&lt;/p&gt;
&lt;p&gt;I could pass to the “DoSomething” service the “data” object directly and in this case ASP.net expects a method like this:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;[WebMethod]
public string DoSomething(Int32 Param1Int, String Param2String, Decimal Param2Decimal)
{ ... }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;But if I need to add another param or I don’t know exactly how they are?&lt;/p&gt;
&lt;p&gt;So I wrapped the “data” object in another one… “param” with his member “p”.&lt;br&gt;
In this case my web method changed in:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;[WebMethod]
public String DoSomething(Dictionary&amp;lt;string, string&gt; p)
{
   Int32 Param1Int = Convert.ToInt32(p[&quot;Param1Int&quot;]);
   String Param2String = Convert.ToString(p[&quot;Param2String&quot;]);
   Decimal Param3Decimal = Convert.Todecimal(p[&quot;Param3Decimal&quot;]);
   ...
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;With Dictionary-based parameters you can pass to your web service every kind and as many params as you want.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Making AJAX Applications Crawlable... is true?]]></title><description><![CDATA[I’m looking for the new Google feature to make the ajax application crawlable… …you can find it here: http://code.google.com/intl/it-IT/web…]]></description><link>https://marcovalsecchi.it/making-ajax-applications-crawlable-is</link><guid isPermaLink="false">https://marcovalsecchi.it/making-ajax-applications-crawlable-is</guid><pubDate>Fri, 05 Mar 2010 16:21:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m looking for the new Google feature to make the ajax application crawlable…&lt;br&gt;
…you can find it here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://code.google.com/intl/it-IT/web/ajaxcrawling/index.html&quot;&gt;http://code.google.com/intl/it-IT/web/ajaxcrawling/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;after all the discussion I have only one question… but the user without javascript enabled how can see a url like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.example.com/ajax.html#!mystate&quot;&gt;www.example.com/ajax.html#!mystate&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;?&lt;/p&gt;</content:encoded></item><item><title><![CDATA[devcon.exe x64]]></title><description><![CDATA[Per chi fosse interessato ho pubblicato la versione x64 del programma devcon.exe… utilità della riga di comando per la gestione delle…]]></description><link>https://marcovalsecchi.it/devconexe-x64</link><guid isPermaLink="false">https://marcovalsecchi.it/devconexe-x64</guid><pubDate>Wed, 19 Nov 2008 23:48:00 GMT</pubDate><content:encoded>&lt;p&gt;Per chi fosse interessato ho pubblicato la versione x64 del programma devcon.exe… utilità della riga di comando per la gestione delle periferiche.&lt;br&gt;
&lt;a href=&quot;%20http://rapidshare.com/files/165485400/devcon_x64.zip&quot;&gt;&lt;br&gt;
http://rapidshare.com/files/165485400/devcon_x64.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La pagina ufficiale è disponibile a questo indirizzo:&lt;br&gt;
&lt;a href=&quot;http://support.microsoft.com/kb/311272/it&quot;&gt;http://support.microsoft.com/kb/311272/it&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Google Chrome: prime impressioni]]></title><description><![CDATA[E finalmente ci siamo… la prima beta ufficiale di Chrome è stata rilasciata (download)! Un nuovo “concorrente” nel campo dei browser ci…]]></description><link>https://marcovalsecchi.it/google-chrome-prime-impressioni</link><guid isPermaLink="false">https://marcovalsecchi.it/google-chrome-prime-impressioni</guid><pubDate>Wed, 03 Sep 2008 07:00:00 GMT</pubDate><content:encoded>&lt;p&gt;E finalmente ci siamo… la prima beta ufficiale di Chrome è stata rilasciata (&lt;a href=&quot;http://www.google.com/chrome&quot;&gt;download&lt;/a&gt;)!&lt;/p&gt;
&lt;p&gt;Un nuovo “concorrente” nel campo dei browser ci voleva e tenendo conto che stiamo parlando di mr. Google sapevo già di aspettarmi un prodotto di un certo spessore.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ho scaricato il setup ieri sera (~500Kb) e l’installazione online è stata rapidissima; giusto una lettura veloce alle principali funzioni/caratteristiche e via di test con i miei siti comuni.&lt;/p&gt;
&lt;p&gt;Di primo impatto quello che mi ha colpito è stata la grafica minimale ma corretta secondo me: tab, pulsanti avanti e indietro, refresh, bookmarks, utility di pagina ed impostazioni; comodo anche il “cerca” integrato nella barra degli indirizzi (beh se non sono bravi loro a cercare ;-)&lt;/p&gt;
&lt;p&gt;Comunque al primo posto è la velocità di rendering della pagina: il lavoro al motore asincrono a prima vista ha portato i suoi frutti.&lt;/p&gt;
&lt;p&gt;Di comodo utilizzo anche la sezione “i più visitati” un box che compare all’apertura di un nuovo tab insieme alla cronologia ricerche e bookmark preferiti :-)&lt;/p&gt;
&lt;p&gt;Spero che in programma siano previsti un bel po’ di upgrade… specialmente con i vari tools messi a disposizione da Google stesso: ottimo sarebbe un’integrazione con i Google bookmarks in stile ”&lt;a href=&quot;https://addons.mozilla.org/it/firefox/addon/2453&quot;&gt;Google Bookmarks Button&lt;/a&gt;” add-on di Firefox.&lt;/p&gt;
&lt;p&gt;Vedremo…&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Installazione .NET Framework 3.5 SP1 (Beta) :-D]]></title><description><![CDATA[Stavo provando ad installare il nuovo SP1 per il Framework .NET 3.5 ma all’improvviso è spuntata questa schermata:  “The following…]]></description><link>https://marcovalsecchi.it/installazione-net-framework-35-sp1-beta</link><guid isPermaLink="false">https://marcovalsecchi.it/installazione-net-framework-35-sp1-beta</guid><pubDate>Wed, 14 May 2008 08:19:00 GMT</pubDate><content:encoded>&lt;p&gt;Stavo provando ad installare il nuovo SP1 per il Framework .NET 3.5 ma all’improvviso è spuntata questa schermata:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtY_KrylewV5jTuHVVw4YREqBGML3CmnAS4BfH8T-GJZ8-Osq_RK5XKFYVoNpr2SCBcKM0ihT5_lsPIra9859lQocEGoRJRMnfOUuxIG89UQpL3nhdhoc0mmxR6812RMnlvtml5wp3YiAP/s1600-h/dotnet35_sp1_err.gif&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtY_KrylewV5jTuHVVw4YREqBGML3CmnAS4BfH8T-GJZ8-Osq_RK5XKFYVoNpr2SCBcKM0ihT5_lsPIra9859lQocEGoRJRMnfOUuxIG89UQpL3nhdhoc0mmxR6812RMnlvtml5wp3YiAP/s320/dotnet35_sp1_err.gif&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
“The following applications should be closed before continuing with setup: Microsoft .NET Framework 3.5 SP1 (Beta) Setup” :-D&lt;/p&gt;
&lt;p&gt;Appena l’ho visto non ci credevo… bhe è ovvio: per completare l’installazione… bisogna chiudere il programma di installazione… lol.&lt;/p&gt;
&lt;p&gt;Per fortuna a volte gli errori… si possono ignorare ;-)&lt;/p&gt;</content:encoded></item></channel></rss>