ComputerLand

Tu sei qui: Articoli

Notizie dal web

Un esempio pratico di IoT: dal sensore ad Azure. Overview del progetto.

E-mail Stampa PDF

 

Internet of Things è sicuramente uno degli argomenti di maggiore interesse di questi tempi, non soltanto per le aziende, ma anche per studenti, sviluppatori, maker e appassionati. Nelle case, nelle città e nelle aziende il numero di oggetti connessi è in costante crescita, ma uno degli aspetti che lo rende un tema davvero interessante è sicuramente la possibilità di creare IoT. Si può cominciare con un semplice sensore in grado di rilevare dati grezzi, trasformandoli poi in informazioni, utili per effettuare analisi predittive o più in generale per eseguire determinate azioni o comandi.

L'obiettivo di questo post è quello di illustrare un progetto molto semplice che utilizza sensori per il rilevamento della luce e della temperatura, trasmettendo i dati rilevati su Azure e visualizzandoli in un website sotto forma di grafico. Questo progetto si ispira a Connect The Dots, un progetto molto più ampio ed in costante sviluppo realizzato da Microsoft Open Technologies , ma è stato semplificato al massimo allo scopo di fornire un esempio il più semplice possibile per permettere anche a chi è alle primissime armi di capire quali sono gli step da seguire per "creare IoT". In seguito, saranno pubblicati alcuni post di approfondimento che spiegheranno nel dettaglio step-by-step come potete implementare concretamente questo progetto utilizzando i vostri dispositivi.

Vediamo per prima cosa l'hardware che è stato utilizzato:

image

  • Una board Arduino Uno
  • Un sensore di temperatura
  • Un sensore di luce
  • Lo shield necessario per connettere in maniera molto semplice e rapida i sensori all'Arduino
  • Una Raspberry Pi B+ da utilizzare come gateway, indispensabile in questo esempio in quanto la scheda Arduino non ha la possibilità di connettersi direttamente a internet. E' importante però sottolineare il ruolo del gateway anche in termini di scenario più generale: se si pensa ad esempio ad una smart home, sarebbe complesso e costoso connettere ogni singolo oggetto direttamente alla rete. Sarà sicuramente molto più comodo ed economico interfacciare il frigorifero, la lavatrice e le tapparelle e ogni altro dispositivo ad un gateway all'interno della casa, il quale poi si occuperà della gestione dei dati ricevuti in ingresso e dell'opportuno indirizzamento sul cloud.

Una volta che il dato arriva online, si utilizzano i seguenti servizi di Azure per trasformare il dato grezzo e poco significativo in una informazione vera e propria, in questo caso grafica:

  • Azure Event Hub come punto di accesso al cloud
  • Azure Stream Analytics per l'analisi in tempo reale dei dati e l'esecuzione di determinate azioni
  • Una Azure Web App per la visualizzazione grafica dei dati. In pratica, si tratta del vecchio Azure Website, rinominato appunto Web App dopo l'introduzione di App Service. Per approfondimenti in merito a questo annuncio si può fare riferimento a questo blog post.

L'immagine sottostante è molto utile per capire qual è il processo per trasformare il dato in informazione utile

image

Vediamo ora nel dettaglio il percorso effettuato da ogni singolo dato rilevato:

Sensori e device: Arduino

I sensori di luce e temperatura sono connessi allo shield e, di consegunza, all'Arduino in maniera molto semplice. La scheda Arduino, ovviamente, è stata programmata con un codice che la rende in grado di leggere e interpretare in maniera adeguata gli input provenienti dai sensori, effettuando le opportune conversioni e serializzando i risultati in un JSON che viene poi utilizzato per il trasferimento dei dati da Arduino a Raspberry, tramite cavo USB.

Gateway: Raspberry Pi

Per la configurazione corretta del gateway è stato necessario un lavoro preliminare di installazione del sistema operativo e di alcune librerie, i dettagli verranno forniti nei successivi post di approfondimento.

Su Raspberry è stato caricato un codice che si occupa della lettura dei dati provenienti dalla porta USB, che vengono deserializzati ed inviati sul cloud. Ovviamente, assume un'importanza fondamentale la scelta del protocollo da utilizzare per impacchettare i dati, in modo da garantire sia la sicurezza delle informazioni sia la capacità da parte del cloud di interpretarli nel modo corretto.

Cloud: Event Hub

Come già detto, la porta di accesso a Azure è il servizio Event Hub, che è in grado di interpretare il protocollo AMQP. In questo post non entreremo nel dettaglio del codice utilizzato per interfacciare il gateway con Event Hubs, ma è importante sottolineare la necessità di inserire un riferimento al servizio di Azure all'interno del codice che è stato caricato su Raspberry.

In particolare, come si può notare nello schema, sono stati creati due distinti servizi su Event Hub: uno utilizzato per la semplice visualizzazione dei dati sul website, e l'altro per l'invio di alert al website quando si verifica una certa condizione.

Cloud: Stream Analytics

Per poter interpretare i dati che arrivano su Event Hub e prendere decisioni di conseguenza, è necessario utilizzare il servizio Stream Analytics. Si tratta di un servizio ancora in preview, pertanto per poterlo utilizzare si deve inviare una richiesta di accesso qui. Questo servizio è in grado di leggere i dati da Event Hub ed eseguire delle query per estrapolare le informazioni utili. Nel nostro esempio, lo abbiamo utilizzato per l'aggregazione dei dati e per inviare un alert al website nel momento in cui la temperatura supera un determinato valore di soglia.

