lunedì 26 ottobre 2009

Mio primo WebRole in the cloud

Probabilmente non frega nulla a nessuno, ma sono riuscito, in una mezz’oretta a creare un web role (in pratica una paginetta aspx che accede all’rss feed del mio blog e lo visualizza):

http://massimobonanni.cloudapp.net/

Il web role non fa praticamente nulla (e, per questo siamo nello standard delle mie applicazioni) ma è una soddisfazione!!!!

Prossimo step, ci porto il mio intero sito nuovo!!!

 

domenica 25 ottobre 2009

venerdì 23 ottobre 2009

Gladiatori Fest: disponibile il materiale

E’ disponibile, all’indirizzo http://www.dotnetromacesta.org/EventoGladiatori.aspx, il materiale (slides e sorgenti) dell’evento Gladiatori Fest di DotNetRomaCestà.

Mi raccomando, a tutti coloro che erano presenti, di inviare un feedback all’indirizzo info@dotnetromacesta.org.

Le vostre critiche, specie se sono costruttive, non possono che aiutarci a crescere!!!!

 

BING : Interessante articolo su Wired.it

Vi invito a leggere l’articolo su Lorenzo Thione (“inventore” di Bing) uscito su wired.it :

http://www.wired.it/magazine/archivio/2009/09/storie/the-big-bing.aspx?page=all

Anche in Bing c’è lo zampino italiano e, tanto per cambiare, questo “cervello” se n’è andato dal nostro paese.

 

Technorati Tag: ,,

giovedì 22 ottobre 2009

Visual Studio 2010 and .NET Framework 4 Beta 2

Vi riporto il link del sito Microsoft da cui potete scaricare (in realtà già da ieri) la beta 2 di VS2010:

Visual Studio 2010 and .NET Framework 4 Beta 2

Sul sito trovate varie versioni e con diverse tipologie di installazione.

 

Lancio di Windows 7 : Cronaca in diretta

Ore 6:00

Sono al gate di Fiumicino in attesa dell’imbarco sul volo AZ2008 per Milano Linate. Windows 7 arrivo.

Ore 9:30

Apertura sala e 20 minuti all’inizio della keynote. La sala è decisamente piena! L’organizzazione mi sembra buona, poi vi faccio sapere.

Ore 13:00

Finita la mattinata. La sessione di Lorenzo, riguardante le novità di Windows 7 per gli sviluppatori, è stata interessante anche se non ha riguardato strettamente lo sviluppo (cioè la scrittura del codice) quanto gli strumenti a disposizione dello sviluppatore quali virtualizzazione e via discorrendo.

Piccolo appunto all’organizzazione: troppe persone e catering non ben organizzato. A mio modo di vedere, in questi casi, è meglio il consueto “sacchetto”, almeno così si è sicuri che tutti mangiano.

Ore 18:00

Finito l’evento: organizzazione 4 e 1/2, contenuti 8.
Ho assistito ad eventi migliori, ma fortunatamente anche a peggiori: senza infamia e senza lode.
Il pomeriggio ha riservato tre sessioni decisamente interessanti. Vedremo se la data di Roma sarà migliore come organizzazione. Secondo il mio modestissimo parere potrebbe non essere stata una buona idea farlo a SMAU.

 

Technorati Tag:

mercoledì 21 ottobre 2009

Gladiator Fest : Ottimo inizio

Ottimo riscontro per la community DotNetRomaCestà al termine del suo primo evento: il Gladiator Fest.

Nonostante solo trenta persone presenti, l’evento è sembrato interessare alla maggior parte e, questo, fa molto piacere per noi organizzatori.

Un grazie a Simone Chiaretta e Luca Bianchi per le ottime sessioni!!

Arrivederci al prossimo evento!!!

P.S.: A breve slides, codice e foto sul sito.

 

lunedì 19 ottobre 2009

Nuovo look per MSDN

Decisamente molto bello.

E’ nato il nuovo look di MSDN:

captured_Image.png

Da segnalare la possibilità, nella library, di cambiare facilmente il tipo di visualizzazione:

Standard:

captured_Image.png[4]

Leggera:

captured_Image.png[1]

ScriptFree:

captured_Image.png[3]

Il cambio di visualizzazione avviene in maniera molto semplice con il pannello in basso a destra.

 

Technorati Tag: ,

Annuncio rilascio Visual Studio 2010 Beta 2

E’ disponibile, da poche ore, per gli abbonati  MSDN la versione Beta 2 di Visual Studio 2010. Per i non abbonati il download sarà disponibile a partire dal 21 di ottobre.

Al seguente indirizzo potete trovare l’annuncio sul blog americano di MSDN e un elenco delle versioni dell’ambiente di sviluppo nel rilascio definitivo:

