martedì 15 dicembre 2015

venerdì 4 dicembre 2015

Rilasciata la versione R5 HF1 di Intel RealSense SDK

Nei giorni scorsi è stata rilasciata la versione R5 HF1 dell’SDK di Intel Realsense.

Nel seguente post trovate alcune informazioni più dettagliate.

 

Technorati Tags:

venerdì 6 novembre 2015

Template di progetto per sviluppare applicazioni WPF con Intel® RealSense™

E’ disponibile, nella gallery di Visual Studio, la prima versione del mio template di progetto per applicazioni WPF scritte in C# che permette di realizzare applicazioni con l’SDK di Intel® RealSense™.

Il template si può scaricare direttamente all’interno Visual Studio utilizzando il tool “Extensions and Updates”

image

oppure all’indirizzo

https://visualstudiogallery.msdn.microsoft.com/1c36ecfd-8c00-4aee-b20c-a1726ab6424d

SNAGHTMLf9cff23

Il template esegue le seguenti operazioni per voi:

  1. Aggiunge la reference all’assembly libpxcclr.cs.dll (nelle due distinte versioni per x86 e x64);
  2. Aggiunge lo script di post build per copiare la libreria libpxccpp2c.dll dalla cartella dell’SDK alla cartella bin del vostro progetto.

Una volta creato il progetto dovete rimuovere la configurazione di compilazione AnyCPU (che non ha più senso) dalla vostra solution e sarete pronti per sviluppare con Intel® RealSense™.

Ovviamente dovete installare l’SDK che potete scaricare all’indirizzo https://software.intel.com/en-us/intel-realsense-sdk

Prossimamente cercherò di rilasciare anche il template per VB.NET.

Stay Tuned!!

 

lunedì 26 ottobre 2015

4 chiacchiere con Erica Barone!

Vi segnalo la puntata della serie #TecHeroes in cui faccio l’intervistatore di Erica Barone, Microsoft Technical Evangelist.

La puntata è incentrata sulla nuova piattaforma di sviluppo Windows10 ed è particolare perchè, di solito, sono gli evangelist a fare da intervistatori!!!

 

Technorati Tags: ,,

lunedì 12 ottobre 2015

Rilasciata nuova versione dell’SDK per Band

Dopo l’annuncio dell’uscita della versione 2 del Band, ecco qui il rilascio dell’SDK per lo stesso.

Potete trovare maggiori info alla pagina http://developer.microsoftband.com/bandSDK

Tra le novità da segnalare i nuovi sensori inseriti nel nuovo device:

  • Sensore galvanometrico: resistenza in KOhm di chi indossa il sensore;
  • Sensore RR: fornisce il tempo intercorso tra i due ultimi battiti cardiaci (utilizzabile solo in resting mode);
  • Sensore luce ambientale: fornisce la luminosità dell’ambiente circostante in lux;
  • Barometro: restituisce pressione atmosferica in hPa e temperatura dell’aria in gradi celsius;
  • Altimetro: fornisce informazioni sulla velocità di scalata/discesa e via discorrendo.

La versione dell’SDK rilasciato è  1.3.10929 ed è compatibile con la precedente (esclusiva per Band 1) nel senso che se avete progetti che referenziano la precedente e girano su Band1, tutto continua a funzionare.

Se provate ad utilizzare uno dei sensori non disponibili sul Band1 (ad esempio l’altimetro) quello che otterrete è un errore del tipo “Use of an unsupported sensor”

image

Appena avrò fra le mani la nuova versione del Band andremo ad analizzare il funzionamento dei nuovi sensori.

 

Tag di Technorati: ,,

lunedì 5 ottobre 2015

Nomina a Intel Black Belt