Anche in questo caso, i dettagli dell'implementazione verranno forniti nei successivi post di approfondimento.

Cloud: Web App

Per la visualizzazione grafica delle informazioni è stato utilizzato un semplice website, che sfrutta le elaborazioni effettuate dai servizi Azure descritti in precedenza per fornire una rappresentazione grafica in tempo reale.

 

In conclusione, all'interno di questo post abbiamo mostrato tutti gli elementi fondamentali per per poter creare il vostro IoT, descrivendo le connessioni tra i vari elementi e il percorso che il dato deve effettuare per poter essere trasformato in un'informazione utile. Se volete implementare concretamente questo semplice scenario, seguite i prossimi post di approfondimento!


read full article

Guest Post: Integrare il login tramite Google nelle Universal Windows app

E-mail Stampa PDF

 

Questo post è stato scritto da Alessio Iafrate, Windows Developer e fondatore della community DotNetAbruzzo

 

Tutti prima o poi nelle nostre app ci siamo trovati davanti alla necessità di permettere all'utente di potersi autenticare tramite i social network più usati. Se avete la necessità di farlo tramite Facebook il modo migliore è seguire l'ottimo post scritto da Matteo Pagani su come Integrare Facebook nelle Universal Windows app che trovate QUI.

Come ben sappiamo però bisogna cercare di facilitare l'utente il più possibile e vista la grande quantità di persone che utilizza i servizi Google è giusto fornire anche il login tramite questo provider.

Purtroppo come spesso succede Google fa le cose un pochino diverse e quindi non basta cambiare le stringhe di connessione utilizzate con altri provider tipo il già citato Facebook ma bisogna seguire qualche passaggio in più.

Andiamo con ordine:

 

 

1° passo: Registrazione alle API di Google.

 

Per poter utilizzare le API dei servizi Google occorre innanzitutto recarsi all'indirizzo

https://console.developers.google.com/

e creare un nuovo progetto. Fatto ciò nella sezione APis & auth -> API sarà possibile scegliere quali API saranno utilizzate in questo progetto.

Ultimo passo sarà recarsi nella sezione APIs & auth -> Credentials e creare un nuovo Client ID

 

 

 

fatto questo avremo a disposizione tutti i dati per poter procedere.

 

2° Inserire il codice nella nostra app

 

Iniziamo con la cosa più importante, la definizione delle varie costanti che useremo.

 

 

#if !WINDOWS_PHONE_APP

public const string GoogleCallbackUrl = "urn:ietf:wg:oauth:2.0:oob";

#else

        publicconststring GoogleCallbackUrl = "http://localhost";

#endif

publicconststring GoogleClientId = "XXXXXXXXXXXX-xxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com";

publicconststring GoogleClientSecret = "YYYYYYYYYYYYYYYYYYYYYYY";

 

 

La cosa più importante, ma più difficile da trovare, è che per poter avere l'applicazione funzionante occorre utilizzare un indirizzo di callback diverso a seconda se ci troviamo in una applicazione per Windows Phone o per desktop, noi abbiamo gestito questo in modo molto elegante con la compilazione condizionale che ci mettono a disposizione le UA.

Fatto questo siamo pronti ad invocare il WebAuthenticationBroker per effettuare l'autenticazione tramite OAuth 2, in questo esempio utilizzeremo la versione per Windows Phone, ma come detto precedentemente nel link suggerito troverete tutti i dettagli per utilizzare l'autenticazione anche nelle app Windows 8

Nell'esempio seguente è stato richiesto il permesso

https://www.googleapis.com/auth/userinfo.email

che dà accesso a recuperare l'email dell'utente, naturalmente potremo inserire tutti i permessi di cui abbiamo bisogno nello stesso URL avendo l'accortezza di separarli con uno spazio bianco.

 

 

String GoogleURL = "https://accounts.google.com/o/oauth2/auth?client_id=" + Uri.EscapeDataString(Const.GoogleClientId) + "&redirect_uri=" + Uri.EscapeDataString(Const.GoogleCallbackUrl) + "&response_type=code&scope=" + Uri.EscapeDataString("https://www.googleapis.com/auth/userinfo.email");

System.Uri StartUri = newUri(GoogleURL);

System.Uri EndUri = newUri(Const.GoogleCallbackUrl);

WebAuthenticationBroker.AuthenticateAndContinue(StartUri, EndUri, null, WebAuthenticationOptions.None);

 

 

Una volta effettuata l'autenticazione verremo rimandati al nostro metodo ContinueWebAuthentication dove poter gestire l'avvenuta autenticazione.

 

 

publicasyncvoid ContinueWebAuthentication(WebAuthenticationBrokerContinuationEventArgs args)

{

    WebAuthenticationResult result = args.WebAuthenticationResult;

    if (result.ResponseStatus == WebAuthenticationStatus.Success)

    {

        //Estraggo il parametro code ed ottengo il vero token

        Uri uri = newUri(result.ResponseData.ToString());

        WwwFormUrlDecoder decoder = new WwwFormUrlDecoder(uri.Query);

        TokenResponse tr = await Utility.GetGoogleToken(decoder.GetFirstValueByName("code"));

    }

}

 

 

