<rss version="2.0" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>WASP.NET</title>
        <link>http://blogs.ugidotnet.org/WASP.NET/Default.aspx</link>
        <description>Il blog di Roberto Vespa</description>
        <language>it-IT</language>
        <copyright>Roberto Vespa</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <image>
            <title>WASP.NET</title>
            <url>http://blogs.ugidotnet.org/images/RSS2Image.gif</url>
            <link>http://blogs.ugidotnet.org/WASP.NET/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Extending the world</title>
            <link>http://blogs.ugidotnet.org/WASP.NET/archive/2012/01/14/extending-the-world.aspx</link>
            <description>Sul mio in inglese ho iniziato a scrivere una serie sull'utilizzo di Linq dal punto di vista dell'approccio funzionale, ovvero per esprimere computazioni, espandendo il concetto di Linq come "mondo" da estendere attraverso le nostre implementazioni. Sono aspetti per me piuttosto nuovi ma interessanti, e anche per capirli meglio ho deciso di scrivere una mini serie. Se l'argomento vi interessa, vi aspetto &lt;a href="http://www.robychechi.it/roby/tech-blog/extending-the-world"&gt;qui&lt;/a&gt; :)&lt;img src="http://blogs.ugidotnet.org/WASP.NET/aggbug/100701.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Roberto Vespa</dc:creator>
            <guid>http://blogs.ugidotnet.org/WASP.NET/archive/2012/01/14/extending-the-world.aspx</guid>
            <pubDate>Sat, 14 Jan 2012 01:29:39 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/WASP.NET/archive/2012/01/14/extending-the-world.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WASP.NET/comments/commentRss/100701.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WASP.NET/services/trackbacks/100701.aspx</trackback:ping>
        </item>
        <item>
            <title>Parrots su CodeProject</title>
            <link>http://blogs.ugidotnet.org/WASP.NET/archive/2011/09/03/parrots-su-codeproject.aspx</link>
            <description>Qualche giorno fa ho pubblicato su &lt;a href="http://www.codeproject.com"&gt;CodeProject&lt;/a&gt; un articolo sulla &lt;a href="https://bitbucket.org/wasp/parrots/wiki/Home"&gt;libreria&lt;/a&gt; di "record and replay" stub objects che sto scrivendo. L'articolo cerca di essere piuttosto esaustivo sulle idee che stanno alla base della libreria, quindi può essere interessante per chi fosse curioso sull'argomento. Può essere trovato &lt;a href="http://www.codeproject.com/KB/testing/Parrots.aspx"&gt;qui&lt;/a&gt;.&lt;img src="http://blogs.ugidotnet.org/WASP.NET/aggbug/100321.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Roberto Vespa</dc:creator>
            <guid>http://blogs.ugidotnet.org/WASP.NET/archive/2011/09/03/parrots-su-codeproject.aspx</guid>
            <pubDate>Sat, 03 Sep 2011 23:21:41 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/WASP.NET/archive/2011/09/03/parrots-su-codeproject.aspx#feedback</comments>
            <slash:comments>9</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WASP.NET/comments/commentRss/100321.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WASP.NET/services/trackbacks/100321.aspx</trackback:ping>
        </item>
        <item>
            <title>Parrots, background</title>
            <link>http://blogs.ugidotnet.org/WASP.NET/archive/2011/08/14/parrots-background.aspx</link>
            <description>Ho notato dalle statistiche sugli accessi un interesse non trascurabile per il lavoro che sto facendo con &lt;a href="http://www.robychechi.it/roby/parrots"&gt;Parrots&lt;/a&gt;. Per chi volesse maggiori dettagli su quali sono i concetti di fondo su cui il lavoro si basa, ho scritto 2 righe &lt;a href="http://www.robychechi.it/roby/parrots/background-and-concepts"&gt;qui&lt;/a&gt;.

