ComputerLand

Tu sei qui: Articoli MSDN

Notizie dal web

Windows Azure IT Camp

E-mail Stampa PDF

Ciao a tutti,

Vorrei condividere con voi la possibilità di partecipare ad un evento gratuito organizzato da Microsoft il 2 Dicembre a Milano,ovvero l’ IT Camp di Windows Azure. La maggior parte di voi è dedicato allo sviluppo ma nel caso voleste approfondire tematiche IT PROs questa è la giusta opportunità. Ovviamente gli argomenti trattati saranno tutti IT PROs: Virtual Machines, Virtual Network, Windows Azure Backup e tanto altro. L’evento si dividerà tra una parte teorica e una pratica, ricca di numerosi interessanti laboratori.

Per ulteriori informazioni e per registrarsi utilizzare questo link.


read full article

Guest post: VB T&T si appresta a festeggiare 15 anni di attività con un evento insieme ad uno dei PM di Roslyn, presente e futuro dei compilatori VB e C#

E-mail Stampa PDF

Questo post è stato scritto da Alessandro Del Sole, Microsoft MVP : Visual Basic

Le community tecniche sono da sempre realtà molto importanti per chi fa informatica a vari livelli, perché costituiscono punti di confronto e possibilità di crescita tecnica attraverso risorse condivise da persone con una grande passione. Fu così che, 15 anni fa, nacque Visual Basic Tips & Tricks, LA community italiana dedicata al linguaggio Visual Basic, nata da un'idea di Gianluca Cannalire che volle proprio creare un punto di incontro per chi doveva risolvere problemi quotidiani nell'uso del linguaggio. In realtà, come riportato anche sul nostro logo, le prime attività di Gianluca cominciarono nel '96, quando mise in piedi un piccolo sito per raccogliere frammenti di codice e suggerimenti (tips & tricks, per l'appunto J). Nel giro di due anni l'interesse intorno a quel piccolo sito crebbe a tal punto che si decise di ampliare la struttura con forum e articoli tecnici, aprendo le porte alla collaborazione di altri. Proprio grazie a questa nuova forma, VB T&T diventa una community vera e propria nel dicembre del 1998.

Visual Basic si è evoluto, come tutte le altre tecnologie Microsoft, nel corso degli anni e così, di pari passo, anche VB T&T. Oggi siamo una community con oltre 46.000 iscritti, che si occupa sicuramente ancora (!) di Visual Basic 6, ma soprattutto di tecnologie basate su .NET come WPF, Windows Phone, Windows 8.x, Azure stando sempre al passo coi tempi e offrendo risorse per chi Visual Basic non l'ha mai abbandonato e lo vuole usare anche in ambienti moderni. 15 anni non sono pochi. Per una community di sviluppatori, sono tanti. Tanta longevità è stata possibile grazie ai rapporti umani, alle amicizie che negli anni sono nate e si sono consolidate, tirando fuori quello che è il vero spirito della community, ossia lo stare insieme oltre l'aspetto tecnico e la voglia di condividere esperienze e conoscenza.

Come vi dicevo, a dicembre ricorrono 15 anni dalla nascita di VB T&T come community. Per festeggiare degnamente la ricorrenza, il giorno 3 dicembre 2013 ci troveremo presso la sede di Microsoft Italia a Peschiera Borromeo (MI) con un evento gratuito composto non solo da sessioni tecniche, ma anche da una breve keynote in cui ricorderemo il percorso della community dai suoi albori ad oggi, all'interno della quale ognuno di noi contribuirà col proprio ricordo di crescita, sia tecnico-professionale che umano. Avremo un ospite d'eccezione, Anthony D. Green, Program Manager di Microsoft Corporation che verrà appositamente da Redmond per tenere una sessione su Roslyn, un progetto su cui Microsoft lavora da diversi anni e con il quale avremo necessariamente a che fare, dato che riguarda il futuro dei compilatori dei linguaggi VB e C# (non ultima, la riorganizzazione sotto forma di compiler-as-a-service). Anthony ci farà capire cos'è Roslyn, a cosa serve, perché è utile e come cambierà il nostro modo di sviluppare; un'occasione davvero imperdibile soprattutto perché permetterà di capire meglio la visione che Microsoft ha del futuro dei linguaggi. Le altre sessioni, sviluppo moderno per Windows desktop e Entity Framework 6 con il neonato Visual Studio 2013, si pongono l'obiettivo di dare supporto a chi sviluppa in e per aziende in cui la postazione desktop la fa da padrone attraverso gli strumenti più innovativi.

Stiamo anche organizzando un collegamento in diretta con il Visual Basic Team a Redmond, sia per goderci gli auguri dal gruppo di prodotto, sia perché il Team ha piacere di mostrare dei contenuti interessanti ai partecipanti; poter interagire con chi realizza il prodotto non è occasione di tutti i giorni.