Andando ad analizzare il valore della variabile result.ResponseData ci troveremo davanti ad una stringa di questo tipo

 

 

http://localhost/?code=4/mpoxyWVYn_E0MbfBVuOjF99TrwFUx7DFcdabClbd1Sk.kqeNhfgjU04cyjz_MlCJoi0M4ylkjQI

 

 

A questo punto a differenza di quanto avviene con Facebook o simili dobbiamo eseguire un ulteriore passo, poiché quello ritornato non è il vero token da poter utilizzare per le successive richieste, ma un token da passare alla pagina https://accounts.google.com/o/oauth2/token che in caso di controllo positivo risponderà con un JSON simile al seguente con tutti i dati necessari.

 

 

{

  "access_token" : "ya29.TQE6noEOzeZKAt47_7Trth6jCiCs-8-EXyls-k5L7igj6hl04ghFa4PKaHPl0j5sZ5nsbtXTk8qwyw",

  "token_type" : "Bearer",

  "expires_in" : 3600,

  "refresh_token" : "1/ughE-aNXoFJc_wpCighj55ulV-tglkTdvjnlkf56SNs"

}

 

 

Procediamo quindi con la creazione di una classe in cui poter deserializzare il JSON ritornato

 

 

publicclassTokenResponse

{

    publicstring access_token { get; set; }

    publicstring token_type { get; set; }

    publicint expires_in { get; set; }

    publicstring refresh_token { get; set; }

}

 

 

e di un semplice metodo che prende in ingresso il codice ritornato precedentemente e si farà carico di ritornarci un oggetto di tipo TokenResponse popolato con tutti i dati che ci serviranno per poter gestire la nostra autenticazione.

 

 

publicstaticasync Task<TokenResponse> GetGoogleToken(string code)

{

 

    conststring TokenUrl = "https://accounts.google.com/o/oauth2/token";

 

    var body = newStringBuilder();

    body.Append("code=");

    body.Append(code);

    body.Append("&client_id=");

    body.Append(Uri.EscapeDataString(Const.GoogleClientId));

    body.Append("&client_secret=");

    body.Append(Uri.EscapeDataString(Const.GoogleClientSecret));

    body.Append("&redirect_uri=");

    body.Append(Uri.EscapeDataString(Const.GoogleCallbackUrl));

    body.Append("&grant_type=authorization_code");

 

    var client = new HttpClient();

    var request = new HttpRequestMessage(HttpMethod.Post, newUri(TokenUrl))

    {

        Content = new StringContent(body.ToString(), Encoding.UTF8, "application/x-www-form-urlencoded")

    };

    var response = await client.SendAsync(request);

    var content = await response.Content.ReadAsStringAsync();

 

    var serviceTequest = JsonConvert.DeserializeObject(content);

    return serviceTequest;

}

 

 

Seguendo questo approccio e modificando adeguatamente i permessi richiesti saremo in grado di poter richiedere l'autenticazione e ricevere il token per poter utilizzare tutte le API di tutti i servizi esposti pubblicamente da Google.

 

 

Se volete saperne di più, non esitate a contattarmi tramite il mio account Twitter @alessioiafrate oppure sul mio blog: http://www.acquariusoft.com


read full article

Novità Microsoft Azure: App Service

E-mail Stampa PDF

 

Il 24 marzo 2015 è stato annunciato il servizio di App Service, ora disponibile in Preview su Microsoft Azure.

App Service è l'unico servizio cloud che integra tutte le funzionalità necessarie per sviluppare rapidamente applicazioni web e per dispositivi mobili. Si tratta di un servizio completamente gestito da Azure, offerto come servizio Platform-as-a-Service e può essere integrato con strumenti che permettono il continuos deployment come Visual Studio Online e GitHub. Inoltre permette di avere un ambiente di staging per testare la soluzione che si sta sviluppando e switchare facilmente a un ambiente di produzione nel momento in cui lo sviluppo è terminato.

appservice

Insomma, si tratta di un singolo servizio che include al suo interno tutte le funzionalità degli Azure Website, degli Azure Mobile Service e dei servizi BizTalk, aggiungendo anche caratteristiche ulteriori.
Quello che si vuole offrire con un servizio simile è soprattutto la possibilità di avere un set integrato di funzionalità che permetta un'esperienza di sviluppo e gestione delle applicazioni unificata.

Il servizio mette a disposizione diverse componenti per la creazione di app con un’esperienza di sviluppo unificata:

  • Web App
  • Mobile App
  • API App
  • Logic App

App Service offre la possibilità di mettere insieme queste componenti come un singolo servizio integrato, permettendo di creare applicazioni che hanno come target sia il web che dispositivi mobili, utilizzando backend unici, integrati con sistemi on-premise come per esempio Office 365 e salesforce.com.
Inoltre, il servizio offre un set di caratteristiche e funzionalità che possono essere condivise tra più applicazioni.

aspreview

Ma vediamo più nel dettaglio ogni singolo elemento che compone il servizio.

WEB APP