Grazie.&lt;img src="http://blogs.ugidotnet.org/WASP.NET/aggbug/100269.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Roberto Vespa</dc:creator>
            <guid>http://blogs.ugidotnet.org/WASP.NET/archive/2011/08/14/parrots-background.aspx</guid>
            <pubDate>Sun, 14 Aug 2011 20:05:20 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/WASP.NET/archive/2011/08/14/parrots-background.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WASP.NET/comments/commentRss/100269.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WASP.NET/services/trackbacks/100269.aspx</trackback:ping>
        </item>
        <item>
            <title>Parrots</title>
            <link>http://blogs.ugidotnet.org/WASP.NET/archive/2011/08/10/parrots.aspx</link>
            <description>Per chi fosse interessato, sto lavorando a una libreria open-source in C# che si basa su un'idea che chiamo di "record and replay mocking". Maggiori dettagli &lt;a href="http://www.robychechi.it/roby/parrots/first-release"&gt;qui&lt;/a&gt;.&lt;img src="http://blogs.ugidotnet.org/WASP.NET/aggbug/100264.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Roberto Vespa</dc:creator>
            <guid>http://blogs.ugidotnet.org/WASP.NET/archive/2011/08/10/parrots.aspx</guid>
            <pubDate>Wed, 10 Aug 2011 22:56:31 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/WASP.NET/archive/2011/08/10/parrots.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WASP.NET/comments/commentRss/100264.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WASP.NET/services/trackbacks/100264.aspx</trackback:ping>
        </item>
        <item>
            <title>Code Metrics [1]</title>
            <link>http://blogs.ugidotnet.org/WASP.NET/archive/2007/01/19/67671.aspx</link>
            <description>&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;Come annunciato qualche giorno fa,&amp;nbsp;ho iniziato la 
scrittura di una libreria estendibile per calcolare "code metrics". Se qualcuno 
fosse interessato alle motivazioni le trova &lt;A title=qui href="http://blogs.ugidotnet.org/WASP.NET/archive/2007/01/08/65576.aspx" target="" name=""&gt;qui&lt;/A&gt;. Sono arrivato al punto in cui il motore comincia a 
produrre qualche numero &lt;IMG height=19 src="http://www.imhoproject.org/files/allegro.gif" width=19 align=absMiddle border=0&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: black 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: black 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: black 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: gainsboro"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Analyzer&amp;nbsp;az&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;new&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Analyzer();&lt;BR&gt;az.AddAssemblyFile(root&amp;nbsp;+&amp;nbsp;@"A\bin\Debug\A.dll");&lt;BR&gt;az.AddAssemblyFile(root&amp;nbsp;+&amp;nbsp;@"B\bin\Debug\B.dll");&lt;BR&gt;&lt;BR&gt;Analysis&amp;nbsp;a&amp;nbsp;=&amp;nbsp;az.Generate(&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;new&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;InstabilityAssemblyDependenciesWalker());&lt;BR&gt;&lt;BR&gt;AssemblyDescriptor&amp;nbsp;ad&amp;nbsp;=&amp;nbsp;a.Scan.FindAssemblyDescriptor("[A]");&lt;BR&gt;Assert.IsNotNull(ad);&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;double&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;i&amp;nbsp;=&amp;nbsp;ad.DescriptorCounters["Instability"];&lt;BR&gt;Assert.AreEqual(0.75,&amp;nbsp;i);&lt;BR&gt;&lt;BR&gt;ad&amp;nbsp;=&amp;nbsp;a.Scan.FindAssemblyDescriptor("[B]");&lt;BR&gt;Assert.IsNotNull(ad);&lt;BR&gt;i&amp;nbsp;=&amp;nbsp;ad.DescriptorCounters["Instability"];&lt;BR&gt;Assert.AreEqual(1,&amp;nbsp;i);&lt;BR&gt;&lt;/DIV&gt;&lt;/SPAN&gt;
&lt;P&gt;E' possibile scrivere dei "visitor" esterni che navigano i grafi generati 
dall'analisi ed effettuano i loro calcoli. Nell'esempietto il 
"walker"&amp;nbsp;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;InstabilityAssemblyDependenciesWalker&lt;/SPAN&gt; 
utilizza un paio di visitor per il calcolo della metrica&amp;nbsp;&lt;EM&gt;afferent 
coupling&lt;/EM&gt;&amp;nbsp;(&lt;STRONG&gt;Ca&lt;/STRONG&gt;) e di quella &lt;EM&gt;efferent coupling 
&lt;/EM&gt;(&lt;STRONG&gt;Ce&lt;/STRONG&gt;), da cui poi ricava la metrica &lt;EM&gt;instability&lt;/EM&gt;. 
Le definizioni delle suddette metriche si possono trovare per esempio&amp;nbsp;&lt;A title=qui href="http://en.wikipedia.org/wiki/Software_package_metrics" target="" name=""&gt;qui&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Quando avrò un paio di metriche sensate cercherò di scrivere un modulo 
consumatore in grado di generare reportistica xml, e poi metterò il tutto su 
Codeplex. Il nome non l'ho ancora deciso, ho qualche idea ma non sono ancora 
convinto &lt;IMG height=19 src="http://www.imhoproject.org/files/complice.gif" width=19 align=absMiddle border=0&gt;&lt;/P&gt;

