<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Maurizio Tammacco&amp;#39;s blog</title><link>http://xplayn.org/cs/blogs/maurizio/default.aspx</link><description>Un giorno anche la guerra si inchinerà davanti al suono di una chitarra elettrica (J. Morrison)</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/mauriziotammacco" type="application/rss+xml" /><item><title>Piccolo sfogo...</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/0pk6Md9Ybi4/piccolo-sfogo.aspx</link><pubDate>Wed, 15 Jul 2009 11:56:00 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1428</guid><dc:creator>maurizio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1428</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1428</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2009/07/15/piccolo-sfogo.aspx#comments</comments><description>&lt;p&gt;Una pensiero che spesso mi viene in mente guardando il codice sorgente è: ma perchè scrivere in 10 righe di codice quello che potrebbe essere scritto in una o due righe ? &lt;img alt="smile_sad" src="http://spaces.live.com/rte/emoticons/smile_sad.gif" /&gt;&lt;/p&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1428" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/0pk6Md9Ybi4" height="1" width="1"/&gt;</description><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Pensieri/default.aspx">Pensieri</category><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2009/07/15/piccolo-sfogo.aspx</feedburner:origLink></item><item><title>Aggiornare in JavaScript la pagina chiamante in partial-rendering</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/d7PKsFzhb08/aggiornare-in-javascript-la-pagina-chiamante-in-partial-rendering.aspx</link><pubDate>Mon, 18 May 2009 12:51:27 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1424</guid><dc:creator>maurizio</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1424</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1424</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2009/05/18/aggiornare-in-javascript-la-pagina-chiamante-in-partial-rendering.aspx#comments</comments><description>&lt;p&gt;Mediante JavaScript è possibile eseguire programmaticamente un post della pagina mediante il richiamo della funzione&lt;/p&gt; &lt;div&gt; &lt;div class="csharpcode"&gt; &lt;div&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; __doPostBack( &lt;span class="str"&gt;&amp;#39;EventName&amp;#39;&lt;/span&gt;, &lt;span class="str"&gt;&amp;#39;EventArgs&amp;#39;&lt;/span&gt; );&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;In questo caso il post generato è sincrono, ma, come ben spiegato in questo &lt;a href="http://bloggingabout.net/blogs/mveken/archive/2008/01/02/performing-async-postback-from-javascript.aspx" target="_blank"&gt;post&lt;/a&gt;, è anche possibile effettuarlo asincrono mediante l&amp;#39;utilizzo di un array della classe PageRequestmanager, in questo modo:&lt;/p&gt;
&lt;div&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; function doPostBackAsync( eventTargetName, eventArgs )&lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   3:&lt;/span&gt;     var prm = Sys.WebForms.PageRequestManager.getInstance();&lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   5:&lt;/span&gt;     &lt;span class="kwrd"&gt;if&lt;/span&gt;( !Array.contains( prm._asyncPostBackControlIDs, eventTargetName) )&lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   7:&lt;/span&gt;         prm._asyncPostBackControlIDs.push(eventTargetName);&lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   8:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   9:&lt;/span&gt;  &lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  10:&lt;/span&gt;     &lt;span class="kwrd"&gt;if&lt;/span&gt;( !Array.contains( prm._asyncPostBackControlClientIDs, eventTargetName) )&lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  11:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  12:&lt;/span&gt;         prm._asyncPostBackControlClientIDs.push(eventTargetName);&lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  13:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  14:&lt;/span&gt;  &lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  15:&lt;/span&gt;     __doPostBack( eventTargetName, eventArgs );&lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  16:&lt;/span&gt; }&lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  17:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Mediante poi l&amp;#39;utilizzo dell&amp;#39;UpdatePanel otteniamo che a livello programmatico (quindi senza necessariamente l&amp;#39;interazione dell&amp;#39;utente mediante un controllo), possiamo generare un post asincrono con refresh parziale della pagina, mediante il richiamo esplicito della funzione di cui sopra. 
&lt;p&gt;Inoltre, poichè in Javascript è anche possibile, richiamare esplicitamente una funzione definita dall&amp;#39;utente in una pagina mentre ci si trova in un altra pagina (esempio popup), mediante il seguente costrutto: 
&lt;div&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; window.opener.nomeFunzioneCustom(parametri); &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;otteniamo che, stando un una pagina secondaria come un popup, riusciamo ad aggiornare con il partial rendering la pagina chiamante.&lt;/p&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1424" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/d7PKsFzhb08" height="1" width="1"/&gt;</description><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2009/05/18/aggiornare-in-javascript-la-pagina-chiamante-in-partial-rendering.aspx</feedburner:origLink></item><item><title>Visual Studio Addin - ecco quelli che uso io</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/Gs2CTsjGLUw/visual-studio-addin-ecco-quelli-che-uso-io.aspx</link><pubDate>Thu, 07 May 2009 15:56:22 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1420</guid><dc:creator>maurizio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1420</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1420</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2009/05/07/visual-studio-addin-ecco-quelli-che-uso-io.aspx#comments</comments><description>&lt;p&gt;L&amp;#39;utilizzo degli add-in di Visual Studio 2008 consente di incrementare a volte notevolmente la produttività di chi sviluppa, ad esempio rendendo possibile effettuare con pochi click operazioni ripetitive e lunghe. Tratto da &lt;a href="http://www.visualstudiogallery.com/Default.aspx" target="_blank"&gt;Visual Studio Gallery&lt;/a&gt;, ecco la serie di add-in, rigorosamente free, che utilizzo giornalmente durante l&amp;#39;attività di sviluppo del software:  &lt;p&gt;&lt;strong&gt;&lt;a href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=800978aa-2aac-4440-8bdf-6d1a76a5c23c" target="_blank"&gt;Regionerate&lt;/a&gt;&lt;/strong&gt;, permette di creare in automatico le regioni di codice su un intero file, applicando un layout predefinito o scelto tra i layout forniti. Uno dei layout a corredo addirittura effettua il conteggio automatico degli items presenti in ogni regione e lo inserisce nel nome della stessa. E&amp;#39; anche possibile crearsi propri layout o scaricarli. Davvero utile.  &lt;p&gt;&lt;a href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=df3f0c30-3d37-4e06-9ef8-3bff3508be31" target="_blank"&gt;PowerCommands&lt;/a&gt;, add-in abbastanza conosciuto e molto utile, anche se responsabile di un crash documentato di Visual Studio, di cui ho già parlato &lt;a href="http://xplayn.org/cs/blogs/maurizio/archive/2008/09/04/visual-studio-2008-ide-crash-dopo-quot-choose-items-quot-dalla-toolbox.aspx" target="_blank"&gt;qui&lt;/a&gt; e &lt;a href="http://xplayn.org/cs/blogs/maurizio/archive/2008/12/09/visual-studio-ide-crash-2.aspx" target="_blank"&gt;qui&lt;/a&gt;. Trattasi di una serie di comandi aggiuntivi sistemati in diversi punti dell&amp;#39;IDE. I principali comandi che uso sono:&lt;br /&gt;-&lt;strong&gt;Show All Files&lt;/strong&gt; (Solution Explorer, a livello di nodo solution)&lt;br /&gt;Questo comando mostra tutti i file per tutti i progetti caricati nella soluzione attiva, e non solo invece per il progetto attivo, come opera invece il comando omonimo a livello di progetto;&lt;br /&gt;-&lt;strong&gt;Collapse Projects&lt;/strong&gt;. Questo comando collassa il nodo selezionato e contemporaneamente tutti i suoi sottonodi. La funzionalità fornita dalla Treeview del Solution Explorer invece collassa solo il nodo selezionato, lasciando invariato lo stato dei suoi sottonodi;&lt;br /&gt;-&lt;strong&gt;Copy Class&lt;/strong&gt;. Come si può intuire, questo comando copia una intera classe o nodo nella Clipboard, permettendo di incollarla altrove (comando &lt;strong&gt;Paste Class&lt;/strong&gt;) dopo averla opportunamente rinominata per evitare errori di compilazione;&lt;br /&gt;-&lt;strong&gt;Copy References&lt;/strong&gt; (e &lt;strong&gt;Paste References&lt;/strong&gt;). Copia una reference o un set di reference nella Clipboard, per poi incollarla altrove;&lt;br /&gt;-&lt;strong&gt;Open Containing Folder&lt;/strong&gt; (davvero utile). Dal nodo di un progetto o item, apre una finestra di Windows Explorer che punta al path fisico del progetto (o dell&amp;#39;item) puntato;&lt;br /&gt;-&lt;strong&gt;Open Command Prompt,&lt;/strong&gt; simile a &lt;strong&gt;Open Containing Folder&lt;/strong&gt;, ma apre un prompt dei comandi invece che una finestra di windows explorer;&lt;br /&gt;-&lt;strong&gt;Remove and Sort Usings&lt;/strong&gt;, altro comando utilissimo, elimina tutti gli using inutili e ordina quelli indispensabili, in un colpo solo, per singola classe o per tutte le classi di un progetto;&lt;br /&gt;-&lt;strong&gt;Extract Constant&lt;/strong&gt;, dall&amp;#39;editor di codice, crea la definizione di costante per la stringa selezionata;&lt;br /&gt;-&lt;strong&gt;Clear Recent Project List&lt;/strong&gt;, elimina la lista degli ultimi progetti aperti, permettendo di selezionarli. &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=d467cd03-8393-4172-a25a-7a586577f4fb" target="_blank"&gt;Sticky Notes&lt;/a&gt;, fornisce una windows dockable nella quale scrivere appunti, una per ogni file. Funzionalità sinceramente non utilissima perchè è comunque possibile inserire i propri appunti in un file sorgente a mo&amp;#39; di commento oppure utilizzare la window Task List. L&amp;#39;unico vantaggio è la possibilità di eliminare i propri appunti in un colpo solo o di inviarli per posta elettronica;  &lt;p&gt;&lt;a href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=75453691-dce3-4b02-adf9-de3449ca1a23" target="_blank"&gt;Clone Detective&lt;/a&gt;, ho già parlato &lt;a href="http://xplayn.org/cs/blogs/maurizio/archive/2009/03/06/rilevare-codice-duplicato.aspx" target="_blank"&gt;qui&lt;/a&gt; di questo tool. Consente di cercare facilmente codice duplicato all&amp;#39;interno della propria solution.  &lt;p&gt;&lt;a href="http://www.codeplex.com/ExportAsCodeSnippet" target="_blank"&gt;Export code as Code Snippet&lt;/a&gt;, add-in scritto dall&amp;#39;MVP &lt;a href="http://community.visual-basic.it/Alessandro" target="_blank"&gt;Alessandro Del Sole&lt;/a&gt;, consente di esportare facilmente blocchi di codice nel formato .snippet, e quindi riutilizzarli come Snippet Code direttamente attraverso la funzionalità presente nell&amp;#39;IDE  &lt;p&gt;&lt;a href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=0099ed9b-8a69-4cb2-85f8-d996a228c158" target="_blank"&gt;Code Style Enforcer&lt;/a&gt;. Questo add-in permette di ottenere segnalazioni evidenti nel proprio codice nel caso in cui siano violate regole di naming e di best practices (visibilità membri e interfacce esplicite o no), configurabili mediante file XML;  &lt;p&gt;&lt;a href="http://www.techinceptions.com/CodeMetrics.html" target="_blank"&gt;OxyProjectMetrics&lt;/a&gt;, estrae informazioni inerenti la metrica del codice e le mostra in un formato tabellare;  &lt;p&gt;&lt;a href="http://www.codeplex.com/ResourceRefactoring" target="_blank"&gt;ResourceRefactor&lt;/a&gt;, estrae la stringa selezionata e cablata nel codice sorgente e la invia ad un apposito file di risorse;  &lt;p&gt;&lt;a href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=0aeaaeee-3ef0-48ea-a6a9-af94c8e7c77a" target="_blank"&gt;AutoCode&lt;/a&gt;, add-in per automatizzare attività ripetitive di scrittura di codice mediante la creazione di comandi parametrici, come da esempio sotto.&amp;nbsp;&amp;nbsp; &lt;p&gt;&lt;a href="http://tytannet.codeplex.com/" target="_blank"&gt;TytanNET&lt;/a&gt;, insieme di utili tool windows che incrementano le possibilità di refactoring del codice, e forniscono ulteriori visualizers per il debugging. Decisamente molto utile.&lt;/p&gt; &lt;p&gt;Su Visual Studio Gallery sono presenti decine e decine di altr utili add-in, sia gratuiti che non, per tutte le esigenze.&lt;/p&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1420" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/Gs2CTsjGLUw" height="1" width="1"/&gt;</description><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2009/05/07/visual-studio-addin-ecco-quelli-che-uso-io.aspx</feedburner:origLink></item><item><title>refactoring del codice</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/dpFk5Cc4euQ/refactoring-del-codice.aspx</link><pubDate>Fri, 06 Mar 2009 10:37:56 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1404</guid><dc:creator>maurizio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1404</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1404</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2009/03/06/refactoring-del-codice.aspx#comments</comments><description>&lt;p&gt;Mi appunto questo &lt;a href="http://blogs.ugidotnet.org/luKa/archive/2009/03/02/un-esempio-di-semplicita-sul-refactoring-again.aspx" target="_blank"&gt;post&lt;/a&gt; molto interessante di &lt;a href="http://blogs.ugidotnet.org/luKa" target="_blank"&gt;Luca Minudel&lt;/a&gt; a proposito della attività di refactoring sul codice sorgente, molto spesso sottovalutata o ignorata del tutto in progetti reali.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/luKa" target="_blank"&gt;Minudel&lt;/a&gt; elenca le seguenti 6 attività di refactoring che ritengo personalmente indispensabili ed utili.&lt;/p&gt; &lt;p&gt;&lt;em&gt;* Estrae codice dai metodi troppo lunghi (&amp;gt;&amp;gt; 30 linee di codice)&lt;br /&gt;* Cerca i commenti e modifica il codice in modo che si spieghi da solo &lt;br /&gt;* Scorre i nomi di metodi e variabili e rinomina quelli poco chiari e quelli&amp;nbsp; poco descrittivi &lt;br /&gt;* Guarda i blocchi condizionali (If, switch, for, ...) e vede se li può eliminare&lt;br /&gt;* Trova parti di codice duplicate e le elimina&lt;br /&gt;* Scopre cosa fa ogni metodo e si chiede se si trova sulla classe giusta Inizia ogni punto mostrando come fare e quindi lascia continuare al suo collega, interviene quando serve&lt;/em&gt;&lt;/p&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1404" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/dpFk5Cc4euQ" height="1" width="1"/&gt;</description><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Refactoring/default.aspx">Refactoring</category><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2009/03/06/refactoring-del-codice.aspx</feedburner:origLink></item><item><title>Impostare il calendarextender ad una cultura specifica</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/vaL2cbI_uGs/impostare-il-calendarextender-ad-una-cultura-specifica.aspx</link><pubDate>Fri, 06 Mar 2009 10:11:34 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1403</guid><dc:creator>maurizio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1403</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1403</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2009/03/06/impostare-il-calendarextender-ad-una-cultura-specifica.aspx#comments</comments><description>&lt;p&gt;L&amp;#39;extender CalendarExtender presente nell&amp;#39;Ajax Toolkit presenta un bug se si cerca di globalizzarlo, ovvero adattarlo ad una specifica cultura. Infatti, la label presente in basso con l&amp;#39;indicazione della data odierna non viene globalizzata ma rimane impostata fissa alla cultura inglese, per cui apparirà sempre la scritta &amp;quot;Today&amp;quot;. Affinchè i controlli dell&amp;#39;Ajax Toolkit possano essere personalizzati sulla base delle varie culture non basta impostare la specifica cultura nel file di configurazione dell&amp;#39;applicazione web (tag globalization), oppure impostarla tramite browser, ma occorre anche abilitare il rendering dello script al supporto di culture specifiche, tramite la proprietà &lt;a href="http://www.asp.net/Ajax/documentation/live/mref/P_System_Web_UI_ScriptManager_EnableScriptGlobalization.aspx" target="_blank"&gt;EnableScriptGlobalization&lt;/a&gt; dello ScriptManager, che deve essere ovviamente impostata a True (il valore di default è False).&lt;/p&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1403" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/vaL2cbI_uGs" height="1" width="1"/&gt;</description><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Tips+_2600_amp_3B00_+tricks/default.aspx">Tips &amp;amp; tricks</category><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/ASP+.NET+Ajax/default.aspx">ASP .NET Ajax</category><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2009/03/06/impostare-il-calendarextender-ad-una-cultura-specifica.aspx</feedburner:origLink></item><item><title>Rilevare codice duplicato</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/gW2TDZkYcWc/rilevare-codice-duplicato.aspx</link><pubDate>Fri, 06 Mar 2009 09:56:52 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1402</guid><dc:creator>maurizio</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1402</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1402</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2009/03/06/rilevare-codice-duplicato.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://clonedetectivevs.codeplex.com/" target="_blank"&gt;Clone Detective for Visual Studio&lt;/a&gt; è una integrazione dell&amp;#39;ambiente Visual Studio (completamente free) in gradi di rilevare porzioni di codice duplicato tra i vari progetti che compongono una solution. Il fine è ambizioso, poichè come dice la stessa presentazione del prodotto presente su &lt;a href="http://www.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;&amp;quot;Having duplicates can easily lead to inconsistencies and often is an indicator for poorly factored code&amp;quot;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Un componente del genere può davvero essere utilissimo, anche oltre lo scopo che si prefigge. Ad esempio, conoscendo accuratamente il numero di cloni presenti all&amp;#39;interno di un software con parecchie linee di codice, è possibile valutarne il costo di manutenzione, ovvero il costo a cui si va incontro se si decidesse di apportarvi delle modifiche. &lt;p&gt;Il componente si basa su &lt;a href="http://conqat.cs.tum.edu/index.php/What_is_ConQAT%3F" target="_blank"&gt;ConQAT&lt;/a&gt; (Continuous Quality Assessment Toolkit) per rilevare le parti di codice duplicato. Questo toolkit fornisce una serie di tools e linee guida per il controllo della qualità del software&lt;/p&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1402" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/gW2TDZkYcWc" height="1" width="1"/&gt;</description><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Visual+Studio+2008+/default.aspx">Visual Studio 2008 </category><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Tools/default.aspx">Tools</category><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Design+Guidelines/default.aspx">Design Guidelines</category><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2009/03/06/rilevare-codice-duplicato.aspx</feedburner:origLink></item><item><title>Visualcv, un ottimo sito per cv online</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/Kc6xSe-4apQ/visualcv-un-ottimo-sito-per-cv-online.aspx</link><pubDate>Fri, 20 Feb 2009 11:10:40 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1398</guid><dc:creator>maurizio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1398</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1398</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2009/02/20/visualcv-un-ottimo-sito-per-cv-online.aspx#comments</comments><description>&lt;p&gt;Mi appunto questo ottimo sito per uso futuro: &lt;a href="http://www.visualcv.com/" target="_blank"&gt;VisualCv&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Consente di inserire il proprio cv online ed arricchirlo di contenuti multimediali: immagini, audio, video, grafici. Inoltre consente di pubblicarlo nel rispetto della politica di privacy scelta, di inviarlo via mail, di convertirlo automaticamente in formato PDF, di ottenere una URL unica da inviare a chi può essere interessato alla sua visualizzazione. Sul sito sono presenti diversi esempi di cv, fatti davvero bene e con un alto indice di usabilità. Se si aggiunge che il tutto è pure gratuito...&lt;/p&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1398" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/Kc6xSe-4apQ" height="1" width="1"/&gt;</description><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Varie/default.aspx">Varie</category><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2009/02/20/visualcv-un-ottimo-sito-per-cv-online.aspx</feedburner:origLink></item><item><title>Invocazione di store procedure oracle in .NET</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/PHdtzZzRArw/invocazione-di-store-procedure-oracle-in-net.aspx</link><pubDate>Mon, 16 Feb 2009 11:50:39 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1396</guid><dc:creator>maurizio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1396</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1396</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2009/02/16/invocazione-di-store-procedure-oracle-in-net.aspx#comments</comments><description>&lt;p&gt;Il&lt;strong&gt; Data Access Application Block&lt;/strong&gt;, contenuto all&amp;#39;interno della &lt;strong&gt;Enterprise Library 4.1&lt;/strong&gt; consente di richiamare store procedures passando esclusivamente il valore dei singoli parametri richiesti (mediante l&amp;#39;utilizzo del metodo&lt;strong&gt; GetStorepProcCommand&lt;/strong&gt; dell&amp;#39;oggetto &lt;strong&gt;DatabaseFactory&lt;/strong&gt;), nello stesso ordine con cui questi sono espressi nella firma della procedura. Poichè ADO .NET richiede comunque che ogni informazione in merito ai parametri della store sia obbligatoria (quindi tipo di dato, dimensione, precisione, scala, ecc), il metodo effettua internamente una chiamata al metodo &lt;strong&gt;DeriveParameters&lt;/strong&gt; di ADO .NET che, attraverso un round-trip al database server, consente di recuperare tutte le informazioni necessarie sui parametri. Poichè come detto, questa chiamata richiede un round-trip verso il server, il data access application block fornisce anche un meccanismo di caching delle informazioni sui parametri recuperate dal server. &lt;/p&gt; &lt;p&gt;Oracle e SqServer hanno un meccanismo differente circa il ritorno di un resultset da una store procedure. Oracle infatti richiede, a differenza di Sql Server, l&amp;#39;utilizzo di un cursore come parametro di output per recuperare il resultset derivante da procedure che lo ritornano, fornendo anche un tipo speciale di dato, cursor appunto, nel suo provider nativo per .NET.&lt;/p&gt; &lt;p&gt;Se si usa il Data Access Application Block per invocare store procedure Oracle che ritornano un resultset attraverso l&amp;#39;uso di un cursore come parametro di output, non è necessario indicare quest&amp;#39;ultimo tra i parametri (anche perchè, pur provando ad indicarlo esplicitamente, non si troverebbe il tipo di dati &lt;strong&gt;cursor&lt;/strong&gt; disponibile tra i tipi di dati in quanto viene usato l&amp;#39;enum&lt;strong&gt; System.Data.DbType&lt;/strong&gt; che rappresenta genericamente i tpi di dati&amp;nbsp; per qualsiasi .NET Data Provider).&lt;/p&gt; &lt;p&gt;Basta infatti passare un generico parametro di output avente il valore null come primo parametro della store procedure Oracle e l&amp;#39;oggetto &lt;strong&gt;OracleDatabase&lt;/strong&gt; farà il lavoro per noi. Questo oggetto infatti assume che il primo parametro di una store procedure sia un cursore di output per la restituzione del resultset&lt;/p&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1396" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/PHdtzZzRArw" height="1" width="1"/&gt;</description><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Tips+_2600_amp_3B00_+tricks/default.aspx">Tips &amp;amp; tricks</category><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/.NET+Framework+3.5/default.aspx">.NET Framework 3.5</category><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2009/02/16/invocazione-di-store-procedure-oracle-in-net.aspx</feedburner:origLink></item><item><title>HttpResponse.ApplyAppPathModifier</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/OV7NRKQVEUE/httpresponse-applyapppathmodifier.aspx</link><pubDate>Tue, 27 Jan 2009 18:00:20 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1395</guid><dc:creator>maurizio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1395</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1395</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2009/01/27/httpresponse-applyapppathmodifier.aspx#comments</comments><description>&lt;p&gt;Se si usano le sessioni ASP .NET coockieless, ovvero sessioni in cui il SessionID viene inserito nell&amp;#39;url nella seguente forma:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;/App/(S(avsbnbml2n1n5mi5rmfqnu65))/default.aspx&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;il metodo &lt;strong&gt;ApplyAppPathModifier&lt;/strong&gt; della classe &lt;strong&gt;HttpResponse&lt;/strong&gt; risulta estremamente utile, poichè, passandogli come parametro stringa un path virtuale, restituisce lo stesso path con il SessiondID inserito correttamente nell&amp;#39;url, sollevando lo sviluppatore dalla costruzione manuale dello stesso. Ciò risulta evidente ogni qual volta è necessario utilizzare url caricati dinamicamente.&lt;/p&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1395" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/OV7NRKQVEUE" height="1" width="1"/&gt;</description><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/ASP+.NET/default.aspx">ASP .NET</category><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2009/01/27/httpresponse-applyapppathmodifier.aspx</feedburner:origLink></item><item><title>METODI VIRTUALI NEL COSTRUTTORE</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/nDE7GMsUtrU/metodi-virtuali-nel-costruttore.aspx</link><pubDate>Mon, 26 Jan 2009 18:33:24 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1394</guid><dc:creator>maurizio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1394</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1394</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2009/01/26/metodi-virtuali-nel-costruttore.aspx#comments</comments><description>&lt;p&gt;Tra le guidelines da seguire circa la scrittura del costruttore di una classe questa assume una certa importanza:  &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;Evitare di richiamare all&amp;#39;interno di un costruttore un metodo virtuale.&lt;/strong&gt; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Questa guidelines è dovuta al fatto che in presenza di un metodo che ridefinisce un metodo virtuale (ne fa l&amp;#39;override insomma), viene richiamato sempre il metodo esposto dalla classe derivata, ovvero il metodo più specifico della implementazione, a prescindere se il costruttore della classe che espone il metodo derivato sia stato richiamato.&amp;nbsp; L&amp;#39;esempio sotto, tratto dalla documentazione MSDN, chiarisce bene questo concetto. &lt;/p&gt; &lt;p&gt;La creazione della classe &lt;strong&gt;DerivedFromBad&lt;/strong&gt;, cioè il richiamo del suo costruttore, provoca la chiamata immediata&amp;nbsp; al costruttore della sua classe di base, ovvero &lt;strong&gt;BadBaseClass&lt;/strong&gt;, il quale prima inizializza una variabile (state) e poi richiama il metodo virtuale &lt;strong&gt;SetState&lt;/strong&gt;. Peccato che poiche l&amp;#39;oggetto che si sta cercando di costruire (&lt;strong&gt;DerivedFromBad&lt;/strong&gt;) ridefinisce il metodo &lt;strong&gt;SetState&lt;/strong&gt;, all&amp;#39;interno del costruttore della classe &lt;strong&gt;BaseClass&lt;/strong&gt; il metodo effettivamente chiamato è l&amp;#39;implementazione fornita dalla classe &lt;strong&gt;DerivedFromBad&lt;/strong&gt;, e non quella della classe base &lt;strong&gt;BadBaseClass&lt;/strong&gt;. L&amp;#39;esecuzione&amp;nbsp; del metodo ridefinito &lt;strong&gt;SetState&lt;/strong&gt; avviene a prescindere se il costruttore della classe derivata sia o no stato richiamato. In questo caso, poiche non&amp;nbsp; viene richiamato, l&amp;#39;inizializzazione della variabile state non&amp;nbsp; avviene ed il suo contenuto resta fermo a quello impostato dalla classe base, ovvero &amp;quot;&lt;strong&gt;BadBaseClass&lt;/strong&gt;&amp;quot;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:160.15%;cursor:text;max-height:550px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;height:550px;background-color:#f4f4f4;"&gt; &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; tester&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Main()&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;             DerivedFromBad b = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DerivedFromBad();&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt;     &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt;     &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  10:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; BadBaseClass&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  11:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  12:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; state;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  13:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; BadBaseClass()&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  14:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  15:&lt;/span&gt;             state = &lt;span style="color:#006080;"&gt;&amp;quot;BadBaseClass&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  16:&lt;/span&gt;             SetState();&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  17:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  18:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; SetState()&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  19:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  20:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  21:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  22:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  23:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  24:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; DerivedFromBad : BadBaseClass&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  25:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  26:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; DerivedFromBad()&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  27:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  28:&lt;/span&gt;             state = &lt;span style="color:#006080;"&gt;&amp;quot;DerivedFromBad &amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  29:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  30:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; SetState()&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  31:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  32:&lt;/span&gt;             Console.WriteLine(state);&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  33:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  34:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  35:&lt;/span&gt;     }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1394" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/nDE7GMsUtrU" height="1" width="1"/&gt;</description><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2009/01/26/metodi-virtuali-nel-costruttore.aspx</feedburner:origLink></item><item><title>Snippet Code</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/Kn3gYp7owVY/snippet-code.aspx</link><pubDate>Thu, 22 Jan 2009 10:13:51 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1390</guid><dc:creator>maurizio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1390</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1390</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2009/01/22/snippet-code.aspx#comments</comments><description>&lt;p&gt;Gli Snippet Code possono davvero far risparmiare tempo di sviluppo, soprattutto su operazioni ripetitive. Visual Studio, come è noto, fornisce un add-in per la gestione degli stessi su PC, e codificati in un file xml. Chi come me non usa sempre lo stesso PC per lavorare è costretto a sincronizzare gli snippet code su tutti i PC su cui sviluppa, operazione molto noiosa e anche molto soggetta ad errori. Sarebbe comodo in questi casi non avere il repository in&amp;nbsp; locale, ma averli centralizzati all&amp;#39;esterno. &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.codekeep.net/" target="_blank"&gt;&amp;lt;Code:Keep&amp;gt;&lt;/a&gt; fornisce appunto uno storage centralizzato&amp;nbsp; da cui attingere snippet code suddivisi per categoria ed in cui inserire i propri, ovviamente rendendoli usufruibili anche agli altri visitatori del sito, previa registrazione. Inoltre, viene messo a disposizione il download di un add-in per Visual Studio 2008, ovviamente gratuito, che permette di consultare ed utilizzare gli Snippet Code presenti nel sito direttamente dall&amp;#39;IDE, senza neanche aprire il browser.&lt;/p&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1390" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/Kn3gYp7owVY" height="1" width="1"/&gt;</description><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Visual+Studio+2008+/default.aspx">Visual Studio 2008 </category><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2009/01/22/snippet-code.aspx</feedburner:origLink></item><item><title>Visual Studio 2008 Tip #1</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/Lv3we3Y5UiI/visual-studio-2008-tip-1.aspx</link><pubDate>Wed, 17 Dec 2008 18:32:00 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1386</guid><dc:creator>maurizio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1386</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1386</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2008/12/17/visual-studio-2008-tip-1.aspx#comments</comments><description>&lt;p&gt;In Visual Studio 2008 la pressione del tasto F12 rappresenta la scorciatoia da tastiera del comando Edit.GoToDefinition, che, come è&amp;nbsp;noto, permette di &amp;quot;saltare&amp;quot; direttamente alla dichiarazione del simbolo selezionato nel codice. Non è però cosi evidente che il simbolo selezionato potrebbe anche risiedere nella pagina aspx. Ad esempio, se selezioniamo la classe CSS associata ad un controllo in una pagina aspx, o se semplicemente posizioniamo il puntatore del mouse all&amp;#39;interno della stringa della classe CSS, alla pressione del tasto F12 verrà automaticamente&amp;nbsp; aperto il file CSS contentente la definizione del simbolo selezionato e verrà interamente evidenziata la classe stessa con tutti gli attributi grafici associati, come da esempio.&lt;/p&gt;
&lt;p&gt;Decisamente molto utile!&lt;/p&gt;
&lt;p&gt;&lt;img height="40" alt="" src="http://www.xplayn.org/images/blogs/f12tip1.bmp" width="696" align="left" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="WIDTH:289px;HEIGHT:120px;" height="40" alt="" src="http://www.xplayn.org/images/blogs/f12tip2.bmp" width="696" align="left" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1386" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/Lv3we3Y5UiI" height="1" width="1"/&gt;</description><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2008/12/17/visual-studio-2008-tip-1.aspx</feedburner:origLink></item><item><title>Visual studio ide crash #2</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/YFNo55U4xcI/visual-studio-ide-crash-2.aspx</link><pubDate>Tue, 09 Dec 2008 10:44:28 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1384</guid><dc:creator>maurizio</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1384</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1384</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2008/12/09/visual-studio-ide-crash-2.aspx#comments</comments><description>&lt;p&gt;Avevo già parlato &lt;a href="http://xplayn.org/cs/blogs/maurizio/archive/2008/09/04/visual-studio-2008-ide-crash-dopo-quot-choose-items-quot-dalla-toolbox.aspx" target="_blank"&gt;qui&lt;/a&gt; (post immediatamente sotto :-)) di uno strano crash di Visual Studio 2008 SP1, a seguito dell&amp;#39;esecuzione comando &amp;quot;Choose items&amp;quot; della toolbox.&lt;/p&gt; &lt;p&gt;Il problema sembrava essere dovuto alla presenza dei PowerCommands e di una loro presunta incompatibilità con il Service Pack 1. Infatti per poter tornare alla &amp;quot;normalità&amp;quot; era necessario un&amp;#39;azione estrema, ovvero rimuovere i PowerCommands, ed a quel punto il problema spariva.&lt;/p&gt; &lt;p&gt;Oggi scopro che attraverso un assemply redirection nel file di configurazione di Visual Studio (devenv.exe.config) il problema si risolve definitivamente, e che il crash si verificava anche nell&amp;#39;editor XAML. Maggiori info &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/vssetup/thread/e2434065-9921-4861-b914-9cc9d6c55553/" target="_blank"&gt;qui&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Quindi la soluzione è inserire questo frammento XML nel file di configurazione di Visual Studio:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;&amp;lt;dependentAssembly&amp;gt;&lt;br /&gt;&amp;lt;assemblyIdentity name=&amp;quot;Microsoft.PowerCommands&amp;quot;&amp;nbsp;&amp;nbsp; publicKeyToken=&amp;quot;null&amp;quot; culture=&amp;quot;neutral&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;codeBase version=&amp;quot;1.1.0.0&amp;quot; href=&amp;quot;C:\Program Files (x86)\PowerCommands\Microsoft.PowerCommands.dll&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/dependentAssembly&amp;gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1384" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/YFNo55U4xcI" height="1" width="1"/&gt;</description><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Tips+_2600_amp_3B00_+tricks/default.aspx">Tips &amp;amp; tricks</category><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Visual+Studio+2008+/default.aspx">Visual Studio 2008 </category><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2008/12/09/visual-studio-ide-crash-2.aspx</feedburner:origLink></item><item><title>Visual studio 2008 ide crash dopo "Choose items" dalla toolbox</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/tf9itvz3lYg/visual-studio-2008-ide-crash-dopo-quot-choose-items-quot-dalla-toolbox.aspx</link><pubDate>Thu, 04 Sep 2008 20:54:08 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1047</guid><dc:creator>maurizio</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1047</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1047</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2008/09/04/visual-studio-2008-ide-crash-dopo-quot-choose-items-quot-dalla-toolbox.aspx#comments</comments><description>&lt;p&gt;Qualche giorno fa mi sono imbattuto in uno strano crash di Visual Studio 2008, dopo aver installato il Service Pack 1, vale a dire che il comando &amp;quot;Choose items&amp;quot; della toolbox era capace di mandare in crash l&amp;#39;intero IDE, scrivendo un laconico messaggio nell&amp;#39;Event viewer, del tipo&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;NET Runtime version 2.0.50727.3053 - Fatal Execution Engine Error (7A035E00) (80131506)&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;di nessuna utilità per la risoluzione del problema,&amp;nbsp; senza possibilità di scampo quindi. Dopo aver cercato invano per la rete per evitare di perdere ulteriore tempo ho evitato di disporre del controllo che mi interessava nella toolbox (precisamente una PropertyGrid) e l&amp;#39;ho inserito direttamente nel markup XAML della mia applicazione (una XBAP application).&lt;/p&gt; &lt;p&gt;Oggi ho letto questo &lt;a href="http://blogs.ugidotnet.org/ddl/archive/2008/09/04/vs2008-sp1---problema-con-quotadd-item.quot-toolbox.aspx" target="_blank"&gt;post&lt;/a&gt; di &lt;a href="http://blogs.ugidotnet.org/ddl/Default.aspx" target="_blank"&gt;Nazareno&lt;/a&gt; e speravo veramente di risolvere il problema, anche perchè questa volta la toolbox era indispensabile poichè dovevo inserire una intera suite di controlli.&lt;/p&gt; &lt;p&gt;Purtroppo non c&amp;#39;è stato niente da fare. Il problema sparisce solo dopo aver disinstallato i &lt;a href="http://code.msdn.microsoft.com/PowerCommands/" target="_blank"&gt;Power Commands&lt;/a&gt;, senza più reinstallarli.&amp;nbsp; Ma sono abituato ai Power Commands&amp;nbsp; e li trovo veramente utili. &lt;/p&gt; &lt;p&gt;Vale a dire che li disintallerò solo per utilizzare la toolbox, e poi li reinstallerò di nuovo...:-)&lt;/p&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1047" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/tf9itvz3lYg" height="1" width="1"/&gt;</description><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Workaround/default.aspx">Workaround</category><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Visual+Studio+2008+/default.aspx">Visual Studio 2008 </category><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2008/09/04/visual-studio-2008-ide-crash-dopo-quot-choose-items-quot-dalla-toolbox.aspx</feedburner:origLink></item><item><title>SQLBits -Londra, 13 settembre 2008</title><link>http://feedproxy.google.com/~r/mauriziotammacco/~3/D3jxtzMMouk/sqbbits-londra-13-settembre-2008.aspx</link><pubDate>Mon, 01 Sep 2008 21:08:00 GMT</pubDate><guid isPermaLink="false">d74d3a5b-520c-4616-8b05-6f47b5efe742:1045</guid><dc:creator>maurizio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xplayn.org/cs/blogs/maurizio/rsscomments.aspx?PostID=1045</wfw:commentRss><wfw:comment>http://xplayn.org/cs/blogs/maurizio/commentapi.aspx?PostID=1045</wfw:comment><comments>http://xplayn.org/cs/blogs/maurizio/archive/2008/09/01/sqbbits-londra-13-settembre-2008.aspx#comments</comments><description>&lt;p&gt;Il prossimo 13 settembre parteciperò ad una conferenza internazionale, precisamente la &lt;a href="http://www.sqlbits.com/" target="_blank"&gt;SQLBits&lt;/a&gt;, dedicata ai professionisti di Sql Server, in quel di Londra. &lt;/p&gt; &lt;p&gt;Se qualche sqlellaro vuole accodarsi non ha che da &lt;a href="http://xplayn.org/cs/blogs/maurizio/contact.aspx" target="_blank"&gt;contattarmi&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Questa è la mia agenda:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://ftp.xplayn.org/images/blogs/SQBBitsLondra13settembre2008_1457F/SQLBits.png"&gt;&lt;img src="http://www.xplayn.org/images/blogs/SQBBitsLondra13settembre2008_1457F/SQLBits_thumb.png" style="border-width:0px;" alt="SQLBits" border="0" height="820" width="748" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Qualche suggerimento ?&lt;/p&gt;&lt;img src="http://xplayn.org/cs/aggbug.aspx?PostID=1045" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/mauriziotammacco/~4/D3jxtzMMouk" height="1" width="1"/&gt;</description><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/Eventi+_2600_amp_3B00_+conferenze/default.aspx">Eventi &amp;amp; conferenze</category><category domain="http://xplayn.org/cs/blogs/maurizio/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><feedburner:origLink>http://xplayn.org/cs/blogs/maurizio/archive/2008/09/01/sqbbits-londra-13-settembre-2008.aspx</feedburner:origLink></item></channel></rss>