WEB APP è una piattaforma completamente gestita che permette di costruire, eseguire il deploy e scalare a livello enterprise le applicazioni web in modo semplice e rapido. Il focus dello sviluppatore può limitarsi al codice, mentre Azure si occupa di gestire l'intera infrastruttura, la scalabilità e l'esecuzione dell'app in un ambiente sicuro.
Sostanzialmente questo servizio va a sostituire il servizio di Azure Website. Sul portale di gestione di Azure il servizio è già presente con il nuovo nome, mentre sul portale in Preview si trova all'interno del servizio di App Service.
Tutte le caratteristiche che erano offerte dal servizio di Website restano invariate, come la semplicità di configurazione e gestione della scalabilità manuale e automatica, la Gallery di framework preconfigurati e la possibilità di utilizzare strumenti di continuos deployment.

MOBILE APP

In più rispetto al servizio di Mobile Service, che resterà disponibile sul portale di gestione di Azure e completamente supportato, il servizio di MOBILE APP offre funzionalità ulteriori come il supporto del servizio di Traffic Manager, la possibilità di avere ambienti di sviluppo e di produzione tra i quali poter rapidamente switchare la propria soluzione, la possibilità di avere dei WebJob che vengono eseguiti in background per l’esecuzione di determinati task.
L’unificazione di WEB e MOBILE APP in un unico servizio consente anche un risparmio sui costi, in quanto è possibile effettuare un singolo deployment della propria applicazione e questa sarà disponibile direttamente sia per Web che per dispositivi Mobile, senza la necessità di andare a creare due servizi diversi su Azure.

API APP

Questo è un servizio nuovo che è stato introdotto con l'annuncio di App Service.  
In particolare, è pensato per migliorare l'esperienza di sviluppo da parte degli utenti cloud e rendere più semplice le fasi di creazione, pubblicazione e gestione delle API. Consente di creare un’API personalizzata per il proprio sistema e andarla a richiamare attraverso il servizio di LOGIC APP per implementare determinati flussi di operazioni o direttamente nelle MOBILE APP o WEB APP. È possibile, non solo creare API che possono essere utilizzate dalle proprie applicazioni, ma anche renderle disponibili in un marketplace e permettere ad altri di utilizzarle, o ancora utilizzare quelle già sviluppate da altri.
Una volta che si hanno a disposizione questi blocchi di codice possono essere inseriti all’interno delle applicazioni richiamandoli in modo semplice, utilizzando poche righe di codice.

LOGIC APP

Questo servizio permette di automatizzare in modo semplice i processi di business. Infatti permette di definire l'ordine in cui le API APP devono essere invocate all'interno dell'applicazione. Per esempio, tramite il tool grafico presente sul portale di gestione in preview, è possibile configurare un workflow che viene eseguito in modo automatico ogni volta che un’API viene richiamata, o quando vengono salvati dei dati all’interno di un DB, oppure secondo un timer preciso (ad esempio, ogni ora), e tramite questi flussi di operazioni è possibile andare a scatenare determinati azioni, come l’invio di un SMS o la pubblicazione di un post su Facebook o su Twitter, o ancora l’inserimento di uno schedule su un Calendar di Office 365.

image

Si può ben capire come un simile strumento possa facilitare molto e rendere più efficiente la gestione dei flussi operativi delle proprie applicazioni.

Al momento tutti questi servizi possono essere configurati e testati sul portale in preview.
Per avere maggiori informazioni a riguardo e trovare spunti per i vostri test potete visitare la pagina della documentazione ufficiale relativa al servizio che potete trovare al seguente link http://azure.microsoft.com/it-it/documentation/services/app-service/.

Continuate a seguirci per avere sempre tutti i dettagli sulle ultime novità di Microsoft Azure :)

J.


read full article

Visual Studio 2015: Annunciata la nuova linea di prodotti

E-mail Stampa PDF

Questo post è stato scritto da Ginevra Napoli, Product Marketing Manager Cloud & Dev Platform e Microsoft Student Partner

Ieri sera è stata annunciata la nuova linea di prodotti Visual Studio che sarà disponibile a partire da questa estate. L’obiettivo è quello di aumentare le funzionalità e la produttività indipendente dalla piattaforma o dal tipo di app che si sta sviluppando e rendere al tempo stesso più semplice la scelta dell’edizione che fa al caso vostro.

Visual Studio Premium e Visual Studio Ultimate verranno uniti in un unico tool: Visual Studio Enterprise con MSDN. Quest’ultima edizione andrà ad includere tutte le feature che fanno parte al momento della versione Ultimate oltre alle novità che faranno parte della release 2015. Quindi, oltre a Visual Studio Community e a Visual Studio Professional con MSDN, Visual Studio Enterprise con MSDN andrà a completare la nuova offerta disponibile con Visual Studio 2015. Resteranno invece pressoché invariate in termini di benefit: Visual Studio Professional, Team Foundation Server, Visual Studio Express e MSDN Platform.

clip_image002

Nuove funzionalità

Saranno molte le nuove funzionalità che entreranno a far parte della nuova suite Visual Studio 2015: CodeLens, feature che era disponibile esclusivamente in Visual Studio Ultimate, sarà adesso disponibile a partire dalla versione Professional, mentre le capacità di storyboarding su PowerPoint saranno disponibili per tutti gli utenti che avranno la versione Community, Professional o Enterprise. Se non lo avete ancora fatto, è possibile scaricare Visual Studio 2015 CTP 6 per testare le nuove feature presenti.

