di .NET e di altre amenità

40 anni dopo la Luna siamo ancora a Terra...

moon_apollo Non nascondo di essere un fan sfegatato dei viaggi interplanetari e delle missioni spaziali. Oggi come molti festeggio il 40esimo anniversario dell'allunaggio da parte del mitico Apollo 11, ma lo faccio con un pizzico di amarezza. Tale amarezza deriva dalla consapevolezza che nonostante siano passati quarant'anni, cioè praticamente la durata della mia vita fino ad oggi, siamo ancora fermi al palo, a guardarci indietro ai fasti di queste missioni senza la capacità di progredire oltre, senza che nessun'altro abbia mai più messo piede sul nostro satellite e senza che le ventilate possibilità su una missione per Marte abbiano in qualche modo guadagnato una certa concretezza.

Certo direte voi, stai con i piedi per terra, renditi conto che andare sulla Luna non è poi così utile, ma rimane la consapevolezza che se lassù non ci siamo più andati dipende dal fatto che non siamo ancora stati in grado di risolvere i problemi quaggiù. Se fossimo stati abbastanza intelligenti come esseri senzienti, i problemi della fame e delle guerre sarebbero risolti e potremmo guardare con speranza alla vastità del cielo che ci aspetta per essere esplorato. Se fossimo solo un po' più intelligenti potremmo intuire che nell'esplorazione spaziale non si cela solo la supremazia di un popolo rispetto agli altri, ma forse la possibilità di avere nuovi orizzonti da esplorare, possibilmente risorse da sfruttare e anche solo una spinta tecnologica innovativa. Tutte opportunità che ci potrebbero aiutare a risolvere i problemi che nei prossimi anni dovranno per forza di cose acutizzarsi.

Festeggiamo quindi le nostre conquiste, ma nel celebrare i fasti passati pensiamo a costruire un mondo nuovo e migliore sulle basi della ricerca, dell'intelligenza e della scienza. Le nostre uniche possibilità di rimanere a galla come forma di vita.

Ripetere operazioni con una Lambda Expression

Recentemente ho avuto la necessità di scrivere un batch in C# che nottetempo facesse delle operazioni un po' pesanti su un database, attingendo ai dati, compiendo elaborazioni e alla fine salvando i risultati nel medesimo database. Dopo un po' di test mi sono reso conto che il problema principale era dato dai timeout che saltuariamente il batch otteneva su alcune query con il rischio di compromettere l'integrità del lavoro.

Così, LINQ alla mano mi sono create un piccolo script che, presa in carico una operazione effettua un numero dato di tentativi intervallati da un ragionevole timeout così da dare il tempo al database di fare il suo lavoro.

   1: /// <summary>
   2: /// Does the retry.
   3: /// </summary>
   4: /// <param name="maxRetry">The max retry.</param>
   5: /// <param name="waitTimeout">The wait timeout.</param>
   6: /// <param name="action">The action.</param>
   7: public static void DoRetry(int maxRetry, int waitTimeout, Action<int> action)
   8: {
   9:     for (int current = 1; current <= maxRetry; current++)
  10:     {
  11:         try
  12:         {
  13:             action(current);
  14:             return;
  15:         }
  16:         catch (SqlException ex)
  17:         {
  18:             // TIMEOUT | DEADLOCK
  19:             if (ex.Number != -2 && ex.Number != 1205)
  20:                 throw ex;
  21:         }
  22:  
  23:         Thread.Sleep(waitTimeout);
  24:     }
  25: }

Lo script è davvero semplice e pulito. Chiede in ingresso il numero massimo di tentativi e il tempo di attesa, oltre ad una Action<int> ovvero una lambda expressione con l'azione da compiere. Poi fa un semplicissimo ciclo for che ad ogni iterazione chiama l'Action. Nel caso vada tutto bene esce altrimenti - in caso di timeout o di deadlock - attente il timeout e riprova. Naturalemente in caso di diversa eccezione il metodo notifica l'eccezione al chiamante. Ecco come usarlo:

   1: public void ExecuteLongRunningQuery(int parameter)
   2: {
   3:     Operations.DoRetry(5, 10000,
   4:         n =>
   5:         {
   6:             DataStore.LongRunningQuery(parameter);
   7:         });
   8: }

Poche righe e otteniamo di ripetere la query 5 volte intervallata di 10 secondi l'una dall'altra. Il parametro "n" che viene passato alla lambda è il numero di iterazione corrente e permette di scrivere in un ipotetico log il numero di tentativi effettuati.

Technorati Tags: ,

Silverlight 3.0 RTW: Nuovi articoli pubblicati