Lo scorso 2 ottobre ho avuto l’onore di essere nominato Intel Black Belt (https://software.intel.com/it-it/blackbelt). E’ per me un onore  soprattutto perchè in europa siamo solamente in 3 e due nel nostro paese (l’altro italiano e’ Marco Dal Pino che saluto e a cui faccio i complimenti).

Intel Black Belt è il massimo award concesso da Intel Corporation e premia chi si distingue per essere presente nelle attività community e nella documentazione tecnica.

Cito un paragrafo preso dal sito ufficale Intel Developer Zone:

Il Programma Intel® Black Belt Software Developer riconosce i membri delle nostre comunità che sono noti per la loro esperienza tecnica e leadership. Sono membri che condividono le proprie conoscenze e collaborano con altri rafforzando le nostre comunità. Il titolo di Black Belt è riservato ai membri che mettono a disposizione delle comunità la loro vasta esperienza e competenza. Questo titolo riconosce i membri anche per l'impegno e il tempo dedicati nel mettere a disposizione informazioni tecniche che rendono l'Intel® Developer Zone una risorsa di valore per gli sviluppatori.

Ringrazio Francesco Baldassarri per la sua pazienza quando rompo le scatole per pubblicare documentazione su IDZ, la mia community di riferimento DomusDotNet perchè, senza la visibilità che una community così importante da, sarebbe stato tutto più difficile e quella santa donna di mia moglie che sopporta il fatto che spesso mi metta davanti al pc in orari inconsueti!

Adesso la sfida è di impegnarsi ancora di più perchè diventare Intel Black Belt è meraviglioso, ma mantenere il titolo è d’obbligo!

 

Universal Windows Platform – Da dove iniziare

In questo post vorrei proporre una lista di URL utili a chi si avvicina allo sviluppo per la Universal Windows Platform.

Per cominciare la documentazione ufficiale Microsoft:

What’s new for developers in Windows 10

Get started with Windows apps

Design UWP apps

Develop Windows apps

Publish Windows apps

Infine vi suggerisco il corso specifico su Microsoft Virtual Academy dedicato in maniera specifica a Windows 10:

A Developer’s Guide to Windows 10

 

lunedì 28 settembre 2015

Intel® RealSense™ primo contatto su IDZ

Vi segnalo il primo di una serie di articoli dedicati a Intel® RealSense™ che verranno pubblicati su Intel Developer Zone.

L’articolo è raggiungibile all’indirizzo

https://software.intel.com/en-us/articles/intel-realsense-sdk-primo-contatto/

Buona lettura e rimanete connessi!!!

 

lunedì 10 agosto 2015

Microsoft Band SDK su Channel9

Se siete interessati allo sviluppo per il Microsoft BAND vi segnalo la mia “serie” su Channel9 Microsoft Band SDK.
Al momento ci sono due webcast relativi all’SDK su Windows e alle Web Tiles.

venerdì 31 luglio 2015

Microsoft Band SDK – Web Tile : REST

In questo post, ultimo di questa mini serie dedicata alle Web Tile, vedremo come sia possibile realizzare una tile che visualizza dei dati presi da un servizio REST.
Il servizio che utilizzeremo è un semplicissimo servizio REST, hostato su Azure, che permette di eseguire il ping verso un indirizzo web.
Il servizio risponde all’url

http://webtileapi.azurewebsites.net/api/Ping?urlToPing=<url da verificare>

e lo fa con un JSON del tipo

{
  "UrlPinged": "<url da verificare>",
  "Result": 0,
  "ResultString": "Ok",
  "PingDurationInMilliseconds": 100,
  "PingDateTime": "2015-07-27T18:02:57.1500904Z"
}

in cui troviamo il risultato del ping (OK o ERROR), il tempo di attesa e il timestamp di esecuzione dell’operazione.
Quello che vogliamo fare è creare una Web Tile in grado di mostrare le statistiche per due siti e i dettagli per ogni sito, quindi un totale di 3 pagine.
In questo caso, tralasciando la parte del file manifest.json relativa ai metadati, i punti cruciali del file stesso sono la definizione delle risorse (con le relative variabili da utilizzare) e la definizione delle pagine.
Partiamo con la definizione delle risorse:

"resources": [
    {
      "url": "http://webtileapi.azurewebsites.net/api/Ping?urlToPing=http://www.dotnetpodcast.com",
      "style": "Simple",
      "content": {
        "DNPpingdatetime": "PingDateTime",
        "DNPresultstring": "ResultString"
      }
    },
    {
      "url": "http://webtileapi.azurewebsites.net/api/Ping?urlToPing=http://www.domusdotnet.org",
      "style": "Simple",
      "content": {
        "DDNpingdatetime": "PingDateTime",
        "DDNresultstring": "ResultString"
      }
    }
  ]

Il tipo di entrambe le risorse è “Simple”, il che comunica all’infrastruttura delle Web Tile (gestita dall’app mobile Microsoft Health), che si avrà a che fare con una risposta composta da una struttura JSON e non da una collezione di item, come avviene nel caso del tipo “Feed”.
Nella parte di content definiamo i dati che ci interessa mostrare e, in particolare, XXXpingdatetime e XXXresultstring che conterranno i valori delle proprietà PingDateTime e ResultString della struttura JSON restituita del servizio.
Le due chiamate ai servizi verranno eseguite nell’ordine impostato.
Nella definizione delle pagine troviamo:

"pages": [
    {
      "layout": "MSBand_MetricsWithIcons",
      "condition": "true",
      "iconBindings": [
        {
          "elementId": "11",
          "conditions": [
            {
              "condition": "true",
              "icon": "dotnetpodcasticon"
            }
          ]
        },
        {
          "elementId": "21",
          "conditions": [
            {
              "condition": "true",
              "icon": "domusdotneticon"
            }
          ]
        }
      ],
      "textBindings": [
        {
          "elementId": "12",
          "value": "dotNETpodcast {{DNPresultstring}}"
        },
        {
          "elementId": "22",
          "value": "DomusDotNet {{DDNresultstring}}"
        }
      ]
    },
    {
      "layout": "MSBand_NoScrollingText",
      "condition": "true",
      "textBindings": [
        {
          "elementId": "1",
          "value": "dotNET{podcast}"
        },
        {
          "elementId": "2",
          "value": "{{DNPresultstring}}"
        },
        {
          "elementId": "3",
          "value": "{{DNPpingdatetime}}"
        }
      ]
    },
    {
      "layout": "MSBand_NoScrollingText",
      "condition": "true",
      "textBindings": [
        {
          "elementId": "1",
          "value": "DomusDotNet"
        },
        {
          "elementId": "2",
          "value": "{{DDNresultstring}}"
        },
        {
          "elementId": "3",
          "value": "{{DDNpingdatetime}}"
        }
      ]
    }
  ]

Abbiamo, quindi, tre pagine.
Il layout della prima di queste è di tipo MSBand_MetricsWithIcons:

SNAGHTMLab8921b

che mostrerà il riepilogo dell’ultima invocazione:

image

Nel JSON che definisce il binding degli elementi visuali della pagina possiamo osservare la sezione iconBindings all’interno della quale assegniamo delle icone agli elementi visuali in grado di contenerle.
Le icone in questione sono contenute nella cartella icons del package e definite nella sezione JSON icons:

"icons": {
  "dotnetpodcasticon": "icons/dotnetpodcast.png",
  "domusdotneticon": "icons/domusdotnet.png"
},

Nella parte del binding degli elementi visuali che contengono il testo, invece, assegniamo delle scritte a cui concateniamo uno dei valori prelevati dal servizio.
Le altre due pagine sono uguali tra loro e usano il layout MSBand_NoScrollingText:

SNAGHTMLab98ecb

Le tre righe sono messe in binding, rispettivamente, con una stringa costante (il nome del sito) e con i due valori ottenuti dal servizio, ottenendo, ad esempio:

image

In questo modo, ogni volta che Microsoft Health aggiornerà la Web Tile (l’intervallo in minuti è contenuto nella proprietà refreshIntervalMinutes, come visto nei precedenti post), verrà invocato due volte il servizio ed effettuato il binding dei dati sulle pagine.
Le pagine così create non hanno, al momento, interazione con l’utente.
Il file manifest completo è il seguente:

{
  "manifestVersion": 1,
  "name": "PingBand",
  "description": "Tieni sotto controllo i tuoi siti con PingBand",
  "version": 1,
  "versionString": "1.0",
  "author": "Massimo Bonanni",
  "contactEmail": "massimo.bonanni@tiscali.it",
  "tileIcon": {
    "46": "icons/largeicon.png"
  },
  "badgeIcon": {
    "24": "icons/smallIcon.png"
  },
  "icons": {
    "dotnetpodcasticon": "icons/dotnetpodcast.png",
    "domusdotneticon": "icons/domusdotnet.png"
  },
  "refreshIntervalMinutes": 15,
  "resources": [
    {
      "url": "http://webtileapi.azurewebsites.net/api/Ping?urlToPing=http://www.dotnetpodcast.com",
      "style": "Simple",
      "content": {
        "DNPpingdatetime": "PingDateTime",
        "DNPresultstring": "ResultString"
      }
    },
    {
      "url": "http://webtileapi.azurewebsites.net/api/Ping?urlToPing=http://www.domusdotnet.org",
      "style": "Simple",
      "content": {
        "DDNpingdatetime": "PingDateTime",
        "DDNresultstring": "ResultString"
      }
    }
  ],
  "pages": [
    {
      "layout": "MSBand_MetricsWithIcons",
      "condition": "true",
      "iconBindings": [
        {
          "elementId": "11",
          "conditions": [
            {
              "condition": "true",
              "icon": "dotnetpodcasticon"
            }
          ]
        },
        {
          "elementId": "21",
          "conditions": [
            {
              "condition": "true",
              "icon": "domusdotneticon"
            }
          ]
        }
      ],
      "textBindings": [
        {
          "elementId": "12",
          "value": "dotNETpodcast {{DNPresultstring}}"
        },
        {
          "elementId": "22",
          "value": "DomusDotNet {{DDNresultstring}}"
        }
      ]
    },
    {
      "layout": "MSBand_NoScrollingText",
      "condition": "true",
      "textBindings": [
        {
          "elementId": "1",
          "value": "dotNET{podcast}"
        },
        {
          "elementId": "2",
          "value": "{{DNPresultstring}}"
        },
        {
          "elementId": "3",
          "value": "{{DNPpingdatetime}}"
        }
      ]
    },
    {
      "layout": "MSBand_NoScrollingText",
      "condition": "true",
      "textBindings": [
        {
          "elementId": "1",
          "value": "DomusDotNet"
        },
        {
          "elementId": "2",
          "value": "{{DDNresultstring}}"
        },
        {
          "elementId": "3",
          "value": "{{DDNpingdatetime}}"
        }
      ]
    }
  ]
}

Con questo è tutto per quanto riguarda la mini serie dedicata alla preview delle Web Tile.

mercoledì 29 luglio 2015

Microsoft Band SDK – Web Tile : Feed RSS

In questo post vorrei prendere in esame come sia possibile creare una Web Tile prendendo i dati da un feed RSS.
Abbiamo visto nel precedente post dedicato alle Web Tile quale è la struttura del file manifest.json, in questo post vedremo come configurare la parte relativa alle risorse e alle pagine per poter visualizzare il contenuto di un feed RSS.
Cominciamo con il prendere un feed RSS: nell’esempio riportato utilizzerò il feed di dotNET{podcast} (così faccio anche pubblicita’ occulta al sito  Smile).
Il feed completo si trova al seguente link.
Prima cosa che andiamo a configurare è la sezione resources e, precisamente:

"resources": [
  {
    "url": "http://www.dotnetpodcast.com/feed/RSS",
    "style": "Feed",
    "content": {
      "title": "title",
      "pubdate": "pubDate",
      "itunesduration": "itunes:duration"
    }
  }
],

Osserviamo che:
  • lo style è Feed il che dice all’infrastruttura delle web tile che stiamo recuperando un feed e che quando apriremo la tile sul Band, avremo un numero di pagine, tutte uguali e fino ad un massimo di 8, che conterranno i dati secondo il layout che sceglieremo nella parte delle pages;
  • l’url del feed è nella proprietà url;
  • l’estrazione dei dati che ci interessano è definita nell’oggetto content ed in particolare definiamo tre variabili “title”, “pubdate” e “itunesduration” (i nomi sono quelli che ci fanno più comodo) che contengono, rispettivamente i campi “title”, “pubDate” e “itunes:duration” del tag <item> contenuto nell’XML del feed;
In questo modo, di fatto costruiamo una sorta di DTO che mappa il contenuto del feed in opportune variabili.
Il secondo step consiste nel definire come vogliamo appaiano i dati al’interno della tile che metteremo nella strip del Band.
Per fare ciò, dovremo agire sulla collezione pages del file di manifest.
In questo caso, poichè stiamo trattando un feed, avremo una pagina sola che verrà ripetuta per ogni item presente nel feed (fino ad un massimo di 8).

"pages": [
  {
    "layout": "MSBand_NoScrollingText",
    "condition": "true",
    "textBindings": [
      {
        "elementId": "1",
        "value": "{{title}}"
      },
      {
        "elementId": "2",
        "value": "{{pubdate}}"
      },
      {
        "elementId": "3",
        "value": "durata: {{itunesduration}}"
      }
    ]
  }
]

In questo caso abbiamo scelto il layout MSBand_NoScrolingText impostando opportunamente la proprietà layout.
SNAGHTML407c5aa
La proprietà condition in questa versione delle Web Tile deve essere posta obbligatoriamente a true.
L’oggetto textBindings, infine, contiene l’associazione tra i controlli presenti nel layout e le variabili definite nella sezione resources.
Nel nostro caso specifico abbiamo:
  • nell’elementid 1 (quello che nell’immagine del template è Header)mettiamo il contenuto della variabile title;
  • nell’elementid 2 (Body lines 1) mettiamo il contenuto della variabile pubdate;
  • nell’elementid 3 (Secondary Content) mettiamo la concatenazione tra il testo “durata: “ e il contenuto della variabile itunesduration.
Possiamo osservare che si utilizza la sintassi {{nomevariabile}} per definire il binding.
E’ possibile combinare, in uno degli elementi del layout, più variabili o anche concatenare stringhe e variabili.
Infine, per personalizzare ulteriormente la visualizzazione del feed, possiamo cambiare il tema utilizzato all’interno della tile utilizzando l’oggetto JSON tileTheme:

  "tileTheme": {
      "base": "ffaf00",
      "highlight": "ffaf00",
      "lowlight": "f99a03",
      "secondary": "9e9678",
      "highContrast": "ffa500",
      "muted": "bc8b00"
},

La seguente figura mostra il significato delle singole proprieta’ dell’oggetto tileTheme:

image

Quello che otteniamo, una volta installata la Web Tile attraverso l’applicazione Microsoft Health, e’ mostrato nella seguente figura:

Pagina-del-feed

Il file manifest completo e’ il seguente:

{
    "manifestVersion" : 1,
    "name" : "dotNET{podcast}",
    "description" : "Il feed di dotNET{podcast}, il primo podcast italiano su tecnologie Microsoft.",
    "version" : 1,
    "versionString" : "1.0",
    "author" : "Massimo Bonanni",
    "contactEmail" : "massimo.bonanni@dotnetpodcast.com",
    "organization" : "dotNET{podcast}",
    "tileIcon" : {
        "46" : "icons/largeicon.png"
    },
    "badgeIcon" : {
        "24" : "icons/smallIcon.png"
    },
    "refreshIntervalMinutes" : 15,
    "tileTheme": {
        "base": "ffaf00",
        "highlight": "ffaf00",
        "lowlight": "f99a03",
        "secondary": "9e9678",
        "highContrast": "ffa500",
        "muted": "bc8b00"
  },
  "resources": [
    {
      "url": "http://www.dotnetpodcast.com/feed/RSS",
      "style": "Feed",
      "content": {
        "title": "title",
        "pubdate": "pubDate",
        "itunesduration": "itunes:duration"
      }
    }
  ],
  "pages": [
    {
      "layout": "MSBand_NoScrollingText",
      "condition": "true",
      "textBindings": [
        {
          "elementId": "1",
          "value": "{{title}}"
        },
        {
          "elementId": "2",
          "value": "{{pubdate}}"
        },
        {
          "elementId": "3",
          "value": "durata: {{itunesduration}}"
        }
      ]
    }
  ]
}

Nel prossimo post vedremo come creare una tile che mostri delle pagine i cui contenuti sono recuperati da un nostro servizio REST custom.

Rimanete connessi!!!