http://blogs.msdn.com/innov8showcase/archive/2009/10/19/visual-studio-2010-beta-2-released.aspx

 

BEIT : Webcasts su Silverlight 3

Sul sito BEIT sono disponibili alcuni webcast su Silverlight 3 realizzati da Andrea Boschin.

Video BEIT di Andrea Boschin

 

VB.NET : Creare eventi paralleli con i CustomEvent

Vi segnalo un mio piccolo articolo relativo ai CustomEvent del Framedwork .NET versione 2.0 e successive.

L’articolo mostra come poter realizzare eventi i cui gestori vengono eseguiti in maniera parallela.

L’intero articolo è disponibile sul sito della community romana del mondo .NET DotNetRomaCestà all’indirizzo :

http://www.dotnetromacesta.org/common/articoli/aspnet/varie/Custom_event_VBNet.aspx

Vi ricordo, inoltre, che mercoledì ci sarà il primo evento organizzato dalla community. Vi prometto che ne vale la pena, quindi non mancate:

http://www.dotnetromacesta.org/EventoGladiatori.aspx

 

domenica 18 ottobre 2009

BING : L’Object Model del protocollo SOAP

In questo breve post vorrei proporvi l’Object Model delle API di Bing utilizzando il protocollo SOAP.

Di seguito vi riporto il diagramma delle classi delle request e delle response.

Le classi convolte nella requestClassi coinvolte nella response

L’object model della request e della response rimane lo stesso sia che si referenzi l’endpoint SOAP come servizio, sia che si referenzi come web service.

L’unica differenza tra le due modalità di reference è la classe utilizzata per invocare le richieste.

 

martedì 13 ottobre 2009

ALM DAY - Evento gratuito Microsoft - Roma e Milano – Agenda ed iscrizioni

E’ finalmente disponibile l’agenda ed il link di iscrizione all’evento gratuito Microsoft ALM Day sulla gestione del ciclo di vita del software:

ALM DAY - Evento gratuito Microsoft - Roma e Milano

Da non perdere, nella giornata romana c’è Brian Harry (il papà di TFS)!!!!

 

Technorati Tag: ,,

lunedì 12 ottobre 2009

ASP.NET : Inserire immagini dinamiche all’interno delle pagine ASPX.

A volte abbiamo la necessità di inserire, all’interno delle nostre pagine web .ASPX, delle immagini generate in maniera dinamica, cioè create utilizzando un opportuno algoritmo oppure modificando dinamicamente delle immagini già esistenti.

Una delle tecniche che possiamo utilizzare per ottenere questo risultato è quella di utilizzare dei gestori HTTP personalizzati.

Un gestore HTTP altro non è che una classe .NET che implementa l’interfaccia IHttpHandler e che permette di gestire, personalizzando il comportamento, un qualsiasi file con una qualsiasi estensione.

Esistono, fondamentalmente due tipologie di gestori HTTP:

1) Il primo tipo è quello che si ottiene creando una classe VB.NET (o C#) ed implementando l''interfaccia IHttpHandler. L’utilizzo di questo gestore avviene inserendo un’apposita chiave all’interno del file web.config:

<system.webServer>
    .
    .
    <handlers>
        <add name="MioGestore" verb="*" path="*.mext" type="MiaClasse"/>
    </handlers>
    .
    .
</system.webServer>

Il tag <add> comunica al framework ASP.NET di richiamare la classe MioGestore nel momento in cui viene richiesto un file con estensione *mext.

2) il secondo tipo di gestori è quello che si ottiene aggiungendo un elemento “gestore generico” dal menù di visual studio:

Finestra per l'aggiunta di un gestore generico.  Questa tipologia di gestore è più adatto ad essere richiamato all’interno di una pagina ASPX in quanto si comporta come una pagina ASPX stessa.

In entrambi i casi, l’interfaccia IHttpHandler prevede un metodo e una proprietà.

Il metodo ProcessRequest() viene richiamato ogni volta che il framework deve effettivamente eseguire l’elaborazione della richiesta tramite il gestore ed è il punto in cui inserire il nostro algoritmo di generazione dell’immagine.

La proprietà IsReusable() indica al framework se l’istanza del gestore può essere riutilizzata per un’altra richiesta o se deve essere creata una nuova istanza ad ogni richiesta.

tornando al problema di inserire delle immagini dinamiche all’interno delle nostre pagine web, supponiamo di voler inserire, automaticamente, un watermark all’interno delle immagini che visualizziamo nel sito in modo che non si possano utilizzare.

Per fare questo, o modifichiamo a mano tutte le immagini inserendo un watermark opure creiamo un gestore WatermarkImageHandler.ashx che utilizzeremo come attributo src dei tag <img> in cui vogliamo far apparire il watermark.