&lt;/FONT&gt;
&lt;FONT face=Verdana size=2&gt;&lt;P&gt;&lt;A href="http://imhoproject.org/"&gt;&lt;FONT face=Verdana size=1&gt;powered by IMHO 1.3&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;!-- Powered by IMHO 1.3 (EN) Instant Blogger Copyright (c) 2005 A.Boschin - http://www.imhoproject.org --&gt;
&lt;img src="http://blogs.ugidotnet.org/WASP.NET/aggbug/67671.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Roberto Vespa</dc:creator>
            <guid>http://blogs.ugidotnet.org/WASP.NET/archive/2007/01/19/67671.aspx</guid>
            <pubDate>Fri, 19 Jan 2007 00:12:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/WASP.NET/archive/2007/01/19/67671.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WASP.NET/comments/commentRss/67671.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WASP.NET/services/trackbacks/67671.aspx</trackback:ping>
        </item>
        <item>
            <title>Analisi delle dipendenze e dintorni</title>
            <link>http://blogs.ugidotnet.org/WASP.NET/archive/2007/01/08/65576.aspx</link>
            <description>&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;Da 2-3 mesi ho un'idea che mi frulla per la testa 
relativamente all'analisi delle dipendenze tra assembly e tra tipi. In giro non 
c'è molto che faccia questo tipo di lavoro, fatta eccezione per &lt;A title=NDepend href="http://www.ndepend.com/" target="" name=""&gt;NDepend&lt;/A&gt;&amp;nbsp;che, quando 
pronto (ora è RC1), sarà un gran tool ma sarà anche a pagamento, costerà intorno 
ai 300$ a licenza. Sarebbero soldi assolutamente ben spesi, ma potrebbero 
esistere scenari dove un "motore" di analisi delle dipendenze e più in generale 
del codice IL potrebbe essere interessante anche per scopi non direttamente 
correlati alle metriche e al controllo della qualità del codice. Penso per 
esempio ad un "auto-wiki", un aggeggio in grado di analizzare un set di assembly 
e che possa da essi generare un wiki per documentare o monitorare iterazioni a 
partire da un grafo di navigazione "preconfezionato". In generale l'idea è che 
questo motore possa essere usato con facilità in ambienti dove si fa uso di 
continuous integration e non si ha un gran budget a disposizione...&amp;nbsp; come 
il mio&amp;nbsp;&lt;IMG height=19 src="http://www.imhoproject.org/files/allegro.gif" width=19 align=absMiddle border=0&gt;&lt;/P&gt;
&lt;P&gt;Nelle ultime settimane ho iniziato a scrivere questo "motorino", con l'idea 
di avere un'architettura pluggabile a cui aggiungere moduli di analisi in modo 
semplice. Ad oggi la parte di analisi dell'IL si basa su un set di sorgenti C# 
che ho trovato &lt;A title=qui href="http://plas.fit.qut.edu.au/perwapi/" target="" name=""&gt;qui&lt;/A&gt;, ma&amp;nbsp;sto valutando di passare a&amp;nbsp;&lt;A title=Cecil href="http://www.mono-project.com/Cecil" target="" name=""&gt;Cecil&lt;/A&gt;.&amp;nbsp;La 
parte di analisi e di costruzione dei "grafi" delle dipendenze è a buon punto, 
ora vorrei scrivere qualche plugin di analisi interessante, per esempio per 
calcolare metriche sulle dipendenze afferenti/efferenti, generare il grafico &lt;A title=stability/abstractness href="http://staff.cs.utu.fi/kurssit/Programming-III/PackageDesing.pdf" target="" name=""&gt;stability/abstractness&lt;/A&gt;, generare l'auto-wiki descritto 
sopra. Spero di arrivare presto (3-4 settimane)&amp;nbsp;ad una versione 
considerabile "beta" e metterlo da qualche parte tipo &lt;A title=CodePlex href="http://www.codeplex.com/" target="" name=""&gt;CodePlex&lt;/A&gt;. Se qualcuno di 
voi volesse darmi una mano (ammesso che io riesca a scrivere qualcosa di decente 
&lt;IMG height=19 src="http://www.imhoproject.org/files/complice.gif" width=19 align=absMiddle border=0&gt;) o avesse delle idee faccia un fischio, 
ok?&lt;/P&gt;
&lt;P&gt;Bon, ormai l'ho detto, adesso mi tocca anche farlo...&amp;nbsp; in realtà ho 
scritto questo post quasi per non avere più scuse, e per obbligarmi a trovare il 
tempo per andare avanti con...&amp;nbsp; con...&amp;nbsp; come lo chiamo??? &lt;IMG height=19 src="http://www.imhoproject.org/files/allegro.gif" width=19 align=absMiddle border=0&gt;&lt;/P&gt;

