Evento WP7

Io mi sono iscritto, fusse che fusse che mi becco un bel Windows Phone 7…

DomusDotNet - ALM Reloaded

Attenti-a-quei-due

Roma, 17 settembre 2010 (dalle 14:30 alle 18:30) - Centro Congressi Microsoft Italia - Viale Avignone 10

Chiuse le votazioni e definita l’agenda, con quattro sessioni tenute da Matteo Emili, Gian Maria Ricci e (special guest) Lorenzo Barbieri.

Per iscrivervi visitate la pagina dell’evento.

Vi aspettiamo!

Inserire del codice nei propri post

Recentemente Scott Hanselman ha scritto un lungo post su come postare del codice.

Peccato averlo letto dopo essermi dannato per cercare di fare cosa analoga in occasione della pubblicazione del mio articolo.

Scott ha elencato molti dei modi possibili, ma non quello che a me piace di più: Paste As VS Code

Qui di seguito un esempio:

private void creaTag_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                MIBPContractClient contractClient = new MIBPContractClient();

                UserCredential userCredential = new UserCredential();
                userCredential.AccessToken = EditorToken.Text;

                string _category = TagCategory.Text;

                URITag uriTag = new URITag();
                uriTag.Title = TagTitle.Text;
                uriTag.UTCStartDate = validFrom.SelectedDate ?? DateTime.Now;
                uriTag.UTCEndDate = validTo.SelectedDate;
                uriTag.MedFiUrl = info.Text;
                bool result = contractClient.CreateTag(userCredential, _category, uriTag);
                if (result)
                {
                    MessageBox.Show("Il tag è stato creato.");
                }
                else
                {
                    MessageBox.Show("Si è verificato un errore durante la creazione del tag.");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

In modo simile al Copy As HTML Extension from inside the "Productivity Power Tools, soffre di “spannite acuta” e di “inclusione di stili colore” in quanto per colorare i vari elementi usa <span style="color:#……"> a tutta birra.

Ma nella sua debolezza sta anche la sua forza, perché non usa SyntaxHighlighter, che ha la pecca di non colorare la dichiarazione del tipo, come fanno altri plugin più rinomati, ad esempio Pre Code.

Al contrario,  Paste As VS Code è un convertitore da RTF a HTML e quindi riporta in HTML pari pari lo schema dei colori di Visual Studio. E questa per me è vera libidine.

Peccato poi non averlo potuto usare nel mio articolo, visto che nella configurazione standard di Umbraco l’editor dei contenuti di tipo RichText (TinyMCE) è un po’ troppo impiccione, nel senso che ficca il naso nell’HTML e lo “pulisce” togliendo l’attributo style dai vari <span>, vanificando tutto il lavoro fatto (!!!). Per motivi di tempo non ho potuto modificare quest’impostazione e quindi ho usato Code Snippet perché utilizza <span> con le classi e quindi aggiungendo un file CSS con gli opportuni stili ho momentaneamente risolto.

Stasera sono tornato sulla questione, con più tempo e meno assillo, e ho risolto il problema di configurazione dell’editor TinyMCE per quanto riguarda l’attributo style. Ma questo (parafrasando Lucarelli), è un altro post.

Microsoft Tag

DECORATION_DOWNLOAD

Su DomusDotNet è stato pubblicato il mio primo articolo:

Abstract:

Microsoft Tag è un codice a barre che si presta a molteplici scenari d’uso. In questo articolo ne descriveremo le caratteristiche, le applicazioni e la gestione, sia manualmente dal portale web dedicato, sia tramite le Web Services API, quest’ultime illustrate mediante un'applicazione dimostrativa.

Leggi l’articolo completo

XSLT e XPath

Più di un anno fa ho scritto un post su XSLT e affini, dove Raf mi consigliava di usare LinqToXML rispetto a XSLT e XPath.

Un anno più tardi mi ritrovo alle prese con gli stessi argomenti perché lavorando al sito DomusDotNet, che si basa su Umbraco, XSLT (e quindi XPath) è il metodo più usato per trasformare le informazioni XML contenute nel sito in pagine HTML.

Da sempre uno degli ostacoli più grossi all’uso di XSLT è stato il linguaggio di selezione XPath. Scrivere una espressione e poi “sperare” che funzioni recuperando l’insieme dei nodi desiderati o peggio cercare di capire per quale motivo tale espressione non si comporti come noi vogliamo è spesso una vera e propria caccia al tesoro fatta di snervanti tentativi.

Stasera, stufo di prendere lucciole per lanterne, ho fatto delle prove con Visual Studio e ho scoperto l’acqua calda! (nel senso che quel che ho trovato c’era già in Visual Studio da un bel po’).

Visual Studio, sin dalla versione 2005, ha un potente debugger di XSLT. Esso può essere invocato direttamente dall’editor, impostando la proprietà input al file XML che si vuole trasformare. Poi basta impostare uno o più breakpoint sul file XSLT e lanciare il debugger dal menu XML (visibile quando si usa l’editor XSLT).

Maggiori info qui.

Evento DomusDotNet - ALM Reloaded - Settembre 2010

Attenti-a-quei-due

A Roma, il prossimo settembre, si terrà il primo evento di DomusDotNet completamente dedicato all'Application Lifecycle Management.

Speakers d’eccezione, Matteo Emili e Gian Maria Ricci, MVP italiani di Visual Studio ALM.

Guest stars: Le mitiche ventoline di raffreddamento…

Per il programma si è deciso di seguire il buon esempio di ALT.NET e lasciare che siate voi a formare l’agenda dell’evento in base alle vostre preferenze.

All'inizio del mese di settembre verrà pubblicata l'agenda e verranno aperte le iscrizioni.

Maggior informazioni e il link per votare sul nostro sito: www.domusdotnet.org

Summer Testing Lab: testare le proprie applicazioni su dispositivi Windows Phone 7 “reali”

SummerTestingLab

Sul blog di MSDN, Lorenzo Barbieri invita a testare le proprie applicazioni per WP7 su dispositivi fisici per verificare grafica e quant’altro.

Maggiori informazioni qui.

WebMatrix

Oggi Scott Guthrie ha annunciato la disponibilità di WebMatrix, un nuovo tool che riunisce tre delle recenti anticipazioni illustrate nei giorni scorsi: IISDeveloper Express, SQL Server CE 4 e ASP.NET "Razor". Maggiori informazioni le potete trovare sul suo blog.

Personalmente non so se WebMatrix è stato pensato come un vero prodotto autonomo, dotato di lunga vita e future release, o più che altro come una “palestra” per iniziare ad usare sin da subito le preview dei nuovi strumenti in attesa di vederli inseriti in RTM in una futura update di VS2010. Una prima impressione superficiale e incompleta, ricavata dal seguente video (più dettagliato di quello sottostante), sulla quale intendo ritornare con più serietà non appena installato e provato sulla macchina virtuale che sto allestendo a tal scopo.

WebMatrix Video Player: Overview

UPDATE: Per chi non riuscisse a visualizzare i video, riporto il link alla pagina originale da cui si possono vedere: http://www.microsoft.com/web/webmatrix/

UPDATE 2: Grazie alla segnalazione di Leonardo, riporto il link ad un ottimo post di Andrew Brust che ricostruisce brevemente la storia degli strumenti di sviluppo offerti da Microsoft dagli anni novanta ad oggi, proponendo la tesi per la quale WebMatrix sarebbe un tentativo di recuperare la base degli sviluppatori “sui generis”, persi nella migrazione da ASP a ASP.NET e con l’introduzione di strumenti sempre più professionali che hanno scoraggiato le masse. Io non sono del tutto convinto, anzi rimango della mia idea, ossia di una sorta di esperimento/palestra. Com’è ovvio, posso sbagliare e non credo occorrerà molto per verificarlo.

1° Evento After Hour DomusDotNet

Devo proprio ringraziare Andrea, che è stato fantastico.

L’incontro ha superato ogni mia aspettativa, sia per i contenuti che per il contesto così “intimo” (passatemi il termine).

Una riunione tra amici per ascoltare e parlare di .NET in modo approfondito, come non è (giustamente) possibile fare nelle sessioni di un evento più grande.

Un’esperienza da rifare, al più presto.

IMG_4707

IMG_4727

IMG_4733

IMG_4735

Incorporare una immagine in un tag HTML

Nel progetto al quale sto lavorando ho avuto bisogno di creare dinamicamente delle pagine HTML con alcune immagini recuperate da una tabella e contenute in un campo di tipo BLOB.

Tipicamente, per mostrare un'immagine in una pagina web si usa il tag html

<img src="" alt="" />

dove src contiene il path del file dell’immagine da visualizzare.

Ma avendo le immagini registrate come blob nel database, e volendo evitare la creazione di file temporanei da referenziare come sorgente nel tag <img>, ho utilizzato il “data URI scheme” che consente di includere dati all’interno di documento html come se provenisse da una fonte esterna.

In questo modo, invece di inserire nell’attributo src il path del file dell’immagine da visualizzare, si può inserire (debitamente codificato in Base64) direttamente l’immagine stessa.

Il formato del data URI scheme è il seguente:

data:[<MIME-type>][;charset="<encoding>"][;base64],<data>

Nel nostro caso, visto che si tratta di immagini, possiamo omettere il charset encoding. Quindi per incorporare un’immagine (di tipo png) basta usare:

data:image/png;base64,<data>

dove <data> è pari al contenuto del campo BLOB convertito in base64.

Per fare delle prove basta utilizzare un’immagine, ad esempio questa

QuadroRossoBlu

aprirla con Notepad++

image3_thumb

selezionare tutto con CTRL-A e utilizzare il plugin “MIME Tools | Base64 Encode”

image8_thumb

selezionare tutto e copiare. Ora avete la codifica in Base64 dell’immagine, da inserire nella pagina HTML.

Ad esempio, se provate a visualizzare la seguente pagina HTML

<html>
<body>
<p>La mia immagine:</p>
<img src="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAwBQTFRFVGX//wAd
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFqPhmgAAAAlwSFlzAAAOwwAA
DsMBx2+oZAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNUmK/OAAAACCSURBVFhH7ZdBDsAg
CATx/59u0vbQNKtZkXAaz4I47JIQo/hEcb5BwnOiMIRhggCySUD7hfQwDPOo/8gKzXw6Vr5iZqTCmwBN
eYRgqgYdvriwHrJZe4YBy4D9aIABOyWAU3AKTnEGBE5pdMrJTtqzjVLhFgGasoVLXoYhDBMEymVzAYu7
EiE8mc22AAAAAElFTkSuQmCC"
alt="Cornice rossa con sfiondo blu"/>
</body>
</html>

Si ottiene:

image20_thumb

La tecnica di inclusione di dati “in linea” mediante il data URI scheme è utile anche in altre occasioni, ben illustrate qui.

«settembre»
domlunmarmergiovensab
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789