Passa ai contenuti principali

Post

Visualizzazione dei post con l'etichetta Visual Studio 2010

Come ti estendo lo startup di un’applicazione web

In questo post vorrei porre l’attenzione su una modalità (a dir la verità abbastanza misconosciuta) per estendere lo startup di una applicazione web. Con il termine “estendere lo startup” di una applicazione web intendo la possibilità di eseguire del codice (vedremo in seguito sotto quali condizioni) senza dover ricorrere alla modifica del Global.asax o alla modifica del file di configurazione (ad esempio per aggiungere dei Module). La “magica” classe che permette tutto ciò è la PreApplicationStartMethodAttribute contenuta nel namespace System.Web (assembly System.Web.dll). Si tratta di un attributo applicabile ad un assembly che permette di dichiarare un metodo di un tipo che deve essere eseguito allo startup dell’applicazione. Cosa vuol dire in soldoni? Facciamo un esempio molto semplice ma che può far capire il meccanismo. Supponiamo di voler creare un Modulo HTTP che venga automaticamente agganciato al nostro sito web e che si occupi di non permettere di scaricare risor...

Visual Studio 2010 Web Server e i MIME Type

Non si tratta di un racconto di fantasia ma del fatto che il Web Server integrato di Visual Studio 2010 è in grado di gestire un certo numero di MIME Type e basta. Questo significa che se abbiamo la necessità di mettere nella nostra pagina web una risorsa che prevede un MIME Type particolare e, comunque, non previsto nel Web Server, non saremo in grado di visualizzarla come dovuto. Ad esempio, supponiamo di avere la seguente pagina: <! DOCTYPE html > < html >      < head >          < title > Video MP4 </ title >      </ head >      < body >          < video controls src ="./video/oceans-clip.mp4">             Il video non supportato dal browser          </ video >      </ body > </ html > Se proviamo ad eseguirla (facendo attenzione che il video .mp4 sia effettivamente nella sottocartella “video”), otteniamo: Perché questo? Se analizziamo cosa viene inviato dal nostro server ...

Deserializzazione JSON e costruttori: OnDeserialized e OnDeserializing

In questo post vorrei illustrarvi l’utilizzo degli attributi OnDeserializingAttribute e OnDeserializedAttribute contenuti nel namespace System.Runtime.Serialization. Il loro scopo è quello di decorare dei metodi che verranno richiamati, rispettivamente, prima (OnDeserializing) e dopo (OnDeserialized) la deserializzazione di un oggetto tramite determinati serializzatori che vedremo più avanti. Vediamo il loro possibile utilizzo in caso di deserializzazione JSON. Supponiamo di avere il seguente JSON: {"nome":"Giuseppe","cognome":"Verdi"} una possibile classe che permette la deserializzazione di tale JSON potrebbe essere: Imports System.Xml.Serialization Imports System.Runtime.Serialization   < DataContract ()> Public Class Persona        Public Sub New ()        End Sub       < DataMember (Name:= "nome" )>      Public Property Nome As String     < DataMember (...

Rilasciata la versione 3 di Async CTP

In attesa di avere, “di serie”, la programmazione asincrona a task all’interno di Visual Studio e del framework (sarà presente in Dev11), è stata rilasciata la versione 3 di Async CTP. Async CTP è un pacchetto che introduce la programmazione asincrona a task (che semplifica di molto la scrittura del codice multithread) all’interno di Visual Studio 2010. Async CTP, di fatto, introduce nuove parole chiave e tutta l’infrastruttura che permette al compilatore di gestirle. Per maggiori info sulla programmazione asincrona a task, vi consiglio il link: http://msdn.microsoft.com/en-us/vstudio/gg316360 Per il download del pacchetto di installazione di Async CTP 3, potete utilizzare il link: http://www.microsoft.com/download/en/details.aspx?id=9983 La versione 3 di Async CTP è compatibile con le installazioni non in lingua inglese di VS, Silverlight 5 e Roslyn ed include una EULA ( http://it.wikipedia.org/wiki/EULA ) che ne permette (ma non incoraggia) l’utilizzo della stessa in produz...

Alla scoperta del Kinect : utilizzo del Kinect in modalità polling

Nei precedenti post abbiamo visto che il Kinect ci mette a disposizione una serie di eventi che ci permettono di recuperare i frame video, di profondità o gli skeleton data. Possiamo utilizzare le potenzialità del Kinect anche senza fare ricorso alla gestione di tali eventi ma utilizzando una tecnica di polling sugli streams. Partiamo dall’inizio: la classe Runtime (già vista in precedenza) ci mette a disposizione 3 proprietà utilissime in questo contesto e che contengono proprio gli stream di cui sopra. VideoStream : è un’istanza di ImageStream che incapsula lo stream video; DepthStream : è un’istanza di ImageStream che incapsula lo stream dei dati di profondità; SkeletonEngine : è il motore di skeletal Tracking che permette l’accesso ai frem di skeleton data. In particolare osserviamo la presenza, in tutte le classi in gioco, del metodo GetNextFrame il cui risultato è un oggetto di tipo ImageFrame per il VideoStream e per il DepthStream e SkeletonFrame per lo...

Alla scoperta del Kinect: gli smooth parameters

Abbiamo accennato in questo post come sia possibile eseguire un filtro sui dati grezzi provenienti dal Kinect per “smussare” e correggere le fluttuazioni. In questo post vorrei cercare di capire (per primo io) quale è il significato dei vari parametri utilizzabili. Riprendiamo il discorso dall’inizializzazione della classi Runtime e l’impostazione dei parametri di smoothing: Try     _Nui = New Runtime     _Nui.Initialize( RuntimeOptions .UseSkeletalTracking)      AddHandler _Nui.SkeletonFrameReady, AddressOf SkeletonFrameReadyHandler       _Nui.SkeletonEngine.TransformSmooth = True      Dim parameters = New TransformSmoothParameters () With {.Smoothing = 1.0F,                                                         .Correction = 0.1F,                                                         .Prediction = 0.1F,                                                         .JitterRadius = 0.05F,                                                         .MaxDeviation...

Alla scoperta del Kinect : gli scheletri e l’uomo vitruviano

Cosa c’entra Leonardo e il suo Uomo Vitruviano , gli scheletri ed il Kinect? Apparentemente nulla, ma leggendo questo post scoprirete che, invece, un legame c’è. Abbiamo visto in precedenti post che l’infernale aggeggio (il Kinect) ci permette di ottenere, in maniera molto facile, le immagini video e le immagini di profondità. Già con questi due insiemi di informazioni potremmo realizzare una sorta di interazione tra i player ed il nostro applicativo. L’SDK del Kinect, però, fa molto di più perché è in grado di fornirci gli “scheletri” dei player disposti davanti ad esso. Vediamo come procedere per ricavare ciò. La classe Runtime (di cui abbiamo parlato in questo post ) prevede un evento chiamato SkeletonFrameReady che viene sollevato quando SDK ha a disposizione un oggetto di tipo SkeletonFrame pronto per essere elaborato. L’istanza di questo oggetto è passata come proprietà dell’argomento dell’evento SkeletonFrameReady: La classe SkeletonFrame, come possiamo vedere, e...