Come ottenere Visual Studio 2015

Tutti coloro che hanno una sottoscrizione Visual Studio Premium con MSDN o Visual Studio Ultimate con MSDN attiva riceveranno automaticamente l’upgrade alla versione Visual Studio Enterprise con MSDN. Inoltre il prezzo della versione Enterprise sarà significativamente minore rispetto alla versione Visual Studio Ultimate con MSDN attualmente presente.

Per i dettagli riguardanti le feature e i prezzi potete consultare Visual Studio 2015 Product Editions mentre per seguire le novità potete fare riferimento al Blog di Visual Studio in cui ieri sera è stato pubblicato l’annuncio ufficiale.


read full article

Windows 10 Preview: Project Spartan e Developer Tools

E-mail Stampa PDF

Questo post è stato scritto da Francesco Rifugio, Technical Evangelist Intern e Microsoft Student Partner.

Nella notte di ieri è stata rilasciata la nuova build di Windows 10 per PC, dedicata al ramo “Fast” dei Windows Insiders, la 10049, che porta con se’ il nuovo browser di casa Microsoft: Project Spartan.
Questo nuovo browser sarà disponibile su tutto l’ecosistema di dispositivi supportati da Windows 10, ed è stato disegnato e costruito appositamente per il web moderno; è quindi veloce, e garantisce la compatibilità con la maggior parte degli attuali siti Web.

 clip_image002

Ma le novità non finiscono qui, Project Spartan, infatti, include tante altre funzionalità, come la possibilità di scrivere e disegnare direttamente sulle pagine web, per poi condividere facilmente sui social, o via mail, la propria “Web Note”; o ancora, una nuova Reading List che permette di raccogliere qualsiasi pagina, da leggere in seguito nella Reading View integrata, disegnata per eliminare qualsiasi distrazione e lasciare l’attenzione sul contenuto.
Ma questa è solo una piccola anteprima di tutto ciò che è possibile fare con Project Spartan, per approfondire, segui questo link.

Inoltre vi ricordo che settimana scorsa sono stati rilasciati i Developer Tools for Windows 10 Preview da utilizzare con Visual Studio 2015 CTP 6.
Grazie a questi potrete provare in anteprima la nuova Universal App Platform, e cominciare a sviluppare le vostre applicazioni per Windows 10, testando alcune delle funzionalità già disponibili nella preview, come l’Adaptive UX, o i nuovi User Control che si adattano automaticamente all’input dell’utente. Per tutti i dettagli e la documentazione relativa vi rimando a questo articolo.

clip_image004

Come scritto all’inizio, la nuova build 10049 è accessibile solo dal ramo “Fast”, questo perché, al momento della scrittura dell’articolo, contiene alcuni importanti bug che colpiscono soprattutto gli sviluppatori, in particolare non è possibile utilizzare gli emulatori, e il designer XAML crasha sia su Visual Studio che su Blend. Se quindi state utilizzando Windows 10 Preview a scopo di sviluppo, è raccomandato restare sul ramo “Slow” fino a che questi bug non saranno risolti.

Questo è solo l’inizio, molto altro sarà mostrato durante il prossimo //build/ del 29 Aprile… Stay tuned!


read full article

Un piccolo cambio nei rapporti con le community Dev

E-mail Stampa PDF

Sono tanti anni ormai che seguo, dal punto di vista tecnico, le community Dev italiane, Microsoft e non, dopo averne fatto parte per tanti tanti anni.

Ricordo con affetto tutti gli anni passati a discutere, lavorare insieme, organizzare eventi, cene, le avventure in giro per l’Italia e con alcuni di voi anche in Europa e negli States, le nottate in bianco, le soddisfazioni che mi avete dato, le mail, le telefonate, l’amicizia…

Scrivo questo post durante una pausa di Codemotion, dopo aver passato dei giorni fantastici ai Community Days, e proprio durante i Community Days abbiamo annunciato che il focus tecnico sulle community Dev passa ad Erica Barone, la nostra super evangelista che le persone delle community già conoscono per la sua disponibilità e professionalità, oltre alla sua competenza tecnica e alla sua passione per il mondo IoT!

image

Sono sicuro che darete tutti in *benvenuto* ad Erica in questa nuova avventura!

p.s. Naturalmente la nostra Sara Campagna continuerà a seguire assieme ad Erica la parte più organizzativa del rapporto con le community, gli eventi e tutte le altre attività correlate.

Buon lavoro ragazze!

image

p.s. naturalmente continuate a seguirmi, il @_geniodelmale non va in pensione! Occhiolino


read full article

Guest post: Azure e Hadoop: HDP incontra HDInsight #AzureOpenDay

E-mail Stampa PDF


Questo articolo è stato scritto da
Andrea D’Orio, co-founder e CTO di Ecube, architetto certificato Hortonworks di soluzioni Hadoop 1.x e 2.x e primo docente italiano della Hortonworks University

Uno dei pochi assunti ancora validi è che le vie dell'informatica sono infinite. E' infatti quantomeno singolare che, dopo 25 anni di esperienza nel mondo Microsoft e dopo aver passato gli ultimi 5 nel vortice della gestione dei dati e dell'ecosistema Hadoop, mi ritrovi a parlare di creare ambienti ibridi on-premises / on-cloud sfruttando il meglio di Azure e della Hortonworks Data Platform in un ambito prettamente open source.

