January 2008 Blog Posts

Il problema delle collisioni nelle funzioni di hashing

Una funzione di hashing non e' altro che una funzione che traspone un dato di qualche tipo in un numero (potrebbe non essere un numero, ma qui semplifico) 'relativamente' piccolo, creando una sorta di 'impronta digitale'. E' una funzione one-way nel senso che dal dato si puo' derivare il valore numerico, ma non viceversa. Per questo motivo si presta particolarmente bene per il mondo della security e delle basi dati. Il problema principale delle funzioni di hashing e' rappresentato dalle collisioni. Dato che i dati di input hanno potenzialmente un numero di combinazioni superiore al numero finito di hash possibili,...

posted @ Sunday, January 27, 2008 1:24 AM | Feedback (4)

Automatic properties e object initializer

Ok, sto per iniziare con una banalita', soprattutto qui dove vi sono persone in questi dintorni che si cibano di codice C# quotidianamente. La combinazione di automatic properties e object initializer permette di risparmiare parecchie righe di codice. Ad esempio: class Program {   static void Main(string[] args)  {     Console.WriteLine(new Item { Label = "Patate" });   } } public class Item {   public string Label { get; set; }   public override string ToString()  {     return Label;   } } Leggendo alcuni post ci si chiedeva se non era il caso di introdurre una nuova keyword property in...

posted @ Thursday, January 24, 2008 11:50 PM | Feedback (0)

DateTime.Now non e' adesso, ma domani!

Sarebbe possibile pensare che DateTime.Now non sia esattamente adesso, ma che so, fra un'ora, domani, ieri, ...? Non sto delirando e non ho bevuto vino (sono tendenzialmente astemio)! L'esigenza di avere un concetto dell'istante corrente di tempo variabile nasce soprattutto per il testing. Molto spesso il nostro domain model e' dipendente dal tempo. Si immagini ad esempio l'orario di partenza di un volo o del treno, l'inizio di un programma televisivo, l'orario di una transazione bancaria, ecc. ecc. Nasce quindi l'esigenza di testare il nostro modello ad oggetti in condizioni di tempo differenti, per verificare se a quella certa data ed ora...

posted @ Wednesday, January 23, 2008 12:34 AM | Feedback (5)

ConditionalAttribute o pragmas?

Recentemente ho voluto arricchire una mia classe con un metodo dump per stampare a video i dati contenuti nell'oggetto. Volevo inoltre evitare di compilare questo metodo in release, rilegandolo quindi al debug. Scrivo il mio metodello public string Dump() .... e mi chiedo, ed ora che uso? Un pragma o ConditionalAttribute? Opto per la seconda ed il compilatore di arrabbia parecchio, non vuole che il metodo abbia un valore di ritorno. Senza pormi problemi uso un bel #IF DEBUG ... #ENDIF e risolvo il problema. La giornata si conclude ma la domanda rimane. Vado a leggermi la documentazione e sembra...

posted @ Tuesday, January 22, 2008 12:04 AM | Feedback (1)