marcellino http://blogs.ugidotnet.org/marcellino/Default.aspx L'UGIdotNET blog di Roberto Marcellino it-IT Roberto Marcellino Subtext Version 2.6.0.0 marcellino http://blogs.ugidotnet.org/images/RSS2Image.gif http://blogs.ugidotnet.org/marcellino/Default.aspx 77 60 Origini dell'Agile Development General programming http://blogs.ugidotnet.org/marcellino/archive/2008/09/09/origini-dellagile-development.aspx <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font face="Tahoma"><font size="2">Sapevate che le tecniche di sviluppo agile si sono ispirate, almeno all’inizio, al sistema produttivo che Toyota aveva adottato già negli anni '50?<o:p></o:p></font></font></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font face="Tahoma"><font size="2">Io no, lo apprendo ora:<o:p></o:p></font></font></p> <p class="MsoListParagraph" style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"><span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri"><span style="mso-list: Ignore"><font face="Tahoma"><font size="2">-<span style="FONT: 7pt &quot;Times New Roman&quot;">          </span></font></font></span></span><a href="http://martinfowler.com/bliki/AgileVersusLean.html"><font face="Tahoma" size="2">http://martinfowler.com/bliki/AgileVersusLean.html</font></a><o:p></o:p></p> <p class="MsoListParagraph" style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"><span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri"><span style="mso-list: Ignore"><font face="Tahoma"><font size="2">-<span style="FONT: 7pt &quot;Times New Roman&quot;">          </span></font></font></span></span><a href="http://it.wikipedia.org/wiki/Toyotismo"><font face="Tahoma" size="2">http://it.wikipedia.org/wiki/Toyotismo</font></a><o:p></o:p></p><img src="http://blogs.ugidotnet.org/marcellino/aggbug/93973.aspx" width="1" height="1" /> Roberto Marcellino http://blogs.ugidotnet.org/marcellino/archive/2008/09/09/origini-dellagile-development.aspx Tue, 09 Sep 2008 13:13:36 GMT http://blogs.ugidotnet.org/marcellino/archive/2008/09/09/origini-dellagile-development.aspx#feedback http://blogs.ugidotnet.org/marcellino/comments/commentRss/93973.aspx View 2008 Game development http://blogs.ugidotnet.org/marcellino/archive/2008/09/08/view-2008.aspx <font face="Tahoma" size="2">Dal 11 al 14 novembre a Torino si terrà la nona edizione di </font><a href="http://www.viewconference.it/"><font face="Tahoma" size="2">View</font></a><font face="Tahoma" size="2">, la conferenza internazionale di computer grafica.</font><img src="http://blogs.ugidotnet.org/marcellino/aggbug/93966.aspx" width="1" height="1" /> Roberto Marcellino http://blogs.ugidotnet.org/marcellino/archive/2008/09/08/view-2008.aspx Mon, 08 Sep 2008 19:42:56 GMT http://blogs.ugidotnet.org/marcellino/archive/2008/09/08/view-2008.aspx#feedback 1 http://blogs.ugidotnet.org/marcellino/comments/commentRss/93966.aspx Hotmail non ama Chrome http://blogs.ugidotnet.org/marcellino/archive/2008/09/04/hotmail-non-ama-chrome.aspx <img height="440" width="647" alt="" src="/images/blogs_ugidotnet_org/marcellino/HotmailOnChrome.jpg" /><img src="http://blogs.ugidotnet.org/marcellino/aggbug/93927.aspx" width="1" height="1" /> Roberto Marcellino http://blogs.ugidotnet.org/marcellino/archive/2008/09/04/hotmail-non-ama-chrome.aspx Thu, 04 Sep 2008 11:13:26 GMT http://blogs.ugidotnet.org/marcellino/archive/2008/09/04/hotmail-non-ama-chrome.aspx#feedback http://blogs.ugidotnet.org/marcellino/comments/commentRss/93927.aspx Flickr Uploadr e Proxy General programming http://blogs.ugidotnet.org/marcellino/archive/2008/08/27/flickr-uploadr-e-proxy.aspx <p><font face="Tahoma" size="2">L'uploader ufficiale di </font><a href="http://www.flickr,com"><font face="Tahoma" size="2">Flickr</font></a><font face="Tahoma" size="2"> è </font><a href="http://www.flickr.com/tools/uploadr/"><font face="Tahoma" size="2">Flickr Uploadr</font></a><font face="Tahoma" size="2">.<br /> Questo tool può smettere di funzionare quando lo si utilizza dietro ad un proxy.<br /> In questo caso è necessario aprire il file &lt;<em>folder di installazione di Flickr&gt;\defaults\preferences\prefs.js</em> ed aggiungere le seguenti linee di codice</font>:<br /> <br /> <font face="Courier New">pref( <font color="#800000">'network.proxy.http'</font>, <font style="BACKGROUND-COLOR: #ffff00">'<em>your.proxy.org</em>'</font> );<br /> pref( <font color="#800000">'network.proxy.http_port'</font>, <em><font style="BACKGROUND-COLOR: #ffff00">port</font></em> );<br /> pref( <font color="#800000">'network.proxy.type'</font>, <font color="#ff0000">1</font> );</font><br /> <br /> <font face="Tahoma" size="2">Ovviamente il tutto a tool non avviato. Al suo riavvio, l'uploader dovrebbe funzionare correttamente.</font></p><img src="http://blogs.ugidotnet.org/marcellino/aggbug/93833.aspx" width="1" height="1" /> Roberto Marcellino http://blogs.ugidotnet.org/marcellino/archive/2008/08/27/flickr-uploadr-e-proxy.aspx Wed, 27 Aug 2008 13:18:59 GMT http://blogs.ugidotnet.org/marcellino/archive/2008/08/27/flickr-uploadr-e-proxy.aspx#feedback 1 http://blogs.ugidotnet.org/marcellino/comments/commentRss/93833.aspx Error Reporting in Windows XP/2003 General programming http://blogs.ugidotnet.org/marcellino/archive/2008/08/25/error-reporting-in-windows-xp2003.aspx <font face="Tahoma" size="2">Windows XP/2003 hanno la prerogativa di poter visualizzare una finestra riassuntiva degli errori che si sono verificati durante un determinato periodo. <a href="http://www.windowsnetworking.com/articles_tutorials/Disable-Error-Reporting-Windows-XP-Server-2003.html">Questo articolo</a> contiene una breve guida su come gestirne la configurazione.</font><img src="http://blogs.ugidotnet.org/marcellino/aggbug/93810.aspx" width="1" height="1" /> Roberto Marcellino http://blogs.ugidotnet.org/marcellino/archive/2008/08/25/error-reporting-in-windows-xp2003.aspx Mon, 25 Aug 2008 15:49:52 GMT http://blogs.ugidotnet.org/marcellino/archive/2008/08/25/error-reporting-in-windows-xp2003.aspx#feedback 1 http://blogs.ugidotnet.org/marcellino/comments/commentRss/93810.aspx A volte anche i Guru sbarellano (IMHO) General programming http://blogs.ugidotnet.org/marcellino/archive/2008/08/21/a-volte-anche-i-guru-sbarellano-imho.aspx <p><font face="Tahoma" size="2">Mi trovo in leggero disaccordo con quanto espresso da </font><a href="http://www.joelonsoftware.com"><font face="Tahoma" size="2">Joel Spolsky</font></a><font face="Tahoma" size="2"> nel suo post </font><a href="http://www.joelonsoftware.com/items/2008/07/01.html"><font face="Tahoma" size="2">Don't hide or disable menu items</font></a><font face="Tahoma" size="2">.<br /> <br /> Secondo me non è corretto lasciare tutti i comandi abilitati, in alcuni casi si rischia davvero di sovraffolare la GUI.<br /> Sì, indicare all'utente il motivo dell'impossibilità di portare a termine un'operazione può essere un modo per rendere il software accattivante ma alla lunga rischia di stufare gli utenti esperti.<br /> <br /> Si potrebbe rendere configurabile un simile comportamento, una modalità <em>novice</em> che preveda i messaggi ed una <em>expert</em> che nasconda/disattivi i comandi non permessi.<br /> In generale, se dovessi visualizzare un messaggio di spiegazione non userei una Message Box: significa un click in più. Al massimo opterei per un tooltip o cose di questo tipo.</font></p><img src="http://blogs.ugidotnet.org/marcellino/aggbug/93771.aspx" width="1" height="1" /> Roberto Marcellino http://blogs.ugidotnet.org/marcellino/archive/2008/08/21/a-volte-anche-i-guru-sbarellano-imho.aspx Thu, 21 Aug 2008 17:29:05 GMT http://blogs.ugidotnet.org/marcellino/archive/2008/08/21/a-volte-anche-i-guru-sbarellano-imho.aspx#feedback 1 http://blogs.ugidotnet.org/marcellino/comments/commentRss/93771.aspx Shader X2...free Game development http://blogs.ugidotnet.org/marcellino/archive/2008/08/04/shader-x2.free.aspx <p><font face="Tahoma" size="2">Il sito </font><a href="http://www.gamedev.net/"><font face="Tahoma" size="2">GameDev.Net</font></a><font face="Tahoma" size="2"> mette a disposizione gratuitamente i PDF dei due libri Shader X2:<br /> - <a target="_blank" href="http://www.gamedev.net/reference/programming/features/shaderx2/Introductions_and_Tutorials_with_DirectX_9.pdf"><font face="Tahoma" size="2">Introductions and Tutorials with DirectX 9.0</font></a><br /> </font>- <a target="_blank" href="http://www.gamedev.net/reference/programming/features/shaderx2/Tips_and_Tricks_with_DirectX_9.pdf"><font face="Tahoma" size="2">Shader Programming Tips and Tricks with DirectX 9.0</font></a></p><img src="http://blogs.ugidotnet.org/marcellino/aggbug/93617.aspx" width="1" height="1" /> Roberto Marcellino http://blogs.ugidotnet.org/marcellino/archive/2008/08/04/shader-x2.free.aspx Mon, 04 Aug 2008 20:19:24 GMT http://blogs.ugidotnet.org/marcellino/archive/2008/08/04/shader-x2.free.aspx#feedback http://blogs.ugidotnet.org/marcellino/comments/commentRss/93617.aspx trueSpace is free http://blogs.ugidotnet.org/marcellino/archive/2008/08/03/93608.aspx <p style="font-family: Tahoma;"><font size="2">Dopo l'acquisizione in febbraio di <a href="http://www.caligari.com">Caligari</a> da parte di Microsoft, è possibile scaricare <span style="font-weight: bold; text-decoration: underline;">gratuitamente</span> il suo prodotto di punta <a href="http://www.caligari.com/products/trueSpace/ts75/brochure/intro.asp?Cate=BIntro">trueSpace</a>, compresi manuali e video-corsi.</font></p><img src="http://blogs.ugidotnet.org/marcellino/aggbug/93608.aspx" width="1" height="1" /> Roberto Marcellino http://blogs.ugidotnet.org/marcellino/archive/2008/08/03/93608.aspx Sun, 03 Aug 2008 19:05:23 GMT http://blogs.ugidotnet.org/marcellino/archive/2008/08/03/93608.aspx#feedback 1 http://blogs.ugidotnet.org/marcellino/comments/commentRss/93608.aspx WF e Workflow Simultanei General programming http://blogs.ugidotnet.org/marcellino/archive/2008/02/23/91333.aspx <font face="Tahoma" style="font-family: Tahoma;">Le seguenti osservazioni sono valide per WF 3.0, non ho ancora fatto prove sul 3.5.</font> <p style="font-family: Tahoma;"><font size="2"> </font></p> <p style="font-family: Tahoma;"><font size="2">Una notizia interessante riportata da MSDN a proposito della proprietà <a name="" target="" href="http://msdn2.microsoft.com/en-us/library/system.workflow.runtime.hosting.defaultworkflowschedulerservice.maxsimultaneousworkflows(VS.85).aspx" title="">MaxSimultaneousWorkflows</a> della classe <a name="" target="" href="http://msdn2.microsoft.com/en-us/library/ms596122(VS.85).aspx" title="">DefaultWorkflowSchedulerService</a> è la sequente:<br /> "<em>The default value for this method is 5 for a single-processor machine, and (int)(5 * Environment.ProcessorCount * .8) for a multiple-processor machine...</em>".<br /> Questo significa che, se non diversamente specificato, il WF Runtime è in grado di eseguire 5 workflow concorrenti su una macchina mono-processore, che diventano 8 con un processore Hyper-Threading.</font></p> <p style="font-family: Tahoma;"><font size="2">Cosa fare se si vuole scavalcare questo limite e non si può/vuole aumentare il numero di processori?<br /> La proprietà MaxSimultaneousWorkflows è read-only, quindi si deve agire al momento della configurazione dei servizi, in uno dei due seguenti modi:</font></p> <ul style="font-family: Tahoma;"><font size="2"> <li>creare esplicitamente l'istanza di DefaultWorkflowSchedulerService utilizzando il <a name="" target="" href="http://msdn2.microsoft.com/en-us/library/ms608162(VS.85).aspx" title="">costruttore</a> che riceve il numero massimo di workfllow simultanei, ed iniettare successivamente il servizio nel WF Runtime. <a name="" target="" href="http://msdn2.microsoft.com/en-us/library/ms734732(VS.85).aspx" title="">Qui</a> c'è un esempio di come fare; </li> <li>configurare il servizio attraverso l'<em>app</em>.config del processo che ospita il runtime. <a name="" target="" href="http://msdn2.microsoft.com/en-us/library/ms734706(VS.85).aspx" title="">Qui</a> c'è l'esempio.</li> </font></ul> <p style="font-family: Tahoma;"><font size="2">Attenzione però: il servizio DefaultWorkflowSchedulerService richiede i thread al thread pool di .NET. Quest'ultimo, se pesantemente sollecitato, può andare incontro a fenomeni di <em>starvation</em> capaci di compromettere il funzionamento dell'applicazione.<br /> In casi del genere, fornendo un proprio servizio derivato da <a name="" target="" href="http://msdn2.microsoft.com/en-us/library/ms614504(VS.85).aspx" title="">WorkflowSchedulerService</a>, si può tentare di applicare una strategia di threading fatta su misura per il problema specifico.</font></p><img src="http://blogs.ugidotnet.org/marcellino/aggbug/91333.aspx" width="1" height="1" /> Roberto Marcellino http://blogs.ugidotnet.org/marcellino/archive/2008/02/23/91333.aspx Sat, 23 Feb 2008 18:16:13 GMT http://blogs.ugidotnet.org/marcellino/archive/2008/02/23/91333.aspx#feedback 1 http://blogs.ugidotnet.org/marcellino/comments/commentRss/91333.aspx WF e Serializzazione General programming http://blogs.ugidotnet.org/marcellino/archive/2007/11/24/89912.aspx <font size="2" face="Verdana"> </font> <font size="2" face="Verdana"> </font> <p style="font-family: Tahoma;"><font size="2">Una classe normalmente contiene uno o più campi i cui valori determinano lo stato delle sue istanze.<br /> Nel caso in cui la classe in esame fosse una <em>WF Activity</em> occorre fare un po' d'attenzione.</font></p> <p style="font-family: Tahoma;"><font size="2">Infatti, durante la vita di una <em>WF Instance</em> può capitare che si debba salvarne lo stato per poterlo recuperare in un secondo momento, anche molto avanti nel tempo e magari su una macchina diversa da quella su cui l'istanza era in esecuzione. Questa operazione, che prende il nome di <span style="font-style: italic;">Passivation</span>, prevede che l'intero WF e le Activity che lo compongono siano serializzabili.</font></p> <p style="font-family: Tahoma;"><font size="2">Un'Activity è serializzabile se i suoi campi lo sono, pena il verificarsi di comportamenti poco chiari.<br /> Ad esempio, l'inizializzazione di un'ipotetico campo di tipo <span style="font-family: Courier New;">MyClass </span> così definito:</font></p> <div style="border: 1px solid black; padding: 5px; background-color: gainsboro;"><span style="font-size: 10pt; color: rgb(0, 0, 255); font-family: Courier New;"><font size="2">public sealed class </font></span><span style="font-size: 10pt; color: rgb(0, 0, 0); font-family: Courier New;"><font size="2" face="Verdana"><span style="font-family: Courier New;">MyClass { }</span><br /> </font></span></div> <p style="font-family: Tahoma;"><font size="2">all'interno di un'Activity del tipo:</font></p> <font size="2" face="Verdana"><font face="Tahoma"> </font></font> <div style="border: 1px solid black; padding: 5px; background-color: gainsboro;"><span style="font-size: 10pt; color: rgb(0, 0, 255); font-family: Courier New;"><font size="2">public sealed class </font></span><span style="font-size: 10pt; color: rgb(0, 0, 0); font-family: Courier New;"><font size="2">MyActivity : Activity<br /> {<br />     MyClass myClass;<br />     <br />     </font></span><span style="font-size: 10pt; color: rgb(0, 128, 0); font-family: Courier New;"><font size="2">//...<br /> </font></span><span style="font-size: 10pt; color: rgb(0, 0, 0); font-family: Courier New;"><font size="2" face="Verdana"><font face="Tahoma"><span style="font-family: Courier New;">}</span><br /> </font></font></span></div> <p style="font-family: Tahoma;"><font size="2">è sufficiente a causare la mancata esecuzione dell'Activity stessa. Infatti, basta inizializzare il campo <span style="font-family: Courier New;">myClass</span> come segue:</font></p> <div style="border: 1px solid black; padding: 5px; background-color: gainsboro;"><span style="font-size: 10pt; color: rgb(0, 0, 255); font-family: Courier New;"><font size="2">protected override void </font></span><span style="font-size: 10pt; color: rgb(0, 0, 0); font-family: Courier New;"><font size="2">Initialize(IServiceProvider provider)<br /> {<br />     </font></span><span style="font-size: 10pt; color: rgb(0, 0, 255); font-family: Courier New;"><font size="2">base</font></span><span style="font-size: 10pt; color: rgb(0, 0, 0); font-family: Courier New;"><font size="2">.Initialize(provider);<br />     </font></span><span style="font-size: 10pt; color: rgb(0, 0, 255); font-family: Courier New;"><font size="2">this</font></span><span style="font-size: 10pt; color: rgb(0, 0, 0); font-family: Courier New;"><font size="2">.myClass = </font></span><span style="font-size: 10pt; color: rgb(0, 0, 255); font-family: Courier New;"><font size="2">new </font></span><span style="font-size: 10pt; color: rgb(0, 0, 0); font-family: Courier New;"><font size="2" face="Verdana"><span style="font-family: Courier New;">MyClass();</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">}</span><br /> </font></span></div> <p style="font-family: Tahoma;"><font size="2">per fare in modo che il metodo <span style="font-family: Courier New;">Execute</span> non venga chiamato e saltando invece al metodo <span style="font-family: Courier New;">Uninitialize</span>.</font></p> <p style="font-family: Tahoma;"><font size="2">I rimedi sono due:</font></p> <ol style="font-family: Tahoma;"> <font size="2"> <li>rendere serializzabile il tipo <span style="font-family: Courier New;">MyClass</span>; </li> <li>se il campo <span style="font-family: Courier New;">myClass</span> può essere ricostruito al termine della de-serializzazione dell'Activity, lo si può rendere non-serializzabile attraverso l'attributo <span style="font-family: Courier New;">NonSerialized</span>; </li> <li>si trasforma il campo <span style="font-family: Courier New;">myClass </span> in una variabile locale del metodo <span style="font-family: Courier New;">Execute</span>, istanziandola quindi ad ogni esecuzione dell'Activity; tale pratica prevede che le istanze di <span style="font-family: Courier New;">MyClass</span> siano veloci da creare, altrimenti si deve ripiegare sui rimedi precedenti.</li> </font></ol> <font size="2" face="Verdana"><a href="http://imhoproject.org"><font size="1" face="Verdana"> </font></a></font><img src="http://blogs.ugidotnet.org/marcellino/aggbug/89912.aspx" width="1" height="1" /> Roberto Marcellino http://blogs.ugidotnet.org/marcellino/archive/2007/11/24/89912.aspx Sat, 24 Nov 2007 20:28:46 GMT http://blogs.ugidotnet.org/marcellino/archive/2007/11/24/89912.aspx#feedback http://blogs.ugidotnet.org/marcellino/comments/commentRss/89912.aspx