Ma facciamo un passo indietro.

Hadoop vede la luce a fine del 2004 e, dopo essere stato adottato da Yahoo, nel 2008 è pronto a spiccare sotto l'ala protettrice dell'Apache Foundation. L'adozione da parte delle più grandi società informatiche del mondo è quasi un passaggio obbligato.

Hortonworks nasce a giugno del 2011 con l'obiettivo di introdurre sul mercato la prima distribuzione veramente fully open source di Hadoop e di supportarla con servizi di assistenza e formazione. Un obiettivo quantomeno ambizioso il cui successo coglie di sorpresa l'intera comunità informatica: a dicembre 2013 Hortonworks ha più di 300 clienti con un ritmo di 75 nuovi customers ogni quarter. A gennaio 2014 viene indicata da Forrester come leader nelle soluzioni Hadoop Big Data e un anno dopo si quota in borsa con una capitalizzazione di 1 miliardo di dollari.

clip_image002

Tutto questo cosa centra con Microsoft?

I rapporti tra Microsoft e Hortonworks sono molto più stretti di quanto si possa pensare: la soluzione HDInsight di Microsoft è a tutti gli effetti il porting della Hortonworks Data Platform su Azure fortemente voluto e supportato da entrambe le società. E non solo: la Hortonworks Data Platform è l'unica distribuzione Hadoop a funzionare su ambienti Windows. Questo significa che Microsoft non solo crede fortemente in questa sinergia ma che ha basato l'intera sua strategia Big Data su HDP, posizionando la piattaforma Hortonworks al centro di un ecosistema complesso composto da strumenti tradizionali quali Microsoft SQL Server 2014, Windows Server 2012 R2, Office e Power BI e strumenti innovativi quali Azure Events Hub, Azure Data Factory, Azure Machine Learning e DocumentDB fino ad arrivare alla Microsoft Analytics Platform System.

Una strategia mirata a rendere fruibili le offerte on-premises e on-cloud in una soluzione ibrida ad alto valore aggiunto per l'utente finale.

Cosa è Hadoop?

Hadoop è un insieme di elementi che definiscono sinergicamente un sistema complesso in grado di immagazzinare ed elaborare in modo parallelo e distribuito un'enorme quantità di dati. Il file system distribuito di Hadoop si chiama HDFS (Hadoop Distributed File System) mentre il "sistema operativo di Hadoop" si chiama YARN (Yet Another Resource Negotiator). Sopra questi due layer agiscono tutti gli elementi dell'ecosistema (es: sistemi SQL on Hadoop, database NoSQL, framework in-memory come Spark, algoritmi di machine learning o job MapReduce). Hadoop può scalare virtualmente all'infinito (nell'ordine delle decine e centinaia di migliaia di nodi) e può gestire qualsiasi tipologia di dato, sia esso strutturato o meno. Inoltre Hadoop propone l'approccio rivoluzionario dello schema-on-read: è quindi possibile ridurre enormemente il tempo di acquisizione del dato costruendo uno schema solo in fase di lettura.

L'ultima buona notizia, ma non certo meno importante, è che Hadoop viene implementato su commodity hardware: non sono quindi necessari investimenti enormi per implementare un cluster per la gestione di centinaia di terabyte. Inoltre il costo a singolo terabyte raw è secondo solo a quello del cloud e di ordini di grandezza inferiore ai sistemi enterprise tradizionali quali NAS, MPP e SAN (secondo Juergen Urbanski, Board Member di Big Data & Analytics BITKOM, Hadoop fornisce uno storage scalabile a un costo del 5% rispetto alle altre alternative).

Il Data Lake

In generale il primo obiettivo di un cluster Hadoop è quello di create un Data Lake, cioè un'enorme contenitore di informazioni di tipo eterogeneo dal quale estrarre valore. Le potenzialità di un Data Lake sono molteplici: innanzitutto consente operazioni su larga scala e abilita gli utenti a esplorare, raffinare e arricchire i dati. Tutte le operazioni all'interno del Data Lake possono essere di tipo batch, interattivo o in real-time. In ultima analisi il Data Lake rappresenta la soluzione più efficace ed efficiente per trasformare i dati in valore per il business.

All'interno del Data Lake è possibile istanziare, sia internamente ad Hadoop sia esternamente utilizzando gli strumenti di ETL disponibili, Data WareHouse alimentati da subset di dati presenti su HDFS e dagli stessi DWH è possibile creare numerosi Data Mart con scopi ancora più specifici.

Le potenzialità del Data Lake non si fermano qui: è inoltre possibile abilitare utenti a effettuare Deep Learning o Data Exploration consentendo loro di "scoprire" nuove correlazioni e relazioni capaci di estrarre valore dai dati. I classici algoritmi di machine learning e predictive analytics sono tanto più precisi quanto è ampio il dataset sul quale vengono tarati. Sorprendentemente il Data Lake è il repository all'interno del quale le aziende stanno trovando nuove tipologie di correlazioni dalle quali estrarre valore: questo fenomeno è spiegabile con il fatto che prima non era possibile concentrare questo volume di dati all'interno di un unico strumento senza investimenti eccezionalmente consistenti.

