maggio 2007 Blog Posts
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...
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...
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...
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...
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...