&lt;/FONT&gt;
&lt;FONT face=Verdana size=2&gt;&lt;P&gt;&lt;A href="http://imhoproject.org/"&gt;&lt;FONT face=Verdana size=1&gt;powered by IMHO 1.3&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;!-- Powered by IMHO 1.3 (EN) Instant Blogger Copyright (c) 2005 A.Boschin - http://www.imhoproject.org --&gt;
&lt;img src="http://blogs.ugidotnet.org/WASP.NET/aggbug/65576.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Roberto Vespa</dc:creator>
            <guid>http://blogs.ugidotnet.org/WASP.NET/archive/2007/01/08/65576.aspx</guid>
            <pubDate>Mon, 08 Jan 2007 23:24:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/WASP.NET/archive/2007/01/08/65576.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WASP.NET/comments/commentRss/65576.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WASP.NET/services/trackbacks/65576.aspx</trackback:ping>
        </item>
        <item>
            <title>[OT] Taggato...</title>
            <link>http://blogs.ugidotnet.org/WASP.NET/archive/2007/01/05/65143.aspx</link>
            <description>&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;Essendo stato multi-taggato da &lt;A title=Roberto href="http://blogs.ugidotnet.org/marcellino/archive/2007/01/05/65127.aspx" target="" name=""&gt;Roberto&lt;/A&gt; e &lt;A title=Simone href="http://blogs.ugidotnet.org/sgreci/archive/2007/01/05/64980.aspx" target="" name=""&gt;Simone&lt;/A&gt;, mi tocca... :)
&lt;/P&gt;
&lt;P&gt;
1) Ho iniziato a programmare su un C64 nell'84, in BASIC, ma era più che altro uno scherzo, facevo strani esperimenti che non portavano a niente, e che nemmeno io capivo completamente...  comprai anche un manuale sull'assembler del 6502 e provai a leggerlo, non capivo un tubo ma mi affascinava da morire :)  Il vero inizio si può dire che sia stato 3 anni più tardi, al Poli, Pascal su PC, poi in C, e poi il resto...
&lt;/P&gt;
&lt;P&gt;
2) Sono nato e vissuto in un paesino, per cui pur piacendomi molti sport alla fine ne ho praticato uno solo, l'unico per cui ci fosse una seppur minimale struttura, il calcio. Ho giocato regolarmente per una quindicina d'anni, penso di essere uno dei più piccoli portieri (167cm) ad aver mai giocato in seconda categoria :)  La rottura di un legamento crociato ha posto fine ad una brillante carriera...
&lt;/P&gt;
&lt;P&gt;
3) Tifosissimo Granata e anni fa frequentatore assiduo della curva Maratona, ora soffro a distanza :)
&lt;/P&gt;
&lt;P&gt;
4) Sono felicemente sposato dal 2000, e il nostro è forse uno dei primi matrimoni "figli di Internet": mia moglie è paraguayana e l'ho conosciuta nel 97 su ICQ, nel 99 ho fatto il mio primo viaggio in Paraguay e nel 2000 l'ho portata qui :)  
&lt;/P&gt;
&lt;P&gt;
5) Il mio "nick" Wasp me lo affibbiò il mio prof d'inglese nell'82, e da allora mi è rimasto addosso, sono sicuro di avere più amici che mi chiamano così di quanti non ne abbia che mi chiamano col mio nome di battesimo, sarà divertente (toccando ferro) sentirsi chiamare così a 70 anni :)
&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;
...e adesso?? mmmm... 
&lt;A title=Felice href="http://www.felicepollano.com" target="" name=""&gt;Felice&lt;/A&gt;, &lt;A title=Mitch href="http://blogs.ugidotnet.org/mitch" target="" name=""&gt;Mitch&lt;/A&gt;, &lt;A title=Alessio href="http://creativejuice.wordpress.com/" target="" name=""&gt;Alessio&lt;/A&gt;, &lt;A title=Daniele href="http://www.lodevalm.net" target="" name=""&gt;Daniele&lt;/A&gt;... &lt;A title=Beppe href="http://www.beppegrillo.it/" target="" name=""&gt;Beppe&lt;/A&gt;...  :)
&lt;/P&gt;
&lt;/FONT&gt;&lt;img src="http://blogs.ugidotnet.org/WASP.NET/aggbug/65143.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Roberto Vespa</dc:creator>
            <guid>http://blogs.ugidotnet.org/WASP.NET/archive/2007/01/05/65143.aspx</guid>
            <pubDate>Fri, 05 Jan 2007 16:55:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/WASP.NET/archive/2007/01/05/65143.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WASP.NET/comments/commentRss/65143.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WASP.NET/services/trackbacks/65143.aspx</trackback:ping>
        </item>
        <item>
            <title>Chat sui Design Patterns</title>
            <link>http://blogs.ugidotnet.org/WASP.NET/archive/2006/11/28/57645.aspx</link>
            <description>&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;Questa sera ho partecipato alla chat sui Design Patterns 
