Passa ai contenuti principali

Post

Visualizzazione dei post con l'etichetta Tip

Metro Style Apps – I samples di MSDN e il SuspensionManager

Chi si avvicina al mondo delle Metro Style Apps in questo momento, probabilmente, fa uso smodato dei samples che si trovano al link: http://code.msdn.microsoft.com/windowsapps/ Coloro che scaricano i samples in VB (ma mi sembra ci sia anche in C#), troveranno un interessante modulo per gestire i dati da salvare su isolated storage per la gestione, ad esempio, della sospensione. Tale modulo si chiama SuspensionManager e utilizza un Dictionary(Of String, Object) per la memorizzazione dei dati da salvare in sessione. Sono presenti, poi, due metodi per salvare e recupere il dictionary dall'isolated storage i quali utilizzano un DataContractSerializer per la serializzazione. Per semplicità riporto il modulo presente nei samples: ' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ' ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO ' THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A ' PARTICULAR P...

WinRT : Convertire un array di Byte in un IBuffer

L’interfaccia IBuffer è importante in WinRT perchè è l’interfaccia utilizzata, ad esempio, dalle classi di scrittura e lettura su file. Per maggiori info sull’interfaccia, questo è il link alla pagina MSDN corrispondente. In questo post vediamo come convertire un array di Byte in un oggetto IBuffer (ad esempio per poter salvare su disco una immagine). Per poter eseguire l’operazione è necessario utilizzare uno stream in memoria (in particolare un InMemoryRandomAccessStream) e un data writer (istanza della classe DataWriter). Nello specifico scriviamo prima il buffer di Byte nel memory stream usando in DataWriter ad esso collegato e, quindi, usiamo il metodo DetachBuffer() di quest’ultimo per ottenere l’istanza dell’oggetto IBuffer. In codice: Public Shared Function ByteArrayToIBuffer(buffer As IEnumerable ( Of Byte )) As IBuffer      Dim ibuffer As IBuffer = Nothing      Try          Using memoryStream As New InMemoryRandomAccessStream ()              U...

Metro Style App: sapere se si sta “girando” in Design-Mode o no

A volte può essere utile sapere se la nostra classe sta girando in modalità Design-Mode (cioè all’interno di un designer di Visual Studio) oppure no. Un caso emblematico potrebbe essere un ViewModel che deve istanziare dei servizi reali nel caso in cui l’applicazione stia girando normalmente oppure fornire dati fittizzi nel caso in cui ci si trovi in design-mode. Per fare ciò all’interno delle applicazioni Metro Style, possiamo ricorrere alla classe statica DesignMode contenuta  nel namespace Windows.ApplicationModel . Questa classe mette a disposizione un’unica proprietà DesignModeEnabled che restituisce true se ci si trova in design mode. Protected Function IsDesignMode() As Boolean      Return DesignMode .DesignModeEnabled End Function   Technorati Tags: Metro Style App , design mode , designmode , Windows.ApplicationModel , windows 8 , consumer preview

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 (...

Uguaglianza tra tipi in VB.NET

Se abbiamo due istanze della classe Type e vogliamo verificare che tali istanze rappresentino effettivamente lo stesso tipo, possiamo procedere in due modi Siano Type1 e Type2 le due istanze di Type da controllare. Un primo modo è utilizzare l’operatore Is: If Type1 Is Type2 Then      ' i tipi sono uguali Else      ' i tipi non sono uguali End If In alternativa possiamo utilizzare il metodo statico (shared) Equals: If Type .Equals(type1, type2) Then      ' i tipi sono uguali Else      ' i tipi non sono uguali End If In quest’ultimo caso, in realtà, stiamo utilizzando il metodo Equals (shared) di Object, la cui definizione è:   Tag di Technorati: Type , vb.net , Equals

Aprire un file xml in un’applicazione LightSwitch

Da qualche giorno sto lavorando con LightSwitch (ed il buon Alessandro sa quanto apprezzo il prodotto!!!) e la logica con cui si approccia alla soluzione di un problema, anche banale, di programmazione è piuttosto differente da chi proviene dalle applicazioni desktop classico. Ricordatevi sempre che stiamo parlando di Silverlight, quindi, già per questo, non date per scontato che possiate fare quello che volete, in più sotto LightSwitch. Per questo motivo, ogni volta che mi scontrerò con un problema da “desktoppiano” classico e riuscirò a venirne a capo, cercherò di postarlo qui. Probabilmente la soluzione sarà banale e puerile, ma magari potrà servire ad altri!! Detto questo, supponendo di voler aprire un file Xml e creare un oggetto XDocument utilizzando il metodo statico Load(String) , normalmente scriveremmo Dim xmlTemplate As XDocument xmlTemplate = XDocument .Load(fullFileName) dove fullFileName è il nome completo (con tanto di path) del file xml da aprire....

Visual Studio 2010 SP1: Addio ByVal!!!

Non è il titolo di un film, ma semplicemente una novità introdotta nella SP1 di Visual Studio 2010. Gli sviluppatori VB sono abituati al fatto che, quando scrivono gli argomenti dei metodi, in automatico l’IDE inserisce (se già non c’è o non è stata inserita la ByRef) la parola chiave ByVal (il cui significato è riportato qui ). Con l’istallazione della SP1 di VS2010 ciò non accade più nel senso che se non mettiamo la parola chiave ByVal, l’IDE non la inserisce in automatico. Non si tratta di un errore ma semplicemente del fatto che ByVal è di default e, quindi non è necessario inserirla. Ovviamente se la mettiamo funziona tutto come prima.   Tag di Technorati: ByVal , VS 2010 SP1 , Visual Studio 2010 SP1 , ByRef

TFS2010 Object Model: TeamProjectPicker

L’object model di TFS 2010 mette a disposizione una finestra per permettere ai nostri utenti di selezionare un server TFS, una project collection o un progetto. La finestra è implementata dalla classe TeamProjectPicker che si trova nel namespace Microsoft.TeamFoundation.Client (assembly Microsoft.TeamFoundation.Client.dll). TeamProjectPicker permette una certa versatilità perché può servire per selezionare una project collection, un progetto o una serie di progetti. Prima di vedere come si può ottenere ciò, vediamo come è strutturata la classe. La classe ha tre costruttori che permettono di gestire la possibilità di scegliere cosa è possibile selezionare e quale provider di credenziali utilizzare. In particolare, il costruttore più completo è il seguente: Public Sub New ( ByVal mode As TeamProjectPickerMode ,                  ByVal disableCollectionChange As Boolean ,                  ByVal credentialsProvider As ICredentialsProvider ) L’argomento mode, di tipo TeamProjectPi...