<?xml version="1.0" encoding="iso-8859-15"?><feed version="0.3" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns="http://purl.org/atom/ns#" xml:lang="it-it"><title>blogs.ASPItalia.com</title><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/" /><tagline type="text/html">blogs.ASPItalia.com</tagline><id>http://blogs.aspitalia.com/nostromo/</id><generator url="http://feed.aspitalia.com/" version="ASPItalia.com">feed.ASPItalia.com 'Weyoh' 2008.10.11</generator><author><name>blogs.ASPItalia.com</name><url>http://blogs.aspitalia.com/nostromo/</url></author><modified>2008-10-10T16:32:00+00:00</modified><entry><title>Un DataSource per il Profile</title><id>http://blogs.aspitalia.com/nostromo/post2403/DataSource-Profile.aspx</id><created>2008-10-10T16:32:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2403' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;se come me diventare sempre pi&#224; prigri e anche un FindControl diventa faticoso, apprezzere sicuramente i vari xxxDataSource.&lt;/p&gt;&lt;p&gt;ma quando avete a che fare con il Profile? &lt;/p&gt;&lt;p&gt;bhe realizziamone uno ad hoc, cos&#236; non ci perdiamo nessun automatismo &lt;img alt=&quot;smile_teeth&quot; src=&quot;http://spaces.live.com/rte/emoticons/smile_teeth.gif&quot; /&gt;&lt;/p&gt;&lt;code&gt;&lt;p&gt;using System;&lt;br /&gt;using System.Web;&lt;br /&gt;using System.Collections.ObjectModel;&lt;br /&gt;using System.Web.UI;&lt;br /&gt;using System.Web.Profile;&lt;br /&gt;using System.Collections;&lt;/p&gt;&lt;p&gt;namespace MyCustomControl&lt;br /&gt;{&lt;br /&gt;&#160;&#160;&#160; public class ProfileDataSourceControl : DataSourceControl&lt;br /&gt;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected override DataSourceView GetView(string viewName)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new ProfileView(this, viewName);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160; public class ProfileView : DataSourceView&lt;br /&gt;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; private ProfileBase _profile = null;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; private HttpContext _context = null;&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public ProfileView(IDataSource owner, string viewName): base(owner, viewName)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _context = HttpContext.Current;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (_context == null)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; throw new ApplicationException(&amp;quot;Impossibile ricavare il contesto della chiamata&amp;quot;);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile = _context.Profile;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected override System.Collections.IEnumerable ExecuteSelect(DataSourceSelectArguments arguments)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new Collection&lt;profilebase /&gt;() { _profile };&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected override int ExecuteInsert(IDictionary values)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile = ProfileBase.Create(_context.User.Identity.Name, _context.User.Identity.IsAuthenticated);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (DictionaryEntry item in values)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile[item.Key.ToString()] = item.Value;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile.Save();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return 0;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected override int ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (DictionaryEntry item in values)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile[item.Key.ToString()] = values[item.Key.ToString()];&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile.Save();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return 0;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected override int ExecuteDelete(IDictionary keys, IDictionary oldValues)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (DictionaryEntry item in oldValues)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile[item.Key.ToString()] = null;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile.Save();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return 0;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;/code&gt;il codice non &#232; completo, ad esempio non prendo mai in cosiderazione mai i vecchi valori e le chiavi, ma per farlo ci vuole davvero poco&lt;p /&gt;&lt;p&gt;nel lab trovare altri &lt;a onclick=&quot;function anonymous()
{
function anonymous()
{
function anonymous()
{
function anonymous()
{
blankUrl(this.href); return false;
}
}
}
}&quot; href=&quot;http://lab.aspitalia.com/50/ftpdatasource-datasource-ftp.aspx&quot;&gt;xxxDataSource&lt;/a&gt; creati da &lt;a onclick=&quot;function anonymous()
{
function anonymous()
{
function anonymous()
{
function anonymous()
{
blankUrl(this.href); return false;
}
}
}
}&quot; href=&quot;http://www.aspitalia.com/autori/cristian_civera.aspx&quot;&gt;Cristian&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2403/DataSource-Profile.aspx"/><issued>2008-10-10T18:32:00+00:00</issued><modified>2008-10-10T18:32:00+00:00</modified><slash:comments>2</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2403/DataSource-Profile.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2403.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2403</trackback:ping></entry><entry><title>Un Anello per domarli, un Anello per trovarli, Un Anello per ghernirli e nel buio incatenarli,</title><id>http://blogs.aspitalia.com/nostromo/post2381/Anello-Domarli-Anello-Trovarli-Anello-Ghernirli-Buio.aspx</id><created>2008-09-03T23:24:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2381' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;&lt;img align=&quot;baseline&quot; src=&quot;http://byfiles.storage.live.com/y1pYs5ikKNrAg8aiPYYSPWYSjLjomDPOGeZ6-M2Tdlu6dhTQr2kVmtKTv0VMfykovf1&quot; border=&quot;0&quot; hspace=&quot;0&quot; complete=&quot;true&quot; /&gt;&lt;br /&gt;il giorno si sta sempre pi&#249; avvicinando...di che giorno si tratta? del giorno in cui ricevo l'anello... ma con meno poteri...l'anello del matrimonio.&lt;/p&gt;&lt;p&gt;Domenica 7 settembre alle 16:00:00&lt;/p&gt;&lt;p&gt;con tutta probabilit&#224; sar&#242; un&#160;p&#242; assente da giovedi sera, fino alla fine di settembre, a presto!&lt;/p&gt;&lt;p&gt;ciao marco&lt;/p&gt;&lt;p /&gt;&lt;p /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/Off_Topic/&quot; rel=&quot;tag&quot;&gt;Off Topic&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2381/Anello-Domarli-Anello-Trovarli-Anello-Ghernirli-Buio.aspx"/><issued>2008-09-04T01:24:00+00:00</issued><modified>2008-09-04T01:24:00+00:00</modified><slash:comments>20</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2381/Anello-Domarli-Anello-Trovarli-Anello-Ghernirli-Buio.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2381.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2381</trackback:ping></entry><entry><title>Blend ostaggio di WPF</title><id>http://blogs.aspitalia.com/nostromo/post2347/Blend-Ostaggio-WPF.aspx</id><created>2008-07-30T15:20:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2347' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Si Blend &#232; ostaggio di WPF, o meglio del modello a oggetti di WPF.&lt;/p&gt;&lt;p&gt;Quello che un tool dovrebbe fare &#232; nascondere la complessit&#224; di un sistema, o quanto meno renderne agevole l'utilizzo.&lt;/p&gt;&lt;p&gt;Prendiamo un esempio, una semplice animazione, il classico rettangolo che si sposta per lo schermo, in Blend selezionato un KeyFrame e vi trovate le propriet&#224; del KeyFrame: &lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/MS1.jpg&quot;&gt;&#160;fig1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Secondo me &#232; un errore, se selezione un KeyFrame mi aspetto di vedere i valori della propriet&#224; in quell'istante, per far questo, con precisione certosina (azzardatevi a disattivare lo snap sulla TimeLine) spostate la testina di riproduzione sul KeyFrame.&lt;/p&gt;&lt;p&gt;Quello che Blend dovrebbe fare&#160;&#160;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/NV1.jpg&quot;&gt;fig2&lt;/a&gt;&#160;&#232; visualizzare come detto, le propriet&#224; dell'oggetto in quel KeyFrame e permetterne la modifica, di conseguenza spostare le impostazione relative all'accelerazione sotto la TimeLine mostrando l'andamento completo tra i vari KeyFrame in modo da avere una visione completa.&lt;/p&gt;&lt;p&gt;Come accennai tempo &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2316/Volta-Scorda-Mai.aspx&quot;&gt;fa&lt;/a&gt;&#160;non mi va di criticare e basta, mi piace proporre, questo &#232; uno dei tanti (spero) post che far&#242; su Blend&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Expression_Blend/&quot; rel=&quot;tag&quot;&gt;Expression Blend&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Microsoft_Expression/&quot; rel=&quot;tag&quot;&gt;Microsoft Expression&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_Presentation_Foundation/&quot; rel=&quot;tag&quot;&gt;Windows Presentation Foundation&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2347/Blend-Ostaggio-WPF.aspx"/><issued>2008-07-30T17:20:00+00:00</issued><modified>2008-07-30T17:20:00+00:00</modified><slash:comments>5</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2347/Blend-Ostaggio-WPF.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2347.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2347</trackback:ping></entry><entry><title>Vacanze</title><id>http://blogs.aspitalia.com/nostromo/post2348/Vacanze.aspx</id><created>2008-07-30T14:16:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2348' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Pi&#249; o meno &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2102/Ore-Fine.aspx&quot;&gt;in questo periodo dell'anno&lt;/a&gt; mi preparavo per partire per il mare e chiudere l'anno.&lt;/p&gt;&lt;p&gt;Si per me l'anno non finisce a dicembre ma ad agosto, che ci volete fare sono strano (ho comprato un iPhone).&lt;br /&gt;Ma quest'anno niente, solo lavoro.&lt;/p&gt;&lt;p&gt;Tirando un bilancio dell'anno appena concluso :D , non posso fare a meno di notare luci e ombre, tra le luci l'esperienza di &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2316/Volta-Scorda-Mai.aspx&quot;&gt;speaker&lt;/a&gt;, veramente istruttiva, la conferma della nomina &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2201/Anno-MVP.aspx&quot;&gt;MVP&lt;/a&gt;&#160;e la visita a &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2277/MVP-Summit-2008-Settimana.aspx&quot;&gt;Seattle&lt;/a&gt;, per ultima ma non per importanza l'esperienza di lavorare in MTV con &lt;a href=&quot;http://blogs.aspitalia.com/imperugo/&quot;&gt;Ugo&lt;/a&gt;, &lt;a href=&quot;http://blogs.aspitalia.com/daniele/&quot;&gt;Daniele&lt;/a&gt;, &lt;a href=&quot;http://blogs.aspitalia.com/SM15455/&quot;&gt;Stefano&lt;/a&gt; e &lt;a href=&quot;http://blogs.aspitalia.com/novecento/&quot;&gt;Alessio&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Ombre, le ombre sono tutte personali, onestamente sono poco soddisfatto delle &amp;quot;performance&amp;quot; di quest'anno sia sul lavoro sia come collaboratore del network.&lt;/p&gt;&lt;p&gt;Stanco e poco lucido mi distraggo facilmente, tutto questo ha fatto calare la qualit&#224; dei miei contributi sia sul forum sia&#160;&#160;nel lavoro.&lt;/p&gt;&lt;p&gt;Questa scarsa attenzione e fatica mi ha fatto pensare che forse il Developer non fosse il lavoro per me, e magari che le mia erano due braccia rubate all'agricoltura.&lt;/p&gt;&lt;p&gt;Non sono del tutto convito che il realt&#224; non sia cos&#236;, ma ho deciso di continuare, continuare a farvi compagnia che sia piacevole o meno :D&lt;/p&gt;&lt;p&gt;a quelli che possono, buone vacanze!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/Off_Topic/&quot; rel=&quot;tag&quot;&gt;Off Topic&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2348/Vacanze.aspx"/><issued>2008-07-30T16:16:00+00:00</issued><modified>2008-07-30T16:16:00+00:00</modified><slash:comments>0</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2348/Vacanze.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2348.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2348</trackback:ping></entry><entry><title>TrueSpace 7 gratuito</title><id>http://blogs.aspitalia.com/nostromo/post2343/TrueSpace-Gratuito.aspx</id><created>2008-07-24T08:59:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2343' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Tempo fa MS acquista Caligari, &#232; di ieri &lt;a href=&quot;http://blogs.msdn.com/virtualearth/archive/2008/07/23/announcing-truespace-for-virtual-earth-3d-development.aspx&quot;&gt;l'annuncio&lt;/a&gt;&#160;che TrueSpace diventa completamente gratuito e si integra con VE (Virtual Earth).&lt;/p&gt;&lt;p&gt;OK BELLO (scusate mi sto alterando)&lt;/p&gt;&lt;p&gt;qualcuno potrebbe rammentare a MS che WPF offre un supporto 3D,&#160;e che ancora oggi passati 2 anni dall'uscita non esiste un modellatore serio (non mi parlate di ZAM 3D per carit&#224;) che possa aiutare un grafico a creare qualcosa di pi&#249; complesso di un cubo.&lt;/p&gt;&lt;p&gt;detto questo correte a scaricarlo&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_Presentation_Foundation/&quot; rel=&quot;tag&quot;&gt;Windows Presentation Foundation&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2343/TrueSpace-Gratuito.aspx"/><issued>2008-07-24T10:59:00+00:00</issued><modified>2008-07-24T10:59:00+00:00</modified><slash:comments>0</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2343/TrueSpace-Gratuito.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2343.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2343</trackback:ping></entry><entry><title>adesso dico la mia sull'Iphone</title><id>http://blogs.aspitalia.com/nostromo/post2341/Adesso-Dico-Iphone.aspx</id><created>2008-07-22T08:33:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2341' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Prendo spunto da questo post di &lt;a href=&quot;http://community.ugiss.org/blogs/lbianchi/archive/2008/07/22/bellissima-sull-iphone.aspx&quot;&gt;Luca Bianchi&lt;/a&gt;&#160;per dire la mia sull'IPhone che possiedo pi&#249; o meno da Aprile.&lt;/p&gt;&lt;p&gt;Premessa non ricordo soldi spesi peggio.&lt;br /&gt;&lt;br /&gt;Il telefono si &#232; bello da vedere, ma i mille sensori di cui &#232; costellato iphone servono solo per&#160;TRE applicazioni, le foto e ipod e safari.&lt;/p&gt;&lt;p&gt;Per il resto se siete abituati a cambiare l'orientamento del desktop del vostro smartphone, cosa che con un banale Windows Mobile 6 &#232; possibile fare con la pressione di un tasto, scordatevelo non &#232; possibile.&lt;/p&gt;&lt;p&gt;volete scorrere le vostre chiamate recenti mentre telefonate per dare un numero ad un amico? scordatevelo&lt;/p&gt;&lt;p&gt;volete cancellare un file sincronizzato con itunes? scordatevelo&lt;/p&gt;&lt;p&gt;volete sincronizzare la posta? scordatevelo, io ci ho rinunciato, cosa che il mio vecchio HTC Touch facevo senza cliccare nulla.&lt;/p&gt;&lt;p&gt;volete cancellare un singolo sms? scordatevelo dovete cancellare tutta la conversazione, perch&#233; gli sms sono memorizzati a mo di chat.&lt;/p&gt;&lt;p&gt;Che dire, vender&#224; e ha veduto&#160;un botto perch&#233; &#232; apple.&lt;/p&gt;&lt;p&gt;sono ancora indeciso su cosa farne, se usarlo come ferma carte, visto quanto pesa o come tostapane visto quanto scalda dopo 10 minuti di telefonate.&lt;/p&gt;&lt;p&gt;&#160;la tanto decantata durata della batterie, insostituibile se non in un centro assistenza, &#232; solo un illusione anche senza telefonare ogni 2 gg va caricata.&lt;/p&gt;&lt;p&gt;insomma passata l'euforia iniziale passati a giocherellare con le icone non rimane veramente nulla, niente video, niente mms, niente download niente copia&amp;amp;incolla e la lista &#232; veramente lunga...&lt;/p&gt;&lt;p&gt;&#160;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/Off_Topic/&quot; rel=&quot;tag&quot;&gt;Off Topic&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2341/Adesso-Dico-Iphone.aspx"/><issued>2008-07-22T10:33:00+00:00</issued><modified>2008-07-22T10:33:00+00:00</modified><slash:comments>7</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2341/Adesso-Dico-Iphone.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2341.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2341</trackback:ping></entry><entry><title>Come tutto ebbe inizio</title><id>http://blogs.aspitalia.com/nostromo/post2337/Inizio.aspx</id><created>2008-07-21T07:22:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2337' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Visto che &lt;a href=&quot;http://blogs.aspitalia.com/imperugo/post2329/How-Got-Started-Software-Development.aspx&quot;&gt;Ughetto&lt;/a&gt; minaccia di non parlarmi pi&#249; eccomi qu&#224;&#160; raccontarvi la mia poca originale storia di Dev.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;A quale et&#224; hai cominciato a programmare?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Onestamente penso di non aver ancora iniziato, ma ricordi fumosi puntano al periodo C64 appena uscito e dei libroni di Basic.&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;Come hai cominciato a programmare?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Quando me lo hanno chiesto, prima era un hobby poco frequentato pure.&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;Qual?&#232; stato il tuo primo linguaggio di programmazione?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Basic.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Qual?&#232; stato il primo programma vero che hai scritto?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Una form Basic per l'inserimento di qualcosa che non ricordo :D, era un esempio preso da un libro&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Quali linguaggi hai usato da quando hai cominciato a programmare?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Diciamo C#, prima ne ho utilizzati altri tipo Lingo :D :D&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Quando &#232; stato il tuo primo vero lavoro da programmatore?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;C'&#232; poco che sento mio, quindi per adesso risposta non pervenuta&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;Con il senno di poi, rifaresti lo stesso il programmatore? Ricominceresti a programmare?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;No credo di no, sarei un biologo, un ricercatore un archeologo o un astronauta o un XMan.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Se ci fosse una cosa che hai imparato nella tua carriera e che vorresti dire ai giovani programmatori, cosa diresti?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Non programmare il prevedibile ma pensare all'imprevedibile, non escludere l'impossibile perch&#233; spesso &#232; la prima cosa che si verifica.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Qual?&#232; la cosa pi&#249; divertente che hai programmato?&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;L'addio al celibato di un mio amico.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Adesso &#232; l?ora di taggare qualcun?altro...&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;vediamo, il mio collega che &#232; in ferie &lt;a href=&quot;http://blogs.aspitalia.com/novecento/&quot;&gt;novecento&lt;/a&gt;, e poi &lt;a href=&quot;http://blogs.aspitalia.com/az/&quot;&gt;Andrea Zani&lt;/a&gt;, perche ho avuto il piacere di incontrarlo una volta sola &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/Off_Topic/&quot; rel=&quot;tag&quot;&gt;Off Topic&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2337/Inizio.aspx"/><issued>2008-07-21T09:22:00+00:00</issued><modified>2008-07-21T09:22:00+00:00</modified><slash:comments>5</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2337/Inizio.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2337.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2337</trackback:ping></entry><entry><title>un Provider Custom per l'health monitoring</title><id>http://blogs.aspitalia.com/nostromo/post2325/Provider-Custom-Health-Monitoring.aspx</id><created>2008-07-14T23:11:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2325' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;In un &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2317/MailWebEventProvider-Perche-Public-Abstract.aspx&quot;&gt;precedente&lt;/a&gt; post mi lamentavo della scarsa estendibilit&#224; della classe MailWebEventProvider e affini&#160;, alla fine mi sono deciso a implementare un provider completamente personalizzato, pi&#249; semplice, senza buffer.&lt;br /&gt;Ho gi&#224; parlato del &lt;a href=&quot;http://www.aspitalia.com/script/789/Custom-Provider-Health-Monitoring-Output-Formato-RSS.aspx&quot;&gt;Health Monitoring&lt;/a&gt; Lo trovo comodo e quando posso mi piace estenderlo.&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Web.Management;&lt;br /&gt;using System.Web;&lt;br /&gt;using System.Net.Mail;&lt;br /&gt;using System.IO;&lt;br /&gt;using System.Collections.Specialized;&lt;br /&gt;using log4net;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;namespace TopSeed&lt;br /&gt;{&lt;br /&gt;&#160;&#160;&#160; public class MyTemplatedMailWebEventProvidert : WebEventProvider&lt;br /&gt;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #region CAMPI PRIVATI&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; private static readonly object _lockObject = new object();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; private static ILog _logger = LogManager.GetLogger(&amp;quot;TopSeed&amp;quot;);&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #endregion &lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #region PROPRIETA' PUBBLICHE&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public string Subject { get; set; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public string Template { get; set; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public string To { get; set; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public string From { get; set; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #endregion&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #region METODI PUBBLICI&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public MyTemplatedMailWebEventProvidert() { }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public override void Initialize(string name, NameValueCollection config)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; base.Initialize(name, config);&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; lock (_lockObject)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Subject =&#160; HttpUtility.HtmlEncode(GetAndRemoveConfig(&amp;quot;subject&amp;quot;, config));&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Template = GetAndRemoveConfig(&amp;quot;template&amp;quot;, config);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; To = GetAndRemoveConfig(&amp;quot;to&amp;quot;, config);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; From = GetAndRemoveConfig(&amp;quot;from&amp;quot;, config);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public override void ProcessEvent(WebBaseEvent raisedEvent)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (raisedEvent != null)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; HttpContext.Current.Items.Add(&amp;quot;MyTemplatedMailWebEventProvidertCurrentEvent&amp;quot;, raisedEvent);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; SendMail();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public override void Shutdown() { }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public override void Flush() { }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #endregion&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #region METODI PROTETTI&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected string GetMailBody()&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; using (TextWriter stringWriter = new StringWriter())&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; HttpContext.Current.Server.Execute(&amp;quot;~/MailMessage.aspx&amp;quot;, stringWriter);&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return stringWriter.ToString();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected void SendMail()&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; try&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; SmtpClient _smtpClient = new SmtpClient();&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; using (MailMessage _message = new MailMessage(From, To))&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _message.Body = GetMailBody();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _message.IsBodyHtml = true;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _message.Subject = Subject;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _smtpClient.Send(_message);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; catch(Exception ex)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; LogError(ex);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected void LogError(Exception ex)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _logger.Error(&amp;quot;Impossibile inviare la mail&amp;quot;, ex);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected void LogInfo(string message)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _logger.Info(message);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #endregion&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #region METODI SATICI&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public static WebBaseEvent CurrentNotification()&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (HttpContext.Current != null)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return (WebBaseEvent)HttpContext.Current.Items[&amp;quot;MyTemplatedMailWebEventProvidertCurrentEvent&amp;quot;];&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; throw new ApplicationException(&amp;quot;Impossibile recuperare il contesto http corrente&amp;quot;);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #endregion &lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #region METODI PRIVATI&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; private string GetAndRemoveConfig(string key, NameValueCollection config)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (config[key] == null)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; throw new ApplicationException(string.Format(&amp;quot;Impossibile recuperare il campo {0} delle impostazioni&amp;quot;, key));&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string _value = config[key];&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; config.Remove(key);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return _value;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #endregion&lt;br /&gt;&#160;&#160;&#160; }&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;il funzionamento &#232; simile alla classe &lt;span id=&quot;nsrTitle&quot;&gt;TemplatedMailWebEventProvider, &#232; possibile specificare una pagina aspx da utilizzare come template, ed &#232; possibile recuperare l'evento corrente per estrarne le informazioni&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework/&quot; rel=&quot;tag&quot;&gt;.NET Framework&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_2.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 2.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET/&quot; rel=&quot;tag&quot;&gt;ASP.NET&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2325/Provider-Custom-Health-Monitoring.aspx"/><issued>2008-07-15T01:11:00+00:00</issued><modified>2008-07-15T01:11:00+00:00</modified><slash:comments>2</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2325/Provider-Custom-Health-Monitoring.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2325.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2325</trackback:ping></entry><entry><title>MailWebEventProvider  perche sei public e abstract</title><id>http://blogs.aspitalia.com/nostromo/post2317/MailWebEventProvider-Perche-Public-Abstract.aspx</id><created>2008-07-10T15:30:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2317' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;in questi giorni di calura, volevo utilizzare l' health monitoring per inviare una semplice mail, all'inserimento di un nuovo record in un db.&lt;/p&gt;&lt;p&gt;non mi dilungo troppo, volevo estendere la classe TemplatedMailWebEventProvider perch&#233; ho la necessit&#224; di cambiare il subject della mail.&lt;/p&gt;&lt;p&gt;questo non &#232; stato possibile perch&#232; TemplatedMailWebEventProvider &#232; sealed, ok mi dico io, no problem, estendo MailWebEventProvider che &#232; public e abstract.&lt;/p&gt;&lt;p&gt;ok la guida dice chiaramente:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;scioccamente penso: ma io devo fare solo due cosine semplici, istanziare tramite reflection TemplatedMailWebEventProvider, perch&#233; il costruttore &#232; internal e utilizzarne le caratteriste di &amp;quot;templating&amp;quot; che mi piacciono.&lt;/p&gt;&lt;p&gt;ok diciamo subito che non &#232; possibile, visto che i metodi abstract della classe MailWebEventProvider sono anche internal, quindi per me inutilizzabili.&lt;/p&gt;&lt;p&gt;quindi alla fine della fiera mi tocca ricreare una classe nuova da&#160;zero con le stesse caratteristiche di TemplatedMailWebEventProvider e tutto questo solo per cambiare il subject della mail.&lt;/p&gt;&lt;p&gt;ok magari sono io pigro e sfaticato, ma la versione asp.net 2.0 &#232; sar&#224; ricordata da tutti per aver introdotto l'architettura&#160;a provider, ok il provider c'&#232;, le classi pure, solo che non puoi estenderle nemmeno per le cose semplici&lt;/p&gt;&lt;p&gt;ditemi sbaglio io?&lt;/p&gt;&lt;p&gt;visto che ci sono rifar&#242; una classe simile a TemplatedMailWebEventProvider&#160;o la istanzier&#242; in un provider che estende WebEventProvider, devo ancora pensare a quale soluzione adottare&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework/&quot; rel=&quot;tag&quot;&gt;.NET Framework&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_2.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 2.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET/&quot; rel=&quot;tag&quot;&gt;ASP.NET&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2317/MailWebEventProvider-Perche-Public-Abstract.aspx"/><issued>2008-07-10T17:30:00+00:00</issued><modified>2008-07-10T17:30:00+00:00</modified><slash:comments>1</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2317/MailWebEventProvider-Perche-Public-Abstract.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2317.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2317</trackback:ping></entry><entry><title>la prima volta non si scorda mai</title><id>http://blogs.aspitalia.com/nostromo/post2316/Volta-Scorda-Mai.aspx</id><created>2008-07-10T12:13:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2316' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Per prima volta intendo la prima volta da speaker, ad un evento come i &lt;a href=&quot;http://www.communitydays.it/&quot;&gt;Community Days&lt;/a&gt;, per prima cosa voglio ringraziare &lt;a href=&quot;http://blogs.aspitalia.com/daniele/&quot;&gt;Daniele&lt;/a&gt; per la Fiducia, affidarsi a due toscanacci &#232; sempre un incognita, come seconda cosa ringrazio le persone presenti alla sessione loro non sapevano che eravamo toscanacci :D.&lt;/p&gt;&lt;p&gt;tra i presenti un ringraziamento particolare va a &lt;a href=&quot;http://www.aspitalia.com/autori/Marco_De_Sanctis.aspx&quot;&gt;Marco&lt;/a&gt; (non me stesso) valido collaboratore di SilverlightItalia, a &lt;a href=&quot;http://www.aspitalia.com/autori/Riccardo_Golia.aspx&quot;&gt;Riccardo&lt;/a&gt;&#160;architetto super scalare :D, per i compliementi che ci hanno fatto, fanno molto piacere e ci spingono a fare meglio la prossima volta.&lt;/p&gt;&lt;p&gt;Un ringraziamento a &lt;a href=&quot;http://www.aspitalia.com/autori/Cristian_Civera.aspx&quot;&gt;Cicciolo&lt;/a&gt;&#160;solo per il fatto di essere cicciolo :D, e a &lt;a href=&quot;http://www.aspitalia.com/autori/Stefano_Mostarda.aspx&quot;&gt;Stefano&lt;/a&gt;&#160;con cui riesco sempre a scovare nuove parole....bhe non vi dico che tipo di nuove parole :D.&lt;/p&gt;&lt;p&gt;Infine le mie sensazioni, nessuno lo sa ma sono un incosciente sono pronto a dire si a qualsiasi cosa, quindi sono arrivato al giorno dell'evento abbastanza tranquillo almeno apparentemente.&lt;/p&gt;&lt;p&gt;ma l'ascella pezzata dopo i primi 30 minuti sta li ad dirmi che la tensione c'era, ma tutto sommato &#232; andata bene, mi sono divertito e spero che al pubblico sia piaciuto il materiale che abbiamo prodotto insieme ad &lt;a href=&quot;http://www.aspitalia.com/autori/Alessio_Leoncini.aspx&quot;&gt;Alessssssio&lt;/a&gt; (fatevi dire da lui perche ci sono tante s).&lt;/p&gt;&lt;p&gt;ci sono state alcune domande, ma ne voglio riportare solo una:&lt;/p&gt;&lt;p&gt;D: pensi che sar&#224; mai introdotto l'intellisense in Blend, intendo nella vista XAML?&lt;/p&gt;&lt;p&gt;R: io spero che la vista XAML sparisca, perche un tool che si propone ad un pubblico di designer e creativi non deve e non pu&#242; obbligarli a fare le cose a &amp;quot;mano&amp;quot;.&lt;/p&gt;&lt;p&gt;questa &#232; una prima critica che muovo a Blend, ma siccome non mi piace criticare a&#160; vanvera nei prossimi giorni proporr&#242; quello che secondo me dovrebbe essere Blend, con testo e immagini.&lt;/p&gt;&lt;p&gt;concludo ringraziando davvero tutti &#232; sempre un piacere passare anche 5 minuti con voi&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2316/Volta-Scorda-Mai.aspx"/><issued>2008-07-10T14:13:00+00:00</issued><modified>2008-07-10T14:13:00+00:00</modified><slash:comments>2</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2316/Volta-Scorda-Mai.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2316.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2316</trackback:ping></entry><entry><title>un visualizzatore di eccezioni parte 1: helper</title><id>http://blogs.aspitalia.com/nostromo/post2291/Visualizzatore-Eccezioni-Parte-1-Helper.aspx</id><created>2008-05-28T12:56:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2291' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;a questo&lt;a href=&quot;http://www.aspitalia.com/script/848/Gestire-Intercettare-Eccezioni-Controlli-SqlDataSource.aspx&quot;&gt; link&lt;/a&gt;&#160;trovare un eccellente esempio di come gestire l'eccezioni sollevate dal controllo SqlDataSource.&lt;/p&gt;&lt;p&gt;Analogamente&#160;&#232; possibile gestire l'eccezioni sollevate dai controlli ObjectDataSource&#160;e LinqDataSource.&lt;/p&gt;&lt;p&gt;Utilizzando molto, ognuno dei suddetti controlli, mi sono trovato presto a affrontare la manutenzione di una marea di pagine contenente la logica di visualizzazione delle eccezioni.&lt;/p&gt;&lt;p&gt;ho deciso quindi di realizzare un WebControl che associato a un DataSourceControl potesse intercettare l'eccezioni e visualizzare.&lt;/p&gt;&lt;p&gt;per prima cosa ci creeremo una serie di metodi helper, per associare runtime un gestore all'evento , in particolare realizzeremo degli Extension Methods.&lt;/p&gt;&lt;code&gt;&lt;p /&gt;&lt;p&gt;using System;&lt;br /&gt;using System.Web;&lt;br /&gt;using System.Web.UI;&lt;br /&gt;using System.Web.UI.WebControls;&lt;br /&gt;using System.Reflection;&lt;br /&gt;using ReflectionExtension;&lt;/p&gt;&lt;p&gt;namespace ReflectionExtension&lt;br /&gt;{&lt;br /&gt;&#160;&#160;&#160; public static class ObjectReflectionExtension&lt;br /&gt;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public static void AddHanlder(this Object objectEventRaiser, object objectBoundToDelegate, string methodName, string eventName)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (objectEventRaiser == null | objectBoundToDelegate == null | string.IsNullOrEmpty(methodName) | string.IsNullOrEmpty(eventName))&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; throw new ArgumentNullException();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Type _dataSourceType = objectEventRaiser.GetType();&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; EventInfo _eventInfo = _dataSourceType.GetEvent(eventName);&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (_eventInfo == null)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; throw new ArgumentException(string.Format(&amp;quot;Impossibile trovare l'evento {0}&amp;quot;, eventName));&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; MethodInfo _methodInfo = objectBoundToDelegate.GetType().GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance);&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (_eventInfo == null)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; throw new ArgumentException(string.Format(&amp;quot;Impossibile trovare il metodo {0}&amp;quot;, methodName));&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Delegate _delegate = Delegate.CreateDelegate(_eventInfo.EventHandlerType, objectBoundToDelegate, _methodInfo);&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _eventInfo.AddEventHandler(objectEventRaiser, _delegate);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public static bool IsNull(this Object item)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return item == null;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160; }&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;namespace WebControlReflectionExtension&lt;br /&gt;{&lt;br /&gt;&#160;&#160;&#160; public static class WebControlReflectionExtension&lt;br /&gt;&#160;&#160;&#160; {&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public static void AddInsertedHandler(this DataSourceControl dataSourceControl, object objectBoundToDelegate, string methodName)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ObjectReflectionExtension.AddHanlder(dataSourceControl, objectBoundToDelegate, methodName, &amp;quot;Inserted&amp;quot;);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public static void AddDeleteddHandler(this DataSourceControl dataSourceControl, object objectBoundToDelegate, string methodName)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ObjectReflectionExtension.AddHanlder(dataSourceControl, objectBoundToDelegate, methodName, &amp;quot;Deleted&amp;quot;);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public static void AddUpdateddHandler(this DataSourceControl dataSourceControl, object objectBoundToDelegate, string methodName)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ObjectReflectionExtension.AddHanlder(dataSourceControl, objectBoundToDelegate, methodName, &amp;quot;Updated&amp;quot;);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160; }&lt;br /&gt;}&lt;/p&gt;&lt;p /&gt;&lt;/code&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework/&quot; rel=&quot;tag&quot;&gt;.NET Framework&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.5/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET/&quot; rel=&quot;tag&quot;&gt;ASP.NET&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Custom_Control/&quot; rel=&quot;tag&quot;&gt;Custom Control&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2291/Visualizzatore-Eccezioni-Parte-1-Helper.aspx"/><issued>2008-05-28T14:56:00+00:00</issued><modified>2008-05-28T14:56:00+00:00</modified><slash:comments>4</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2291/Visualizzatore-Eccezioni-Parte-1-Helper.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2291.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2291</trackback:ping></entry><entry><title>StringValidatorAttribute ConfigurationProperty e DefaultValue</title><id>http://blogs.aspitalia.com/nostromo/post2290/StringValidatorAttribute-ConfigurationProperty-DefaultValue.aspx</id><created>2008-05-27T22:40:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2290' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;se come me amate fare una sezione di configurazione custom per ogni tipo di impostazione, fate attenzione quando decorare una propriet&#224; con StringValidatorAttribute, in particolare quando specificate la lunghezza minima di una stringa impostando la propriet&#224; &lt;span class=&quot;identifier&quot;&gt;MinLength.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;identifier&quot;&gt;a causa del particolare sistema di parserizzazione del file di configurazione e inizializzazione&lt;/span&gt;&#160;degli oggetti &amp;quot;nati&amp;quot; da questo processo, la validazione &#232; destinata a fallire miseramente se non si specifica mediante l'attributo ConfigurationProperty un valore predefinito che soddisfi i requisiti di validazione.&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [ConfigurationProperty(&amp;quot;Type&amp;quot;,DefaultValue = &amp;quot;object&amp;quot;)]&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [StringValidator(InvalidCharacters = &amp;quot;&lt;a href=&quot;mailto:~!-@#$%^&amp;amp;*(){}/;'\&amp;quot;|\\&quot;&gt;~!-@#$%^&amp;amp;*(){}/;'\&amp;quot;|\\&lt;/a&gt;&amp;quot;, MinLength= 1, MaxLength = 60)]&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public string Type&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; get&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return (string)base[&amp;quot;Type&amp;quot;];&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework/&quot; rel=&quot;tag&quot;&gt;.NET Framework&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_2.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 2.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET/&quot; rel=&quot;tag&quot;&gt;ASP.NET&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET_2.0/&quot; rel=&quot;tag&quot;&gt;ASP.NET 2.0&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2290/StringValidatorAttribute-ConfigurationProperty-DefaultValue.aspx"/><issued>2008-05-28T00:40:00+00:00</issued><modified>2008-05-28T00:40:00+00:00</modified><slash:comments>0</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2290/StringValidatorAttribute-ConfigurationProperty-DefaultValue.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2290.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2290</trackback:ping></entry><entry><title>Modificare i CSS Friendly Control Adapters </title><id>http://blogs.aspitalia.com/nostromo/post2289/Modificare-CSS-Friendly-Control-Adapters.aspx</id><created>2008-05-27T20:44:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2289' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;in particolare mi occuper&#242; del WebControl Menu.&lt;/p&gt;&lt;p&gt;Utilizzando l'adapter il funzionamento del menu &#232; completamente basato su css, cosa buona e giusta, ma solo fino a quando desideriamo che il men&#249; si apra al passaggio del mouse.&lt;/p&gt;&lt;p&gt;ma naturalmente presto il vostro progetto richieder&#224; che il menu su apra al click, la cosa non &#232; difficile da realizzare, per prima cosa&#160;modifichiamo il css in modo da evitare la visualizzazione del menu al passaggio del mouse, cambiamo questo:&lt;/p&gt;&lt;p&gt;ul.AspNet-Menu li:hover ul,&lt;br /&gt;ul.AspNet-Menu li li:hover ul,&lt;br /&gt;ul.AspNet-Menu li li li:hover ul,&lt;br /&gt;ul.AspNet-Menu li.AspNet-Menu-Hover ul,&lt;br /&gt;ul.AspNet-Menu li li.AspNet-Menu-Hover ul,&lt;br /&gt;ul.AspNet-Menu li li li.AspNet-Menu-Hover ul&lt;br /&gt;{&lt;br /&gt;&#160;&#160;&#160; visibility: visible;&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;in :&lt;/p&gt;&lt;p&gt;ul.AspNet-Menu li.AspNet-Menu-Hover ul,&lt;br /&gt;ul.AspNet-Menu li li.AspNet-Menu-Hover ul,&lt;br /&gt;ul.AspNet-Menu li li li.AspNet-Menu-Hover ul&lt;br /&gt;{&lt;br /&gt;&#160;&#160;&#160; visibility: visible;&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;&#232; il momento di passare al javascript, apriamo il file MenuAdapter.js, in particolare nella funzione SetHover__AspNetMenu modifichiaro la registrazione dell'event handler:&lt;/p&gt;&lt;p&gt;if(items[k].className.indexOf(menuWithChildren) &amp;gt; -1 &amp;amp; items[k].parentNode.className == topmostClass)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (items[k].addEventListener)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; items[k].addEventListener('click', Click__AspNetMenu, false); &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else if (items[k].attachEvent)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; items[k].onclick = function() { Click__AspNetMenuie(this);} &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;il passo successivo &#232; creare i due gestori per l'evento click:&lt;br /&gt;&lt;br /&gt;function Click__AspNetMenu(e)&lt;br /&gt;{&lt;br /&gt;&#160;&#160;&#160; if(typeof(e) != &amp;quot;undefined&amp;quot;)&lt;br /&gt;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; e.stopPropagation();&lt;br /&gt;&#160;}&lt;br /&gt;&#160;&#160;&#160; Unhover__AspNetMenu(openTab);&lt;br /&gt;&#160;&#160;&#160; openTab = this;&lt;br /&gt;&#160;&#160;&#160; Hover__AspNetMenu(this);&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;function Click__AspNetMenuie(element)&lt;br /&gt;{&lt;br /&gt;&#160; var e = window.event;&lt;br /&gt;&#160;&#160;&#160;&#160; Unhover__AspNetMenu(openTab);&lt;br /&gt;&#160;&#160;&#160; openTab = element;&lt;br /&gt;&#160;&#160;&#160; Hover__AspNetMenu(element);&lt;br /&gt;&#160;&#160;&#160; e.cancelBubble=true;&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;infine &#232; necessario modificare nelle funzioni Unhover__AspNetMenu e Hover__AspNetMenu la condizione per la creazioni di quelli elementi che permettono di aggirare alcune limitazioni di ie6&lt;/p&gt;&lt;p&gt;&#160;if (isPreIE7 &amp;amp; typeof(element) != &amp;quot;undefined&amp;quot;)&lt;/p&gt;&lt;p&gt;ed infine non dimentichiamoci di associare al click anche la chiusura del menu correntemente aperto&lt;/p&gt;&lt;p&gt;document.onclick = function() { Unhover__AspNetMenu(openTab);} &lt;/p&gt;&lt;p&gt;nei prossimi giorni dovrei riuscire a inserire tutto nel Lab&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework/&quot; rel=&quot;tag&quot;&gt;.NET Framework&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_2.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 2.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET/&quot; rel=&quot;tag&quot;&gt;ASP.NET&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/CSS/&quot; rel=&quot;tag&quot;&gt;CSS&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Custom_Control/&quot; rel=&quot;tag&quot;&gt;Custom Control&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2289/Modificare-CSS-Friendly-Control-Adapters.aspx"/><issued>2008-05-27T22:44:00+00:00</issued><modified>2008-05-27T22:44:00+00:00</modified><slash:comments>0</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2289/Modificare-CSS-Friendly-Control-Adapters.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2289.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2289</trackback:ping></entry><entry><title>Create i vostri giochi in Silverlight con Popfly</title><id>http://blogs.aspitalia.com/nostromo/post2281/Create-Giochi-Silverlight-Popfly.aspx</id><created>2008-05-04T20:28:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2281' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;il 30 aprile &#232; stata ufficialmente &lt;a href=&quot;http://blogs.msdn.com/johnmont/archive/2008/04/30/the-new-popfly-game-creator.aspx&quot;&gt;presentata&lt;/a&gt;&#160;la versione alpha di Popfly Game Creator, un abiente di sviluppo per videogame&#160;interamente sviluppato utilizzando Silverlight.&lt;/p&gt;&lt;p&gt;i giochi creati naturalmente utilizzano Silverlight, &#232; possibile partire da zero, scegliere uno scenario, l'attori , le azioni e i comportamenti, o in alternativa partire da una numerose template, che mostrano una grande variet&#224; di tipologie di giochi.&lt;/p&gt;&lt;p&gt;non resta che scatenare la fantasia partendo dal sito &lt;a href=&quot;http://www.popfly.com/&quot;&gt;Popfly.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/Silverlight/&quot; rel=&quot;tag&quot;&gt;Silverlight&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/XAML/&quot; rel=&quot;tag&quot;&gt;XAML&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2281/Create-Giochi-Silverlight-Popfly.aspx"/><issued>2008-05-04T22:28:00+00:00</issued><modified>2008-05-04T22:28:00+00:00</modified><slash:comments>0</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2281/Create-Giochi-Silverlight-Popfly.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2281.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2281</trackback:ping></entry><entry><title>quasi babbo di photoshop passa a MS</title><id>http://blogs.aspitalia.com/nostromo/post2278/Quasi-Babbo-Photoshop-Passa-MS.aspx</id><created>2008-05-01T09:01:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2278' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;la &lt;a href=&quot;http://www.news.com/8301-13580_3-9929989-39.html?tag=nefd.top&quot;&gt;notizia&lt;/a&gt; non &#232; recentissima, &#232; di qualche giorno fa, uno dei programmatori pi&#249; anziani, in termini di esperienza, in quanto si occupata dei Photoshop fin dalla versione 2.0, lascia Adobe per passare a MS...&lt;/p&gt;&lt;p&gt;speriamo che tutta questa esperienza non vada dispersa ma che serva a migliorare Design e Blend...attendo fiducioso&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/Expression_Blend/&quot; rel=&quot;tag&quot;&gt;Expression Blend&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Expression_Design/&quot; rel=&quot;tag&quot;&gt;Expression Design&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Expression_Media/&quot; rel=&quot;tag&quot;&gt;Expression Media&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Microsoft_Expression/&quot; rel=&quot;tag&quot;&gt;Microsoft Expression&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Off_Topic/&quot; rel=&quot;tag&quot;&gt;Off Topic&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2278/Quasi-Babbo-Photoshop-Passa-MS.aspx"/><issued>2008-05-01T11:01:00+00:00</issued><modified>2008-05-01T11:01:00+00:00</modified><slash:comments>0</slash:comments><wfw:comments>http://blogs.aspitalia.com/nostromo/post2278/Quasi-Babbo-Photoshop-Passa-MS.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2278.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2278</trackback:ping></entry></feed>