dicembre 2006 Blog Posts
A volte quando sto per pubblicare un nuovo post sul blog mi viene il dubbio di averlo già postato, una specie di Deja vu da blog; quando succede verifico nei vecchi post e puntualmente scopro di non aver mai scritto nulla del genere prima.
Capita anche a voi?
Segnalo l'articolo Introducing Behaviour-Driven Development (BDD) di Dan North.
Per me che pratico TDD da alcuni anni è stato illuminante perchè il BDD guida la scrittura dei test dal punto di vista del comportamento del sistema.
Secondo l'articolo è importante rimanere focalizzati sulla domanda:
What’s the next most important thing the system doesn’t do?
Voglio provare ad introdurre le pratiche suggerite nel mio prossimo progetto e verificarne i benefici.
Sono rimasto favorevolmente colpito dal tempo di startup di SharpDevelop un IDE Open Source per .NET.
Ho visto che il setupkit ad un certo punto esegue l'utility NGen (Native Image Generator). La quale come documentato sulle MSDN migliora le performance in:
Native images load faster than MSIL because they eliminate the need for many startup activities, such as JIT compilation and type-safety verification.
Native images require a smaller initial working set because there is no need for the JIT compiler.
Inoltre nel file AssemblyInfo.cs dei sorgenti di SharpDevelop hanno inserito i seguenti attributi:
// Use hard-binding for ICSharpCode.SharpDevelop:
[assembly: Dependency("ICSharpCode.Core", LoadHint.Always)]
[assembly: Dependency("ICSharpCode.TextEditor",...
Segnalo NPlot e ZedGraph sono entrambe librerie open source scritte in C# per visualizzare grafici.
NPlot è stata di nuovo aggiornata (il 14 novembre) dopo che Matt Howlett aveva abbandonato il progetto.
ZedGraph ha più funzionalità anche se preferisco l'object model di NPlot.
Sto sviluppando un servizio di windows che comunica con alcuni client tramite i socket. L'architettura dell'applicativo include una classe Client con la responabilità di ricevere i dati dai client remoti connessi al server. La connessione viene gestita tramite la classe SocketChannel che implementa l'interfaccia IChannel le quali fanno parte del layer di comunicazione.
Un piccolo diagramma UML semplificato per schematizzare le classi e le interfacce coinvolte:
Ovviamente ho volutamente semplificato la reale architettura, infatti, manca il log, la gestione degli errori, ecc.
Una versione semplificata (ma non lontana dalla realtà) del metodo Receive:
public void Receive()
{
...