aprile 2009 Entries

In trepidante attesa…

…del “pargolo” nuovo :-D .m

posted @ venerdì 24 aprile 2009 7.19 | Feedback (7)

List<T>.Sort( IComparer<T> )… a casa mia si chiama(va) bug…

Noto uno strano comportamento nel metodo Sort() della lista generica List<T>. Preambolo. Avete una classe del tipo: class Tupla { public Int32 Value { get; set; } public String Description { get; set; } } ne avete n istanze in una lista e volete ordinare la lista in base al valore della proprietà Value, per farlo è necessario utilizzare un IComparer<T> custom, una cosa del tipo: class TuplaComparer : IComparer<Tupla> { public int Compare( Tupla x, Tupla y ) { ...

posted @ martedì 21 aprile 2009 16.04 | Feedback (14)

TFS, XP e le UserStory

TFS è uno strumento notevole, la cosa che apprezzo di più in questo periodo è la malleabilità che, in molti casi con poco sforzo, ci permette di adattare lo strumento alle nostre esigenze e non di piegare noi stessi ai voleri del tool. In bottega utilizziamo TFS per la gestione di tutti i progetti e generalmente utilizziamo MSF for Agile come metodologia. In questo periodo, grazie anche al cliente giusto, sto sperimentando molto e mi sto addentrando nei meandri di XP. Come al solito non mi piace partire dalla pappa pronta ma devo capire ed assorbire bene tutto,...

posted @ martedì 21 aprile 2009 13.31 | Feedback (3)

TTD..ing

In questi giorni sto facendo largo uso di TDD per implementare un sistema discretamente complesso di parsing/trasformazione di informazioni da un formato ad un altro: db –> Object Model –> DTO –> Flat text File. Un po’ di considerazioni live durante l’esperienza: Produttività Dobbiamo prima definire cosa intendiamo per produttività, se pensiamo a meri tempi di scrittura del codice, la sentenza è “bassa produttività”, se invece, come doveroso, ci mettiamo anche qualità del prodotto finito, le cose cambiano un filino, decisamente alta. Design Emergente Decisamente si, non è che sia molto da fare, devo ammettere...

posted @ giovedì 16 aprile 2009 7.22 | Feedback (6)

Abuso di Inversion Of Control, Il container questo sconosciuto… e così deve essere!!

ahahahrgh :-D L’astrazione ha tanti vantaggi ma porta anche tanti potenziali problemi soprattutto se la stiamo gestendo male o se stiamo astraendo troppo o addirittura dove proprio non serve. L’uso di un container per IoC tende a portare ad un uso esasperato dell’astrazione perchè si tende, all’inizio, ad astrarre anche il container stesso. L’inghippo è che probabilmente non abbiamo ben presente la differenza tra Dependency Injection e Inversion of Control, perchè se ne parla sempre insieme ma sono due mondo molto diversi tra loro dove il primo può vivere di vita propria mentre il secondo nasce anche per...

posted @ giovedì 9 aprile 2009 7.30 | Feedback (1)

Piccola divagazione… “personale”

Approfitto di un commento per fare un piccolo inciso. I problemi non esistono: se ha una soluzione non è un problema; se non ha una soluzione non è un problema, è un requisito con cui convivere :-D; Tutto è semplice, credo di averlo già espresso il mio punto di vista, e l’insieme di cose semplici può produrre un lavoro “sinergicamente complesso”, che probabilmente non significa nulla, ma rende l’idea… :-D. Tendo sempre a...

posted @ mercoledì 8 aprile 2009 9.46 | Feedback (14)

UI Composition :: Astrazione… (intermezzo)

Mi chiedono: “…Se volessi creare una shell con il ribbon in alto e la possibilità di aggiungere schede al ribbon da parte dei singoli moduli, devo referenziare l'assembly del ribbon da ogni modulo? o c'è un modo più corretto e ordinato per fare le cose? Perchè sarebbe carino se potessi referenziare l'assembly del ribbon da un modulo Infrastruttura e poi da tutti i moduli poter caricare la parte di ribbon dedicata al modulo passando per l'infrastruttura…” Se ho ben capito, e qui liberi di smentirmi, la domanda potrebbe essere generalizzata in: ...

posted @ mercoledì 8 aprile 2009 6.47 | Feedback (1)

UI Composition :: RegionService, RegionManager(s) & Region(s)

Prima di passare all’argomento centrale di questa lunga trattazione dobbiamo fare un piccolo escursus sul sistema di comunicazione interno all’applicazione. Messaging Il mondo .net ci ha abituato molto bene, gli eventi sono una vera manna dal cielo, ma purtroppo nel nostro caso servono veramente a poco. Facciamo un esempio chiarificatore: Avete 2 oggetti che devono comunicare tra loro, e per l’esattezza, l’oggetto A deve sapere quando succede qualcosa all’oggetto B. Tradizionalmente fareste: Esporre a B un evento; Aggiungere un handler a B.Event da A;...

posted @ lunedì 6 aprile 2009 7.40 | Feedback (0)

Xe.Net: il giorno dopo (un paio di giorni dopo…)

Vloevo semplicemente ringraiare i razzi di xe.net per l’esperienza che è stata, come al solito, notevole. Tutto impeccabile, anche il contorno ;-). A tutti i, molti, partecipanti invece ricordo che se avete domande, oltre a tutte quelle fatte durante e dopo la essione, non esitate a farle. .m

posted @ domenica 5 aprile 2009 9.13 | Feedback (1)

To TDD or not to TDD? That is the question <cit…?>

Davide, l’unico ed inimitabile, mi fa pubblicità, e come non essere contenti? Estendo quello che ha detto dando un’idea dell’Agenda di domani sera: Perchè non testiamo e quali sono le conseguenze; Perchè testiamo e quali sono i vantaggi; Ha senso cercare di testare tutto?; Anatomia dello Unit Testing; Introduzione a metodologie fortemente basate sul testing: TDD e Test First; Come il testing modifica il nostro modo di scrivere codice, e perchè io ritengo sia un...

posted @ giovedì 2 aprile 2009 6.27 | Feedback (9)

UI Composition :: I Moduli

Scoperto come scoprire quali sono i moduli installati non ci resta che caricarli… fosse semplice ;-) La prima cosa che dobbiamo fare è trovare un sistema per collegare un IModuleDescriptor ad un modulo, dato che le informazioni presenti in un ModuleDescriptor arrivano da un file di configurazione non abbiamo gratis nessun “ponte” tra i 2 mondi: la descrizione di un modulo e il modulo stesso. Quello che possiamo banalmente fare, e che faremo, è aggiungere alcune informazioni al sistema di configurazione, in realtà scopriamo che ci basta aggiungere al file di configurazione un valore che ci dica quale...

posted @ mercoledì 1 aprile 2009 13.45 | Feedback (1)

UI Composition :: Il processo di discovery

La nostra applicazione non fa ancora nulla ma almeno si avvia. Il prossimo passo è quello di realizzare un’infrastruttura per gestire i moduli, in particolare in questa fase ci concentreremo sul processo di discovery. Quali sono i problemi che dobbiamo risolvere: Discovery: il processo di discovery è quello che consente all’IApplicationBootstrapper di capire quali siano i moduli che possono essere caricati, quello che ci dobbiamo limitare a fare è quindi fornire allo strato superiore l’elencodeii moduli disponibili, non è onere nostro fare nessun ragionamento; A questo punto possiamo avere 3 potenziali...

posted @ mercoledì 1 aprile 2009 6.18 | Feedback (0)