A seguire, per chi vuole, ci sarà una cena community sempre a Peschiera Borromeo (comunicate la presenza tramite l'apposita pagina). Perché l'evento tecnico è importante, ma passare una serata in compagnia di persone che condividono la stessa passione è anche più bello.

Ci vediamo il 3 dicembre!


read full article

Guest Post: BING Speech Recognition nelle Windows Store app

E-mail Stampa PDF

Questo post è stato scritto da Massimo Bonanni

Nelle scorse settimane la piattaforma BING ha rilasciato la possibilità di utilizzare funzionalità di speech recognition all'interno delle applicazioni Windows Store Apps per Windows 8 e 8.1.

In questo post cercheremo di dare una visione di insieme su ciò che possiamo fare e come utilizzare le nuove funzionalità di riconoscimento vocale.

Prima di entrare nel dettaglio, il punto di partenza per scoprire tutte le funzionalità offerte da BING per gli sviluppatori è il BING Developer Center all'indirizzo http://it.bing.com/dev/en-us/dev-center

BING Speech Recognition Control

Un'operazione propedeutica per poter utilizzare le funzionalità di speech recognition è il download e l'installazione dell'assembly che contiene le API necessarie.

Per fare questo possiamo utilizzare l'Extension Manager di Visual Studio come mostrato in Figura 1:

clip_image002

Al momento della scrittura del post, come possiamo anche vedere nella precedente figura, il controllo ha tra gli ambienti di sviluppo supportati Visual Studio 11 (Visual Studio 2012). In realtà il package funziona anche con Visual Studio 2013 ma non lo troveremo in quest'ultimo se utilizziamo l'extension manager e dovremo installarlo d al sito.

Sottoscrizione al servizio di BING

Come tutti i servizi offerti dalla piattaforma BING, è necessario sottoscriversi ad un abbonamento tramite il Windows Azure Marketplace ed in particolare alla pagina dello Speech Recognition Control (https://datamarket.azure.com/dataset/bing/speechcontrol)

clip_image004

Il servizio non è disponibile, in questo momento, per gli account Microsoft Account italiani. Se avete, quindi, un live id italiano (cioè se avete dichiarato di risiedere in Italia) non potrete sottoscrivervi e utilizzare il servizio.

Esiste un abbonamento gratuito (di fatto l'unico disponibile ora) che prevede fino ad un massimo di 500.000 transazioni per mese (assolutamente sufficienti per test).

Il servizio di speech recognition prevede un'autenticazione con il protocollo OAUTH e, quindi, abbiamo la necessità di registrare la nostra applicazione (anche se di test) in modo da ottenere il ClientID e il SecretClient e permettere al sistema di tracciare le nostre transazioni.

Per registrare la nostra applicazione possiamo utilizzare la pagina di Windows Azure Marketplace https://datamarket.azure.com/developer/applications/

clip_image006

Quando registriamo l'applicazione (con il tasto Registra della precedente figura), inseriamo il ClientID (che deve essere univoco) e otteniamo il SecretClient:

clip_image008

In questo caso l'applicazione è un'applicazione Windows Store Apps per Windows 8.1 e possiamo inserire un URL di riendirizzamento "fasullo" (comunque obbligatorio).

Referenziare l'assembly dello Speech Recognition

Il passaggio successivo, ultimo prima di poter utilizzare le funzionalità di speech recognition, è quello di referenziare l'assembly (scaricato nel sistema tramite il package preso dalla Visual Studio gallery di cui sopra).

Per fare questo utilizziamo la funzionalità di "Add Reference:" di Visual Studio, scegliamo il nodo Windows, il nodo Extensions e l'assembly Bing.Speech, come mostrato nella seguente figura:

clip_image010

Referenziare l'assembly Bing.Speech produce la reference della dll "Microsoft Visual C++ 2013 Runtime Package" utilizzata da quest'ultimo.

La libreria runtime di Visual C++ da un errore di reference se utilizzate come piattaforma la Any CPU, quindi dovete necessariamente utilizzare o x86 o x64 durante i vostri test con Visual Studio e compilare per x86, x64 e ARM prima di distribuire la vostra applicazione.

Ultima operazione per poter utilizzare le classi contenute in Bing.Speech e accedere al servizio è la modifica del file di manifest per abilitare le capability "Internet Client" e "Microphone":

clip_image012

Infine è necessario aprire il file di manifest utilizzando un editor XML (basta utilizzare l'opzione contestuale "Open with:" di Visual Studio) e aggiungere il seguente nodo XML:

<Extensions>

<Extension Category="windows.activatableClass.inProcessServer">

<InProcessServer>

<Path>Microsoft.Speech.VoiceService.MSSRAudio.dll</Path>

<ActivatableClass ActivatableClassId="Microsoft.Speech.VoiceService.MSSRAudio.Encoder" ThreadingModel="both" />

</InProcessServer>

</Extension>

<Extension Category="windows.activatableClass.proxyStub">

<ProxyStub ClassId="5807FC3A-A0AB-48B4-BBA1-BA00BE56C3BD">

<Path>Microsoft.Speech.VoiceService.MSSRAudio.dll</Path>

<Interface Name="IEncodingSettings" InterfaceId="C97C75EE-A76A-480E-9817-D57D3655231E" />

</ProxyStub>

</Extension>

<Extension Category="windows.activatableClass.proxyStub">

<ProxyStub ClassId="F1D258E4-9D97-4BA4-AEEA-50A8B74049DF">

<Path>Microsoft.Speech.VoiceService.Audio.dll</Path>

<Interface Name="ISpeechVolumeEvent" InterfaceId="946379E8-A397-46B6-B9C4-FBB253EFF6AE" />

<Interface Name="ISpeechStatusEvent" InterfaceId="FB0767C6-7FAA-4E5E-AC95-A3C0C4D72720" />

</ProxyStub>

</Extension>

</Extensions>

Se non aggiungiamo i punti di estensione precedenti otterremo una eccezione nel momento in cui tentiamo di utilizzare le funzionalità della piattaforma.

La classe SpeechRecognizer e il controllo SpeechRecognizerUx

Il modo più semplice per fornire le funzionalità di speech recognition è utilizzare la classe SpeechRecognizer e il controllo SpeechRecognizerUx.

La classe SpeechRecognizer si occupa di gestire lo stream proveniente dal microfono e comunicare con il servizio di BING ritornando, eventualmente, ciò che è stato analizzato mentre il controllo SpeechRecognizerUX permette di fornire all'utente l'interfaccia minima per gestire l'operazione di speech recognition.

Per utilizzare la UX fornita di default è sufficiente aggiungere il controllo SpeechRecognizerUx alla nostra finestra:

<Page

x:Class="BINGSpeechRecognition.MainPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:sp="using:Bing.Speech.Xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

mc:Ignorable="d" Loaded="Page_Loaded">

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

<Grid.RowDefinitions>

<RowDefinition Height="2*"/>

<RowDefinition Height="*"/>

<RowDefinition Height="Auto"/>

<RowDefinition Height="100"/>

</Grid.RowDefinitions>

<Border Margin="50" BorderBrush="{ThemeResource ButtonBorderThemeBrush}" BorderThickness="1">

<TextBlock x:Name="ResultText" FontSize="30" Margin="5"/>

</Border>

<Border Margin="50" BorderBrush="Red" BorderThickness="1" Grid.Row="1">

<TextBlock x:Name="ErrorText" FontSize="30" Margin="5" Foreground="red"/>

</Border>

<Button x:Name="StartButton" Grid.Row="2" Margin="10"

HorizontalAlignment="Center" FontSize="30">Avvia il riconoscimento</Button>

<sp:SpeechRecognizerUx x:Name="SpeechControl" Grid.Row="3"/>

</Grid>

</Page>

Da notare che dobbiamo utilizzare il namespace Bing.Speech.Xaml per essere abilitati a vedere il controllo SpeechRecognizerUx.

L'effettiva funzionalità di speech recognition è demandata alla classe SpeechRecognizer:

Private speechRecognizer As SpeechRecognizer

Private Sub Page_Loaded(sender As Object, e As RoutedEventArgs)

CreateSpeechRecognizer()

SpeechControl.SpeechRecognizer = speechRecognizer

End Sub

Private Sub CreateSpeechRecognizer()

Dim credentials = New SpeechAuthorizationParameters()

credentials.ClientId = "CLIENT ID"

credentials.ClientSecret = "CLIENT SECRET"

speechRecognizer = New SpeechRecognizer("it-IT", credentials)

End Sub

Creiamo l'istanza della classe SpeechRecognizer passando i parametri dell'autenticazione (ClientId e ClientSecret visti in precedenza) e la lingua desiderata ("it-IT" nell'esempio) e l'associamo al controllo SpeechRecognizerUx in modo che questo possa gestire le notifiche all'interfaccia e segnalare all'utente il momento in cui l'applicazione è in ascolto.

clip_image014

A questo punto non ci resta che avviare il riconoscimento vocale utilizzando il metodo RecognizeSpeechToTextAsync della classe SpeechRecognizer.

Private Async Sub StartButton_Click(sender As Object, e As RoutedEventArgs) Handles StartButton.Click

StartButton.IsEnabled = False

Try

Me.ResultText.Text = String.Empty

Me.ErrorText.Text = String.Empty

Dim result = Await speechRecognizer.RecognizeSpeechToTextAsync()

If result.TextConfidence <> SpeechRecognitionConfidence.Rejected Then

      Me.ResultText.Text = result.Text

Else

      Me.ErrorText.Text = "Rejected"

End If

Catch ex As Exception

      Me.ErrorText.Text = ex.Message

End Try

StartButton.IsEnabled = True

End Sub

Il risultato della chiamata (rigorosamente asincrona) al metodo RecognizeSpeechToTextAsync contiene le informazioni sull'eventuale testo "riconosciuto". Il risultato è di tipo SpeechRecognitionResult le cui proprietà sono:

  • Text: eventuale testo riconosciuto;
  • TextConfidence: enumerazione di tipo SpeechRecognitionConfidence che indica il grado di attendibilità del riconoscimento. Se non è stato riconosciuto nulla si ha il valore Rejected.

Oltre a queste proprietà, la classe SpeechRecognitionResult fornisce anche il metodo GetAlternates per avere l'elenco delle stringhe alternative riconosciute dalla piattaforma (anch'esse di tipo SpeechRecognitionResult).

E' opportuno gestire tramite un try..catch la chiamata alla piattaforma BING perché, in caso di mancanza di rete, potremmo ottenere un'eccezione.

SpeechRecognizer in dettaglio

La classe SpeechRecognizer espone una serie di metodi e di eventi utili per controllare il flusso di esecuzione del riconoscimento vocale, soprattutto se non si utilizza il controllo XAML e si devono implementare le funzioni di stop e cancellazione dell'operazione.

In particolare, oltre al già citato RecognizeSpeechToTextAsync, troviamo:

  • StopListeningAndProcessingAudio: ferma l'acquisizione dell'audio e avvia l'analisi dell'audio recuperato;
  • RequestCancelOperation: annulla il processo di riconoscimento vocale.

Oltre ai metodi abbiamo a disposizione anche degli eventi:

  • AudioCaptureStateChanged: viene sollevato quando cambia lo stato della sessione di riconoscimento vocale. L'enumerazione SpeechRecognizerAudioCaptureState dell'argomento dell'evento fornisce informazioni sullo stato della sessione (ad esempio Thinking quando la piattaforma sta elaborando un audio);
  • AudioLevelChanged: viene sollevato quando l'utente varia il volume dell'audio catturato dal microfono;
  • RecognizerResultRecieved: viene sollevato ogni volta che la piattaforma fornisce un risultato preliminare di riconoscimento vocale nello stato di Thinking. Tramite la proprietà IsHypothesis possiamo sapere se si tratta di un risultato preliminare o finale.

Possiamo, quindi, agevolmente sostituire il controllo fornito dalla piattaforma con un nostro controllo per la gestione del riconoscimento vocale.

Ricordate che è sempre opportuno segnalare all'utente quando l'operazione di riconoscimento vocale è attiva e fornire la possibilità di annullarla o completarla. Per quanto riguarda il completamento la piattaforma lo esegue automaticamente se si accorge di un momento di "vuoto" nell'audio ma in ambienti rumorosi l'utente potrebbe voler intervenire manualmente.


read full article

How to: Impostare il servizio di allerta quando si raggiunge una soglia limite di spesa su Windows Azure

E-mail Stampa PDF

Windows Azure continua ad arricchirsi di nuove funzionalità. Sorriso Una delle novità annunciate settimana scorsa riguarda la possibilità di impostare degli avvisi email quando si raggiunge una determinata soglia di spesa su una sottoscrizione Azure.

Questa funzionalità è attualmente in preview, quindi per poterla utilizzare nelle vostre sottoscrizioni dovete prima abilitarla.

clip_image002

Per impostare gli avvisi selezionate la nuova voce “Alert” che trovate nella pagina di riepilogo della vostra sottoscrizione.

clip_image004

Vi verrà chiesto di specificare un nome (univoco), una soglia di spesa e due indirizzi email dove verranno inviati gli avvisi.

Ad esempio, nell’alert riportato di seguito è impostata una regola che mi avviserà ogni volta che la mia sottoscrizione supera i 150 € di spesa al mese.

clip_image006

Nota: Windows Azure supporta qualsiasi indirizzo email però non verifica la correttezza, quindi ricontrollate se ci sono errori di battitura.

Per ogni sottoscrizione attiva di Windows Azure è possibile impostare fino a cinque avvisi, ciascuno con una soglia di spesa diversa, e fino a due destinatari per ciascun avviso.

clip_image008

Per maggiori informazioni:

· Msdn: http://msdn.microsoft.com/it-it/library/windowsazure/dn479772.aspx

· Blog di ScottGu: http://weblogs.asp.net/scottgu/archive/2013/11/04/windows-azure-import-export-hard-drives-vm-acls-web-sockets-remote-debugging-continuous-delivery-new-relic-billing-alerts-and-more.aspx

Eva


read full article

Novità: unico processo di registrazione per Windows Store e Windows Phone

E-mail Stampa PDF

Da oggi se volete pubblicare un'applicazione per Windows Phone e una per Windows 8(.1) non dovete più fare la registrazione su due differenti Store, e pagare 2 volte, ma il processo di registrazione è stato unificato ed i prezzi abbassati (19$ per i privati e 99$ per le aziende).

Sono uno sviluppatore che ha già un account sul Windows Store: ottimo, da oggi potrai pubblicare anche app per Windows Phone, senza costi aggiuntivi con lo stesso Microsoft Account.

Sono uno sviluppatore che ha già un account per pubblicare app per Windows Phone: ottimo, da oggi potrai pubblicare applicazioni anche per Windows 8(.1), senza costi aggiuntivi con lo stesso Microsoft Account. Per dettagli seguite le informazioni contenute qui: Renew your account

Sono già uno sviluppatore che pubblica app sia per Windows Phone che per Windows 8(.1) e quindi accedo già ad entrambi i Dev Center usando un unico Microsoft Account: durante questo mese ricevere una mail con un codice da utilizzare per il rinnovo dell'account per un nuovo anno.

Infine i nuovi sviluppatori potranno registrarsi, usufruendo dei nuovi prezzi, e inserendo le informazioni per la registrazione una sola volta e quindi poter pubblicare app sia per Windows 8(.1) e Windows Phone. Da oggi per la registrazione sarà richiesta una carta di credito sia che sviluppiate per Windows che Windows Phone, trovate più informazioni sui Dev Center Windows and Windows Phone.

Vi invito a leggere questo post su uno dei nostri blog, dove trovare anche le informazioni su come partecipare alle iniziative che abbiamo in partnership con Nokia e DVLUP Community.

Happy coding!

p.s.: oltre a questo post spesso segnalo link che mi piacciono e possono essere utili tramite il mio account su twitter @pietrobr


read full article

Il rilascio di Windows Azure SDK 2.2 per .NET

E-mail Stampa PDF

La scorsa settimana è stata rilasciata la versione 2.2 del SDK di Windows Azure per .NET. La nuova versione del SDK supporta Visual Studio 2013 RTM e aggiunge cosi nuove funzionalità per aumentare la produttività per lo sviluppo di applicazioni cloud-based, consentendo agli sviluppatori di creare, configurare, distribuire nonché di effettuare la diagnostica e il debug dei loro servizi cloud.

Tra le nuove funzionalità introdotte segnaliamo:

  • il supporto di Windows Azure Sign-In integrato in Visual Studio 2013. Il nuovo Sign-In integrato permette agli sviluppatori di interagire e gestire qualsiasi risorsa o servizio nelle vostre  sottoscrizioni di Windows Azure. 
  • il debug remoto (per ora in preview) per i Cloud Services, Web sites o applicazioni ospitate in macchine virtuali di Windows Azure. Il debug remoto per Windows Azure porta tutta la potenza fornita da Visual Studio per il debug di applicazioni locali nel cloud, rendendolo lo strumento perfetto per lo sviluppo e il troubleshooting di servizi remoti.

I dettagli su come potete utilizzare Windows Azure con Visual Studio 2013 e il download dell'SDK sono presenti a questo link.

Per maggiori informazioni:

- Blog di Scott Guthrie: http://weblogs.asp.net/scottgu/

- Blog Msdn: http://msdn.microsoft.com/it-it/library/windowsazure/dn459835.aspx

- Tutorial: http://www.windowsazure.com/en-us/downloads/dotnet-sdk-22/?webpi-install=true&fb=it-it

Eva


read full article

Windows Phone Day:Milano 30 settembre 2013

E-mail Stampa PDF

Windows Phone è sicuramente uno dei temi caldi per gli sviluppatori che lavorano con tecnologie Microsoft e, più generale, nel mondo mobile: la diffusione di questo sistema operativo per smartphone sta crescendo sempre di più, in particolar modo in Europa e in Italia, e l’acquisto della divisione Devices and Services di Nokia da parte di Microsoft ha creato un rinnovato interesse intorno alla piattaforma.

L’iniziativa che prende il nome di Windows Phone Week nasce proprio per aiutare gli sviluppatori, sia che provengano da altri sistemi, sia che abbiano già sviluppato per Windows Phone, a conoscere meglio le caratteristiche della piattaforma e a creare applicazioni sempre più di qualità e di successo.

Si tratta di un’iniziativa globale, nata dall’idea di alcuni Microsoft MVP con il supporto di Microsoft e Nokia, che coinvolge numerosi paesi in tutto il mondo, come Italia, Brasile, Olanda, India, Stati Uniti, ecc.: nell’arco della settimana che cade a cavallo tra la fine di Settembre e l’inizio di Ottobre, i paesi aderenti ospiteranno un evento di una giornata dedicato a Windows Phone.

L’appuntamento per l’Italia è per Lunedì 30 Settembre, presso il Microsoft Innovation Campus di Peschiera Borromeo, Milano, dove si terrà il Windows Phone Day.

Dopo l’apertura delle registrazioni alle ore 9, si darà ufficialmente inizio alla giornata alle ore 10: una breve introduzione permetterà di fare il punto della situazione sullo stato attuale di Windows Phone e di raccontare alcune delle ultime novità presentate (come App Studio o le nuove policy per lo sblocco di device per lo sviluppo). Dopodiché sarà il turno di Nokia, che avrà l’occasione di presentare le molteplici iniziative a supporto degli sviluppatori, come i programmi Nokia Developer Premium e DVLUP, nonché di condividere alcuni importanti trucchi e consigli per aiutarvi a rendere più popolari le vostre applicazioni.

Dopo le 11 si darà il via ai contenuti tecnici veri e propri: sarà Roberto Freato, Microsoft MVP, ad aprire la giornata, con una sessione dal titolo App and running in 60 minuti: nel corso dell’intervento saranno passate in rassegna le basi per lo sviluppo su Windows Phone e le principali caratteristiche della piattaforma, con un occhio di riguardo alle nuove feature introdotte in Windows Phone 8.

Dopo la pausa per il pranzo (che sarà un’ottima occasione di networking e confronto con gli speaker e gli altri sviluppatori presenti), si inizieranno ad affrontare tematiche più specifiche, con lo scopo di affrontare (e risolvere) scenari avanzati legati allo sviluppo mobile. Si inizierà parlando di architettura e organizzazione del codice: Matteo Pagani, Microsoft MVP e Nokia Developer Champion, introdurrà il pattern Model-View-ViewModel (MVVM), sicuramente il più celebre utilizzato nello sviluppo con tecnologie basate su XAML. Lo scopo di questo pattern è quello di sviluppare applicazioni che siano più facili da testare e da mantenere nel tempo, grazie alla separazione tra interfaccia grafica e logica, aspetti che invece solitamente vengono “mischiati” quando si sviluppa un’applicazione con l’approccio tradizionale. Gli esempi pratici saranno affrontati con uno dei framework per lo sviluppo di applicazioni MVVM più celebri, ovvero Caliburn Micro.

In seguito, Marco Leoncini, del team di ASPItalia, ci guiderà attraverso lo sviluppo di un’applicazione fotografica, una delle categorie di maggiore successo in Windows Phone, grazie anche all’attenzione di Nokia a questo aspetto nei suoi device della serie Lumia. E, proprio grazie a Nokia, avremo modo di vedere come migliorare la qualità di un’applicazione fotografica tramite l’uso dell’Imaging SDK, una libreria recentemente rilasciata dalla casa finlandese che consente l’elaborazione avanzata di immagini.

Dopo una breve pausa, sarà il turno di Lorenzo Barbieri di Microsoft, che condividerà la sua reale esperienza nello sviluppo di un’applicazione vocale in scenari complessi, che coinvolgono il supporto a molti paesi e a molte lingue. Le Speech API, infatti, sono molto semplici da utilizzare, ma il loro utilizzo in applicazioni con il supporto multi lingua richiede una serie di accorgimenti, che saranno dettagliati nel corso della sessione.

E’ un’altra persona del team di Microsoft, Eva Gjeci, a introdurre la sessione successiva, dedicata ad uno dei servizi di maggiore successo tra gli sviluppatori mobile: gli Azure Mobile Service. Si tratta di una serie di servizi cloud che nascono per soddisfare alcune tra le esigenze più comuni nello sviluppo di un’applicazione mobile, come l’invio di notifiche push, la memorizzazione di dati e l’autenticazione: nel corso della sessione potrete vedere come questi servizi siano il compagno ideale non solo per le vostre applicazioni Windows Phone e Windows 8, ma anche web, iOS o Android, rendendoli di fatto la scelta migliore nella realizzazione di back end per applicazioni multi piattaforma.

A chiudere la giornata ci aiuterà Michele Locuratolo, Microsoft MVP e Nokia Developer Champion, affrontando un altro argomento di grande interesse tra gli sviluppatori: l’interazione tra più dispositivi grazie all’utilizzo di tecnologie come NFC e Bluetooth. Vedremo, tramite una serie di casi reali, come un uso intelligente di queste feature possa aiutare a trasformare la vostra applicazione e a renderla originale e interessante.

Come potete immaginare, si tratta di un appuntamento da non perdere per gli sviluppatori mobile, per tanti motivi:

· Contenuti tecnici di alto livello.

· Avrete la possibilità di conoscere altre persone che lavorano nel mondo mobile e scambiare la vostra esperienza.

· Saranno presenti persone di Microsoft, di Nokia, MVP e Nokia Developer Champion a cui fare domande e chiedere consigli.

· Avrete l’occasione di provare i più recenti telefoni Windows Phone disponibili sul mercato.

· Ci saranno parecchie sorprese che scoprirete solo partecipando all’evento J

Vi aspettiamo numerosi!

-Lorenzo e Matteo


read full article

Guest post: Il controllo OCR di BING per le Windows Store App

E-mail Stampa PDF

Questo post è stato scritto da Massimo Bonanni, MVP Visual Basic

In questo post prenderemo in esame una nuova funzionalità esposta dai servizi di BING che può essere utile nelle applicazioni Windows Store App. Si tratta della possibilità di avere a disposizione un controllo OCR e dei servizi nella Cloud che consentano di analizzare una immagine alla ricerca del testo in essa contenuto.

Cosa è OCR

OCR è l'acronimo di Optical Character Recognition cioè "Riconoscimento Ottico di Caratteri" e identifica tutti quegli algoritmi, legati all'intelligenza artificiale, alla visione artificiale e al pattern recognition, che consentono di "scovare" del testo all'interno di immagini e di convertirlo in un normale testo utilizzabile in un editor o in un software.

Sistemi OCR sono utilizzati fin dagli anni 60. Il sistema postale USA li utilizza dal 1965 per catalogare automaticamente le lettere in base all'indirizzo riconosciuto tramite questi algoritmi.

Attivare il servizio BING

L'architettura per l'utilizzo della tecnologia OCR nelle nostre applicazioni si basa sull'uso di un controllo e di un servizio hostato su Azure.

L'accesso a tutte le informazioni relative sia al controllo che al servizio è attraverso il BING Developer Center all'indirizzo http://it.bing.com/dev

Il controllo è scaricabile all'indirizzo http://visualstudiogallery.msdn.microsoft.com/5434265c-683c-4bb9-adc2-2710f89c264a o tramite la funzione "Extensions and Updates..." di Visual Studio 2013.

clip_image002

Figure 1 : la pagina web di download del controllo

clip_image003

Figure 2 : la funzionalità Extensions and Updates di Visual Studio

Il controllo e il relativo SDK per l'interazione con il servizio di OCR, al momento, funzionano con Visual Studio 2013.

La documentazione relativa al controllo è disponibile all'indirizzo http://msdn.microsoft.com/en-us/library/dn261719.aspx.

Per poter finalmente utilizzare il controllo OCR all'interno della nostra applicazione, dobbiamo sottoscrivere un abbonamento al servizio di riconoscimento caratteri hostato su Azure e la cui pagina dell'Azure Marketplace è disponibile all'indirizzo https://datamarket.azure.com/dataset/bing/OCRControl

clip_image005

Figure 3 : La pagina dell'Azure Marketplace per il servizio di OCR

Esiste un abbonamento gratuito che ha come limite 5000 transazioni mensili (assolutamente sufficiente per eseguire dei test).

ClientSecret e ClientID

I servizi BING su Azure necessitano dei parametri ClientID e SecretClient per l'autenticazione.

Anche il controllo OCR ha la necessità di avere tali parametri e, per poterli generare dobbiamo registrare la nostra applicazione che farà uso del controllo alla pagina https://datamarket.azure.com/developer/applications utilizzando il tasto "Registra":

clip_image007

Figure 4 : La pagina delle applicazioni che utilizzano servizi Bing

La registrazione di una applicazione prevede che decidiamo noi il ClientId (che non deve esistere) e il sistema genera il SecretClient:

clip_image009

Figure 5 : Le impostazioni dell'applicazione

Una volta che abbiamo in mano i due parametri possiamo costruire l'applicazione.

Creiamo la nostra interfaccia

Prima di tutto, poiché il controllo OCR utilizza la webcam, dobbiamo abilitare nel manifest della nostra applicazione l'utilizzo della stessa:

clip_image010

Figure 6 : Le capability dell'app

A questo punto ci basta trascinare il controllo all'interno dello XAML per poterne utilizzare le funzionalità.

Per prima cosa, nel momento in cui viene caricata la nostra form, dobbiamo impostare i valori del ClientId e SecretClient di cui abbiamo parlato in precedenza:

Private Sub Page_Loaded(sender As Object, e As RoutedEventArgs)

ocrControl.ClientId = "<CLIENT ID>"

ocrControl.ClientSecret = "<CLIENT SECRET>"

AddHandler ocrControl.Completed, AddressOf ocrControl_Completed

AddHandler ocrControl.CameraChanged, AddressOf ocrControl_CameraChanged

AddHandler ocrControl.FrameCaptured, AddressOf ocrControl_FrameCaptured

AddHandler ocrControl.Failed, AddressOf ocrControl_Failed

End Sub

Nel precedente pezzo di codice possiamo anche vedere che il controllo ci mette a disposizione 4 eventi di cui ci occuperemo in seguito.

L'utilizzo del controllo OCR prevede due fasi:

· una fase di avvio della modalità di preview (quella che permette all'utente di vedere ciò che la sua webcam sta inquadrando prima di catturare l'immagine da digitalizzare) grazie al StartPreviewAsync() (ovviamente asincrono);

· una fase di effettiva cattura ed elaborazione dell'immagine che ha inizio con la chiamata del metodo CaptureFrame. La figura seguente mostra il meccanismo su cui si basa l'elaborazione dell'immagine:

clip_image012

Figure 7 : Il meccanismo di elaborazione dell'immagine OCR

Il tutto inizia con la chiamata al metodo CaptureFrame:

Private Sub ocrControl_Tapped(sender As Object, e As TappedRoutedEventArgs) Handles ocrControl.Tapped

ocrControl.CaptureLanguage = "it"

ocrControl.CaptureFrame()

End Sub

Osserviamo che si può impostare anche la lingua del testo che si sta elaboando. La lista dei linguaggi supportati dal controllo si può ottenere richiamando il metodo statico asincrono OcrControl.GetLanguagesAsync.

clip_image014

Figure 8 : L'elenco delle lingue supportate

Quando il frame della webcam è stato catturato dal controllo OCR e, prima che questo lo invii al servizio nel cloud, viene sollevato l'evento FrameCaptured:

Private Sub ocrControl_FrameCaptured(sender As Object, e As Bing.Ocr.FrameCapturedEventArgs)

Dim bitmap = New BitmapImage()

bitmap.SetSource(e.CapturedImage)

imgResult.Source = bitmap

End Sub

Nel caso di specie, recuperiamo l'immagine dallo stream fornito dalla proprietà CapturedImage dell'argomento dell'evento e la visualiziamo.

A questo punto, se c'è connettività, l'immagine è inviata al servizio fornito da Bing che, nel momento in cui termina l'operazione di analisi dell'immagine e se non accadono erori di alcun genere, resituisce il risultato e il controllo OCR solleva l'evento Completed:

Private Async Sub ocrControl_Completed(sender As Object, e As Bing.Ocr.OcrCompletedEventArgs)

Dim scalefactor = imgResult.ActualWidth / CType(imgResult.Source, BitmapImage).PixelWidth

gridResult.Children.Clear()

lstWords.Items.Clear()

For Each line In e.Result.Lines

For Each word In line.Words

Dim textBox = CreateTextBox(word)

Dim border = CreateBorder(word, scalefactor)

border.Child = textBox

gridResult.Children.Add(border)

lstWords.Items.Add(word.Value)

Next

Next

gridResult.RenderTransform = CreateTransformGroup(e.Result)

Await ocrControl.StartPreviewAsync(Nothing)

End Sub

L'argom ento dell'evento fornisce nuovamente l'immagine catturata, un identificativo della transazione sul serve e la proprietà Result che espone i dati ricavati dall'elaborazione.

La proprietà Result, di tipo OcrResult, espone una collezione di oggetti Ocr.Line e la rotazione dell'immagine rispetto alla verticale.

Ogni oggetto di tipo Ocr.Line espone il rettangolo in cui la linea di testo è stata rilevata (proprietà Box) e l'elenco degli oggetti di tipo Ocr.Word che contengono i dati di ogni singola parola rilevata.

Ogni oggetto Ocr.Word espone, a sua volta il rettangolo che contiene la parola trovata (proprietà Box) e la parola stessa (proprietà Value).

In questo modo siamo in grado di utilizzare il testo ma anche di sapere dove si trovano, all'interno dell'immagine catturata, le parole stesse.

Per completare il giro possiamo riposizionare la camera in preview (richiamando il metodo StartPreviewAsync) oppure la disabilitiamo con il metodo ResetAsync. E' buona pratica quella di attivare la camera per il tempo strettamente necessario all'elaborazione.

Nella demo allegata posizioniamo un TextBlock circondato da un Border al di sopra della parola trovata.

clip_image016

Figure 9 : Esempio di utilizzo dell'OCR

Nel caso in cui non sia disponibile una connessione internet, o si verifichi un qualsiasi tipo di errore nell'operazione di riconoscimento, il controllo OCR solleva l'evento Failed.

L'argomento di questo evento ci consente di sapere esattamente cosa è accaduto poiché ci mette a disposizione le proprietà ErrorCode e ErrorMessage.

I possibili errori sono esposti dall'enumerazione Ocr.ErrorCode (http://msdn.microsoft.com/en-us/library/dn261728.aspx)

Un altro evento esposto dal controllo è l'evento CameraChanged che viene sollevato ogni volta che si cambia la camera (lo si può fare da codice o con il tasto che appare nel controllo OCR stesso).

Scarica il progetto


read full article

Pagina 12 di 49

 
 
 
 
Certificazioni