Con l'arrivo un po' travagliato della release 3.0 di Silverlight ho pubblicato alcuni articoli nuovi su .

Buona lettura a tutti.

ScottGu on Silverlight at London UG

In questa pagina trovate i 3 video di Scott Guthrie che parla di Silverlight presso il .NET London User Group.

Nell'abstract dei video si legge anche:

In Part 1 Scott summarises the key features of Silverlight 3.
In Part 2 he gives a walkthrough of the new SketchFlow product, including demonstration of some features "not previously shown in public".
In Part 3 he uses coding examples to show the core Silverlight 3 concepts, and takes a lively Q & A session.

Buona visione.

http://exposureroom.com/members/RIAViewMirror.aspx

Windows 7 in RTM fra pochi giorni

US_Prd_Bx_Tilt_L_Win_7_Generic_thumb455007217 E’ stata ufficializzata la data di rilascio di Window 7. Il prossimo 13 Luglio chi ha MDSN Subscription potrà iniziare a installare il nuovo (e favoloso) sistema operativo...

Inutile dire che non vedo l'ora!

 

 

 

 

Links: http://geeksmack.net/microsoft/438-confirmed-windows-7-to-rtm-july-13th.html

Visual Studio Twitter

Se vi va di seguire i twit del team di Visual Studio eccovi serviti: http://twitter.com/vseditor

Va da se che potete anche fare qualche reply, magari quando vi scoppia VS2010...

Link: http://twitter.com/vseditor

Visual Studio 2010: RegEx editor

Torno sulle Regular expressions per segnalare un utile download per chi avesse iniziato ad usare Visual Studio 2010. Si tratta di una estensione che aggiunge un utile editor per le Regular Expressions.

Io continuo a preferire quello in Silverlight.... :P

Link: http://visualstudiogallery.msdn.microsoft.com/en-us/55c24bf1-2636-4f94-831d-28db8505ce00

XeDotNet: Il survey del prossimo semestre

Vi segnalo che è stato pubblicato il survey per la selezione degli speaker nel prossimo semestre. Chiunque può votare gli argomenti presenti nel sondaggio e così condizionare le sessioni che verranno scelte.

Personalmente ho proposto 4 sessioni che trovare in due diverse track:

1. Applicare MVVM in Silverlight con Prism V2

Model-View-VievModel, promette di aiutare il programmatore a strutturare meglio il codice scritto per realizzare le proprie applicazioni WPF e Silverlight. E' necessario tuttavia adottare uno strumento che consenta di avvantaggiarsi al meglio di questo pattern, associando ad esso UI composition, Event Broker e Dependency Injection. Composite WPF and Silverlight application guidance (Prism v2.0) è un interessante toolkit che aiuta nello sviluppo di questo tipo di applicazioni.

2. Le novita' di Silverlight 3.0

Silverlight 3.0 ha introdotto una interessante serie di novità nella piattaforma RIA. Questa sessione ha l'intento di analizzare le novità dimostrandone l'utilizzo pratico con numerosi esempi.

3. Silverlight do it better: Silverlight, Ria Services e le LOB Applications

Alcune delle nuove feature di Silverlight 3.0 rendono la piattaforma RIA di Microsoft decisamente adatta allo sviluppo di applicazioni LOB che godono di numerosi benefici rispetto a tecnologie orientate al desktop: Ria Services, DataForm, Out Of browser experience, e altre di questo tenore. In questa sessione si intende dimostrare come grazie a questi strumenti si possano creare applicazioni cross-platform che non fanno rimpiangere il desktop.

4. Entity Framework 4.0: Promessa mantenuta?

La nuova versione dell'Entity Framework che sarà inclusa nel .NET Framework 4.0 è attesa da molti come quella che porterà una soluzione ai problemi della precedente release. Vale la pena di soffermarsi sull'argomento per comprendere se le novità introdotte giustifichino finalmente il passaggio all'ORM di casa Microsoft.

Vi segnalo in particolare la sessione 3 - Silverlight do it better. Se volete sapere cosa può fare Silverlight per la vostra azienda questa è la sessione cui dovete assolutamente partecipare. Non si parlerà di "effetti speciali" ma piuttosto di cosa all'interno di Silverlight ci consente di scrivere applicazioni che non  hanno nulla da invidiare a quelle desktop ma che godono di tutti i benefici di questa piattaforma: cross-platform e abbattimento dei costi di installazione e manutenzione.

Molto interessante anche l'applicazione del pattern di interfaccia MVVM, ma anche di UI Composition e Dependency injection con l'uso della Composite WPF and Silverlight Guidance (Prism v2).

