Latest Posts
Con la versione 2010 di Team Foundation Server è stata introdotta la possibilità di creare una cosiddetta TFS Farm.
Fino alla versione 2008 era possibile installare il Data Tier di TFS su un SQL clusterizzato, ora con la 2010 possiamo rendere altamente affidabile anche l’Application Tier, basta avere dei server in NLB. Come si ottiene ciò?
Ipotizziamo di partire da questa situazione: ho una macchina (TFSDT – 10.0.0.5, una per semplicità, ma chiaramente è possibile rendere anche il DT clusterizzabile) SQL Server che fa da Data Tier, e due server (TFSAT1 - 10.0.0.3 e TFSAT2 – 10.0.0.4) in NLB, che saranno i miei Application Tiers.
Dopo aver configurato il cluster (TFS2010 - 10.0.0.2), installo TFS 2010 in Dual Server: il Data Tier su TFSDT e l’Application Tier su TFSAT2 (uno dei due nodi del cluster).
Per creare la TFS Farm, basta aggiungere un Application Tier sull’altro nodo del cluster. Dopo aver installato il Framework 3.5 ed i Reporting Services, possiamo installare:
Seleziono Application-Tier Only, e faccio partire il wizard…
Confermo…
Seleziono l’istanza di SQL Server del Data Tier…
Gli fornisco l’account per i servizi, ed il tipo di autenticazione necessaria…
Recap totale, un Readiness Check e si installa!
Il risultato è quindi questo:
Ed ora? Beh ovviamente per connettermi, dovrò inserire nel Team Explorer il nome del cluster di Application Tier, e soprattutto potrò lavorare senza problemi anche nel caso in cui alcuni dei nodi del cluster non siano up-and-running.
E posso tranquillamente creare un Team Project, senza sapere cosa c’è sotto :)
ATTENZIONE: ovviamente lo Sharepoint NON viene automaticamente trasformato in una farm in HA…infatti durante la creazione di un progetto, quando si indica l’url del WSS, vedo chiaramente che si tratta del nodo del cluster dove ho effettuato la prima installazione (quella in Dual Server).
Comunque il risultato finale è questo:
Un “server” TFS :)
Brian Keller ci informa che è stata rilasciata la nuova VM di test con gli hands on labs.
L’unica cosa che manca della famiglia è il Lab Management, che è disponibile in un’altra macchina virtuale di cui fare boot da VHD
Qui è possibile scaricarla in versione Hyper-V, qui in formato Windows Virtual PC e qui in formato Virtual PC 2007.
Abbiamo visto come creare la UI di una applicazione WPF, abbiamo visto il BIND, ora vediamo gli stili.
STILI
Gli stili definiscono un gruppo di proprietà che è possibile assegnare a un determinato tipo di controlli per influenzarne l'aspetto estetico
Gli stili risiedono all'interno delle risorse di un contenitore di controlli (es. Window.Resources, StackPanel.Resources e così via).
Vi consiglio questi link:
http://www.winfxitalia.com/articoli/presentation-foundation/gestire-risorse-stili-wpf-1.aspx
http://www.winfxitalia.com/articoli/presentation-foundation/gestire-risorse-stili-wpf-2.aspx
http://community.visual-basic.it/greg/archive/2009/10/26/26796.aspx
http://msdn.microsoft.com/it-it/library/cc294894%28Expression.30%29.aspx
I Trigger invece vengono utilizzati per applicare i valori delle proprietà stabilite negli elementi Setter solo al verificarsi di una determinata condizione.
I Trigger sono molto potenti ed è possibile, ad esempio, valutare più condizioni contemporaneamente utilizzando un elemento MultiTriggers.
http://blogs.ugidotnet.org/PietroLibroBlog/archive/2008/09/17/94063.aspx
Nella grammatica del software siamo abituati a pensare ai sostantivi, che rappresentano le entità; ai verbi, che sono le azioni che vengono implementate. Rimanendo in metafora, la User Experience potrebbe essere progettata per aggettivi. Avremo qundi Experience facili, difficili, belle, brutte, comode, scomode, banali, complesse, rigide, flessibili e via dicendo.
Una UX deve sempre essere intuitiva e accattavante? Non sempre. La user experience non sarà mai tale se non viene progettata pensando ad un determinato target.
Una volta individuato il target, dobbiamo pensare a quali aggettivi saranno più adatti. Un utente business forse avrà bisogno di una experience affidabile, potente, efficente; un utente consumer probabilmente la vorrà intuitva, prestigiosa, flessibile.
Una volta catalogati, i nostri aggettivi saranno i requisiti che la nostra UX dovrà soddisfare e sui quali dovremo costruire i test … ma questa è un’altra storia.
Visto che ultimamente parecchi miei posts sono dedicati a Blend e avendo “twettato” “Not using Expression Blend? you’re out of business”, un paio di persone mi hanno chiesto: “Ma sei diventato un designer?”, la risposta è ovviamente “No”, essere un designer richiede estro e creatività, doti che personalmente ritengo innate e che purtroppo so di non possedere.
Il motivo del mio tweet è semplicemente dovuto al fatto che, anche alla luce di ciò che la versione 4.0 permette di fare, ritengo semplicemente che non usare Blend per sviluppare applicazioni WPF/Silverlight e Window Phone 7 sia semplicemente un suicidio, eppure quando chiedo: “Ma voi usate Blend?” sono più le persone che rispondono “No” rispetto ai “Si” e tutte con svariate motivazioni:
- Non siamo designers…
- Siamo un team piccolo…
- Sono uno sviluppatore, la UI per me è una rottura di scatole, a me interessa che funzioni e che l’architettura sia scalabile.
- Per quello che dobbiamo fare noi Visual Studio basta e avanza…
- Blend fa casino, lo xaml che genera non mi piace, preferisco scrivermelo io a mano, così è più pulito.
- Blend? ma è a pagamento! si si abbiamo MSDN Professional, perchè me lo chiedi?
- Ho provato ad usarlo ma non c’ho capito niente.
La lista potrebbe continuare, inoltre quando parlo di Blendability molto spesso mi viene detto: “si, si sarebbe bello, ma non abbiamo il tempo per fare anche questa cosa…”
A questo punto la domanda che nasce dentro di me è: “Ma allora perchè volete passare a WPF o imparare Silverlight se della User Experience vi frega poco o nulla?”, mi ricollego a questo post di Mauro (col quale concordo al 100%) per riaffermare un concetto che continuo a ribadire da anni: Se la vostra intenzione è quella di fare il clone WPF/Silverlight di un applicazione Windows Forms non fatelo!, continuate ad usare i WinForms che comunque verranno supportati per parecchi anni.
Di fronte a un affermazione del genere la risposta è: “Si, ma noi siamo un piccolo team di sviluppatori, non ci possiamo permettere un designer e non possiamo nemmeno inventarci designers, come le creiamo queste interfacce innovative?”
La risposta anche in questo caso è altrettanto semplice: “Guardatevi attorno, prendete spunto, imparate da ciò che vedete”, questo è quello che faccio io, ogni volta che vedo una demo,un concept, un gingillo con una UI carina, la mia mente automaticamente si attiva per capire com’è possibile realizzare una cosa del genere in WPF o Silverlight (e spesso non ci riesco…
) ma è comunque anche in questo modo che ci si abitua a pensare la UI in maniera ‘diversa’ da come la si è meccanicamente proposta negli ultimi 25 anni.
Ok, ma Blend che c’entra? c’entra perchè dietro le demo sbalorditive di Microsoft c’è, oltre ad un enorme lavoro da parte delle società di design, Expression Blend, nessuna oggi è realizzata scrivendo lo xaml manualmente come si faceva nel 2006.
Ovviamente il guardare la demo non basta, bisogna sapere realizzare quello che si è visto nella demo e, imparando Blend (si, Blend si può imparare anche se siete dei developers, non servono doti innate) vi assicuro che è spaventosamente più semplice che usando solo Visual Studio.
Un esempio? Immaginiamo un applicazione, guarda caso basata su Model-View-ViewModel: come aggancio un evento ad comando? semplice: Attached behavior, con un approccio da developer questo però implica:
- L’avere a disposizione il behavior, o perlomeno crearselo.
- L’importare il namespace.
- Andare nello xaml e inserire correttamente l’attached property
La stessa cosa con Blend si traduce nel trascinare un InvokeCommandAction sul controllo sorgente e giocare con la finestra delle proprietà:
decisamente più veloce, e con meno possibilità di introdurre bugs visto che: “il codice che non c’è funziona sempre” 
Altro esempio? Avete definito due stati “A” e “B” e volete passare da “A” a “B” in base al valore di una proprietà: Il developer che è i voi automaticamente pensa alla chiamata a VisualStateManager.GotoState(…), chi sa usare Blend sa invece che può far tutto senza codice trascinando un DataStateBehavior e impostando le relative proprietà.
Want more?
Supponiamo di avere di nuovo due stati “A” e “B” e che “A” corrisponda alla presenza di un pannello sulla sinistra mentre lo stato “B” corrisponda al fatto che il pannello sia collassato e di volere che il “collapsing/uncollapsing” avvenga in maniera lineare.
Partiamo col disegnare la UI e i relativi componenti (1) notate come in questa figura abbia definito le due frecce che controllano il pannello,ora definiamo lo stato “A” il quale imposta l’opacità della freccia verde a zero (2) mentre nello stato “B” oltre a impostare a 50 la dimensione del border che contiene il pannello di sinistra, impostiamo l’opacità della freccia verde a 1 e quella della freccia gialla a zero (3).
Attivando l’opzione “Transition Preview” è anche possibile avere un anteprima della transizione.
(1)
(2)
(3)
A questo punto trasciniamo due GotoStateAction sulle frecce (4) e mappiamo l’evento MouseLeftButtonDown (5) sui relativi stati:
(4)
(5)
Premete F5, ammirate il risultato e poi rifate le stesse cose senza utilizzare Blend e vediamo quanto tempo impiegate.
Probabilmente qualcuno di voi penserà: “Ok, ma io non avro mai bisogno di un pannello che scorre, io faccio applicazioni gestionali, il mio utilizzatore tipo usa la Datagrid”: Ok, il messaggio “continua ad usare i Windows Forms” è proprio rivolto a te.
Technorati Tags:
Blend,
WPF,
Silverlight
Microsoft ha pubblicato un interessante whitepaper sulla possibilità di condividere dati tra diverse organizzazioni.
C’è inoltre un secondo whitepaper che dimostra come configurare la VPC di Microsoft per gestire la “transactional replication” tra Microsoft SQL Server 2008
Sharing Data across Microsoft Dynamics CRM Deployments
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=584531fe-796e-4ffe-8881-65c1f94207ae
Una delle novità più succose del TFS2010 sono i Lab Management. Per chi ancora non sapesse di cosa si stia parlando qui potete trovare una serie di video (sono brevi di circa 5 min l’uno e si guardano in un attimo) che fanno una overview di cosa sia e come si possa usare Lab Management.
Vale la pena darci uno sguardino, anche solo per vedere di cosa si tratta. Per chi poi avesse voglia di provarli “live”, qui trovate una bella macchina virtuale già pronta, ma attenzione, non è di quelle che apri il Virtual PC, la lanci e va :) necessitate di avere una macchina Hyper-V, per cui magari se avete Windows 7 utilizzate il boot from VHD, installatevi un bel Server 2008 R2 e partite da questo tutorial.
alk.
Abbiamo quindi diversi Binding:
· Simple bind, è la semplice associazione tra oggetto e percorso
· Element Bind è il bind tra un elemento e l’altro , ad esempio tra uno slider e una label che visualizzerà il valore dello slider
Abbiamo poi diverse modalità di binding che determinano il comportamento:
- OneWay
- TwoWay
- OneTime OneWayToSource
Un’altra componente molto importante sui binding sono i converter:
http://www.winfxitalia.com/script/29/StringFormatConverter-Binding-WPF.aspx
http://blogs.msdn.com/bencon/archive/2006/05/10/594886.aspx
http://dotnetside.org/blogs/vito/archive/2007/07/03/ValueConverter-per-la-formattazione-in-WPF.aspx
Altri elementi molto importanti è l’implementazione e l’utilizzo dell’INotifyPropertyChanged che consente di notificare alla UI il cambio di valore delle property dell’oggetto in datacontext, e ObservableCollection.
http://www.visual-basic.it/articoli/adsWPF_DataBinding.htm
http://www.winfxitalia.com/script/25/Creare-Collezioni-Utilizzabili-Binding-WPF.aspx
Un mio collega mi ha segnalato questo interessante link ad un tool che semplifica la gestione, i caricamenti in parallelo e le dipendenze tra i vari js :
http://labjs.com
Sembra che finalmente i problemi di connessioni abbiano raggiunto una soluzione, dopo che l’anno scorso hanno cambiato il cavo mangiato dai topi, ieri il mio buon amico Marcello ed il suo collega della Telco hanno ricontrollato tutto il cavo dalla centralina a me, e sembra che la presa principale fosse difettosa.
Ora ho capito di essere sfortunato, perchè effettivamente avere i cavi rovinati, su una zona dove l’armadio è pieno ed infine avere anche la presa principale difettosa è un po una cosa da “malocchio”, :).
L’aspetto importante, è che bisogna sempre protestare con educazione. Evitando la tentazione di aggredire l’operatore, che non ha nessuna colpa, ogni volta che una grande azienda, sia essa la Telecom o chiunque altro, evitate la tentazione di dire “inutile protestare, tanto non serve a nulla”. Ve lo dico io… Serve. Oltre a telefonare al 187 numerose volte, ho scritto a vari ministeri, anche al ministero delle attività produttive, denunciando il fatto che senza connessione non lavoro e che ultimamente i problemi erano continui.
La mia lettera è stata protocollata, il ministero ha richiesto un controllo sul cavo, e finalmente la situazione sembra risolta. Inoltre ieri pomeriggio e stamattina mi hanno contattato dalla TElecom e Telco per sapere se è tutto ok, se il problema fosse risolto etc etc e mi hanno invitato a richiamare per ogni eventuale ulteriore problema.
La morale è che, se i problemi persistono, una sana protesta a 360° solitamente smuove qualche cosa.
alk.
Per chi fosse interessato a conoscere le novità presentate al mix2010, il 23 marzo verrà fatta una chat live per discutere di questo argomento. Qui trovate tutti i dettagli.
alk.
Su DotNetCenter è stata pubblicata una mia breve intervista rilasciata in occasione dell’immenente basta italia:
http://dotnetcenter.it/news/10/Intervista-a-Michele-Aponte-speaker-di-BASTA-Italia-2010.html
Mi è stato chiesto anche come è nata la nostra community e che obiettivi si pone… magari chi è curioso di sapere come è nata questa fantastica avventura vedrà soddisfatta la propria curiosità. Ne approfitto per ringraziare ancora una volta tutti gli iscritti e i miei 4 amici cofondatori:
Antonio Liccardi
Alessandro Forte
Carmine Alfano
Marco Savarese
Come direbbe un mio amico (Marcello): siete fottissimi (senza r)…
Michele
Guardando i numeri, diresti che il tuo team pratica realmente il principio K.I.S.S. o diresti che segue la legge di Parkinson ?
- .NET Framework 2.0 il nucleo é composto in tutto da soli 12 Assembly per piú di 12.000 classi (una media di 800 per progetto) e 2.800.000 istruzioni IL (190.000 per progetto)
Fonte: Analyzing the .NET Framework 2.0 with NDepend
- Google ha un singolo source code repository che é completamente accessibile a tutti i 10.000 sviluppatori. Sebbene tutti i sistemi vengono rilasciati indipendentemente l'uno dall'altro (con cicli di rilascio che variano da una settimana a un mese), tutto viene compilato dalla HEAD senza l'uso di binari precompilati, il repository accetta diverse migliaia di modifiche al giorno con picchi di 20+ modifiche per minuto.
Fonte: Mark Striebeck engineering manager a Google, al suo speech al XPDay London 2009 (guarda anche il report da questo post)
- Flickr riceve 40.000 nuove foto per secondo e ha ne archivia piú di 3 miliardi di foto al giorno, vengono eseguiti piú di 10 nuovi rilasci al giorno. Due fattori abilitanti per queste prestazioni tra i molti citati: un unico version control condiviso e no branching.
Fonte: Dev and Ops Cooperation at Flickr
E ora chiediti:
- In quanti Project/Assembly é scomposta la code-base?
- Da quanti code repository distinti (server o trunk) devi fare il get dei sorgenti per compilare la code-base?
- Quante Solution distinte devi compilare per compilare la code-base?
- Oltre al trunk su quanti altri branch sviluppa il team?
La legge di Parkinson applicata alla complessitá della code-base dice che la complessitá della code-base tende ad espandersi sino alla massima capacitá del team e della azienda di gestire la complessitá, invece di limitarsi alla complessitá minima richiesta dai problemi affrontati.
Dal Mix spuntano mirabolanti soprese ma per provarle?
La versione di prova non ha nemmeno la barra degli indirizzi e i menu di navigazione ma si puo’ usare tranquillamente per i propri test attraverso delle scorciatoie da tastiera oppure navigando sui menu del programma.
Ecco gli shorcuts disponibili:
Ctrl + O: Apre una pagina web
F5: Refresh
F10: Home
F12: Developer Toolbar
Alt + 5: Forza in modalità di rendering IE5
Alt + 7: Forza in modalità di rendering IE7
Alt + 8: Forza in modalità di rendering IE8
Alt + 9: Forza in modalità di rendering IE9
Alt + 0: Resetta al default
Ctrl +/-: zoom in e out
Alt + ?: Help
Ctrl + S: Salva la pagina web come…
Alt + /: Informazioni su…
Dai che si va ;)
S.
Riavviata la macchina…bisogna prendere una decisione…

Martedì 23 Marzo, dalle 15 alle 16, Microsoft Italia terrà una sessione di chat dedicata alla novità del Mix 2010 (Silverlight 4 RC, Windows Phone 7 Series, IE9 e HTML 5, jQuery, OData). Per partecipare, è sufficiente collegarsi a questo link il giorno dell’evento.
Per tutti quelli che amano lo Spettacolo lascio il link dei video.
Video Gallery e qui

Senza parole…