marzo 2014 Blog Posts
Lo scorso weekend si sono svolti gli MVP Open Days, l'annuale ritrovo dei Microsoft MVP, nella splendida cornice di Barcellona. La scelta di una location in Spagna è legata principalmente alla recente riorganizzazione del programma, che vede Italia, Portogallo e Spagna far parte dello stesso gruppo.
Come sempre è stata l'occasione per ritrovare amici vecchi e nuovi, con l'opportunità di seguire svariate sessioni tecniche interessanti. Tra l'altro, l'occasione è stata utile anche per presentare io stesso una sessione su LightSwitch e il client HTML, da cui traggo la seguente foto ricordo (grazie all'amico Andrea Boschin).
Un sincero ringraziamento a Cristina Herrero e...
Su suggerimento di un amico, segnalo questo articolo su CodeProject che mostra come ottenere un fotogramma all'interno di un video mediante il controllo MediaElement. Tale procedura può essere molto utile per creare delle anteprime in formato immagine, senza appesantire l'utilizzo di risorse di sistema.
Alessandro
È stato pubblicato il mio nuovo ebook, gratuito, dal titolo Visual Studio 2013 Succinctly, edito e prodotto dalla Syncfusion, azienda leader nella realizzazione di eccezionali controlli utente per varie piattaforme come WPF, Windows Phone, Windowa Store.
È stata la mia prima esperienza con la Syncfusion e mi sono trovato molto bene, inoltre mi è sempre piaciuta la formula della collana Succinctly: un numero limitato di pagine (per uno che proviene dalle 1400 di VB 2012 Unleashed, 100 è stato come bere un caffè ) per riassumere in modo semplice e preciso le caratteristiche di una tecnologia o di un'ambiente di lavoro.
Visual...
Qualche giorno fa è stato rilasciato un aggiornamento, denominato March 2014 Update, degli Office Developer Tools che influenzano, tra l'altro, anche il nostro caro LightSwitch.
Con questo aggiornamento, annunciato in questo post del Team, ci sono importanti novità:
possibilità di connessione alla famosa piattaforma SAP;
Common Screen Set per il client HTML, che consente di aggiungere una serie di screen tra quelli di default (es. Browse, Add/Edit) quando si collegano i dati alla UI senza doverli aggiungere a mano;
integrazione con la Document Library di un portale SharePoint.
Ovviamente SharePoint Online rimane il...
Se avete necessità di un modo semplice e rapido per trovare record contenenti valori duplicati in una (1) tabella di un db SQL Server, potete usare questo semplice script che funziona anche nell'editor di codice T-SQL di Visual Studio 2013:
SELECT CompanyName,COUNT(CompanyName) FROM Northwind.dbo.CustomersGROUP BY CompanyName HAVING COUNT(CompanyName) > 1
Il codice non fa altro che raggruppare tutti i record in base alla colonna specificata e determina se il conteggio è > 1.
Alessandro
L'amico Matteo Pagani, grande MVP per Windows Phone, ha appena pubblicato un nuovo eBook dal titolo Windows Phone 8 Development Succinctly, edito da Syncfusion, per la nota collana di eBook gratuiti.
Un bell'eBook che fornisce informazioni per muovere i passi necessari nello sviluppo su Windows Phone e adatto a vari livelli di esperienza, ovviamente gratis.
Scaricatelo da qui. E rimanete sintonizzati, perché al prossimo giro tocca al mio
Alessandro
Syncfusion, azienda molto nota per la produzione di eccellenti controlli per varie piattaforme .NET, da oggi offre una licenza per sviluppatori individuali (quindi no aziende) dei loro ottimi controlli per Windows Phone al prezzo simbolico di 1$.
La licenza, si legge, è valida anche per fini commerciali e l'unica condizione è che sia utilizzata da un singolo individuo.
Ottima iniziativa! Maggiori info e download qui.
Alessandro
Segnalo la pubblicazione di un ebook gratuito dal titolo "Location Intelligence for Windows Store Apps", in cui vengono discusse svariate tecniche di programmazione per utilizzare i servizi di posizione nelle app per Windows 8, sia sfruttando i sensori sia le API REST di Bing Maps. In realtà c'è molto di più e, tenuto conto che è gratis, è veramente un'ottima risorsa.
Scaricabile dal sito Lulu a questo indirizzo.
Alessandro
Il controllo InkCanvas fornisce, alle applicazioni WPF, una superficie su cui è possibile disegnare e scrivere sia col mouse, che col touch che con una penna capacitiva.
E' quindi un fedele compagno se scrivete applicazioni desktop che girano su dispositivi come i tablet con Windows 8.1.
Salvare il suo contenuto su disco e ricaricarlo è un'operazione piuttosto semplice, dal momento che la collezione di "tratti" definita Strokes espone un metodo Save e che al contrario può essere popolata con il contenuto di uno stream. Ecco il codice Visual Basic, con relativi commenti:
Private Sub SaveButton_Click(sender As Object, e As RoutedEventArgs) 'Istanza di una dialog di salvataggio Dim SaveFileDialog1 As New Microsoft.Win32.SaveFileDialog() 'Il filtro è a propria discrezione SaveFileDialog1.Filter = "File Ink (*.ink)|*.ink" If SaveFileDialog1.ShowDialog() Then 'Si apre uno stream binario in scrittura Using fs As New System.IO.FileStream(SaveFileDialog1.FileName, _ System.IO.FileMode.Create) 'Si invoca il metodo Save della collection Strokes sullo stream Me.Ink1.Strokes.Save(fs) End Using End If End Sub Private Sub LoadButton_Click(sender As Object, e As RoutedEventArgs) 'Istanza di una dialog di apertura Dim OpenFileDialog1 As New Microsoft.Win32.OpenFileDialog() 'Il filtro è a propria discrezione OpenFileDialog1.Filter = "File Ink (*.ink)|*.ink" If OpenFileDialog1.ShowDialog() Then 'Si apre uno stream binario in lettura Using fs As New System.IO.FileStream(OpenFileDialog1.FileName, _ System.IO.FileMode.Open) 'Si popola la collezione dell'InkCanvas con 'una StrokeCollection popolata col contenuto dello stream Me.Ink1.Strokes = New Ink.StrokeCollection(fs) End Using End If End Sub
Alessandro
Come sapete, l'utilizzo del pattern Async/Await impone alcune limitazioni architetturali quando lavorate con un'applicazione Console. Ci sono tanti motivi per lavorare con questo tipo di applicazioni, banalmente per creare demo o per realizzare tool dalla riga di comando quindi il punto non è questo.
Il problema è che nelle Console application potreste avere dei metodi asincroni da lanciare all'avvio, ma purtroppo il metodo Main non può essere marcato come Async, quindi non può contenere l'operatore Await per attendere il risultato di metodi asincroni.
Fortunatamente c'è un piccolo workaround. Considerate il seguente metodo asincrono, che scarica solamente il contenuto degli RSS di questo...