<feed xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://www.w3.org/2005/Atom" xml:lang="it-IT">
    <title>Il Blog di Nicolò Carandini</title>
    <link rel="self" type="application/xml" href="http://blogs.ugidotnet.org/Nick60/Atom.aspx" />
    <subtitle type="html">L'intramontabile passione dello sviluppo software</subtitle>
    <id>http://blogs.ugidotnet.org/Nick60/Default.aspx</id>
    <author>
        <name>Nicolò Carandini</name>
        <uri>http://blogs.ugidotnet.org/Nick60/Default.aspx</uri>
    </author>
    <generator uri="http://subtextproject.com" version="Subtext Version 1.9.5.176">Subtext</generator>
    <updated>2008-06-27T19:59:51Z</updated>
    <entry>
        <title>XX: Xtreme Xperience</title>
        <link rel="self" type="text/html" href="http://blogs.ugidotnet.org/Nick60/archive/2008/06/27/93200.aspx" />
        <id>http://blogs.ugidotnet.org/Nick60/archive/2008/06/27/93200.aspx</id>
        <published>2008-06-27T19:39:1502:00:00</published>
        <updated>2008-06-27T19:59:51Z</updated>
        <content type="html">&lt;p&gt;Tranquilli: manca una x, quindi non è un post osceno. Ma godurioso si, almeno per me.&lt;/p&gt;  &lt;p&gt;Ho partecipato al corso di Andrea Saltarello su Architettura delle Soluzioni .NET, che si è tenuto presso la sede Microsoft di Milano.&lt;/p&gt;  &lt;p&gt;Alcune impressioni (e sono tutte orientate a slappare il suddetto docente):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Il corso è una ficata pazzesca. Due giorni spaccatutto, dove l'adrenalina si somma alla stanchezza per mantenere altissima l'attenzione. Ogni minuto è denso di informazioni, ogni informazione passata è preziosa. &lt;/li&gt;    &lt;li&gt;Per quel che mi riguarda, mix di teoria e pratica veramente azzeccato. Tutti i temi che mi interessavano sono stati toccati, e anche quando ti sembra che Andrea stia divagando, poi ti accorgi che era propedeutico al pezzo successivo e che tutto torna, e sei sempre rimasto sul tema. &lt;/li&gt;    &lt;li&gt;Sono riuscito ad interagire parecchio (spero di non aver spaccato gli zibidei agli altri partecipanti) cosa che da una parte mi ha chiarito i vari dubbi o incertezze che volta volta si sono presentati, dall'altra mi ha dato una soddisfazione tremenda (ecco dove sta la goduria) perchè per capire cosa diceva Andrea era necessario avere un background di base che personalmente mi sono fatto studiando in questi due ultimi anni. In parole povere: dua anni fa se avessi seguito il corso non avrei capito una mazza, quindi tutte le notti che ho passato sui libri e sul PC sono valse a qualcosa, e per me non è poco. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;La sede Microsoft è molto bella, e sono riuscito a farmi fare una rapidissima demo di &lt;a href="http://www.microsoft.com/uc/products/roundtable.mspx"&gt;roundtable&lt;/a&gt;, che mi è piaciuto molto.&lt;/p&gt;  &lt;p&gt;Ciliegina sulla torta, la sera siamo andati con Andrea a cena fuori in un birrificio dove ci siamo fatti del male. Birra buona, carne spettacolare. Ho anche fatto amicizia con alcuni "colleghi di corso", tutti in gamba e molto simpatici, coi quali spero di potermi rincontrare presto, spero ai Community Days.&lt;/p&gt;  &lt;p&gt;Grazie Andrea!&lt;/p&gt;  &lt;p&gt; &lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/XXXtremeXperience_11360/varie%2028%20giu%202008%20087_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="varie 28 giu 2008 087" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/XXXtremeXperience_11360/varie%2028%20giu%202008%20087_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/XXXtremeXperience_11360/varie%2028%20giu%202008%20088_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="varie 28 giu 2008 088" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/XXXtremeXperience_11360/varie%2028%20giu%202008%20088_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/XXXtremeXperience_11360/varie%2028%20giu%202008%20089_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="varie 28 giu 2008 089" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/XXXtremeXperience_11360/varie%2028%20giu%202008%20089_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/XXXtremeXperience_11360/varie%2028%20giu%202008%20090_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="varie 28 giu 2008 090" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/XXXtremeXperience_11360/varie%2028%20giu%202008%20090_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/XXXtremeXperience_11360/varie%2028%20giu%202008%20086_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="varie 28 giu 2008 086" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/XXXtremeXperience_11360/varie%2028%20giu%202008%20086_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Nick60/aggbug/93200.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://blogs.ugidotnet.org/Nick60/comments/93200.aspx</wfw:comment>
        <slash:comments>9</slash:comments>
        <wfw:commentRss>http://blogs.ugidotnet.org/Nick60/comments/commentRss/93200.aspx</wfw:commentRss>
        <trackback:ping>http://blogs.ugidotnet.org/Nick60/services/trackbacks/93200.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Come una goccia d'acqua nel mare...</title>
        <link rel="self" type="text/html" href="http://blogs.ugidotnet.org/Nick60/archive/2008/06/18/93078.aspx" />
        <id>http://blogs.ugidotnet.org/Nick60/archive/2008/06/18/93078.aspx</id>
        <published>2008-06-18T09:47:1802:00:00</published>
        <updated>2008-06-18T09:51:21Z</updated>
        <content type="html">&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/Comeungranellodisabbia_88AB/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="276" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/Comeungranellodisabbia_88AB/image_thumb.png" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;anch'io ne sono parte!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Nick60/aggbug/93078.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://blogs.ugidotnet.org/Nick60/comments/93078.aspx</wfw:comment>
        <slash:comments>6</slash:comments>
        <wfw:commentRss>http://blogs.ugidotnet.org/Nick60/comments/commentRss/93078.aspx</wfw:commentRss>
        <trackback:ping>http://blogs.ugidotnet.org/Nick60/services/trackbacks/93078.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Community Days 2008</title>
        <link rel="self" type="text/html" href="http://blogs.ugidotnet.org/Nick60/archive/2008/06/02/92881.aspx" />
        <id>http://blogs.ugidotnet.org/Nick60/archive/2008/06/02/92881.aspx</id>
        <published>2008-06-02T01:25:2702:00:00</published>
        <updated>2008-06-02T01:25:27Z</updated>
        <content type="html">&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/CommunityDays2008_1319/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="216" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/CommunityDays2008_1319/image_thumb.png" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/CommunityDays2008_1319/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="216" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/CommunityDays2008_1319/image_thumb_1.png" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Caro Raf, vengo nella tua track per continuare a studiare WPF! :-)&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Nick60/aggbug/92881.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://blogs.ugidotnet.org/Nick60/comments/92881.aspx</wfw:comment>
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://blogs.ugidotnet.org/Nick60/comments/commentRss/92881.aspx</wfw:commentRss>
        <trackback:ping>http://blogs.ugidotnet.org/Nick60/services/trackbacks/92881.aspx</trackback:ping>
    </entry>
    <entry>
        <title>WPF: Ready to go?</title>
        <link rel="self" type="text/html" href="http://blogs.ugidotnet.org/Nick60/archive/2008/05/31/92879.aspx" />
        <id>http://blogs.ugidotnet.org/Nick60/archive/2008/05/31/92879.aspx</id>
        <published>2008-05-31T13:03:5202:00:00</published>
        <updated>2008-05-31T13:25:31Z</updated>
        <content type="html">&lt;p&gt;Dopo circa due mesi di studio (notturno e frammentato) mi sono fatto una mia idea di &lt;font color="#800000" size="4"&gt;WPF: potente e affascinante, ma pericoloso&lt;/font&gt;.&lt;/p&gt;  &lt;p&gt;Sulla potenza e sul fascino non mi soffermo, il web è pieno di info al riguardo.&lt;/p&gt;  &lt;p&gt;Sul fatto che sia pericoloso, faccio un semplice esempio, basato sull'interazione tra XAML e codice c#.&lt;/p&gt;  &lt;p&gt;L'uso promisquo di codice XAML e codice c#, oltre ad essere una necessità, è la pietra angolare della filosofia di progetto di WPF, che prevede la separazione tra i layer di presentazione e di logica (permettetemi questo obbrobrio, tanto avete tutti capito cosa intendo).&lt;/p&gt;  &lt;p&gt;Questa promisquità da una parte è un bene, perchè usando una programmazione dichiarativa, è possibile esprimere cosa si vuole ottenere, lasciando che il framework implementi il come si ottiene.&lt;/p&gt;  &lt;p&gt;Dall'altra è male, perchè abbiamo fatto tanto per avere sistemi di sviluppo che verifichino quanto più possibile a "compile time" la correttezza (almeno formale) dei nostri sorgenti, mentre con WPF si fa allegramente uso di valori testuali per utilizzare dal codice c# gli oggetti definiti in XAML.&lt;/p&gt;  &lt;p&gt;Un esempio semplicissimo, con una TextBox e un Button:&lt;/p&gt;  &lt;p&gt;   &lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:20c217b7-e8b5-4219-891c-d4071fbb96e9" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:Silver;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Window &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;x:Class&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="WpfApplication.Window1"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;
        xmlns&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;
        xmlns:x&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;
        Title&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Esempio"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; Height&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="300"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; Width&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="300"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBox &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="textBox1"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; Margin&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="5"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Button &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Click&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Button_Click"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; Margin&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="5"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Mostra il valore&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Button&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Window&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;


