windows2008logoDopo un paio di serate di lavoro ho concluso il ripristino del mio portatile sul quale ho installato Windows Server 2008.

Devo dire che ora che ho sistemato tutto a dovere, i risultati sono eccellenti. La macchina ha guadagnato in velocità in modo più che apprezzabile, e non ho perso nulla rispetto a Windows Vista se escludiamo, unico caso isolato, il ReadyBoost.

Ho installato e attivato tutto, Aero, Sidebar, Gadgets, etc... ed è rimasta anche qualche feature poco user friendly tipica di Vista. Se qualcuno avesse intenzione di tentare questo stesso passaggio consiglio di usare il seguente sito come guida per il setup:

http://www.win2008workstation.com/

Le cose da tarare sono molte, e non tutto è semplice e immediato, ma con le istruzioni talvolta illustrate di questo sito tutto si riduce a un po' di tempo e pazienza. C'è persino la guida per fare il setup di Live Messenger, Live Writer & co. Alla fine ho anche applicato come ultima "taratura" l'elenco di servizi da attivare e disattivare rispetto alle mie esigenze.

Certo che alla fine, nonostante io sia uno dei sostenitori di Windows Vista tutto sommato soddisfatto, rimane il dubbio di come sia possibile che due sistemi praticamente identici (i driver sono esattamente gli stessi di Vista) possano avere prestazioni così differenti...


Sono un po' di giorni che non bloggo a proposito dell'attività dello user group . Questo non vuol dire che l'attività sia scemata, piuttosto nonostante i tanti impegni che mi hanno distolto dal promuovere il nostro lavoro, le attività si sono moltiplicate.

A partire da Venerdì prossimo infatti riprendono i consueti meeting rafforzati da nuovi appuntamenti organizzati con il prezioso aiuto di 1nn0va in quel di Pordenone. Ecco di seguito il calendario degli eventi che ci aspettano:

21/11/2008 - SQL Server 2008: Le novità - Novotel Mestre
Speaker: Simone Corsini

4/12/2008 - Microsoft .NET Compact Framework - Università di Pordenone
Speaker: Mirco Vanini

12/12/2008 - IEnumerable Tales: Entity Framework e Linq to Entities - Novotel Mestre
Speaker: Andrea Boschin

Sono certo che la ricchezza e la varietà di argomenti che stiamo mettendo in campo raccoglierà il favore del pubblico. Per questo invito chiunque ne sia interessato a cogliere l'occasione per venire a conoscerci e ad apprezzare l'opera di divulgazione che stiamo portando avanti.

Per le iscrizioni vi invito a rivolgervi a questa pagine presso cui potrete scegliere i meeting che più vi interessano.

http://www.xedotnet.org/nextmeeting.aspx

Ci vediamo presto!

Technorati Tags: ,
tags: - categories: News

Capita di rado, ma talvolta è necessario poter definire il binding di una proprietà da codice anzichè dal markup XAML. In questi casi tradurre la normale sintassi basata su una Markup Extension in codice vero e proprio non è immediato. Io stesso ho dovuto cercare un bel po’ prima di capire quali sono gli oggetti coinvolti e arrivare a tradurre i tutto in poche righe di codice C#.

Ma partiamo da un ipotetico Binding effettuato come di consueto da XAML:

   1: <TextBox x:Name="txtFirstName" Text="{Binding FirstName, Mode=TwoWay}" />

In questa singola riga è racchiuso e semplificato un po’ di codice. Innanzitutto la creazione di un oggetto che si occupa di fare il DataBinding e che incapsula le proprietà che abbiamo valorizzato, in questo caso Source e Mode, ma volendo anche alte come ad esempio il Converter e i suoi parametri. Infine l’assegnazione di questo oggetto alla proprietà che deve essere bindata.

Ecco in soldoni il codice che andrebbe scritto per simulare la Markup Extensione di cui sopra:

   1: // crea l'oggetto che contiene i parametri del binding
   2:  
   3: Binding binding = new Binding("FirstName")
   4: {
   5:     // sorgente del binding (DataContext)
   6:     Source = source,
   7:  
   8:     // modalità di binding
   9:     Mode = mode
  10: };
  11:  
  12: // assegno il binding alla textbox
  13:  
  14: element.SetBinding(TextBox.TextProperty, binding);

Questo non è molto codice, ma scriverlo ripetutamente magari su decine di proprietà è piuttosto laborioso e può aprire la strada a errori e omissioni. E allora perchè non scrivere un metodo che lo incapsuli. Anzi, visto che parliamo di usare il framework 3.5 la soluzione migliore è di scrivere un certo numero di Extension Methods che mettano a disposizione un po’ di overload per i casi più disparati:

   1: public static void Bind(
   2:     this FrameworkElement element, 
   3:     DependencyProperty property, 
   4:     string path, 
   5:     object source, 
   6:     BindingMode mode, 
   7:     IValueConverter converter, 
   8:     object converterParameter, 
   9:     CultureInfo converterCulture)
  10: {
  11:     Binding binding = new Binding(path)
  12:     {
  13:         Source = source,
  14:         Mode = mode
  15:     };
  16:  
  17:     if (converter != null)
  18:     {
  19:         binding.Converter = converter;
  20:         binding.ConverterCulture = converterCulture ?? CultureInfo.CurrentCulture;
  21:         binding.ConverterParameter = converterParameter;
  22:     }
  23:  
  24:     element.SetBinding(property, binding);
  25: }