In sostanza, una volta creato il gestore generico WatermarkImageHandler.ashx  è sufficiente implementare l’algoritmo di creazione del watermark all’interno del metodo ProcessRequest().

Public Sub ProcessRequest(ByVal context As System.Web.HttpContext)
    Implements System.Web.IHttpHandler.ProcessRequest
    context.Response.ContentType = "image/jpg"
    If Not String.IsNullOrEmpty(ImagePath) Then
        Dim imageFullPath = HttpContext.Current.Server.MapPath(ImagePath)
        Dim image As New Bitmap(imageFullPath)
        Dim gr = Graphics.FromImage(image)
        Dim watermarkFont = New Font(FontFamily.GenericMonospace, _
            10, FontStyle.Regular, GraphicsUnit.Pixel)
        Dim textSize = gr.MeasureString(Watermark, watermarkFont)
        Dim x = 0
        While x < image.Width
            Dim y = 0
            While y < image.Height
                gr.DrawString(Watermark, watermarkFont, Brushes.White, x, y)
                y += 3 / 2 * textSize.Height
            End While
            x += 3 / 2 * textSize.Width
        End While
        image.Save(context.Response.OutputStream, ImageFormat.Jpeg)
    End If
End Sub

Il trucco di tutto il meccanismo è quello di cambiare il ContentType della Response (accessibile tramite l’argomento HttpContext passato alla subroutine) impostandolo come “image/jpg” (o “image/gif” o “image/png” in base alla tipologia di immagine).

A questo punto è sufficiente creare un oggetto Bitmap utilizzando le classi a disposizione nel namespace System.Drawing e modificarlo a nostro piacimento per generare l’immagine che desideriamo.

Infine basta salvare l’immagine generata all’interno dell’OutputStream della Response (con l’opportuno formato) ed il gioco è fatto.

Nel codice riportato sopra, Watermark e ImagePath sono due proprietà di sola lettura che wrappano i valori passati in query string:

Public ReadOnly Property Watermark() As String
    Get
        Return HttpContext.Current.Request.QueryString("watermark")
    End Get
End Property

Public ReadOnly Property ImagePath() As String
    Get
        Return HttpContext.Current.Request.QueryString("imagepath")
    End Get
End Property

Una volta creato il nostro gestore, possiamo utilizzarlo, all’interno di una pagina aspx semplicemente scrivendo:

<img src="./WatermarkImageHandler.ashx?watermark=codetailor&imagepath=./images/001.jpg" />

In questo caso il watermark impresso sull’immagine sarà “codetailor” mentre l’immagine da utilizzare è la “./images/001.jpg”. Il risultato ottenuto è il seguente:

La pagina web con l'immagine e il watermark.

La tecnica appena vista può essere, ovviamente, utilizzata per creare immagini ex-novo (ad esempio grafici con i dati letti da un dispositivo esterno di misura) oppure cambiare il formato di un’immagine esistente (giocando con il ContentType della Response e con il tipo di immagine nel metodo Save della classe Bitmap).

 

venerdì 9 ottobre 2009

Refactor! un utile (e gratuito) strumento da Devexpress

Refactor! è un ottimo strumento gratuito di Devexpress che aggiunge al nostro Visual Studio molte funzionalità di refactoring automatiche quali la creazione di metodi a partire da un pezzo di codice selezionato:

oppure la possibilità di creare una proprietà a partire da un metodo:

Le funzionalità previste sono decisamente tante e potete vederle tutte sul sito Devexpress o seguendo il link Refactor! su VB Developer Center.

 

mercoledì 7 ottobre 2009

VS2010 : Personalizzare la home page dell’IDE

Una delle migliorie apportate all’IDE di Visual Studio 2010 riguarda l’estensibilità dello strumento, cioè la possibilità che si ha di personalizzare l’IDE di Visual Studio per adattarla alle nostre necessità.

Fa parte di questo ambito, la possibilità cambiare la pagina iniziale di Visual Studio e personalizzarla come vogliamo.

Innanzitutto la home page “di serie” si trova nella sotto-cartella StartPages (ed in particolare la cartella “en”)  della cartella di Visual Studio 2010:

Program Files\Microsoft Visual Studio 10.0\Common7\IDE\StartPAges\en

Collocazione della start page di serie

Si tratta di un file XAML WPF e una classe CS che possiamo personalizzare come vogliamo.

Per poter utilizzare la nostra home page personale dobbiamo preventivamente copiare i due file citati in precedenza in una cartella creata nella cartella documenti del nostro profilo:

Documents\Visual Studio 10\StartPages

Collocazione della start page personalizzata

Questi file StartPage.xaml e StartPage.cs costituiranno la nostra pagina che potremo modificare a piacimento.

Per visualizzare la pagina all’interno di Visual Studio è necessario selezionare il menù Opzioni:

