.NET

C++ Express: compatibilità, terminazioni di linea e codifica Unicode

Nelle ultime settimane mi sono imbattuto in tre features di Visual C++ Express. Sono caratteristiche poco "appariscenti", sulle quali sarebbe sprecato fare marketing, ma che si sono rivelate particolarmente utili. 1. E' possibile aprire vecchi progetti per Visual C++ 6. La procedura di conversione è pressochè indolore. Naturalmente, a causa degli allineamenti agli standard C++, è possibile che il nuovo compilatore generi messaggi di avviso, indicando che vengono usati costrutti sintattici deprecati. 2. Durante l'apertura di un file, l'editor rileva automaticamente se la convenzione di terminazione linea è consistente e, in caso contrario, propone un allineamento con lo standard per Windows, Unix o Macintosh. 3. Per impostazione definita i file...

posted @ giovedì 24 novembre 2005 16:33 | Feedback (0)

NUnit 2.2.3

E' stato rilasciato NUnit 2.2.3, una nuova "iteration release", che include significative correzioni di bugs e nuove asserzioni. E' possibile leggere le release notes e scaricarlo a questo indirizzo. Sebbene sia stato compilato con Visual Studio 2003, funziona sul runtime di .NET 2.0. In realtà, anche con le versioni precedenti di NUnit, previa modifica del file di configurazione, non ho riscontrato problemi. La buona notizia è che, passando una semplice opzione a linea di comando, è ora possibile eseguire NUnit su una qualunque versione del framework disponibile sulla macchina. Altrimenti, per testare assembly creati con Visual Studio 2005, è sufficiente decommentare la sezione "startup" del file di configurazione "nunit-gui.exe.config". Happy testing! :)

posted @ sabato 19 novembre 2005 16:57 | Feedback (0)

Cleanup deterministico e finalizers in C++/CLI