In questo spezzone di codice viene mostrata la versione più ampia dei metodi in questione, cioè quella che accetta più parametri. Lascio a voi scegliere la combinazione di parametri che più vi aiuta. Se poi volete i miei vi segnalo che questa classe sarà disponibile nella prossima release della mia Silverlight Library 1.0. Ma vediamo come usare i metodi in questione dimostrando una versione con un po’ meno di parametri:

   1: txtFirstName.Bind(TextBox.TextProperty, "FirstName", source, BindingMode.TwoWay);

Questa riga effettua esattamente lo stesso binding dell’esempio scritto in XAML poco sopra. Siamo così riusciti nell’intento di semplificare il lavoro e di ridurre soprattutto la quantità di codice da scrivere.


Due dita di brina, un sole pallido e un freddo intenso. E’ così che mio padre mi ha descritto le ore che hanno preceduto la mia nascita. Certo che quella fine Ottobre del ‘68 vista oggi con 16 gradi e un solleone degno di inizio settembre pare più lontana dei 40 anni che mi separano dalla mia nascita. A parte questo io sono lo stesso. Un po’ di acciacchi lo ammetto, un po’ di stanchezza da superlavoro, ma l’intensa voglia di vivere che mi ha portato alla luce quel giorno c’è ancora tutta (e ci mancherebbe…)

Chissa cosa mi aspetta prossimamente. Forse una bella crisi di mezza età anche se confido che alla mezza età manchi ancora un bel po’ :). Probabilmente - ed è quello che spero – ancora una vita interessante, in compagnia della mia famiglia, lottando giorno per giorno per portare a casa la pelle.

Fatemi gli auguri…

tags: - categories: News

E’ necessario che faccia questo post per una rettifica a proposito della sessione sugli ADO.NET Data Services che ho tenuto durante la serata dei Community After Hour. Si tratta tutto sommato di due piccolezze ma per completezza devo dare qui la versione corretta:

  1. Qualcuno mi ha fatto notare una inesattezza. Durante la sessione ho detto che per generare il proxy necessario per interrogare il servizio da Silverlight 2.0 è obbligatorio usare il tool da riga di comando datasvcutil.exe. In realtà se provate a referenziare il servizio con una Service Reference vedrete che Visual Studio 2008 è in grado di accorgersi che di DataService si tratta e di conseguenza generare il proxy corretto. Purtroppo seguendo svariati post in merito questa caratteristica non viene mai menzionata e io stupidamente non ci ho nemmeno provato.
  2. Alla fine della sessione mi è stato chiesto se è possibile fare uso del protocollo WS-Security con un ADO.NET Data Service. Di primo acchito trattandosi di un servizio esposto con WCF si può avere l’impressione che la cosa sia possibile. Ma soffermandosi un po’ a pensare mi sarebbe venuto in mente immediatamente che gli standard WS-* sono basati su SOAP e di conseguenza non è certo pensabile che funzionino con JSON e AtomPub. Quindi la risposta giusta è “no, non è possibile”. L’unica cosa da fare per proteggere il servizio è usare SSL.

Tutto qua. Non si tratta di questioni rilevanti, ma tutto sommato è meglio saperlo :)


Rientrato dal Community After Hour di ieri sera è giunto il momento dei ringraziamenti. E di ringraziamenti ce ne sono molti, non fosse altro che per il successo che considero senza precedenti. Per la prima volta infatti ad un evento abbiamo avuto più partecipanti che iscritti e già questo è motivo di grande orgoglio. Se poi mettiamo in conto che la comunicazione è partita molto a ridosso della data dell’evento allora questo risultato  diventa ancora più significativo.

Il primo ringraziamento va al team del DPE di Microsoft Italia che ha dimostrato una capacità organizzativa eccezionale. Non c’è ombra di dubbio che senza di loro avremmo faticato molto a raggiungere un risultato come questo. In secondo luogo un ringraziamento ai colleghi dello user group che hanno tenuto le sessioni accanto a me per l’incredibile qualità dei contenuti che sono riusciti a produrre nonostante gli impegni di lavoro che so essere stati molto pressanti. Infine, da ultimo ma indubbiamente più importante di tutti, un ringraziamento alle persone che hanno deciso di investire una serata in nostra compagnia, con una speciale menzione per quegli “eroi” (ed erano la maggioranza) che hanno prolungato la loro presenza durante la giornata totalizzando ben 14 ore consecutive…

Ora dobbiamo concentrarci sul futuro. Altri eventi ci e il lavoro da fare è molto. Ma almeno sappiamo che il nostro tempo è ben riposto.

Technorati Tags:

delegato Qualche minuto per rendervi partecipi della mia presenza agli Open Days di Milano. Dei contenuti non vi posso parlare, ma mi interessa farvi respirare l'atmosfera di questi giorni che ci portano a conoscerci tra noi e ad entrare in contatto con le persone di Microsoft e capire come si lavora all'interno di questa azienda.

Prendo spunto dal gesto che ho visto pochi istanti fa, quando l'amministratore delegato di Microsoft Italia, , ha terminato una breve ma sentita sessione.

Credo che questo gesto, testimoni l'incredibile freschezza di questa azienda che non fa della gerarchia un motivo di netta separazione ma di semplice assunzione di responsabilità in diversa misura.

Torno alle sessioni.

 

Technorati Tag: ,