Infine l'immancabile Entity Framework 4.0. Cosa ci aspetta? Credo sia questa la domanda che tutti si pongono. Mio compito sarà cercare di capire con voi se i limiti e le perplessità che io stesso ho sollevato sulla versione 1.0 sono state superate.

Naturalmente, come consueto per i miei meeting il tutto sarà accompagnato da numerosi esempi "real world".

Votate, me e le interessantissime sessioni proposte dagli altri 11 speaker!

link: http://www.xedotnet.org/polls/survey.php?sid=DCC4C9

Ancora Silverlight e F#

In questo sito si trovano alcuni altri esempi dell'uso di F# in Silverlight con tanto di codice allegato.

Link: http://www.ryoushin.com/cmerighi/en-us/79,2009-07-01/Silverlight_and_F_happily_ever_after.aspx

MVP Silverlight 2009: un onore che si rinnova

La notizia mi ha raggiunto proprio pochi minuti dopo essere uscito dall'ufficio perciò l'unica cosa che ho potuto fare è arrestare l'auto e twittare un "MVP Again!!!". E' infatti con gioia che posso dire a tutti quelli che non seguono che per il terzo anno consecutivo sono stato insignito del titolo di Most Valuable Professional. In continuità con il recente cambio di expertise sono stato riconfermato nella categoria di Silverlight. L'ansia dell'attesa e la felicità della notizia sono le stesse della prima volta. Spero che anche voi condividiate con me almeno una parte di tale felicità per aver raggiunto nuovamente un traguardo che era tutt'altro che scontato.

Si usa dedicare una vittoria a qualcuno. Io voglio dedicarla parte a mia moglie e mia figlia che sopportano i miei continui impegni, e parte a voi, che mi avete dato fiducia nel condurre e organizzare lo usergroup XeDotNet, che avete affollato le mie sessioni, che avete affidato a me le vostre domande. Questo titolo è soprattutto vostro.

Un grazie speciale a Microsoft per la fiducia, al team che ha preso in esame la mia candidatura per avermi conferito il titolo e al nostro per la serietà e trasparenza con cui conduce la sua attività di MVP Lead.

Grazie a tutti!

HTML5: il killer con la pallottola spuntata?

Si fa un gran parlare in questi giorni di un fantomatico killer che si affaccia alla scena delle applicazioni rich Internet. Si tratta di HTML5 che almeno nei propositi sembra una buona e interessante cosa. Le vittime dovrebbero essere ovviamente gli odiati Flash (& co), Silverlight e JavaFX, colpevoli secondo i detrattori del peccato originale di essere piattaforme proprietarie.

Ora, io non ho la sfera di cristallo per prevedere il futuro, ma stando che:

1) html5 è ancora un draft del w3c

2) nonostante questo si cominciano a vedere delle implementazioni proprietarie il che significa che le interpretazioni tenderanno a divergere

3) non è che poi quello che si intravede nelle demo attuali sia poi così entusiasmante

La mia analisi è semplice: arriveremo fra svariati mesi, probabilmente un po' tardi rispetto a quello che il mercato di aspetta, ad avere una implementazione html5 che soffre di tutti i difetti delle precedenti release di html. Browser diversi comportamenti diversi e quindi la quotidiana lotta dell'htmlista a convincere i browser a comportarsi allo stesso modo portata all'estremo.

Ma poi perchè? Volendo implementare un sito un po' più accattivante vai a convincere il tuo grafico che html5 può fare meglio di flash (e soprattutto anche se lo convinci chi glielo fa fare a perdere tutto 'sto tempo dietro alla compatibilità se flash è già installato ovunque?). Se invece devo realizzare una applicazione, di certo html5 non mi aiuta, e in termini di produttività scegliere una piattaforma ria (una qualunque) è certamente più serio.

Ora, mi potrete dire che io sono "infoiato" di Silverlight e probabilmente avete anche ragione, ma sono un po' stanco di avere a che fare con le orde di "salvatori del mondo" soprattutto se nascono in partenza con le armi spuntate.... Io sono uso a dare a Cesare ciò che è di Cesare e se le premesse sono queste il mondo perderà ancora una volta l'appuntamento con la sua salvezza. (ma salvezza da che?)

Naturalmente IMHO.

Regular Expression tool

Bucketsoft ha pubblicato Regex Hero, un utile tool per testare le regular expressions fatto completamente in Silverlight. E' possibile testare sia le funzionalità di ricerca che il replace di stringhe. Davvero utile.

Link: http://regexhero.net/