Vediamo il seguente codice. Viene definito un reference type (typeid = Person), con un metodo publico, ReadMessage. Al suo interno viene utilizzato in tre modi diversi un oggetto di tipo System::IO::StreamReader, classe che implementa System::IDisposable. public ref class Person{public:    Person (String^ name, String^ surname)    {    }    void ReadMessage (String^ path)    {        Stream^ stream = (Person::typeid)->Assembly->GetManifestResourceStream (path);#ifdef MANUAL_DETERMINISTIC_CLEANUP        // I manually call the distructor.        StreamReader^ reader = gcnew StreamReader (stream);        Console::WriteLine (reader->ReadLine ());        delete reader;#endif#ifdef AUTOMATIC_CLEANUP        // Garabace collector will call the dispose methods before finalizing the reader.        StreamReader^ reader = gcnew StreamReader (stream);        Console::WriteLine (reader->ReadLine ());#endif#ifdef AUTOMATIC_DETERMINISTIC_CLEANUP        // The compiler automatic inserts a method call to dispose.        // The reference type instance has value semantic in this context.        StreamReader reader (stream);        Console::WriteLine (reader.ReadLine ());#endif    }}; Decompiliamo con Reflector e vediamo come apparirebbe, nei diversi casi, il metodo ReadMessage se fosse scritto in C#. Nel primo caso reader è stato dichiarato come un handle, al quale abbiamo è stato assegnato un oggetto allocato sul managed heap tramite l'operatore gcnew . Dopo essere stato utilizzato, l'oggetto viene "distrutto" con l'operatore delete. Tale operatore viene sostanzialmente ...

posted @ venerdì 6 maggio 2005 02:05 | Feedback (0)

Membership Provider for Firebird

Ispirato e istruito dalla sessione di Andrea, spero di poter iniziare questa settimana questo piccolo progetto. Si tratta innanzitutto di creare uno script per la creazione del database e poi codare il membership provider. Appena lo comincio apro un nuovo workspace su GotDotNet!

posted @ lunedì 2 maggio 2005 12:33 | Feedback (0)

Enterprise Library for Firebird: moved

Ho deciso di spostare il progetto su GotDotNet. Pubblicherò lì news (con feeds RSS!), nuove releases, etc.. Ci sono anche un forum e un bug tracker, che naturalmente potete utilizzare. Ho già pubblicato le due "vecchie" releases (0.6 e 0.7.0) e i sorgenti sfruttando il sistema di source control (integrato tramite plugin in Visual Studio!). Ora vorrei creare un installer (in bundle con l'Enterprise Library e il provider ADO.NET per Firebird). Devo soltanto trovare il tempo di leggere le licenze e realizzarlo. Putroppo non sono ancora riuscito a fare una pagina di redirect sul vecchio sito perchè ho dimenticato la password... troverò un sistema per farlo (spero!). Nome...

posted @ lunedì 2 maggio 2005 12:30 | Feedback (4)

n-mila versioni di Visual Studio

Condividendo le opinioni di Andrea in merito all'inclusione nei soli prodotti Team System degli strumenti per lo unit testing, volevo ora portare il ragionamento un po' oltre. Per quale motivo tutte queste versioni di Visual Studio? Probabilmente ci avrete già pensato: perchè non rilasciare una piattaforma, che potremmo chiamare "Visual Studio Foundation", e poi tutti i plugin del caso, acquistabili separatamente e in ogni momento? Insomma un modello àla Eclipse o Netbeans... Immaginate di avvicinarvi alla programmazione in ambiente Windows. Ad oggi, probabilmente su consiglio di qualche amico, compreresti uno dei prodotti express, diciamo C# Express. Se non avete mai fatto unit...

posted @ mercoledì 27 aprile 2005 10:31 | Feedback (4)

Visual C++ 2005 and *.vcproj

Se state usando Visual C++ 2005, vi sarete probabilmente accorti che l'ambiente non è ancora del tutto completo. Esistono alcune limitazioni nella gestione del progetto (file di risorsa, file di soluzione, etc.). Non so se queste rimarranno limitazioni del prodotto Express definitivo, ad ogni modo potete ovviare a questi problemi scrivendo manualmente il file di progetto e vcbuild.exe per compilarlo. Qui potete trovate lo schema XML: http://msdn2.microsoft.com/library/y4sy8216(en-us,vs.80).aspx Il designer è decisamente migliorato, tuttavia, a mio parere, genera un pessimo codice. Sarebbe stato importante, per lo meno, che separasse le implementazioni dei metodi (in particolare, del costruttore e dei delegati che gestiscono gli eventi) dalla...

posted @ mercoledì 20 aprile 2005 12:37 | Feedback (3)

"What is Indigo?"

Un'ottima introduzione (e dimostrazione) da parte di uno dei software architect che lo hanno ideato: http://channel9.msdn.com/ShowPost.aspx?PostID=56397 42 minuti circa

posted @ lunedì 11 aprile 2005 16:25 | Feedback (0)

NUnit... MBUnit o CSUnit?

Uso NUnit con discreta soddisfazione, ma mi chiedevo se qualcuno di voi abbia provato i due progetti open-source "concorrenti". Non ho molto tempo attualmente per provarli, qualcuno che li ha già usati sa darmi un parere?

posted @ domenica 10 aprile 2005 00:10 | Feedback (3)

Enterprise Library for Firebird 0.7.0

Ho effettuato qualche piccola modifica al pacchetto. Grazie ad Alessandro Petrelli per le sue correzioni sullo script sql per la creazione del database Northwind. Dal changelog: 5th April 2005 - version 0.7.0 released  * License changed into LGPL  * Cleaned up "bin" and "obj" directories  from some files which were used during the initial development process  * Minor changes to "NorthwindForFirebird.sql" (thanks to Alessandro Petrelli)  * Minor changes to "Readme.txt"  * Added "Changelog.txt"  * Version changed ...

posted @ martedì 5 aprile 2005 22:49 | Feedback (0)

Primo rilascio di "Enterprise Library for Firebird"

Come promesso, ecco una prima versione. Potete scaricare il file zip contenente il progetto, comprendente sorgenti, binari e documentazione qui . Linguaggio utilizzato: C# Strumenti utilizzati: Visual Studio 2003, NUnit framework, String Resource Generator Database utilizzato dalla test suite: Northwind for Firebird (realizzato da me, col solo scopo di testare questo provider, sperando che a MS non dispiaccia). ADO.NET provider per Firebird: versione 1.7, CVS head (non funziona con la RC2 per via di alcuni bug da me segnalati e corretti). E' una versione preliminare (0.6), bisognerebbe testarla ancora un po'. Per domande, consigli, bug reports, potete scrivermi direttamente attraverso il mio blog. Buone feste a...

posted @ lunedì 28 marzo 2005 15:23 | Feedback (0)

Bug Hunter (2)

Nuove modifiche sul server CVS per l'ADO.NET data provider del progetto FirebirdSql. Il secondo dei bug segnalati è stato corretto. Anche un terzo, riguardante la gestione dell'evento RowUpdated è stato fissato, sebbene necessiti di ulteriore testing. Beh, è la prima volta che mi capita, devo dire che è una bella soddisfazione scoprire, identificare un bug e vederlo corretto! Tengo comunque a sottolineare che non si trattava di bug particolarmente gravi, ma semplicemente di comportamenti che si discostavano da quelli degl'altri ADO.NET provider.

posted @ lunedì 28 marzo 2005 15:07 | Feedback (0)

Bug hunter

Direi che il lavoro sull'Enterprise Library sta per concludersi. Tra le piccole soddisfazioni di questo lavoro, due micro-bug scoperti nell'ADO.NET data provider, versione 1.7 RC2. 1) Quando il data adapter fallisce l'insert/update/delete su una riga, viene settato dataRow.RowError solo se dataAdapter.ContinueUpdateOnError è settato a true. (FbDataAdapter.cs, linea 456) 2) dataReader.RecordsAffected ritorna -1 anzichè il numero di righe effettivamente modificate da un insert/update/delete statement se eseguito prima che il data reader stesso venga chiuso. (FbDataReader.cs, linea 43) Il primo è già stato riconosciuto è corretto nel CVS, il secondo l'ho appena comunicato sulla mailing list ufficiale. UPDATE: Il commit sul server CVS di sourceforge non è ancora stato effettuato. UPDATE:...

posted @ sabato 26 marzo 2005 19:22 | Feedback (2)

Enterprise Library per Firebird

In questi giorni di vacanza mi sto dedicando alla scrittura di un nuovo data provider per l'Enterprise Library, dedicato al database Firebird. L'impresa si sta rivelando abbastanza semplice, sebbene io non possa, almeno per il momento, ritenermi un esperto del .NET framework. La disponibilità dei sorgenti aiuta naturalmente molto. Le implementazioni dei provider per DB2, SQLServer e Oracle sono piuttosto simili in certi punti e spesso è bastato riprendere direttamente il loro codice. Al momento sto aggiungendo qualche test fixture e risolvendo alcuni problemi con la gestione degli errori durante l'update del data set. Per riutilizzare le classi base fornite per lo unit testing ho dovuto...

posted @ venerdì 25 marzo 2005 16:20 | Feedback (4)

Nuovi link -> .NET Tools

Ho indicato tra i link qualche strumento utile (e qualcuno irrinunciabile) per sviluppare applicazione sulla piattaforma .NET. Tutti gratuiti o a prezzi ragionevoli...

posted @ domenica 13 febbraio 2005 17:35 | Feedback (0)