&lt;p&gt;
  &lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:8436d5ec-9f51-44cf-9eec-b3968daf6496" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:Silver;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Button_Click(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt; sender, RoutedEventArgs e)
{
  MessageBox.Show(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.FindName(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;textBox1&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;).ToString());
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;


&lt;p&gt;Il risultato di questa complicatissima applicazione è a dir poco spettacolare:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/WPFReadytogo_B6C8/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="211" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/WPFReadytogo_B6C8/image_thumb.png" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Ora, se per qualsivoglia motivo cambiamo nel sorgente XAML il nome del TextBox, sostituendo "textBox1" con "pippo", abbiamo due effetti collaterali indesiderati:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;L'ambiente di sviluppo (VS 2008), visto che sto cambiano un valore testuale, non prevede alcun avviso del tipo "cerca e sostituisci";&lt;/li&gt;

  &lt;li&gt;La compilazione fila liscia come l'olio.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Peccato che ora l'esecuzione del programma vada in crash.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/WPFReadytogo_B6C8/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="88" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/WPFReadytogo_B6C8/image_thumb_1.png" width="400" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Mi sa che tocca lavorare di brutto con i test, ma al momento non ho alcuna esperienza di TDD con WPF, perchè (come mio solito) ci ho solo giocato per capire cos'è.&lt;/p&gt;

&lt;p&gt;E voi cosa ne pensate? Se interessa potremmo spostare la discussione sul forum.&lt;/p&gt;

&lt;p&gt;Io, per non saper ne leggere ne scrivere (e ne sicuramente programmare), torno a WinForm.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Nick60/aggbug/92879.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://blogs.ugidotnet.org/Nick60/comments/92879.aspx</wfw:comment>
        <slash:comments>13</slash:comments>
        <wfw:commentRss>http://blogs.ugidotnet.org/Nick60/comments/commentRss/92879.aspx</wfw:commentRss>
        <trackback:ping>http://blogs.ugidotnet.org/Nick60/services/trackbacks/92879.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Bill Gates Capo della Difesa USA</title>
        <link rel="self" type="text/html" href="http://blogs.ugidotnet.org/Nick60/archive/2008/05/29/92865.aspx" />
        <id>http://blogs.ugidotnet.org/Nick60/archive/2008/05/29/92865.aspx</id>
        <published>2008-05-29T21:16:3702:00:00</published>
        <updated>2008-05-29T21:16:37Z</updated>
        <content type="html">&lt;p&gt;Ho appena ascoltato su "StrisciaLaNotizia" una fantastica chicca: secondo il TG3, il Capo della Difesa Americana è nientepopodimeno che Bill Gates!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Nick60/aggbug/92865.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://blogs.ugidotnet.org/Nick60/comments/92865.aspx</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blogs.ugidotnet.org/Nick60/comments/commentRss/92865.aspx</wfw:commentRss>
        <trackback:ping>http://blogs.ugidotnet.org/Nick60/services/trackbacks/92865.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Linq per Java</title>
        <link rel="self" type="text/html" href="http://blogs.ugidotnet.org/Nick60/archive/2008/05/24/92789.aspx" />
        <id>http://blogs.ugidotnet.org/Nick60/archive/2008/05/24/92789.aspx</id>
        <published>2008-05-24T07:41:5602:00:00</published>
        <updated>2008-05-24T07:50:08Z</updated>
        <content type="html">&lt;p&gt;Anche se non si tratta di .NET mi sembra interessante segnalare che  db4objects  sta conducendo un'iniziativa per promuovere LINQ for Java:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;· LINQ for Java follows db4objects approach of Native Queries. To know more about this initiative &lt;a href="http://developer.db4o.com/blogs/carl/archive/2008/05/02/linq-for-java.aspx"&gt;read Carl's blog&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;· Having a common interface on .NET and Java that is natively supported would create a easy to use, efficient standard for database developers.&lt;/p&gt;    &lt;p&gt;To read along or participate in this effort join the &lt;a href="http://groups.google.com/group/jlinq"&gt;JLINQ group&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Incredibile ma vero. Una volta tanto la comunità di sviluppatori si ispira e implementa qualcosa già realizzato da Microsoft, e non viceversa.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Nick60/aggbug/92789.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://blogs.ugidotnet.org/Nick60/comments/92789.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blogs.ugidotnet.org/Nick60/comments/commentRss/92789.aspx</wfw:commentRss>
        <trackback:ping>http://blogs.ugidotnet.org/Nick60/services/trackbacks/92789.aspx</trackback:ping>
    </entry>
    <entry>
        <title>[Iper-OT] Uno Spam veramente incredibile!</title>
        <link rel="self" type="text/html" href="http://blogs.ugidotnet.org/Nick60/archive/2008/05/23/92785.aspx" />
        <id>http://blogs.ugidotnet.org/Nick60/archive/2008/05/23/92785.aspx</id>
        <published>2008-05-23T16:06:1202:00:00</published>
        <updated>2008-05-23T16:06:43Z</updated>
        <content type="html">&lt;p&gt;Scusatemi, so che non dovrei, ma non posso resistere. Normalmente tutta la junk-email la butto senza leggerla, ma questa è troppo bella:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Ciao, amico,     &lt;br /&gt;Se siete soddisfatti dei vostri guadagni potete fare a meno di proseguire nella lettura. Se invece siete interessati ad incrementare i vostri introiti, vi invitiamo a prendere in considerazione la nostra proposta. Noi siamo [...]. Dal 1994 ci occupiamo della vendita di [...]. Noi Stiamo cercando agenti in vostra area. Siamo alla ricerca di collaboratori affidabili e responsabili.       &lt;br /&gt;Da parte nostra garantiamo un'elevata retribuzione del vostro lavoro (&lt;font color="#ff0000"&gt;da 4683605837038-55050494947167 a 7369485161030-9072727416163 euro&lt;/font&gt; alla settimana). Discuteremo dei dettagli al momento della presa diretta di contatti. Vi presteremo istruzioni dettagliate per lavorare con noi.&lt;/p&gt;    &lt;p&gt;Prendete nota! Rispondiamo alle mail di tutti. Non ci avvaliamo di programmi di spedizione automatica, che mandano in giro testi pre-confezionati. A tutte le mail rispondono direttamente i nostri operatori. Prendiamo contatti separatamente con ciascun potenziale collaboratore. Da ciò ne consegue che potreste ricevere risposta alla vostra mail nel giro di qualche giorno. Per velocizzare la procedura potete contattarmi direttamente allindirizzo [...]&lt;/p&gt;    &lt;p&gt;E ricordate. Stando alle statistiche al &lt;font color="#ff0000"&gt;716936946149%&lt;/font&gt; delle persone è insodisfatta di quanto guadagna.       &lt;br /&gt;E da noi sono disponibili ancora soltanto &lt;font color="#ff0000"&gt;27273949406 posti&lt;/font&gt; non esitate!&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Ovviamente ho messo i puntini per non fare pubblicità a questi "scemi", e ho evidenziato le cifre veramente astronomiche! Ma il pezzo che mi ha fatto veramente piegare in due è quello sulle statistiche, con la percentuale di persone insoddisfatte e sul "limitato" numero di posti disponibili: solo 27 miliardi di posti e poco più!&lt;/p&gt;  &lt;p&gt;Ma mi dite voi a che serve mandare queste email? Ma che ci guadagnano?&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Nick60/aggbug/92785.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://blogs.ugidotnet.org/Nick60/comments/92785.aspx</wfw:comment>
        <slash:comments>5</slash:comments>
        <wfw:commentRss>http://blogs.ugidotnet.org/Nick60/comments/commentRss/92785.aspx</wfw:commentRss>
        <trackback:ping>http://blogs.ugidotnet.org/Nick60/services/trackbacks/92785.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Office 2007 e ODF</title>
        <link rel="self" type="text/html" href="http://blogs.ugidotnet.org/Nick60/archive/2008/05/22/92765.aspx" />
        <id>http://blogs.ugidotnet.org/Nick60/archive/2008/05/22/92765.aspx</id>
        <published>2008-05-22T09:23:4502:00:00</published>
        <updated>2008-05-22T09:23:45Z</updated>
        <content type="html">&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/Office2007eODF_8338/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="45" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/Office2007eODF_8338/image_thumb.png" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Come annunciato in &lt;a href="http://blogs.msdn.com/brian_jones/archive/2008/05/21/odf-support-in-office.aspx"&gt;questo post di Brian Jones&lt;/a&gt;, sara possibile salvare i documenti Offce 2007 anche in formato ODF (Open Document Format).&lt;/p&gt;  &lt;p&gt;Questo dimostra nei fatti la volonta di Microsoft di lasciare pari opportunità ai due formati. Alla faccia di tutti quei criticoni che per partito preso hanno riempito il web di sterili diatribe contro Open XML. Non solo, sarà anche possibile impostare l'opzione di usare tale formato come default, per cui il semplice save salverà direttamente in formato ODF. E non c'è bisogno di aggiungere altro.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Nick60/aggbug/92765.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://blogs.ugidotnet.org/Nick60/comments/92765.aspx</wfw:comment>
        <slash:comments>3</slash:comments>
        <wfw:commentRss>http://blogs.ugidotnet.org/Nick60/comments/commentRss/92765.aspx</wfw:commentRss>
        <trackback:ping>http://blogs.ugidotnet.org/Nick60/services/trackbacks/92765.aspx</trackback:ping>
    </entry>
    <entry>
        <title>UGI rocks, but today UGISS rulez!</title>
        <link rel="self" type="text/html" href="http://blogs.ugidotnet.org/Nick60/archive/2008/05/15/92674.aspx" />
        <id>http://blogs.ugidotnet.org/Nick60/archive/2008/05/15/92674.aspx</id>
        <published>2008-05-15T01:55:0302:00:00</published>
        <updated>2008-05-15T02:27:25Z</updated>
        <content type="html">&lt;p&gt;Oggi ho partecipato alla &lt;a href="http://www.ugiss.org/Content/Event/Workshop+UGISS+Rome+Edition.aspx"&gt;1° giornata organizzata a Roma (incredibile ma vero) da UGISS&lt;/a&gt;, ovviamente incentrata su SQL SERVER 2008.&lt;/p&gt;  &lt;p&gt;Ammirevole il coraggio di Davide Mauri, che nonostante il magone (per sua stessa ammissione è tifoso dell'INTER) è venuto nella tana del lupo, proprio a Roma :-) .&lt;/p&gt;  &lt;p&gt;Prima di scendere nei dettagli, alcune note generali: albergo con ampio parcheggio per le macchine, ma veramente fuori da tutti i percorsi dei mezzi pubblici, e in una zona di Roma che la mattina è veramente difficile raggiungere per via del traffico intensissimo. Tolto quest'unico punto di demerito, per il resto un albergo a 5 stelle, per ospitalità e cordialità. Io ero arrivato senza aver fatto la prima colazione, e visto che il bar non era ancora aperto sono stato invitato a salire al 7 piano, dove ho fatto una mega prima colazione con cornetto, pane, burro e marmellata e un ottimo latte macchiato. Costo: zero! Me l'hanno offerta. Il pranzo è stato un "vero pranzo", con ottimo vino, primo, secondo e una torta da fare invidia a nonna papera. Una cosa mai vista!&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Prima sessione (Davide Mauri &amp;amp; Andrea Benedetti): Miti da sfatare.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Per ogni mito, una breve introduzione e una demo. Metodo che avrebbe senz'altro soddisfatto San Tommaso: provare per credere! Peccato che per l'ultimo mito da sfatare toccherà aspettare domenica, perchè Davide ha scritto (IMHO scaramanticamente): " l'INTER vince lo scudetto! ". Speriamo di sfatarlo, 'sto mito, anche se ci credo poco. E così, tra uno scherzo tra tifosi e molte info utili, se ne andata la prima sessione:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Un database non è relazionale perchè esistono relazioni definite tra le tabelle. Un database è relazionale anche se composto da un'unica Table. Una tabella è un insieme di n-tuple, ossia di relazioni tra n colonne. Il mito nasce dalla traduzione in italiano di Relational e Relationship che si traducono con relazionale e relazione: le due parole in inglese hanno significati nettamente distinti, quelle italiane riportano allo stesso concetto base;&lt;/li&gt;    &lt;li&gt;L'indice cluster, che NON è necessariamente legato alla Primary Key;&lt;/li&gt;    &lt;li&gt;Le Store Procedures non sono per loro natura transazionali, è lo sviluppatore che deve gestire il tutto secondo le necessità del caso. E se si inserisce il tutto in una transazione, in caso di errore non viene effettuato automaticamente il rollback. Occorre scrivere il codice che in caso di errore richieda esplicitamente di fare il rollback mediate l'apposita istruzione (IMHO un mito veramente assurdo e incomprensibile);&lt;/li&gt;    &lt;li&gt;Le viste non sono più performanti di una query (mito evidentemente duro a morire, visto che a pranzo vicino a me c'era chi continuava a sostenerlo nonostante la spiegazione e la demo);&lt;/li&gt;    &lt;li&gt;Una CTE (subquery) non necessariamente viene elaborata prima della Select che la usa (avviene quasi sempre, ma la cosa non è garantita), quindi se ad esempio la CTE filtra tutti i record di una determinata tabella con la colonna quantità maggiore di zero e poi la select che la usa definisce una colonna calcolata dividendo per tale quantità, potremmo comunque incappare in un errore di "division by zero";&lt;/li&gt;    &lt;li&gt;L'hint NOLOCK è in realtà un hint di DirtyRead (o se preferite di ReadUncommitted). In pratica NOLOCK significa che non ci interessa rispettare i locks impostati da altri, ma la nostra operazione potrebbe benissimo creare dei locks e far aspettare altri;&lt;/li&gt;    &lt;li&gt;Non usare @@IDENTITY (basta un trigger che fa un'insert su un'altra tabella a seguito del nostro insert per mandare tutto a p..ne!). Al suo posto usare Scope_Identity. Provare per credere!&lt;/li&gt;    &lt;li&gt;Le viste sono delle tabelle filtrate secondo determinati criteri, e per definizione le tabelle (e quindi le viste) non sono ordinate. Poichè anche selezionare le prime n righe può essere un modo di filtrare una tabella, e tale selezione è evidentemente legata ad un determinato ordinamento, in una vista si può usare ORDER BY solo se si usa la clausola TOP. Ma non bisogna prendersi il braccio quando viene offerto un dito! Quindi niente trucchetti del tipo TOP 100%, perchè l'ottimizzatore potrebbe (e nel SQL Server 2008 lo fa!) accorgersene e restituirvi semplicemente il 100% dei records, ma senza ordinamento. Furbacchioni, attenti! L'ordinamento va messo nella Select che usa la vista. Questa è la cosa buona e giusta... ;&lt;/li&gt;    &lt;li&gt;Una variabile Table non è transazionale (come non lo sono in generale le variabili). Non è vero che risiede solo in memoria. Anzi, se contiene un fracco di dati potrebbe andare in buona parte su disco, ed essere meno performante di una classica tabella temporanea;&lt;/li&gt;    &lt;li&gt;"Query ed Event Notification" non ha nulla a che fare con i "Notification Services". sono due cose a se stanti, totalmente indipendenti;&lt;/li&gt;    &lt;li&gt;Infine, dulcis in fundo, l'ultimo mito da sfatare: l'INTER vince il campionato (già commentata, non ho nulla da aggiungere!)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Seconda sessione (Davide Mauri): SQL Server 2008 - Novità per gli sviluppatori&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Parzialmente simile a quanto già visto al lancio, con la differenza (fondamentale) che il tempo a disposizione ci ha permesso di andare più nello specifico su temi caldi, quali:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Insert di più rows (Row Values Constructor): come unica istruzione è implicitamente transazionale e molto comoda da usare;&lt;/li&gt;    &lt;li&gt;Hierarchy: ho già qualche idea su come e dove usarla... ;&lt;/li&gt;    &lt;li&gt;FileStream: il meglio dei due mondi, consistenza dei dati e backup integrato da una parte, rapidità e semplicità d'uso della risorsa che non è un un Binary Large Object ma un vero e proprio file su una directory del File System;&lt;/li&gt;    &lt;li&gt;Geodati: bellissima la demo con Virtual Earth, anche se l'avevo già vista;&lt;/li&gt;    &lt;li&gt;Change Tracking: una vera bomba! Bellissimo, non tocca la struttura del database. Implementato come un indice, ha il medesimo peso in termini di spazio occupato su disco. L'unica informazione che ciascuna applicazione remota deve mantenere è un numero (intero) che in seguito deve essere fornito al change tracking system per fargli sapere a che "punto della storia" si trova l'appicazione remota che vuole effettuare la sincronizzazione.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Mega pranzo!&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Terza sessione (Gianluca Hotz &amp;amp; Luca Bianchi): Novità per gli Amministratori&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Mio dio, è pur vero che come dice &lt;a href="http://blogs.ugidotnet.org/lbarbieri/Default.aspx"&gt;Lorenzo&lt;/a&gt; oramai è imperativo specializzarsi, ma qui le cose da studiare/sapere sono talmente tante che anche all'interno di un unico prodotto (vabbé, SQL Server è oramai una piattaforma)  c'è da specializzarsi. O sviluppi in T-SQL &amp;amp; .NET, o fai Business Intelligence, o fai il DB Administrator ! Comunque, armati di voglia e determinazione, pur con qualche difficoltà dovuta al lauto pasto, ci siamo immersi nel mondo dei DBA, e devo dire che la sessione è stata molto interessante:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Policy Management (e non mannaggia-ment !)&lt;/li&gt;    &lt;li&gt;Drill Down Reports for DBA&lt;/li&gt;    &lt;li&gt;Resource Governor&lt;/li&gt;    &lt;li&gt;Data compression (molto ben spiegata da Luca Bianchi, andando sul dettaglio, con demo molto chiare e raccomandazioni su come e quando usarla)&lt;/li&gt;    &lt;li&gt;Transparent Data Encription&lt;/li&gt;    &lt;li&gt;Database Mirroring&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Purtoppo quasi tutto è disponibile solo per la versione Enterprise, e se per molte delle features suddette ciò è più che comprensibile, propongo una &lt;strong&gt;petizione della community per chiedere la disponibilità del Transparent Data Encription su tutte le versioni, compresa la Express.&lt;/strong&gt; Su questo punto penso di fare un post specifico, per chiarire idee e motivazioni.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;-- Cofee break saltato per mancanza di tempo!&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Quarta sessione (Andrea Benedetti &amp;amp; Francesco De Chirico): SQL Server 2008 - Novità per la Business Intelligence&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;La mia passione! Mi sono letteralmente "bevuto" ogni parola, e non vedo l'ora di provarlo:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Varie:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Merge come singola istruzione (quindi transazionale, con rollback automatico in caso di errore);&lt;/li&gt;      &lt;li&gt;Grouping Set;&lt;/li&gt;      &lt;li&gt;Star-join optimisation&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Report Services:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;No IIS;&lt;/li&gt;      &lt;li&gt;Tablix;&lt;/li&gt;      &lt;li&gt;Data Visualization con Dundas (il tutto disponibile anche su SQL Server Express !!!)&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Analisys Service:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Best Practices Warnings (fichissimo!);&lt;/li&gt;      &lt;li&gt;Facilitazioni e migliorie nel wizard;&lt;/li&gt;      &lt;li&gt;Migliore UI per la definizione delle relazioni gerarchiche (con un tab dedicato e visual designer);&lt;/li&gt;      &lt;li&gt;Block Computation (importantissimo, perchè evita ove possibile i calcoli relativi a celle nulle);&lt;/li&gt;      &lt;li&gt;Detach e distribuzione di copie locali readonly (di cui fare l'attach sulle singole istanze locali di SQL Server);&lt;/li&gt;      &lt;li&gt;Novità MDX: Create member, set member, definizione di set (quasi) dinamici;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;La cosa più carina, IMHO, è avere a disposizione Dundas "a gratis". La più importante (sempre ed ovviamente IMHO) è la block computation.&lt;/p&gt;  &lt;p&gt;Alla fine, la testa come un frullato (andato a male) ma felice, me ne sono tornato a casa.&lt;/p&gt;  &lt;p&gt;Votazione identica per tutti gli spekers: 10 e lode. Grandissima professionalità. Grazie anche agli sponsor che hanno permesso di realizzare l'evento. Molti dei partecipanti (io incluso) hanno ricevuto una pennetta USB da 1 Giga targata &lt;a href="www.red-gate.com"&gt;Red Gate&lt;/a&gt;, moooolto carina, e un paio di magliette, &lt;a href="www.red-gate.com"&gt;Red Gate&lt;/a&gt; e &lt;a href="www.idera.com"&gt;Idera&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Grande giornata, mille grazie a tutti e in special modo, ovviamente, a Davide Mauri!&lt;/p&gt;  &lt;p&gt;Un saluto anche ad Andrea Benedetti col quale ho chiacchierato molto piacevolmente.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Nick60/aggbug/92674.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://blogs.ugidotnet.org/Nick60/comments/92674.aspx</wfw:comment>
        <slash:comments>3</slash:comments>
        <wfw:commentRss>http://blogs.ugidotnet.org/Nick60/comments/commentRss/92674.aspx</wfw:commentRss>
        <trackback:ping>http://blogs.ugidotnet.org/Nick60/services/trackbacks/92674.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Week of WPF su Channel 9</title>
        <link rel="self" type="text/html" href="http://blogs.ugidotnet.org/Nick60/archive/2008/05/12/92626.aspx" />
        <id>http://blogs.ugidotnet.org/Nick60/archive/2008/05/12/92626.aspx</id>
        <published>2008-05-12T19:46:1502:00:00</published>
        <updated>2008-05-12T19:46:56Z</updated>
        <content type="html">&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/WeekofWPFsuChannel9_11520/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="100" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Nick60/WindowsLiveWriter/WeekofWPFsuChannel9_11520/image_thumb.png" width="180" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In calce al &lt;a href="http://blogs.msdn.com/tims/archive/2008/05/12/introducing-the-third-major-release-of-windows-presentation-foundation.aspx"&gt;post di Tim Sneath&lt;/a&gt; segnalato da &lt;a href="http://blogs.ugidotnet.org/corrado/archive/2008/05/12/92624.aspx"&gt;Corrado&lt;/a&gt;, viene annunciata una settimana dedicata a &lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=403758"&gt;WPF SP1 su Channel 9&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Per sette giorni di fila, verranno pubblicate una serie di interviste con il "core team" di WPF discorrendo, con una serie di dimostrazioni, sulle migliorie introdotte da questa nuova release.&lt;/p&gt;  &lt;p&gt;Buona visione.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Nick60/aggbug/92626.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://blogs.ugidotnet.org/Nick60/comments/92626.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blogs.ugidotnet.org/Nick60/comments/commentRss/92626.aspx</wfw:commentRss>
        <trackback:ping>http://blogs.ugidotnet.org/Nick60/services/trackbacks/92626.aspx</trackback:ping>
    </entry>
</feed>