Hortonworks e Microsoft per le soluzioni ibride

Se il valore aggiunto di una soluzione on-premises è ora chiaro, si può intuire quanto sia preziosa la possibilità di estendere il proprio cluster Hadoop con il servizio on-cloud HDInsight. Tralasciando il fondamentale utilizzo di HDInsight per la realizzazione di PoC o cluster di sviluppo, riducendo i tempi di deployment in modo drastico, la possibilità di espandere on-demand la capacità elaborativa del proprio cluster on-premises (bursting) aggiungendo fino a 32 nodi di HDInsight rappresenta un valore aggiunto importante.

clip_image004

In questo contesto l'esecuzione di "commoditized queries", cioè query la cui esecuzione non sarebbe economicamente conveniente in modalità on-premises ma che invece diventa estremamente vantaggiosa on-cloud, è solo uno dei possibili contesti operativi. E' infatti possibile utilizzare HDInsight (o quantomeno i Blob Storage di Azure) per archiviare ed effettuare operazioni di backup dei dati presenti on-premises: questa procedura, in unione con la precedente, riduce ulteriormente i tempi di "attivazione" della modalità ibrida avvicinando il momento di estrazione del valore dai propri dati. Una pratica ormai consolidata consiste nell'utilizzare uno o più Blob Storage posizionati all'interno di un account di archiviazione Azure per effettuare il salvataggio dei dati: quando si manifesta la necessità di istanziare un cluster HDInsight in modalità bursting sarà sufficiente agganciarlo all'account esistente per avere già i dati a disposizione.

Movimentazione dei dati

Se può sembrare complesso lo scenario dal punto di vista descrittivo tutt'altro appare dal punto di vista tecnico. Presupponendo la disponibilità di un cluster on-premises HDP, in versione 2.1 o 2.2, sarà sufficiente avere a disposizione un cluster HDInsight con un Blob Storage collegato. A questo punto l'unica operazione da compiere all'interno del cluster on-premises sarà l'aggiunta di una proprietà tramite Ambari, lo strumento di provisioning, configurazione e monitoraggio di HDP

fs.azure.account.key.<nomeblob>.blob.core.windows.net

al file di configurazione di HDFS inserendone come valore la chiave di accesso in lettura e scrittura al Blob Storage con il quale è stato istanziato il cluster HDInsight su Azure. Una volta fatto questo sarà possibile accedere in lettura e scrittura al cluster su Azure mediante il protocollo wasb secondo la sintassi

wasb://<nomecontainer>@<nomeblob>.blob.core.windows.net/

Istanziando lo storage on-cloud in questa modalità sarà possibile spostare dati verso il cloud con gli strumenti tipici di Hadoop (es: distcp), sfruttandone le caratteristiche che lo contraddistinguono: elaborazione distribuita sui singoli nodi e scalabilità. Un esempio di comando è il seguente:

hadoop distcp /tmp wasb://<nomecontainer>@<nomeblob>.blob.core.windows.net/

che provvederà a copiare l'intero contenuto della cartella /tmp su HDFS all'interno del container indicato.

Lo scenario tipico di utilizzo è rappresentato dalla necessità di eseguire elaborazioni sui propri dati che non è possibile implementare on-premises senza acquistare ulteriori nodi fisici. Istanziare un numero di nodi adeguato per il tempo necessario a ottenere il risultato nel più breve tempo possibile è il secondo passo. L'ultimo sarà quello di trasferire il risultato on-premises ed effettuare il de-provisioning del cluster HDInsight. Il tempo impiegato per la movimentazione dei dati verso HDInsight è solo una minima frazione di quello che sarebbe stato necessario eseguendo la query on-premises. In più il cluster HDP può continuare a operare senza interruzioni durante l'intera procedura.

Conclusioni

Una delle lezioni più importanti che ho imparato nel corso di questi anni è l'assoluta necessità di utilizzare gli strumenti informatici in modo corretto e all'interno del contesto idoneo al fine di raggiungere il miglior risultato possibile. Grazie a Microsoft e Hortonworks questo è oggi possibile: la Hortonworks Data Platform (HDP) è oggi la distribuzione fully open source più completa sul mercato e il servizio on-cloud HDInsight ne è il suo naturale complemento. L'adozione di entrambe le tecnologie può consentire non solo di raggiungere il risultato voluto nel più breve tempo possibile ma permette di estrarre valore dai propri dati in modo più veloce ed efficiente.

 

Andrea D’Orio


read full article

Guest post: Introduzione al Microsoft Band SDK

E-mail Stampa PDF

Questo post è stato scritto da Matteo Tumiati, MVP Windows Platform Development, e Giancarlo Lelli, Software Developer in iCubed srl.

Lo scorso ottobre Microsoft ha presentato, cogliendo un po’ tutti di sorpresa, il Microsoft Band, uno smartband che segna l’ingresso di Microsoft nel mondo dei wearable.

Il Microsoft Band è un device che, una volta indossato al polso, ci permette di avere accesso a circa 10 sensori che raccolgono una quantità importante di informazioni che vengono poi elaborate dal servizio Microsoft Health. Oltre ai sensori, abbiamo accesso anche alle notifiche attraverso le applicazioni del calendario, del meteo, delle mail e dei messaggi. Non per ultimo dobbiamo ricordare che abbiamo completo supporto per Cortana, ovvero potremo avviare la nostra assistente personale direttamente dal Microsoft Band, avviare un comando e vedere come questo verrà eseguito sul nostro device.