organizzata da &lt;A title=Emanuele href="http://blogs.ugidotnet.org/BlogEma/" target="" name=""&gt;Emanuele&lt;/A&gt;. E' stata molto interessante, un esperimento da 
ripetere, la discussione era piuttosto fluida e le opinioni dei partecipanti 
molto interessanti.&lt;/P&gt;
&lt;P&gt;Ne approfitto per rettificare una mia affermazione su Vlissides e il 
pattern&amp;nbsp;Singleton: non era lui a proporne la rimozione dal liblro della 
GoF, o quantomeno non ho più trovato sue affermazioni in merito nonostante ci 
siano suoi scritti critici in merito, la mia convinzione veniva da un'errata 
associazione di idee con un vecchio post di Fowler sul suo blog (commento 
all'OOPSLA2004, &lt;A href="http://www.martinfowler.com/bliki/OOPSLA2004.html"&gt;http://www.martinfowler.com/bliki/OOPSLA2004.html&lt;/A&gt;), 
che riporto, dal quale si evince che Singleton è in generale considerato da 
molti come un pattern da rimuovere tra la lista di quelli "buoni":&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Before the beginning of the conference proper I attended a workshop on 
reappraising the GoF &lt;/EM&gt;&lt;EM&gt;book, ten years after it came out. ...&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;We did a number of discussions around the what next theme, perhaps the 
most interesting one to report was an exercise in considering some to 'vote off 
the island'. People voted on the patterns to indicate which ones they felt 
needed deletion in the current form.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Four patterns were voted off. Factory Method (due to the confusion over 
what it means - the pattern is different to the more common usage of the term), 
Bridge, Flyweight, and Interpreter. Two patterns, Singleton and Chain of 
Responsibility, were split decisions.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;I found the votes and discussions interesting. Of course it's hard to 
really consider this without looking at alternatives. &lt;U&gt;I was surprised that 
Singleton got away with a split decision, considering how unpopular it's become 
amongst my friends&lt;/U&gt;. Most of the others were voted off because people felt 
they were sufficiently uncommon and that other patterns would probably take 
their place, sadly we didn't have time to consider new members.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;/FONT&gt;
&lt;FONT face=Verdana size=2&gt;&lt;P&gt;&lt;A href="http://imhoproject.org/"&gt;&lt;FONT face=Verdana size=1&gt;powered by IMHO 1.3&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;!-- Powered by IMHO 1.3 (EN) Instant Blogger Copyright (c) 2005 A.Boschin - http://www.imhoproject.org --&gt;
&lt;img src="http://blogs.ugidotnet.org/WASP.NET/aggbug/57645.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Roberto Vespa</dc:creator>
            <guid>http://blogs.ugidotnet.org/WASP.NET/archive/2006/11/28/57645.aspx</guid>
            <pubDate>Tue, 28 Nov 2006 00:51:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/WASP.NET/archive/2006/11/28/57645.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WASP.NET/comments/commentRss/57645.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WASP.NET/services/trackbacks/57645.aspx</trackback:ping>
        </item>
        <item>
            <title>La specie &amp;quot;programmatore&amp;quot; e la selezione naturale, meccanismi di autodifesa</title>
            <link>http://blogs.ugidotnet.org/WASP.NET/archive/2006/10/12/51464.aspx</link>
            <description>&lt;FONT face=Verdana &gt;
&lt;P&gt;&lt;FONT size=2&gt;Riflessioni:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Più un programmatore è&amp;nbsp;anche un bravo OO designer, più è un 
valore aggiunto per l'azienda in cui lavora... e più&amp;nbsp;è sostituibile! Essì, 
perchè avrà fatto un buon lavoro, scrivendo codice pulito, manutenibile, 
estendibile, riusabile, che sarà facile far passare di mano. Per cui se lo si 
vuol cacciare lo si caccia, no? &lt;IMG height=19 src="http://www.imhoproject.org/files/complice.gif" width=19 align=absMiddle border=0&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Quando un programmatore lavora da solo su una&amp;nbsp;cosa di 
importanza vitale, e magari ci lavora da solo, e dal punto di vista dell'OOD fa 
un lavoro da cani, se se ne va è una perdita enorme per l'azianda nonostante 
abbia lavorato male! Perchè il suo lavoro risulterà incomprensibile ed 
ingestibile per chi lo erediterà...&amp;nbsp; Quindi, futuro assicurato!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Paradossale...&amp;nbsp; se lavoro bene mi possono mandare via, se 
lavoro male no... &lt;IMG height=19 src="http://www.imhoproject.org/files/allegro.gif" width=19 align=absMiddle border=0&gt;&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;Ovviamente non è così 
(forse..), ma il paradosso è interessante... Mi sembra di essere tornato ai 
tempi dei sofisti greci... &lt;IMG height=19 src="http://www.imhoproject.org/files/allegro.gif" width=19 align=absMiddle border=0&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;

&lt;/FONT&gt;
&lt;FONT face=Verdana size=2&gt;&lt;P&gt;&lt;A href="http://imhoproject.org/"&gt;&lt;FONT face=Verdana size=1&gt;powered by IMHO 1.3&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;!-- Powered by IMHO 1.3 (EN) Instant Blogger Copyright (c) 2005 A.Boschin - http://www.imhoproject.org --&gt;
&lt;img src="http://blogs.ugidotnet.org/WASP.NET/aggbug/51464.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Roberto Vespa</dc:creator>
            <guid>http://blogs.ugidotnet.org/WASP.NET/archive/2006/10/12/51464.aspx</guid>
            <pubDate>Thu, 12 Oct 2006 22:36:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/WASP.NET/archive/2006/10/12/51464.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WASP.NET/comments/commentRss/51464.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WASP.NET/services/trackbacks/51464.aspx</trackback:ping>
        </item>
        <item>
            <title>WCF e DIP, farneticazioni post-corso</title>
            <link>http://blogs.ugidotnet.org/WASP.NET/archive/2006/10/05/50088.aspx</link>
            <description>&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;Sono reduce da un corso su .NET 3.0 tenuto come al 
solito in modo impeccabile dai ragazzi di &lt;A title=DevLeap href="http://www.devleap.it/" target="" name=""&gt;DevLeap&lt;/A&gt;.&amp;nbsp;Le 2 ore di&amp;nbsp;viaggio di ritorno verso 
casa sono state un momento di riflessione sui contenuti del corso, soprattutto 
su WCF (spiegato magistralmente da &lt;A title=Paolo href="http://blogs.devleap.com/paolo/default.aspx" target="" name=""&gt;Paolo&lt;/A&gt;    
          ) e sulle sue 
implicazioni, a mente "calda" e quindi probabilmente con un po' di confusione in testa. 
Lentamente, ho iniziato a farneticare...&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;DIP, Dependency Inversion Principle&lt;/STRONG&gt;: &lt;EM&gt;Abstractions should not depend upon 
details. Details should depend upon abstractions.&lt;/EM&gt; (cit. Robert C. Martin)&lt;/P&gt;
&lt;P&gt;Supponiamo di seguire questo principio. Siamo in un contesto object oriented, e disegneremo 
per esempio un servizio di gestione ordini. Siccome vogliamo applicare il 
suddetto principio, definiamo interfacce opportune, per esempio:&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: black 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: black 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: black 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: gainsboro"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;public&amp;nbsp;interface&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;IOrder&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;string&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Id&amp;nbsp;{&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;get&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;string&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;CustomerId&amp;nbsp;{&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;get&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;;&amp;nbsp;}&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #008000; FONT-FAMILY: Courier New"&gt;//...&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;public&amp;nbsp;interface&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;IOrderService&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IOrder&amp;nbsp;GetOrder(&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;string&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;id);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #008000; FONT-FAMILY: Courier New"&gt;//...&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;}&lt;BR&gt;&lt;/DIV&gt;&lt;/SPAN&gt;
&lt;P&gt;Ora potremo creare le opportune implementazioni delle due interfacce.&amp;nbsp;Potremo con semplicità&amp;nbsp;avere 
differenti&amp;nbsp;implementazioni del servizio, differenti non solo dal 
punto di vista funzionale ma soprattutto infrastrutturale, avendo magari opportuni 
adapter dietro la stessa interfaccia che ci consentano di avere 
il servizio reale in process, piuttosto che remoto via remoting, o ancora sotto COM+...&amp;nbsp; 
e anche in WCF, no?&lt;/P&gt;
&lt;P&gt;Forse no, almeno non in modo "naturale"...&amp;nbsp;Il 
problema nasce da lontano, credo, ed è simile al più discusso problema di 
"impedenza" tra il mondo object-oriented e quello entity-relationship ben 
conosciuto da chi dibatte intorno agli ORM. WCF == SOA, e SOA != OO. Ma anche, 
WCF == .NET, e .NET == OO. Per proprietà transitiva otteniamo un bel WCF != WCF 
&lt;IMG height=19 src="http://www.imhoproject.org/files/allegro.gif" width =   19 align=  absMiddle border =   0 &gt; . Bel problema...&lt;/P&gt;
&lt;P&gt;In WCF il codice precedente potrebbe diventare così 
(chiedo scusa per eventuali imprecisioni, vado a memoria... &lt;IMG height=19 src="http://www.imhoproject.org/files/allegro.gif" width=19 align=absMiddle border=0&gt;       )&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;
&lt;DIV style="BORDER-RIGHT: black 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: black 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: black 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: gainsboro"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;public&amp;nbsp;&lt;FONT color=red&gt;class&lt;/FONT&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Order&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&lt;FONT color=red&gt;public&amp;nbsp;string&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT color=red&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;&lt;FONT color=red&gt;Id&lt;/FONT&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&lt;FONT color=red&gt;public&amp;nbsp;string&lt;/FONT&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;&lt;FONT color=red&gt;CustomerId&lt;FONT color=#400040&gt;;&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #008000; FONT-FAMILY: Courier New"&gt;//...&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;}&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#408080&gt;&lt;STRONG&gt;&lt;EM&gt;[ServiceContract]&lt;BR&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;public&amp;nbsp;interface&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;IOrderService&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#408080&gt;&lt;STRONG&gt;&lt;EM&gt;[OperationContract]&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=red&gt;Order&lt;/FONT&gt;&amp;nbsp;GetOrder(&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;string&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;id);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #008000; FONT-FAMILY: Courier New"&gt;//...&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;}&lt;BR&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;&lt;FONT face=Verdana&gt;Supponendo un 
modello di servizio WCF di tipo RPC (col modello "data contract"&amp;nbsp;dal punto di vista che cerco 
di illustrare forse è&amp;nbsp;anche peggio...), ecco che abbiamo 2 
particolarità:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
  &lt;LI&gt;&lt;SPAN                     style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"  &gt;&lt;FONT   face=Verdana&gt;non possiamo più 
  avere un interfaccia (&lt;FONT face="Courier New"&gt;IOrder&lt;/FONT&gt;) come valore di 
  ritorno, ma dobbiamo avere qualcosa di serializzabile (&lt;FONT   face="Courier New"&gt;Order&lt;/FONT&gt;), quindi una classe concreta: il DIP va un po' 
  a farsi benedire, faccio dipendere un'astrazione da una classe concreta, per 
  di più di dominio e quindi potenzialmente instabile (=   soggetta a cambiamenti), a meno che io 
  non la crei ad hoc per quest'unico scopo, quindi come 
  puro contenitore di campi senza logiche applicative, fattibile ma magari non bellissimo; e 
  comunque la cosa mi costringerebbe probabilmente ad istanziare oggetti ad hoc al 
  solo scopo di trasferire dati, quando magari io i miei dati potrei già 
  averli in una forma adatta ad essere "nascosta" dietro 
  un'interfaccia&lt;/FONT&gt;&lt;/SPAN&gt;
  &lt;LI&gt;&lt;SPAN                     style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"  &gt;&lt;FONT   face=Verdana&gt;abbiamo gli attributi &lt;FONT   face="Courier New"&gt;ServiceContract&lt;/FONT&gt; ed &lt;FONT   face="Courier New"&gt;OperationContract&lt;/FONT&gt; 
  sulla definizione dell'interfaccia del servizio: se quest'interfaccia dovesse 
  essere la stessa dietro cui implemento anche versioni "non WCF" 
  del servizio, essa sarebbe "sporcata" da dettagli concreti, non astratti, 
  dipendenti dal framework applicativo in uso (WCF); di nuovo, un'astrazione che 
  dipende da dettagli concreti, per mantenere la situazione pulita ed 
  allo stesso tempo usare WCF dovrei avere due set paralleli di interfacce 
  di servizio, e di nuovo adattatori in mezzo...&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;&lt;FONT face=Verdana&gt;Come dicevo prima, in realtà tutto credo nasca dal fatto che 
ragionare SOA non è ragionare OO, ma che usiamo OO per implementare SOA. 
Un'interfaccia OO &lt;U&gt;non&lt;/U&gt; è un contratto SOA, ma la facciamo lavorare come se 
lo fosse.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;&lt;FONT face=Verdana&gt;  Nulla di 
nuovo, va bene tutto, in fondo basta saperlo e gestirlo, no? Ma allora il dubbio 
è: quando Microsoft dice che WCF unifica ASMX, WSE, COM+ e Remoting, in realtà ci 
sta un po' sviando... io con Remoting posso&amp;nbsp;avere il servizio remoto 
usando il primo modello di interfacce, quello "ideale", con WCF no, quindi 
WCF rimpiazza Remoting ma con i costi visti sopra, che non è detto che siano 
sempre accettabili. Se poi l'esigenza non è interoperare, bensì remotizzare servizi (.NET su .NET) rimanendo 
su una metafora d'uso che renda "trasparente" la posizione reale del servizio, allora in 
definitiva WCF, che ha un milione di cose che vorrei poter usare, non riesco ad 
usarlo se non attraverso "accrocchi", come&amp;nbsp;due set di interfacce ed 
un ulteriore livello di indirezione e quindi di serializzazione da creare per 
ogni singolo servizio. Una situazione con application server fatto con IIS e 
servizi ospitati via Remoting, è ovviamente realizzabile anche con WCF, ma a mio avviso 
non ha la stessa "pulizia" se il cardine del problema 
è la trasparenza della posizione del servizio rispetto al 
client.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;&lt;FONT face=Verdana&gt;Insomma, a questo 
punto, viva WCF ma...&amp;nbsp; lunga vita anche a Remoting! &lt;IMG height=19 src="http://www.imhoproject.org/files/allegro.gif" width=19 align=absMiddle border=0&gt;&amp;nbsp; Perchè Remoting vivrà ancora a lungo, 
vero?? ...vero?????&amp;nbsp; &lt;IMG height=19 src="http://www.imhoproject.org/files/complice.gif" width=19 align=absMiddle border=0&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;/FONT&gt;
&lt;FONT size=2 &gt;&lt;P&gt;&lt;A href="http://imhoproject.org/"&gt;&lt;FONT face=Verdana size=1&gt;powered by IMHO 1.3&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;!-- Powered by IMHO 1.3 (EN) Instant Blogger Copyright (c) 2005 A.Boschin - http://www.imhoproject.org --&gt;
&lt;img src="http://blogs.ugidotnet.org/WASP.NET/aggbug/50088.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Roberto Vespa</dc:creator>
            <guid>http://blogs.ugidotnet.org/WASP.NET/archive/2006/10/05/50088.aspx</guid>
            <pubDate>Thu, 05 Oct 2006 23:36:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/WASP.NET/archive/2006/10/05/50088.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WASP.NET/comments/commentRss/50088.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WASP.NET/services/trackbacks/50088.aspx</trackback:ping>
        </item>
    </channel>
</rss>