<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.devleap.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" 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/"><channel><title>Alberto Casu</title><link>http://blogs.devleap.com/alberto_casu/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>Parsing e Modifica dell'output stream di Asp.Net</title><link>http://blogs.devleap.com/alberto_casu/archive/2007/10/17/parsing-e-modifica-dell-output-stream-di-asp-net.aspx</link><pubDate>Wed, 17 Oct 2007 21:37:13 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:18010</guid><dc:creator>Teddy076</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=18010</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2007/10/17/parsing-e-modifica-dell-output-stream-di-asp-net.aspx#comments</comments><description>&lt;p&gt;Talvolta può rendersi necessario &amp;quot;trattare&amp;quot; l&amp;#39;output di una applicazione asp.net che non si vuole modificare o, come nel mio caso, di un&amp;#39;applicazione sviluppata da terzi e di cui non si hanno i sorgenti; esempi posono essere l&amp;#39;aggiunta di un footer a tutte le pagine, di tag nell&amp;#39;header, esigenze di highlighting,&amp;nbsp;o come nel mi caso dove l&amp;#39;esigenza era la modifica della modalità secondo la quale vennivano creati tutti gli hyperlink presenti nella pagina, al fine di rimuovere l&amp;#39;eventuale presenza di token di sessione che il sistema automaticamente aggiungeva nella GET&amp;nbsp;(questi parametri infatti penalizzano particolarmente la creazione di siti con requisiti di posizionamento nei motori di ricerca.)&lt;/p&gt; &lt;p&gt;Cercando la tematica nel web, avevo trovato un &lt;a href="http://weblogs.asp.net/despos/archive/2004/06/01/145436.aspx" target="_blank"&gt;post&lt;/a&gt; di &lt;a href="http://weblogs.asp.net/despos/" target="_blank"&gt;Dino Esposito&lt;/a&gt;&amp;nbsp;il quale introduceva ad una possibile strada, la quale leggendo nei commenti, presentava pro e contro.&lt;/p&gt; &lt;p&gt;Ho trovato un buono spunto nel &lt;a href="http://www.codeproject.com/aspnet/CSharpColorizer.asp" target="_blank"&gt;seguente articolo&lt;/a&gt;&amp;nbsp;il quale spiega in maniera abbastanza dettagliata la modalità.&lt;/p&gt; &lt;p&gt;Essenzialmente la logica&amp;nbsp;è quella di inserirsi nella pipeline .net tramite un modulo o un handler, andando ad assegnare un filtro all&amp;#39;oggetto Response del contesto attuale; infatti l&amp;#39;oggetto response presente nel context presenta uno stream in &amp;quot;write-only&amp;quot;, e quindi rende impossibile accedervi e modificarlo.&lt;/p&gt; &lt;p&gt;In maniera più pratica, nel caso di modulo, è necessario intercettare l&amp;#39;evento context_BeginRequest:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;public class&lt;/font&gt; AuthRemoveModule : IHttpModule&lt;br /&gt;{  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;public void&lt;/font&gt; Init(&lt;font color="#00caca"&gt;HttpApplication&lt;/font&gt; context)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.BeginRequest += new&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;font color="#00caca"&gt;EventHandler&lt;/font&gt; &lt;/font&gt;(context_BeginRequest);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;void&lt;/font&gt; context_BeginRequest(&lt;font color="#0000ff"&gt;object&lt;/font&gt; sender, &lt;font color="#00ffff"&gt;&lt;font color="#00caca"&gt;EventArgs&lt;/font&gt; &lt;/font&gt;e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#00caca"&gt;HttpContext&lt;/font&gt; context = ((&lt;font color="#00ffff"&gt;&lt;font color="#00caca"&gt;HttpApplication&lt;/font&gt;&lt;/font&gt;)sender).Context;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.Response.Filter = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#00ffff"&gt;&lt;font color="#00caca"&gt;Filter&lt;/font&gt;&lt;/font&gt;(context.Response.Filter);&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;}&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Nel caso invece di un handler, nel mio caso ho ereditato da System.Web.UI.&lt;font color="#00ffff"&gt;&lt;font color="#00caca"&gt;PageHandlerFactory&lt;/font&gt;&lt;/font&gt; ed ho fatto l&amp;#39;override del metodo GetHandler  &lt;blockquote&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;public class&lt;/font&gt; AuthRemoveHandler : System.Web.UI.PageHandlerFactory&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;public override&lt;/font&gt; IHttpHandler GetHandler(&lt;font color="#00caca"&gt;HttpContext&lt;/font&gt; context, &lt;font color="#0000ff"&gt;string&lt;/font&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; requestType, &lt;font color="#0000ff"&gt;string&lt;/font&gt; virtualPath, &lt;font color="#0000ff"&gt;string&lt;/font&gt; path)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#00ffff"&gt;&lt;font color="#00caca"&gt;IHttpHandler&lt;/font&gt;&lt;/font&gt; handler;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handler = &lt;font color="#0000ff"&gt;base&lt;/font&gt;.GetHandler(context, requestType, virtualPath, path);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.Response.Filter = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#00ffff"&gt;&lt;font color="#00caca"&gt;Filter&lt;/font&gt;&lt;/font&gt;(context.Response.Filter);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;return&lt;/font&gt; handler;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;}&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;In entrambi i casi è stato impostato un filter, che per mia comodità è in una classe dello stesso namespace, il quale si occupa di fare l&amp;#39;override del metodo write.&lt;br /&gt;Ogni qual volta un controllo della pagina effettuerà una write nell&amp;#39;oggetto response del contesto, verrà attivato il filtro&amp;nbsp;affinchè ne faccia le sue opportune elaborazioni.&amp;nbsp; &lt;p&gt;Sostanzialmente, la classe si occupa di salvare in uno stream privato l&amp;#39;output del contesto, in quanto&amp;nbsp;le operazioni di write possono essere più di una.&amp;nbsp;Unica attenzione riguarda la verifica che l&amp;#39;output sia alla sua fine prima di procedere all&amp;#39;elaborazione del testo; in questa implementazione semplificata, banalmente si attende che sia stato scritto il tag &amp;lt;/html&amp;gt;  &lt;blockquote&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;internal class&lt;/font&gt; Filter : Stream&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;private&lt;/font&gt; &lt;font color="#00caca"&gt;Stream&lt;/font&gt; _inner;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;private&lt;/font&gt; &lt;font color="#00caca"&gt;StreamBuilter&lt;/font&gt; _toParse = new &lt;font color="#00caca"&gt;StreamBuilder&lt;/font&gt; (1024);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;internal&lt;/font&gt; Filter(&lt;font color="#00caca"&gt;Stream&lt;/font&gt;  inner)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _inner = inner;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;public override void&lt;/font&gt; Write(&lt;font color="#0000ff"&gt;byte[]&lt;/font&gt; buffer, &lt;font color="#0000ff"&gt;int&lt;/font&gt; offset, &lt;font color="#0000ff"&gt;int&lt;/font&gt; count)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#00ff00"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Salvo la scrittura nello&amp;nbsp;stream&amp;nbsp;privato.&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String piece = &lt;font color="#00caca"&gt;Encoding&lt;/font&gt;.UTF8.GetString(buffer, offset, count);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _toParse.Append(piece);&lt;/p&gt; &lt;p&gt;&lt;font color="#00ff00"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Verifico che sia stato già scritto il tag &amp;lt;/html&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Altrimenti esco&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!&lt;font color="#00caca"&gt;Regex&lt;/font&gt;.IsMatch(piece, &amp;quot;&amp;lt;/html&amp;gt;&amp;quot;, &lt;font color="#00caca"&gt;RegexOptions&lt;/font&gt;.IgnoreCase))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return; &lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#00c600"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Eseguo il match per rimuovere il link&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // es, cerco: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;/font&gt;&lt;font color="#00c600"&gt;auth=QvVB60r%2flnEijA2zEon1SldDD2crcE4QQgFuM7WU%2biA%3d&lt;/font&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String result = Regex.Replace(_toParse.ToString(),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @&amp;quot;auth\=[A-Za-z0-9%]*%[3][d]&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new &lt;font color="#00caca"&gt;MatchEvaluator&lt;/font&gt;(RemoveFullSegment), &lt;font color="#00caca"&gt;RegexOptions&lt;/font&gt;.IgnoreCase);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Byte[] all = Encoding.UTF8.GetBytes(result);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _inner.Write(all, 0, all.GetLength(0));&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String RemoveFullSegment(Match match)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;font color="#00ff00"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Modifico il match come voglio o rimuovo tutto come nel mio caso&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;public override void&lt;/font&gt; Flush()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _inner.Flush();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;public override long&lt;/font&gt; Seek(long offset, SeekOrigin origin)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;return&lt;/font&gt; _inner.Seek(offset, origin);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;public override void&lt;/font&gt; SetLength(long value)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _inner.SetLength(value);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt; public override int&lt;/font&gt; Read(byte[] buffer, int offset, int count)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;return&lt;/font&gt; _inner.Read(buffer, offset, count);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;}&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;In questa maniera è possibile controllare le modalità di rendering della pagina.&lt;/p&gt; &lt;p&gt;Manca all&amp;#39;appello solo il pezzettorelativo alla configurazione del&amp;nbsp;web.config&lt;br /&gt;Il modulo e l&amp;#39;handler sono da utilizzare alternativamente. &lt;br /&gt;Ovviamente il primo va a lavorare solo sulle pagine aspx. Il secondo va a lavorare su tutte le richieste che vengono processate dal runtime .net (ad esempio allegati o altri contenuti che vengono gestiti direttamente dal framework, come ad esempio fanno WSS e MOSS)&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;system.web&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;gt;&lt;font face="Tahoma" color="#000000"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;httpHandlers&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;add&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;verb&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;=&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;*&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;path&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;*.aspx&lt;/span&gt;&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:red;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Alberto.Internet.AuthRemoveHandler&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; validate&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;false&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;httpHandlers&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;httpModules&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;add&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;&lt;span style="color:blue;"&gt;AuthRemoveModule&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;Alberto.Internet&lt;/span&gt;.AuthRemoveModule&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;httpModules&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;system.web&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;font face="Tahoma" color="#000000"&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;/span&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=18010" width="1" height="1"&gt;</description><category domain="http://blogs.devleap.com/alberto_casu/archive/tags/ASP.NET+2.0/default.aspx">ASP.NET 2.0</category></item><item><title>Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint 2007 File Formats v2</title><link>http://blogs.devleap.com/alberto_casu/archive/2007/04/29/microsoft-office-compatibility-pack-for-word-excel-and-powerpoint-2007-file-formats-v2.aspx</link><pubDate>Sun, 29 Apr 2007 21:47:42 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:17230</guid><dc:creator>Teddy076</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=17230</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2007/04/29/microsoft-office-compatibility-pack-for-word-excel-and-powerpoint-2007-file-formats-v2.aspx#comments</comments><description>&lt;p&gt;Segnalo il rilascio di questo pacchetto che, dopo il primo rilasci l'anno scorso con la beta (&lt;a href="http://blogs.devleap.com/igor/archive/2006/07/20/12677.aspx"&gt;segnalato&lt;/a&gt; anche da &lt;a href="http://blogs.devleap.com/igor/"&gt;igor&lt;/a&gt;), è ora stato rilasciato ufficialmente.&lt;/p&gt; &lt;p&gt;Questo aggiornamento faciliterà non poco migrazioni alla nuova versione di office nelle aziende, facendo si che si possano introdurre soluzione avanzate ad alcuni utenti (con office 2007&amp;nbsp;+ WSS) Facendo si che il resto dell'azienda non sia costretta a migrare e possa continuare ad usare la stessa versione di office.&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=941b3470-3ae9-4aee-8f43-c6bb74cd1466&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=941b3470-3ae9-4aee-8f43-c6bb74cd1466&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=941b3470-3ae9-4aee-8f43-c6bb74cd1466&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=17230" width="1" height="1"&gt;</description><category domain="http://blogs.devleap.com/alberto_casu/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Sql 2005 Reporting Service e autenticazione via form</title><link>http://blogs.devleap.com/alberto_casu/archive/2007/03/07/sql-2005-reporting-service-e-autenticazione-via-form.aspx</link><pubDate>Tue, 06 Mar 2007 23:12:53 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:16845</guid><dc:creator>Teddy076</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=16845</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2007/03/07/sql-2005-reporting-service-e-autenticazione-via-form.aspx#comments</comments><description>&lt;p&gt;Stiamo in questi giorni migrando una applicazione di un nostro cliente ad una nuova infrastruttura HW (dopo 5 anni di sudato lavoro i due server HP:&amp;nbsp;LP2000r e TC4100, andranno in pensione, al loro posto due nuovissimi DL360 G5 Xeon 5160). Con l'occasione abbiamo previsto la migrazione del relativo modulo di reporting che avevamo implementato con Sql 2000 reporting service alla versione 2005. Il modulo prevede l'utilizzo di RS con form autentication e la definizione di un'interfaccia custom di selezione dei report e dei relativi parametri di filtro.&lt;/p&gt; &lt;p&gt;L'impostazione di base della nuova versione è sicuramente migliore, nella versione precedente si doveva sempre lavorare molto con i vari parametri di querystring da passare al webservice che di default si trova sotto /reportserver/. I nuovi controlli che sono già disponibili in visualstudio2005, permettono di inserire un controllo sia in un'applicazione web che winform con una semplicità estrema; fino a qui... tutto bene.&lt;/p&gt; &lt;p&gt;C'è una cosa però che mi spiego: nella versione winform (Microsoft.ReportViewer.&lt;strong&gt;WinForms&lt;/strong&gt;) del controllo esiste un bellissimo metodo per effettuare l'autenticazione del report in maniera trasparente per l'utente&lt;br&gt;&lt;code&gt;ReportViewer1.ServerReport.ReportServerCredentials.SetFormsCredentials(null, "UserName", "Password", "DomainName");&lt;/code&gt;&lt;/p&gt; &lt;p&gt;La stesso metodo però, non è disponibile se si usa l'oggetto ServerReport del namespace Microsoft.ReportViewer.&lt;strong&gt;WebForms.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Per ovviare a questa mancanza e autenticare trasparentemente l'utente, esistono degli esempi (pazzeschi come logica) dove la pagina web che esegue il reportviewer, ricevuta una richiesta di report,&amp;nbsp;si deve connette al webservice del reportserver, effettuare l'autenticazione e&amp;nbsp;recuperare il cookie relativo all'autenticazione ricevuto dal webservice; deve infine impostarlo nella response&amp;nbsp;della pagina, inoltrandolo quindi al client chiamante (il browser dell'utente)&amp;nbsp;in modo che i succssivi accessi (che sono diretti) riutilizzino le stesse credenziali per ai dati. Ma io mi dico, non potevano metterci a disposizione lo stesso metodo SetFormsCredentials del winform??&lt;/p&gt; &lt;p&gt;Per chi fosse interessato, un articolo di esempio per questa tecnica date una lettura a questo post: &lt;a title="http://blogs.msdn.com/bimusings/archive/2005/11/04/489100.aspx" href="http://blogs.msdn.com/bimusings/archive/2005/11/04/489100.aspx"&gt;http://blogs.msdn.com/bimusings/archive/2005/11/04/489100.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Riporto inoltre qualche altro puntatore a tema interessante:&lt;br&gt;&lt;a title="http://msdn2.microsoft.com/it-it/library/microsoft.reporting.webforms.ireportservercredentials(VS.80).aspx" href="http://msdn2.microsoft.com/it-it/library/microsoft.reporting.webforms.ireportservercredentials(VS.80).aspx"&gt;http://msdn2.microsoft.com/it-it/library/microsoft.reporting.webforms.ireportservercredentials(VS.80).aspx&lt;/a&gt;&lt;br&gt;&lt;a title="http://www.gotreportviewer.com/" href="http://www.gotreportviewer.com/"&gt;http://www.gotreportviewer.com/&lt;/a&gt;&lt;br&gt;&lt;a title="http://www.devx.com/dotnet/Article/30424" href="http://www.devx.com/dotnet/Article/30424"&gt;http://www.devx.com/dotnet/Article/30424&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=16845" width="1" height="1"&gt;</description><category domain="http://blogs.devleap.com/alberto_casu/archive/tags/SQLServer/default.aspx">SQLServer</category></item><item><title>Monitor e Produttività</title><link>http://blogs.devleap.com/alberto_casu/archive/2007/02/24/monitor-e-produttivit.aspx</link><pubDate>Sat, 24 Feb 2007 14:38:37 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:16780</guid><dc:creator>Teddy076</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=16780</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2007/02/24/monitor-e-produttivit.aspx#comments</comments><description>&lt;p&gt;Come sviluppate? Usate un unico monitor?&lt;br&gt;Un collega qualche tempo fa mi ha inviato qualche link su ricerche effettuate che dimostrerebber l'aumento di efficienza che si ottiene lavorando con monitor multipli. Questo aumento, secondo alcuni, può andare dal 9% al 50%, a seconda della tipologia di lavoro o attività.&lt;/p&gt; &lt;p&gt;Personalmente, da quanto ho attaccato un crt al mio portatile (che era rimasto inutilizzato in ufficio) non ne posso fare più a meno. &lt;br&gt;Voi cosa ne pensate? Se vi va, usate i commenti.&lt;/p&gt; &lt;p&gt;Riporto qualche riferimento:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;b&gt;Microsoft Research&lt;/b&gt;&lt;br&gt;&lt;a href="http://research.microsoft.com/displayArticle.aspx?id=433"&gt;http://research.microsoft.com/displayArticle.aspx?id=433&lt;/a&gt;&lt;br&gt;&lt;i&gt;"&lt;a href="http://research.microsoft.com/users/marycz/"&gt;Mary Czerwinski&lt;/a&gt;, the VIBE research manager, is excited about her group's discoveries, asking, "If you're able to squeeze 10 percent more productivity out, do you know how much money that will save?"&lt;/i&gt;  &lt;li&gt;&lt;b&gt;New York Times &lt;/b&gt;(occorre registrarsi)&lt;br&gt;&lt;a href="http://www.donloper.com/miscellaneous/two_monitors_are_not_enough.html"&gt;http://www.donloper.com/miscellaneous/two_monitors_are_not_enough.html&lt;/a&gt;  &lt;li&gt;&lt;b&gt;CodeBetter.com&lt;br&gt;&lt;/b&gt;&lt;a href="http://codebetter.com/blogs/darrell.norton/archive/2003/11/11/3432.aspx"&gt;http://codebetter.com/blogs/darrell.norton/archive/2003/11/11/3432.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Inoltre recentemente ho visto su un &lt;a href="http://blog.eleutian.com/PermaLink,guid,78155ba4-e525-4c2f-ada4-c5b504aca510.aspx"&gt;post&lt;/a&gt; questo:&lt;/p&gt; &lt;p&gt;&lt;a title="Zooomr Photo Sharing :: Photo Sharing" href="http://blog.eleutian.com/ct.ashx?id=78155ba4-e525-4c2f-ada4-c5b504aca510&amp;amp;url=http%3a%2f%2fbeta.zooomr.com%2fphotos%2f34263%40Z01%2f738808%2f"&gt;&lt;img height="375" alt="workspace" src="http://static.zooomr.com/images/738808_20195e6ec1.jpg" width="500" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=16780" width="1" height="1"&gt;</description></item><item><title>SharePoint Pro Online - LIVE (a free virtual 1-day conference)</title><link>http://blogs.devleap.com/alberto_casu/archive/2007/02/24/sharepoint-pro-online-live-a-free-virtual-1-day-conference.aspx</link><pubDate>Sat, 24 Feb 2007 13:15:41 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:16779</guid><dc:creator>Teddy076</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=16779</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2007/02/24/sharepoint-pro-online-live-a-free-virtual-1-day-conference.aspx#comments</comments><description>&lt;p&gt;Segnalo una conferenza per chi vuole sviluppare su WSS e per gli IT PROS.&amp;nbsp;Interessante anche il formato LIVE e free. &lt;/p&gt; &lt;p&gt;»&amp;nbsp;&lt;a href="http://clients.icservice.co.il/sharepoint/Agenda.asp"&gt;SharePoint Pro Live - Agenda &amp;amp; Registration&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Source: &lt;a href="http://feeds.feedburner.com/~r/AndrewConnell/~3/95119679/5992.aspx"&gt;SharePoint Pro Online - LIVE (a free virtual 1-day conference)&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=16779" width="1" height="1"&gt;</description><category domain="http://blogs.devleap.com/alberto_casu/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>[OT] Italia.it ... Proprio una bella Italia</title><link>http://blogs.devleap.com/alberto_casu/archive/2007/02/22/ot-italia-it-proprio-una-bella-italia.aspx</link><pubDate>Thu, 22 Feb 2007 21:39:15 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:16768</guid><dc:creator>Teddy076</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=16768</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2007/02/22/ot-italia-it-proprio-una-bella-italia.aspx#comments</comments><description>&lt;p&gt;Leggo questo &lt;a href="http://blogs.aspitalia.com/matteo/post1973/Italia.it-Online.aspx"&gt;post&lt;/a&gt; di Matteo (del quale condivido tutti i commenti) e mi dico: "hanno proprio dovuto aspettare che il governo cadesse per pubblicare sta &lt;strong&gt;&lt;em&gt;roba!??!&lt;/em&gt;&lt;/strong&gt;"&lt;/p&gt; &lt;p&gt;Vado su &lt;a href="http://www.italia.it/wps/portal/channels?WCM_GLOBAL_CONTEXT=/wps/wcm/connect/Portale+del+Turismo/Chi+siamo"&gt;chi siamo&lt;/a&gt;, e trovo questa AGGHIACCIANTE pagina... molto leggibile, vero??? Ma è così difficile fare un portale funzionante con 45 MILIONI di Euro??&lt;/p&gt; &lt;p&gt;Per fortuna nomi e cognomi sono proprio li riportati; la pagina è questa:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.casu.it/AlbertoBlog/Images/Italia.it.PropriounabellaItalia_13E5D/image02.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="480" src="http://www.casu.it/AlbertoBlog/Images/Italia.it.PropriounabellaItalia_13E5D/image0_thumb.png" width="522" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=16768" width="1" height="1"&gt;</description></item><item><title>Sharepoint debug</title><link>http://blogs.devleap.com/alberto_casu/archive/2007/02/04/sharepoint-debug.aspx</link><pubDate>Sun, 04 Feb 2007 21:08:30 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:16614</guid><dc:creator>Teddy076</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=16614</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2007/02/04/sharepoint-debug.aspx#comments</comments><description>&lt;p&gt;In un post di &lt;a href="http://andrewconnell.com/blog/Default.aspx"&gt;Andrew Connell&lt;/a&gt; una soluzione per semplificare il processo di debug di WSS o MOSS (che tipicamente può risultare un po' macchinoso dovendosi attaccare al processo in esecuzione), utilizzando &lt;em&gt;AttachToProcess:&lt;/em&gt;&lt;br&gt;&lt;a title="http://andrewconnell.com/blog/archive/2007/01/25/5855.aspx" href="http://andrewconnell.com/blog/archive/2007/01/25/5855.aspx"&gt;http://andrewconnell.com/blog/archive/2007/01/25/5855.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Leggendolo&amp;nbsp;è banale, ma non sempre ci semplifichiamo la vita nello sviluppare&lt;/p&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=16614" width="1" height="1"&gt;</description><category domain="http://blogs.devleap.com/alberto_casu/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Tag Cloud for WSS and MOSS 2007</title><link>http://blogs.devleap.com/alberto_casu/archive/2006/12/04/15218.aspx</link><pubDate>Mon, 04 Dec 2006 12:30:00 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:15218</guid><dc:creator>Teddy076</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=15218</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2006/12/04/15218.aspx#comments</comments><description>&lt;p&gt;Durante il weekend ho scambiato qualche email con &lt;a href="http://blogs.devleap.com/romeopruno/"&gt;Romeo&lt;/a&gt; riguardo un possibile progetto che penso implementeremo con WSS, e per il quale lui si è concesso a supporto validativo della soluzione (Romeo: scherzo ;-)&lt;/p&gt;
&lt;p&gt;Nei ragionamentimi ha proposto l'adozione del Tag Cloud per la catalogazione delle informazioni.&lt;br&gt;Sebbene utilizzo community server e bloggo quò e la, non sapevo cosa la parola "Tag Cloud" volesse dire; in pratica lo uso quotidianamente, spesso però non si conoscono i termini veri delle metodologie/tecnologie che si utilizzano. Per chi non lo sapesse: &lt;a href="http://en.wikipedia.org/wiki/Tag_cloud"&gt;http://en.wikipedia.org/wiki/Tag_cloud&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Venendo al sodo, via &lt;a href="http://weblogs.asp.net/bsimser/default.aspx"&gt;Bil Simser&lt;/a&gt; in questo suo &lt;a href="http://weblogs.asp.net/bsimser/archive/2006/11/04/Tag-Cloud-for-WSS-2007.aspx"&gt;post&lt;/a&gt; ho trovato questa implementazione dei Tag Cloud per WSS e MOSS.&lt;/p&gt;
&lt;p&gt;Questo il link diretto: &lt;a title="http://wsssearch.com/tagging.html" href="http://wsssearch.com/tagging.html"&gt;http://wsssearch.com/tagging.html&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=15218" width="1" height="1"&gt;</description><category domain="http://blogs.devleap.com/alberto_casu/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Far convivere IE6 e IE7</title><link>http://blogs.devleap.com/alberto_casu/archive/2006/12/01/15179.aspx</link><pubDate>Fri, 01 Dec 2006 15:29:00 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:15179</guid><dc:creator>Teddy076</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=15179</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2006/12/01/15179.aspx#comments</comments><description>Via &lt;a href="http://blogs.aspitalia.com/matteo/"&gt;[Matteo Casati]&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Come testare le applicazioni web con entrambi i browser (nessuno ne ha bisogno, vero? ;)&lt;br&gt;
&lt;a href="http://blogs.aspitalia.com/matteo/post1866/IE6-IE7-Singola-Macchina.aspx"&gt;http://blogs.aspitalia.com/matteo/post1866/IE6-IE7-Singola-Macchina.aspx&lt;/a&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=15179" width="1" height="1"&gt;</description></item><item><title>Windows SharePoint Services 3.0 Italiano</title><link>http://blogs.devleap.com/alberto_casu/archive/2006/12/01/15178.aspx</link><pubDate>Fri, 01 Dec 2006 15:24:00 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:15178</guid><dc:creator>Teddy076</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=15178</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2006/12/01/15178.aspx#comments</comments><description>C'è voluto un po', ma finalmente anche la versione italiana è stata rilasciata....&lt;br /&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=it&amp;FamilyID=D51730B5-48FC-4CA2-B454-8DC2CAF93951"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=it&amp;FamilyID=D51730B5-48FC-4CA2-B454-8DC2CAF93951&lt;/a&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=15178" width="1" height="1"&gt;</description><category domain="http://blogs.devleap.com/alberto_casu/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Go! tutti quanti di I-Blog</title><link>http://blogs.devleap.com/alberto_casu/archive/2006/12/01/15162.aspx</link><pubDate>Fri, 01 Dec 2006 00:48:00 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:15162</guid><dc:creator>Teddy076</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=15162</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2006/12/01/15162.aspx#comments</comments><description>&lt;P&gt;Dove ci porteranno tutti questi tormentoni?!?!? :-)&lt;/P&gt;

