To bit, or not to bit http://blogs.ugidotnet.org/maxoly/Default.aspx Gli sproloqui tecnologici di uno pseudo informatico it-IT Massimo Oliviero Subtext Version 2.6.0.0 To bit, or not to bit http://blogs.ugidotnet.org/images/RSS2Image.gif http://blogs.ugidotnet.org/maxoly/Default.aspx 77 60 Prime impressioni su Visual Studio 2010 RC1 e primo bug Programmazione http://blogs.ugidotnet.org/maxoly/archive/2010/02/09/prime-impressioni-su-visual-studio-2010-rc1-e-primo-bug.aspx <p>Come molti di voi già sanno ieri è uscito Visual Studio 2010 RC1 per gli abbonati msdn. Potete trovare un <a href="http://weblogs.asp.net/scottgu/archive/2010/02/08/vs-2010-net-4-release-candidate.aspx">articolo esauriente sul blog di ScottGu</a>. Questa release, più che nuove feature, dovrebbe apportare notevoli migliorie sul lato performace.</p> <p>In effetti, dai primi test effettuati, l’apertura e l’utilizzo di una soluzion di circa 80 progetti risulta essere molto più veloce della beta2. La nuova interfaccia WPF ora sembra rispondere meglio ai comandi e anche lavorando con due monitor le finestre e i menù si attivano molto più velocemente di prima. O almeno questa è la mia sensazione dopo un pomeriggio di prove. :-D</p> <p>E ora la nota dolente. Purtroppo anche la RC1 (come la Beta2) soffre di un <a href="http://bit.ly/bIk1j0?r=td">fastidiosissimo bug</a> che non permette di compilare correttamente un progetto WinForm. L’errore che mostra è:</p> <blockquote> <p>The specified task executable "ResGen.exe" could not be run. The filename or extension is too long <br />Warning: <br />The command-line for the "ResGen" task is too long. Command-lines longer than 32000 characters are likely to fail. Try reducing the length of the command-line by breaking down the call to "ResGen" into multiple calls with fewer parameters per call. <br />I have been able to build other projects without any problems. I cannot yet reproduce the issue on any other projects. </p> </blockquote> <p>Se anche a voi capita un problema simile gli sviluppatori Microsoft suggeriscono un paio di workaround che sono:</p> <ol> <li>switch to target 4.0. Obviously that isn't a workaround for a serious project, but it fixes it for experimentation. <br /></li> <li>I didn't try this. Go into &lt;fxdir&gt;\microsoft.common.targets and find the GenerateResource task. Make a backup of the file first. Change the Condition attribute to <br />            Condition="'%(EmbeddedResource.Type)' == 'Resx' and '%(EmbeddedResource.GenerateResource)' != 'false' and '%(EmbeddedResource.Identity)' != ''"</li> </ol> <p>Per niente convincenti. Vabbè dopotutto è un RC1 no?</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b5de9589-3e0b-4e37-9567-411e25a59dab" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Visual+Studio+2010" rel="tag">Visual Studio 2010</a></div><img src="http://blogs.ugidotnet.org/maxoly/aggbug/97976.aspx" width="1" height="1" /> Massimo Oliviero http://blogs.ugidotnet.org/maxoly/archive/2010/02/09/prime-impressioni-su-visual-studio-2010-rc1-e-primo-bug.aspx Tue, 09 Feb 2010 23:06:49 GMT http://blogs.ugidotnet.org/maxoly/archive/2010/02/09/prime-impressioni-su-visual-studio-2010-rc1-e-primo-bug.aspx#feedback 843 http://blogs.ugidotnet.org/maxoly/comments/commentRss/97976.aspx http://blogs.ugidotnet.org/maxoly/services/trackbacks/97976.aspx Da CruiseControl.Net a TeamCity Programmazione http://blogs.ugidotnet.org/maxoly/archive/2009/11/30/da-cruisecontrol.net-a-teamcity.aspx <p>Dopo un lungo periodo di silenzio ritorno a scrivere sul blog di ugi un post dedicato ad una mia recente esperienza. Ovvero il passaggio da CruiseControl.Net a <a href="http://www.jetbrains.com/teamcity/index.html">TeamCity</a>. Devo dire che il passaggio è stato rapido e indolore. <a href="http://www.jetbrains.com/teamcity/index.html">TeamCity 4.5</a> si installa velocemente e senza troppo problemi. Dopo un breve sguardo alla documentazione ho migrato il database dal formato nativo a SQL Server senza intoppi. La configurazione di nuovi progetti è veramente semplice e il supporto nativo alle solution VS2005 e VS2008 ne semplifica enormemente la configurazione. </p> <p>In generale <a href="http://www.jetbrains.com/teamcity/index.html">TeamCity</a> è risultato decisamente superiore rispetto a CruiseControl.net, sia in termini di funzionalità che di usabilità. Grazie <a href="http://www.jetbrains.com/teamcity/features/build_grid.html#Multiple_Build_Agents">all’architettura ad Agent</a> è possibile distribuire il carico di lavoro su n server. Il tutto per rendere più efficiente e veloce il processo di build. Un enorme punto a favore di <a href="http://www.jetbrains.com/teamcity/index.html">TeamCity</a> è l’interfaccia web che ti permette di configurare ogni aspetto, anche quello più complesso, in modo semplice e immediato. L’interfaccia web utilizza AJAX in modo massivo e questo rende tutto molto più fluido e funzionale. Insomma no more XML!</p> <p>In fine la licenza. <a href="http://www.jetbrains.com/teamcity/index.html">TeamCity</a> è un prodotto proprietario della <a href="http://www.jetbrains.com/">JetBrains</a> (la stessa di ReSharper). Nonostante questo <a href="http://www.jetbrains.com/teamcity/buy/buy.jsp#professional">TeamCity Professional</a> è scaricabile gratuitamente e supporta fino a 20 utenti con 20 build configuration e al massimo 3 agent registrati. Per un team di medie dimensioni come il mio è più che sufficiente.</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:72f6185d-6f2b-4c25-90bc-44b3db1873e5" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/TeamCity" rel="tag">TeamCity</a>,<a href="http://technorati.com/tags/Cruisecontrol.net" rel="tag">Cruisecontrol.net</a></div><img src="http://blogs.ugidotnet.org/maxoly/aggbug/97636.aspx" width="1" height="1" /> Massimo Oliviero http://blogs.ugidotnet.org/maxoly/archive/2009/11/30/da-cruisecontrol.net-a-teamcity.aspx Mon, 30 Nov 2009 13:17:01 GMT http://blogs.ugidotnet.org/maxoly/archive/2009/11/30/da-cruisecontrol.net-a-teamcity.aspx#feedback 423 http://blogs.ugidotnet.org/maxoly/comments/commentRss/97636.aspx http://blogs.ugidotnet.org/maxoly/services/trackbacks/97636.aspx Interface not derived from IUnknown Programmazione http://blogs.ugidotnet.org/maxoly/archive/2009/05/26/interface-not-derived-from-iunknown.aspx <p>Da qualche giorno sto lavorando all’integrazione tra il nostro prodotto in .net e un documentale scritto in <em>Visual Basic 6</em>. L’integrazione si posa fondamentalmente su una libreria COM che mi permette di accedere alle funzionalità base dell’applicativo. A parte le solite magagne e gli sbattimenti dell’interop, da qualche giorno Visual Studio mi avverte che:</p> <blockquote> <p>Warning    1    Type library importer has encountered an interface not derived from IUnknown: '_HiddenInterface'.</p> </blockquote> <p><a href="http://forums.asp.net/p/981567/1256042.aspx">A quanto pare gli oggetti COM</a> o una delle sue interfacce non implementano correttamente l’interfaccia <strong>IUnknown</strong>, generando di conseguenza il warning in .net. Il problema è che non ho a disposizione i sorgenti della libreria, e una richiesta di modifica direttamente al produttore è impensabile. Mi domando se esistono soluzioni alternative a questo problema.</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:79ff643a-c787-4d13-a011-3ba449219089" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Interop" rel="tag">Interop</a>,<a href="http://technorati.com/tags/COM" rel="tag">COM</a>,<a href="http://technorati.com/tags/Visual+Basic+6" rel="tag">Visual Basic 6</a>,<a href="http://technorati.com/tags/IUnknow" rel="tag">IUnknow</a></div><img src="http://blogs.ugidotnet.org/maxoly/aggbug/96298.aspx" width="1" height="1" /> Massimo Oliviero http://blogs.ugidotnet.org/maxoly/archive/2009/05/26/interface-not-derived-from-iunknown.aspx Tue, 26 May 2009 17:41:53 GMT http://blogs.ugidotnet.org/maxoly/archive/2009/05/26/interface-not-derived-from-iunknown.aspx#feedback 2212 http://blogs.ugidotnet.org/maxoly/comments/commentRss/96298.aspx http://blogs.ugidotnet.org/maxoly/services/trackbacks/96298.aspx SQL Server table function e i default parameter Programmazione http://blogs.ugidotnet.org/maxoly/archive/2009/05/21/sql-server-table-function-e-i-default-parameter.aspx <p>Oggi mi è capitata una cosa nuova. Ho creato in sql server una table-valued function con un parametro di tipo datetime. Nel parametro ho impostato il default a GETDATE in modo che se un client chiama la funzione con il default viene impostato la data corrente. </p> <p>La function è fatta grosso modo così:</p> <div> <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">CREATE</span> <span style="color: #0000ff">FUNCTION</span> MyFunction ( @DataValidita <span style="color: #0000ff">AS</span> DATETIME = GETDATE ) <span style="color: #0000ff">RETURNS</span> <span style="color: #0000ff">TABLE</span> <span style="color: #0000ff">AS</span> <span style="color: #0000ff">RETURN</span> ( <span style="color: #0000ff">SELECT</span> T.Colonna <span style="color: #0000ff">FROM</span> dbo.Tabella T <span style="color: #0000ff">WHERE</span> T.DataValidita = @DataValidita )</pre> </div> <p>Mentre la chiamata cosà:</p> <div> <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">SELECT</span> * <span style="color: #0000ff">FROM</span> dbo.MyFunction(<span style="color: #0000ff">default</span>);</pre> </div> <p>Ma mentre nel primo caso, cioè nella creazione della function, sql server non mi ritorna errori, nel secondo caso, cioè nella chiamata, mi comunica in modo categorico che:</p> <blockquote> <p>Msg 241, Level 16, State 1, Line 1 <br />Conversion failed when converting datetime from character string.</p> </blockquote> <p>Questo è dovuto al fatto che il parametro @DataValidita assume un valore particolare che non mi è chiaro. Se però eseguo la chiamata con un valore, allora tutto va a buon fine. Dopo qualche ricerca ho capito che nelle function non è possibile utilizzare funzioni non deterministiche come appunto risulta essere GETDATE per i valori di default di un parametro. Dato che la valorizzazione alla data corrente per il parametro @DataValidita è un requisito nel caso in cui la funzione sia chiamata con il default mi sono inventato una soluzione alternativa, in questo modo:</p> <div> <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">CREATE</span> <span style="color: #0000ff">FUNCTION</span> MyFunction ( @DataValidita <span style="color: #0000ff">AS</span> DATETIME = <span style="color: #0000ff">NULL</span> ) <span style="color: #0000ff">RETURNS</span> <span style="color: #0000ff">TABLE</span> <span style="color: #0000ff">AS</span> <span style="color: #0000ff">RETURN</span> ( <span style="color: #0000ff">SELECT</span> T.Colonna <span style="color: #0000ff">FROM</span> dbo.Tabella T <span style="color: #0000ff">WHERE</span> T.DataValidita = <span style="color: #0000ff">CASE</span> <span style="color: #0000ff">WHEN</span> (@DataValidita <span style="color: #0000ff">IS</span> <span style="color: #0000ff">NULL</span>) <span style="color: #0000ff">THEN</span> GETDATE() <span style="color: #0000ff">ELSE</span> @DataValidita <span style="color: #0000ff">END</span> )</pre> </div> <p>Probabilmente non è la soluzione più elegante, ma questo piccolo trucchetto mi ha risolto il problema. Domanda, esistono soluzioni alternative e magari più eleganti?</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7f63635d-8c03-43eb-b9d0-11303eac124f" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/SQL+Server" rel="tag">SQL Server</a></div><img src="http://blogs.ugidotnet.org/maxoly/aggbug/96259.aspx" width="1" height="1" /> Massimo Oliviero http://blogs.ugidotnet.org/maxoly/archive/2009/05/21/sql-server-table-function-e-i-default-parameter.aspx Thu, 21 May 2009 15:44:47 GMT http://blogs.ugidotnet.org/maxoly/archive/2009/05/21/sql-server-table-function-e-i-default-parameter.aspx#feedback 2315 http://blogs.ugidotnet.org/maxoly/comments/commentRss/96259.aspx http://blogs.ugidotnet.org/maxoly/services/trackbacks/96259.aspx Visual Studio 2010 e ReSharper 5.0 Programmazione News http://blogs.ugidotnet.org/maxoly/archive/2009/05/19/visual-studio-2010-e-resharper-5.0.aspx <p>Quando penso a Visual Studio penso subito a Resharper. Considero quest’ultimo ormai come parte integrate dell’ide di sviluppo. Un add-on direi più che essenziale nella produttività quotidiana. Ebbene, con il recente <a href="http://blogs.msdn.com/italy/archive/2009/05/18/visual-studio-2010-beta-1-disponibili-i-download-per-i-sottoscrittori-msdn.aspx">rilascio della beta 1 di Visual Studio 2010</a> potremmo, tra pochi giorni, provare la beta del nuovo Resharper 5.0. Sul <a href="http://blogs.jetbrains.com/dotnet/2009/05/preview-of-resharper-for-visual-studio-2010-coming-soon/">blog del team di sviluppo</a>, infatti, possiamo ammirare i primi screenshot dell’ultima versione già integrata in VS2010 in attesa di una preview prevista per giugno.</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4399f433-251c-416e-9292-5e09310f14ac" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Visual+Studio+2010" rel="tag">Visual Studio 2010</a>,<a href="http://technorati.com/tags/Resharper" rel="tag">Resharper</a></div><img src="http://blogs.ugidotnet.org/maxoly/aggbug/96230.aspx" width="1" height="1" /> Massimo Oliviero http://blogs.ugidotnet.org/maxoly/archive/2009/05/19/visual-studio-2010-e-resharper-5.0.aspx Tue, 19 May 2009 11:43:41 GMT http://blogs.ugidotnet.org/maxoly/archive/2009/05/19/visual-studio-2010-e-resharper-5.0.aspx#feedback 627 http://blogs.ugidotnet.org/maxoly/comments/commentRss/96230.aspx http://blogs.ugidotnet.org/maxoly/services/trackbacks/96230.aspx 3 cose da fare Programmazione News http://blogs.ugidotnet.org/maxoly/archive/2009/05/11/3-cose-da-fare.aspx <p>Visto le recenti novità, mi segno qui tre cose da fare nei prossimi giorni. </p> <ol> <li>Provare <a href="http://sourceforge.net/project/showfiles.php?group_id=124416&amp;package_id=136235">Castle Windsor 2.0 RTM</a> (finalmente!)</li> <li>Provare il nuovo <a href="http://nunit.com/index.php?p=download">NUnit 2.5</a> (anche questo finalmente)</li> <li>Aggiornare <a href="http://www.jetbrains.com/resharper/download/index.html">Resharper alla nuova versione 4.5.1</a></li> </ol> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e22b1d0d-8361-4170-ac56-e6535dd7cb88" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Castle+Windsor" rel="tag">Castle Windsor</a>,<a href="http://technorati.com/tags/NUnit" rel="tag">NUnit</a>,<a href="http://technorati.com/tags/Resharper" rel="tag">Resharper</a></div><img src="http://blogs.ugidotnet.org/maxoly/aggbug/96152.aspx" width="1" height="1" /> Massimo Oliviero http://blogs.ugidotnet.org/maxoly/archive/2009/05/11/3-cose-da-fare.aspx Mon, 11 May 2009 11:10:25 GMT http://blogs.ugidotnet.org/maxoly/archive/2009/05/11/3-cose-da-fare.aspx#feedback 921 http://blogs.ugidotnet.org/maxoly/comments/commentRss/96152.aspx http://blogs.ugidotnet.org/maxoly/services/trackbacks/96152.aspx Hello Ugi! News http://blogs.ugidotnet.org/maxoly/archive/2009/05/05/hello-ugi.aspx <p>Un saluto a tutta la grande community UgiDotNet che seguo con interesse da tanto tempo. Nella migliore tradizione questo è il primo di, spero, una lunga serie di post tematici. Spero di poter contribuire in modo decisivo alla crescita dell’user group italiano partecipando anche agli eventi annuali. Come molti di voi sono anche io un programmatore appassionato del mondo .NET e di tutto quello che ci gira attorno.  Per il momento è tutto.</p> <p>Dunque, al via questa nuova avventura ;-)</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:95b3b4cf-e23d-4856-825d-69609952f453" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Hello+World" rel="tag">Hello World</a>,<a href="http://technorati.com/tags/UgiDotNet" rel="tag">UgiDotNet</a></div><img src="http://blogs.ugidotnet.org/maxoly/aggbug/96110.aspx" width="1" height="1" /> Massimo http://blogs.ugidotnet.org/maxoly/archive/2009/05/05/hello-ugi.aspx Tue, 05 May 2009 13:18:21 GMT http://blogs.ugidotnet.org/maxoly/archive/2009/05/05/hello-ugi.aspx#feedback 18 http://blogs.ugidotnet.org/maxoly/comments/commentRss/96110.aspx http://blogs.ugidotnet.org/maxoly/services/trackbacks/96110.aspx