maggio 2007 Blog Posts

Scalabilita' nei sistemi distribuiti

I sistemi distribuiti solitamente sono pensati per servire una moltitudine di utenti. Essi quindi si portano dietro nativamente il problema di scalabilita'. Ma che cosa significa scalabilita'? Saper service 1.000.000 richieste al secondo? Essere installato su 1000 server? Mettere un servizio per server? “Scalabilita'” non vuol dire quello, ma vuol dire piuttosto che il nostro set di servizi sono in gradi di garantire il servizio all'aumentare delle richieste incrementando semplicemente (mica tanto, ma per dare l'idea) delle risorse, siano hardware o di rete. Un sistema distribuito di servizi perfettamente scalabile potrebbe essere installato su 1 solo server cosi' come su...

posted @ venerdì 18 maggio 2007 17:53 | Feedback (3)

CRUD, ma se ne parla ancora?

CRUD sta per Create, Read, Update e Delete. Tutti cio' che si dovrebbe fare per relazionare un DB con un entita' di dominio (o business a dir si voglia). Ogni tanto sento e leggo dissertazioni sull'argomento e mi vien da ridere (senza offesa!). A parte il fatto che in molti casi lo considero un pattern inapplicabile, ma lo trovi altresi' oltremodo noiso! E una cosa da tool, che faccia tutto lui e mi lasci il tempo di occuparmi di cose ben piu' interessanti :-) Sono pianemente d'accordo con questo post: “CRUD is dull, boring and uninteresting. Can we please just get this...

posted @ giovedì 17 maggio 2007 23:19 | Feedback (1)

Uso corretto delle costanti

L'uso della const e' molto chiaro a tutti, in pratica definiamo una variable con un valore e vogliamo che tale valore rimanga immutabile nel tempo. Se leggiamo bene la documentazione, riscontriamo degli effetti potenzialmente indesiderati. Ed in particolare va prestata molta attenzione alla seguente frase”A constant expression is an expression that can be fully evaluated at compile time.”. Che cosa significa esattamente? Significa che chi fa uso della costante non avra' un riferimento alla variabile, ma il valore della costante verra' copiato AS IS durante la compilazione. Se per qualche motivo, durante lo sviluppo, cambiamo il valore della costante (refactoring?) diventa...

posted @ mercoledì 16 maggio 2007 14:50 | Feedback (3)

[Quiz] Che cosa c'è di sbagliato in questa classe?

Immaginiamo di avere una classe che contiene un vettore, i quali primi valori sono visibili solo agli amministratori, gli altri a tutti. Il codice potrebbe essere più o meno così: public class VectorInfo{    public VectorInfo()    {        this.data = new string[] { "Admin1", "Admin2", "Admin3", "Std1", "Std2", "Std3" };    }     [PrincipalPermission(SecurityAction.Demand, Role="Administrators")]    public string GetAdminValue(uint idx)    {        if (idx < data.Length)            return data[idx];        return string.Empty;    }     public string GetValue(uint idx)    {        if (idx + adminLastIndex < data.Length)            return data[idx + adminLastIndex];        else            return string.Empty;    }     private string[] data;    private const int adminLastIndex = 2;} Non voglio soffermarmi sul design, ma solamente sull'algoritmo. Secondo...

posted @ martedì 8 maggio 2007 18:18 | Feedback (7)

C# 3.0

Finalmente, dopo mesi, mi son concesso uno sguardo a qualcosa di nuovo: C# 3.0. Disponibile con la prossima versione del Framework/Visual Studio, si presenta con delle interessanti novità. Per prima cosa mi son letto le specifiche (http://download.microsoft.com/download/9/5/0/9503e33e-fde6-4aed-b5d0-ffe749822f1b/csharp%203.0%20specification.doc), quindi mi sono scaricato la virtual machine di Orcas beta 1 (non ho tanta voglia di installare e reinstallare di questi tempi), ed ho iniziato a scrivere codice :-) Che dire, mi son divertito, anche se il supporto del compilatore non c'è del tutto (va beh, è una beta 1). Alcune cose non le ho ancora digerite (saranno come le canzoni di Sanremo, all'inizio...

posted @ venerdì 4 maggio 2007 01:24 | Feedback (0)