L’SDK per il Microsoft Band è stato rilasciato da pochi giorni e ci dà l’accesso a ben 8 dei 10 sensori che sono installati sul device ed inoltre questo SDK è disponibile per Android, iOS e ovviamente Windows Phone. Da pochissime ore invece è ufficiale anche il rilascio come componente di Xamarin.

I sensori disponibili sul Microsoft Band sono i seguenti:

Sensore

Descrizione

Accelerometro

Fornisce le coordinate X, Y, Z di accelerazione in metri per secondo quadro.

Giroscopio

Fornisce le coordinate X, Y, Z di velocità angolare in gradi al secondo.

Distanza

Fornisce la distanza totale in centimetri, velocita attuale in centimetri al secondo, la modalità di spostamento (corsa, camminata) e l’andatura in millisecondi al metro.

Battito cardiaco

Fornisce il numero di battiti al minuto, inoltre indica se il sensore è in sync perfetto con il battito cardiaco di chi lo indossa.

Pedometro

Fornisce il numero di passi che l’indossatore ha fatto.

Temperatura della pelle

Fornisce la temperature attuale della pelle dell’indossatore in gradi Celsius. Da notare che la temperatura è quella esterna (non la stessa di quella che usiamo per misurarci la febbre).

UV

Fornisce l’intensità di esposizione ai raggi UV.

Contatto fisico

Permette allo sviluppatore di capire se il dispositivo è attualmente indossato.

Installazione dell’SDK

Per leggere i dati dei sensori, la prima cosa che dobbiamo fare è creare una nuova applicazione Windows Phone da Visual Studio 2013, andare su NuGet ed installare il pacchetto Microsoft.Band. Da notare che questo pacchetto è una preview, quindi ricordatevi di abilitare le pre-release (-Pre se andate dalla console).

clip_image002

L’SDK scaricato dovrebbe abilitare in automatico la capability sul Bluetooth RFComm: per verificarlo basta aprire come XML il file package.appxmanifest e controllare che ci siano queste stringhe:

<DeviceCapability Name="bluetooth.rfcomm" xmlns="http://schemas.microsoft.com/appx/2013/manifest">

<Device Id="any">

<Function Type="serviceId:A502CA9A-2BA5-413C-A4E0-13804E47B38F" />

<Function Type="serviceId:C742E1A2-6320-5ABC-9643-D206C677E580" />

</Device>

</DeviceCapability>

Una volta completato questo passaggio andremo ad abilitare anche la capability della Proximity e saremo quindi pronti a scrivere il vero codice.

Lettura dei sensori

La prima cosa che dobbiamo fare adesso è capire se il Band è connesso. Ci basterà usare questa riga:

IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync();

All’interno di pairedBands avremo l’elenco dei Microsoft Band collegati. Chiaramente se il numero di elementi contenuti in questo array è zero, allora non avremo nessun device connesso, altrimenti dovremo scegliere a quale device connetterci attraverso questa riga (al posto di 0 ci va il device scelto):

IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0]);

Una volta ottenuto il Band del quale vogliamo leggere i valori dei sensori citati sopra, ci basterà registrarci agli EventHandler dei vari sensori per iniziare a ricevere i dati:

bandClient.SensorManager.Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;

await bandClient.SensorManager.Accelerometer.StartReadingsAsync();

In questo caso ci siamo registrati all’accelerometro e abbiamo creato un metodo Accelerometer_ReadingChanged che, ad esempio, mostrerà a video i dati ricevuti:

private async void Accelerometer_ReadingChanged(object sender, BandSensorReadingEventArgs<IBandAccelerometerReading> e)

{

IBandAccelerometerReading accel = e.SensorReading;

Debug.WriteLine(accel.AccelerationX + ", " + accel.AccelerationY + ", " + accel.AccelerationZ);

}

Allo stesso modo, possiamo collegarci ad uno qualsiasi dei sensori che abbiamo elencato in precedenza.

N.B.: poiché questo SDK è una preview, possiamo testare l’applicazione solamente dal device e non sugli emulatori di Windows Phone già installati con Visual Studio. Sempre perché è una preview, è bene inserire tutto il codice elencato sopra in blocchi try-catch, che abbiamo evitato per semplificare la lettura del codice, ed inoltre lo stesso SDK potrebbe cambiare in vista del rilascio ufficiale.

In conclusione

Volendo è anche possibile leggere i valori delle versioni del firmware del Band, cambiare il tema, oppure creare una tile direttamente sul device per la nostra applicazione (attenzione: non stiamo ancora parlando di applicazioni ad hoc per il Band) che verrà usata solamente per mostrare le notifiche (di tipo messaggio o finestra di dialogo) o per mandare avvisi attraverso le vibrazioni (si può scegliere tra 9 differenti vibrazioni).

Per un maggiore approfondimento su questo SDK per il Microsoft Band vi invitiamo a leggere l’articolo completo pubblicato su ASPItalia.com e vi ricordiamo anche che terremo una sessione ai CommunityDays.


read full article

Pagina 9 di 83

 
 
 
 
Certificazioni