&lt;P&gt;&lt;A href="http://www.casu.it/AlbertoBlog/Images/GotuttiquantidiIBlog_1894/image05.png"&gt;&lt;IMG height=400 src="http://www.casu.it/AlbertoBlog/Images/GotuttiquantidiIBlog_1894/image0_thumb3.png" width=640 border=0&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=15162" width="1" height="1"&gt;</description></item><item><title>[OT] Tecnologia Attuale e Nuova</title><link>http://blogs.devleap.com/alberto_casu/archive/2006/11/14/14856.aspx</link><pubDate>Mon, 13 Nov 2006 23:27:00 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:14856</guid><dc:creator>Teddy076</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=14856</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2006/11/14/14856.aspx#comments</comments><description>&lt;p&gt;Sono questi giorni di continui annunci di rilasci delle varie RTM, praticamente di tutte le nuove tecnologie MS.&lt;/p&gt;
&lt;p&gt;Una mattina della settimana scorsa, ho preso la metropolitana a Barcellona; ho avuto dei problemi con il biglietto settimanale il quale risultava illeggibille. &lt;/p&gt;&lt;p&gt;Sono bastati 5 secondi di espressioni a motti tra me che parlo inglese ma non spagnolo, ed il "casellante" (da noi si chiama così :) che parlava solo spagnolo, affinchè lui (con il mio biglietto probabilmente smagnetizzato) riuscisse a riconoscerlo tramite la sua console di verifica e riuscisse comunque a rigenerare un nuovo biglietto con le 9 delle 10 corse che avevo ancora disponibili.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tecnologia: &lt;/strong&gt;carta (unico difetto penso non fosse riciclata...) banda magnetica, "gate" di accesso mediamente alti per assicurare l'obliterazione (tutti pagano :) -&gt; Servizio fantastico.&lt;/p&gt;
&lt;p&gt;&lt;img height="240" src="http://blogs.webresults.it/photos/blogimages/images/24/original.aspx" width="179" align="right" border="0"&gt;Una volta uscito, prendo il metrò, (una volta vista questa, ho deciso che a Roma e Milano da ora in poi le chiamerò diversamente), l'autista ad un incrocio che ci teneva fermi da più di un minuto, estrae un telecomando e fa scattare il verde per se (dando quindi priorità al trasporto pubblico)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tecnologia:&lt;/strong&gt; radiocomando per il controllo remoto (mi pare sia qualche anno sia in giro come tecnologia...) e un sistema integrato dei semafori (su quello sono d'accordo che un minimo in più di intelligenza ci va... magari le centraline montano CE :-D )&lt;/p&gt;
&lt;p&gt;Tutto ciò per dire cosa: stanno uscendo tonellate di nuove tecnologie fantastiche, che sicuramente semplificheranno la vita di noi sviluppatori e dei nostri clienti; una considerazione della sera (più per me per ricordarmelo): esistono già molte tecnologie, che se utilizzate propriamente potrebbero già semplificare la vita di tutti noi e dei nostri clienti: il tutto sta nel selezionarla correttamente.&lt;/p&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=14856" width="1" height="1"&gt;</description><category domain="http://blogs.devleap.com/alberto_casu/archive/tags/TechEd-Developers/default.aspx">TechEd-Developers</category></item><item><title>Architettura del SW: IoC and DI</title><link>http://blogs.devleap.com/alberto_casu/archive/2006/11/14/14901.aspx</link><pubDate>Mon, 13 Nov 2006 23:09:00 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:14901</guid><dc:creator>Teddy076</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=14901</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2006/11/14/14901.aspx#comments</comments><description>&lt;p&gt;Interessante articolo su Architettura del software utilizzando Inversion of Control e Dependency Injection.&lt;/p&gt;
&lt;p&gt;&lt;a title="http://msdn2.microsoft.com/en-us/library/aa973811.aspx" href="http://msdn2.microsoft.com/en-us/library/aa973811.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa973811.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Via: &lt;a href="http://blogs.ugidotnet.org/Crad/archive/2006/11/10/54410.aspx"&gt;Marco De Sanctis&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=14901" width="1" height="1"&gt;</description><category domain="http://blogs.devleap.com/alberto_casu/archive/tags/Architettura/default.aspx">Architettura</category></item><item><title>WSS, MOSS e Accessibilità</title><link>http://blogs.devleap.com/alberto_casu/archive/2006/11/12/14887.aspx</link><pubDate>Sat, 11 Nov 2006 23:21:00 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:14887</guid><dc:creator>Teddy076</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=14887</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2006/11/12/14887.aspx#comments</comments><description>&lt;p&gt;Gironzolando fra le varie sessioni riguardo la nuova versione di sharepoint, mi è rimasta una risposta ufficiale non risposta: il nuovo sharepoint è accessibile o no?. &lt;/p&gt;
&lt;p&gt;Da quanto mi ha confermato &lt;a href="http://blog.u2u.info/DottextWeb/patrick/"&gt;Patrick Tisseghem&lt;/a&gt; e alcune persone responsabili di curare l'accessibilità in Microsoft, mi sono fatto l'idea che questa versione ancora non aderisce a tutti i requirements per l'accessibilità comunquemente accettati: parlo di WCAG, Section 508 e quindi legge stanca per noi che siamo in Italia; inoltre supporta solo&amp;nbsp;l' &lt;strong&gt;HTML 4.01&lt;/strong&gt; e non l'&lt;strong&gt;XHTML 1.0 Strict&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;L'eloquente risposta di Patrick è stata: "Per fotuna io non lavoro molto in italia, mi spiace per te&amp;nbsp;;)" mentre la referente MS per l'accessibilità&amp;nbsp;(di cui purtroppo non ho preso nota del nome) mi ha confermato che stanno lavorando strettamente con il team di Office per far si che l'adesione a queste norme venga migliorata.&lt;/p&gt;
&lt;p&gt;Dal mio punto di vista, mi verrebbe da affermare che i due prodotti, salvo customizzazioni&amp;nbsp;non indifferenti&amp;nbsp;su tutto, non possono essere utilizzati nella pubblica amministrazione italiana e nelle scuole; cosa che è un peccato perchè il prodotto è veramente veramente valido.&lt;/p&gt;
&lt;p&gt;Lodevole comunque che al teched ci fosse uno stand intero dedicato all'accessibilità, segno dell'impegno dell'azienda sul tema: speriamo che questo si contretizzi anche&amp;nbsp;sull'evoluzione di questa&amp;nbsp;piattaforma.&lt;/p&gt;
&lt;p&gt;I commenti sono aperti, se qualcuno volesse contraddirmi: sarei io il primo ad esserne felice ;)&lt;/p&gt;
&lt;p&gt;Alberto&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=14887" width="1" height="1"&gt;</description><category domain="http://blogs.devleap.com/alberto_casu/archive/tags/TechEd-Developers/default.aspx">TechEd-Developers</category><category domain="http://blogs.devleap.com/alberto_casu/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Teched - rientro e post solo su thinkmobile :(</title><link>http://blogs.devleap.com/alberto_casu/archive/2006/11/11/14886.aspx</link><pubDate>Sat, 11 Nov 2006 22:56:00 GMT</pubDate><guid isPermaLink="false">723bc1d7-e66b-4192-854d-44fd94d7f9a3:14886</guid><dc:creator>Teddy076</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.devleap.com/alberto_casu/rsscomments.aspx?PostID=14886</wfw:commentRss><comments>http://blogs.devleap.com/alberto_casu/archive/2006/11/11/14886.aspx#comments</comments><description>&lt;p&gt;Sono rientrato ieri sera dal teched (Sufficientemente sfinito). Alla fine non ho avuto il tempo che avrei voluto (tra sessioni, incontri e iniziative) per postare qualche dettaglio ulteriore. &lt;/p&gt;
&lt;p&gt;Lascio però qualche riferimento ad alcuni post sul mio blog su &lt;a href="http://thinkmobile.it/"&gt;thinkmobile.it&lt;/a&gt; che magari possono essere di interesse:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://thinkmobile.it/blogs/alberto/archive/2006/11/09/teched-optimizing-compactframework-performances.aspx"&gt;Optimizing CompactFramework Performances&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://thinkmobile.it/blogs/alberto/archive/2006/11/09/teched-wepos-the-platform-designed-for-point-of-service.aspx"&gt;WEPOS, The platform designed for Point Of Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://thinkmobile.it/blogs/alberto/archive/2006/11/11/teched-mobile-application-blocks.aspx"&gt;Mobile Application Blocks&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Alberto&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=14886" width="1" height="1"&gt;</description><category domain="http://blogs.devleap.com/alberto_casu/archive/tags/Mobility/default.aspx">Mobility</category><category domain="http://blogs.devleap.com/alberto_casu/archive/tags/TechEd-Developers/default.aspx">TechEd-Developers</category></item></channel></rss>