e “flaggare” l’apposita opzione nella sezione Startup:

A questo punto il gioco è fatto e la vostra pagina verrà visualizzata al posto di quella di serie!!

La mia pagina personalizzata

 

martedì 6 ottobre 2009

BING : Limitare le ricerche ad un particolare dominio

Proseguendo il filone dei post su BING vi segnalo un piccolo tip per ottimizzare le proprie ricerche in modo da proporre i risultati di ricerca relativi ad un solo dominio.

In sostanza basta aggiungere, alle parole di ricerca, la parola chiave site: seguita dal dominio richiesto.

Ad esempio le parole chiave di ricerca:

visual+studio+2010 site:microsoft.com

producono il seguente risultato:

captured_Image.png

Ovviamente possiamo aggiungere la clausola site anche alle nostre ricerche effettuate da codice per dare ai nostri utenti risultati di ricerca relativi al nostro dominio.

 

Technorati Tag: ,

lunedì 5 ottobre 2009

Anche le istituzioni parlano di Gladiatori Fest

Anche la provincia di Roma e, in particolare, il centro per l’impiego di Pomezia cita il prossimo evento della community romana sulla tecnologia .NET DotNetRomacestà.

Questo è il link al sito del centro per l’impiego di Pomezia.

Ora non avete più scuse, iscrivetevi e partecipate alla community in modo che possa crescere:

http://www.dotnetromacesta.org/EventoGladiatori.aspx

Ringrazio il grande Emanuele per la segnalazione!

domenica 4 ottobre 2009

BING : Referenziare il servizio SOAP

In questo post vorrei riprendere un discorso trattato qualche mese fa riguardante le funzionalità di ricerca offerte dalla piattaforme Bing.

In particolare mi vorrei soffermare sul protocollo SOAP.

Come già visto nel post Protocolli Bing : SOAP & JSON, il protocollo SOAP è solo uno dei tre protocolli possibili per accedere alle funzionalità della piattaforma di ricerca Bing.

Se abbiamo un nostro progetto .NET possiamo referenziare il protocollo SOAP in due modalità che vedremo ora in dettaglio.

In entrambi i casi, l’indirizzo da cui recuperare il WSDL del servizio è:

http://api.bing.net/search.wsdl?AppID=<AppIdD>&Version=2.2

dove <AppId> è il nostro appid generato nelle modalità spiegate nel post "Integrare le funzionalità di Bing".

SOAP come servizio

Per referenziare il servizio SOAP è sufficiente utilizzare la funzione “Aggiungi Riferimento al Servizio…” del menù contestuale di un progetto VS2008:

captured_Image.png

inserire l’indirizzo del WSDL:

captured_Image.png[8]

e premere OK.

Questa operazione genera delle classi a partire dai metadati recuperati dal WSDL.

In questo caso il punto di accesso ai servizi Bing è la classe BingPortTypeClient ed, in particolare, in metodo Search():

captured_Image.png[10]

Il metodo Search() prevede un argomento di tipo SearchRequest e restituisce un risultato di tipo SearchResponse.

La configurazione dell’indirizzo del servizio avviene, come nella migliore tradizione WCF, all’interno del tag <system.serviceModel> del file di configurazione:

captured_Image.png[12]

 

SOAP come web service

Possiamo referenziare il servizio Bing con protocollo SOAP anche come Web Service “vecchia maniera”, semplicemente utilizzando il menù contestuale “Aggiungi riferimento Web…”

captured_Image.png[14]

oppure usando il menù “Aggiungi riferimento al Servizio…” come visto in precedenza ma utilizzando il riferimento come Web Service

captured_Image.png[16]

In questo caso, il punto di accesso ai servizi Bing è la classe BingService con il metodo Search()  (e la sua versione asincrona).

captured_Image.png[18]

Anche in questo caso, il metodo Search() prevede un argomento di tipo SearchRequest e restituisce un risultato di tipo SearchResponse.

La configurazione dell’indirizzo del servizio può avvenire, questa volta impostando la proprietà Url dell’istanza delal classe BingService.

I servizi con protocollo SOAP sono, quindi, utilizzabili sia da linguaggi che “comprendono” SOAP puro, sia da queli linguaggi che riescono ad interpretare i “vecchi” web services.

 

giovedì 1 ottobre 2009

Rilasciata la nuova release di AjaxControlToolkit

Ieri è stata rilasciata la release 30930 dell’AjaxControlToolkit.

Il progetto è ospitato da codeplex e le novità introdotte in questa release sono:

Seadragon: un controllo per fare panning e zoom di immagini;

AsynchFileUpload: per effettuare upload di file in modalità asincrona.

Per vedere gli esempi potete andare sul sito di ASP.NET.