Technology Experience
Senza categoria

Silverlight 4 out-of-browser application

Ecco un video di circa nove minuti che illustra come creare un’applicazione con Silverlight 4 in modalità OOB (out-of-browser).

Da neofita di Silverlight, pensavo bastasse andare nelle proprietà dell’applicazione Silverlight ed abilitare le opzioni giuste e premere F5, ma non è proprio così. Il video illustra chiaramente che un’applicazione OOB gira di default comunque in un browser, ma può essere installata in locale, e quindi accessibile da un link sul desktop o dal menù Start. Solo in questo modo appare in una finestra indipendente come un’applicazione stand-alone. Oh, che ci volete fare, per un principiante di Silverlight questa cosa non riuscivo a capirla, ma è sufficiente fare qualcosa ricerca per sapere tutto-di-tutto.

Video : http://windowspresentationfoundation.com/Tutorials/OOBTemplate/

Send to Kindle
Senza categoria

Amsterdam, 25-28 Marzo 2010

Album fotografico completo

Giovedì sera, ore 20:40, sono partito da Milano Malpensa per un weekend lungo con mio fratello Omar e con il mio amico di sempre Fabio. Temevamo per il maltempo – le previsioni davano pioggia – ma alla fine ci è andata bene, solo qualche acquazzone venerdì sera. Ho visitato ovviamente il quartiere a luci rosse, un vero mulino a vento ad Harleem, ho visto le centinaia di migliaia di biciclette che girano per la città. Ho bevuto un’Heinken media ed una Amstel media, più due birre piccole Bavaria.

Ho visitato il Museo della Scienza Nemo, e sono salito sull’Indiaman, ho fatto un giro su uno dei battelli turistici che percorrono i canali. Avrei voluto noleggiare una bicicletta, ma non ce l’ho fatta.

Ho macinato chilometri e chilometri a piedi, avrei voluto visitare qualche museo, ma fare tre ore di fila per il Van Gogh Museum non mi sembrava accettabile, e 21 euro e passa per il museo Madame Tussaud mi sembrava troppo. Ho mangiato in un ristorante argentino, e ho visto qualcuno mangiare un panino con l’aringa cruda alle quattro del pomeriggio.

Ho fatto una foto con Darth Vader…

…e sono rimasto troppo folgorante dalla bellezza femminile del posto: tutte bionde, occhi chiari e nessuna senza auricolari nelle orecchie. Sfido chiunque ad andare in giro per le città italiane a trovare una ragazza che non sia al cellulare, oppure che non stia ascoltando musica per i fatti suoi con qualche mp3 player ed auricolari infilati nelle orecchie.

Complimenti ad Amsterdam, soprattutto perchè nel quartiere a luci rosse non si respira un clima da pervertiti, maniaci o sesso-dipendenti, anzi. Volendo entri in un pub e bevi una birra, oppure vai a vedere uno spettacolo live, o qualche museo sul sesso o sulla marijuana e così via. C’è chi si interessa ad una cosa, c’è chi all’altra, in un clima tutto sommato allegro e tranquillo. Basta tenere gli occhi aperti.

Send to Kindle
Senza categoria

Silverlight 4: settare il focus su un controllo

Dunque, la questione è semplice, e non so fare paragoni con le precedenti versioni di Silverlight, perchè io ho cominciato a lavorare sull’ultima, prossima ad uscire sul mercato, cioè la 4.

Si fa click su un bottone e si apre una ChildWindow, che ad esempio serve a fare un login:

public void Execute(object parameter) { wnd = new LoginWindow(); wnd.Closed += new EventHandler(wnd_Closed); wnd.Show(); }

La differenza per chi ha lavorato con WPF – ad esempio – è che la ChildWindow non è veramente modale, per cui appare una volta chiamato il metodo Show(). Dobbiamo intercettare l’evento Closed per sapere quando l’utente chiude la Window, cliccando Ok/Cancel o la X in alto a destra, o con altri pulsanti creati da noi.

Ma torniamo al tema di questo post. Come facciamo a dare il focus ad un controllo sulla ChildWindow una volta che questa appare? Cercando su Google ho trovato una miriade di soluzioni diverse, tutte non funzionanti. Le principali e le più quotate sono due:

  1. intercettare l’evento Loaded della ChildWindow: nell’event handler settare il focus con un semplice this.nomeControllo.Focus(); – ditemi quello che volete ma a me non va: semplicemente la ChildWindow appare, ma il controllo (ad esempio una TextBox) non ha il focus
  2. intercettare l’evento GotFocus della ChildWindow ed agire come prima. Qui è anche peggio, perchè effettivamente il focus si sposta sul controllo, ma poi non riusciamo più ad andarcene. Evidentemente premendo Tab o cliccando su un altro controllo, si scatena comunque il GotFocus della ChildWindow, e quindi il focus rimane lì dov’è.

E ho visto soluzioni molto più complesse, che usavano attached property, classe create ad hoc per implementare una sorta di FocusManager simile a quello disponibile per WPF. Pazzesco.

L’unica, vera, immancabile, incontrovertibile, irrinunciabile, giusta soluzione, ce l’ho io: basta semplicemente impostare il TabIndex a 0 sul primo controllo, a 1 sul secondo controllo e così via. In questo modo, quindi, quando la ChildWindow appare il focus viene messo sul controllo che ha il TabIndex più basso, e premendo Tab mi sposto sugli altri seguendo l’ordine. Un po’ come si faceva con Windows Forms ed il buon vecchio Visual Basic una volta. Più semplice di così si muore.

Bravo Igor! Se ci sono obiezioni o correzioni, sono tutt’orecchi.

Send to Kindle
Senza categoria

VivendoByte search engine

Da questa mattina attraverso il mio blog supporta i provider di ricerca di Internet Explorer o di Firefox. Cosa comporta tutto ciò? Significa che potete fare ricerche all’interno del mio blog sfruttando l’ovvia potenza di Google, effettuando ricerche nella forma:

Quindi, è sufficiente aprire un browser (IE oppure Firefox) e raggiungere l’indirizzo http://blog.vivendobyte.net. Internet Explorer vi informa che c’è disponibile un provider di ricerca, evidenziando la casella di ricerca in alto a destra:

Aprite il menù a tendina e – a scelta – potete decidere di usare il VivendoByte Search Engine al volo senza installarlo, oppure di installarlo così da averlo sempre pronto all’uso.

Se decidete di installarlo, esso apparirà nell’elenco dei provider di ricerca, per cui se volete cercare qualcosa che sapete apparire nel mio blog, la ricerca è intuitiva è più veloce. Lo trovo utile anche solo per me stesso, perchè non sapete quante volte mi capita di dover cercare all’interno del mio stesso blog qualche informazione, qualche roba tecnica, qualche link, etc. etc. Tutte le volte aprivo a mano Google, poi usavo la sintassi site:blog.vivendobyte.net, ma così è molto più veloce!

Carino e semplice da realizzare. Seguite le istruzioni a questo indirizzo per ottenere lo stesso risultato (ma non spiega fino in fondo come aggiungere il favicon.ico per avere la vostra icona, sia nel sito, sia nella combobox dei provider di ricerca).

Send to Kindle
Senza categoria

Scrivere post più velocemente con Windows Live Writer

No, non sono qui per vendervi un corso di dattilografia.

Dunque, per chi di voi usa Windows Live Writer per bloggare, probabilmente utilizza poco la funzione chiamata Glossario collegamenti. E’ una funzione che sostituisce ciò che state scrivendo in quel preciso momento con un hyperlink. Ad esempio…nel testo del blog scrivete “Lorenzo Barbieri” ed un istante dopo questa stringa viene riconosciuta e trasformata in “Lorenzo Barbieri”. In questo modo evitate di creare ogni volta gli stessi collegamenti Web, soprattutto per stringhe di uso frequente.

Ad esempio, non appena scrivo mio twitter dentro il mio Live Writer esso mi viene automaticamente linkato alla pagina del mio profilo pubblico su Twitter. Stessa cosa per il mio profilo Facebook, e così via. Davvero comodo.

Come potete aggiungere stringhe al vostro glossario di Live Writer. In due modi:

  1. nel testo del post corrente che state scrivendo, create il link manualmente, poi ci cliccate con il pulsante destro del mouse e cliccate su Aggiungi a elenco collegamenti automatici
  2. andate sotto il menù Strumenti –> Opzioni –> Glossario collegamenti, e da lì modificate/aggiungete/cancellate le definizioni

Davvero comodo. Ultima informazione: il glossario dei collegamenti è salvato nel path:
C:Users<username>AppDataRoamingWindows Live WriterLinkGlossarylinkglossary.xml

per cui o vi salvate questo file XML manualmente prima di formattare, oppure utilizzate un’utility come questa (che non ho mai provato, per cui non so garantirvi nulla), che fa il backup di tutto ciò che riguarda Windows Live Writer.

Send to Kindle
Senza categoria

Visual Studio 2010, .NET 4, Silverlight 4 e .NET RIA Services (tutto in RC)

Queste sono le tecnologie su cui ho lavorato negli ultimi due giorni, ricavandone un’ottima impressione. L’unica cosa che rende perplessi è la stabilità dell’IDE di Visual Studio 2010: sono abituato da un po’ di tempo, ad esempio, a scrivere il nome di una classe anche se questa non è nello scope degli using importati sinora. E’ sufficiente scrivere ad esempio:

public class UsersEditor : UserControl
{ }

 

poi andare sopra UserControl ed utilizzare la funzione dell’Intellisense che aggiunge automaticamente lo using necessario per utilizzare quella determinata classe. Beh, a me puntualmente l’IDE crasha inesorabilmente. E’ servito a poco installare la patch chen ho segnalato sul mio twitter e sul mio profilo Facebook. L’url che segnalavo era questo:
http://blogs.msdn.com/visualstudio/archive/2010/02/09/intellisense-crash-in-ui-automation.aspx. Non sono pretenzioso, in fondo si tratta solo di una RC, per cui mi accontento e faccio il bravo.

A parte questo inconveniente, quindi, la produttività magari non è stata ai massimi livelli, in fondo la mia ignoranza in questo campo è nota. Come ben sapete, sono da parecchio tempo avvezzo allo sviluppo Web. Ma dopo essermi letto le parti più salienti del libro Silverlight 3, mi sono buttato a studiare i .NET RIA Services. Il risultato è che nell’arco di un giorno – più o meno – ho sviluppato una piccola applicazione che mette in campo alcune caratteristiche che si vedono in un qualsiasi video di tutorial riguardante queste nuove tecnologie.

Cioè:

  • applicazione Silverlight 4 con…
  • …accesso ai dati verso un SQL Server 2008
  • separazione “almeno decente” di domain model e presentation
  • al momento, domain model e l’accesso ai dati vanno perfezionati
  • DataGrid sulla MainPage.xaml che mostra i dati letti da una tabella
  • possibilità di filtering dei dati

Insomma, per due giornate di lavoro, studio compreso, non è male, almeno per me che queste tecnologie non le ho mai guardate nemmeno di striscio. La cosa interessante che ho notato è che sebbene ci siano wizard e alcuni designer a disposizione, in fondo si ha buona parte delle cose sotto controllo. In fondo, non c’è nulla di nascosto: il code-behind è lì, il codice XAML è quello che è, per cui se volete ci andate dentro e ripulite dove per voi è necessario.

Molti meccanismi sono naturali e insiti nella natura dei .NET RIA Services, primo fra tutti l’asincronia per il caricamento ed il savataggio dei dati; ho provato – tanto per provare – ad intercettare tramite le opportune callback gli eventi di fine caricamento dati, o fine salvataggio, e anche in questo caso il grado di precisione dato dall’infrastruttura è davvero notevole. Due ultime osservazioni:

  • molte cose sono ereditate da ADO.Net 1.0, solo che nel vecchio ADO.Net si andava più raw sui dati (si parlava di dataset, tabelle e record), mentre qui si parla di domain model ed oggetti
  • vero che Silverlight è ambito Web, ma ho davvero avuto l’impressione che lo sviluppo Web si sia spostato verso la classica metodologia desktop. Ovvio che ci sono differenze, ma se devo immaginarmi uno slider che da un lato indica web e dall’altro indica desktop, attualmente penso proprio che tutto ciò che riguarda Silverlight pende maggiormante verso il mondo desktop. Vero che è dentro un browser, però c’è un plug-in e l’interazione è a tutti gli effetti più simile ad un programma desktop. E per gli sviluppatori non si parla di css, compatibilità di browser, url, etc.

Alla prossima!

Send to Kindle
Senza categoria

Ufficialmente tornato on-line!!!

Ok, mettetevi comodi perchè questa volta la storia è lunga.

Dunque, tutto comincia qualche mese fa, quando dopo uno dei soliti login sul pannello di controllo di Webhost4life, vedo un annuncio: stiamo migrando i nostri sistemi, perciò state attenti – dicevano – perchè nel vostro prossimo futuro, tutto ad un tratto, vi sposteremo da quella che loro chiamano old platform alla new platform. Visto che dal mio punto di vista tutto doveva essere trasparente, la prima cosa che mi son detto è stata: “Figo! Server nuovi, più veloci, più potenti! Niente male!”. Questa migrazione poteva essere fatta in due modi differenti: in modo automatico (gestita completamente da loro) oppure manuale (immaginate un po’: gestito completamente da noi).

Il pannello di controllo mi comunicava che il mio giorno sarebbe stato l’11 Marzo 2010, cioè giovedì scorso. Diversi amici su UGIdotNET mi avevano messo in guardia, perchè molti hanno avuto problemi in questa migrazione, ma io – peccando di troppo ottimismo – non li ho ascoltati. Un certo Gabriele Gaggi mi aveva addirittura consigliato di switchare la procedura di migrazione su manuale, e di occuparmi io della cosa. Non ho ascoltato nemmeno lui.

Cosa è successo? Riassumo in breve e senza seguire ahimè un ordine particolare:

  1. tutti i files e directory sono stati spostati correttamente dai vecchi server a quelli nuovi
  2. le configurazioni delle applicazioni ASP.Net erano totalmente mancanti
  3. prima della migrazione avevo un sito Windows Sharepoint Services: dopo la migrazione questo sito era totalmente mancante ed impossibile da raggiungere
  4. come parecchi di molti voi sapranno, prima utilizzavo Subtext come engine del mio blog. Quelli di WH4L hanno migrato anche il database, ma qualcosa nella codifica dei caratteri non è andata a buon fine

Insomma, parecchi problemi. Ho litigato 3-4 giorni con ASP.Net, SQL Server, web.config, application directory: non propriamente il mio pane. Ma siccome sono sempre stato in grado di installare Subtext e tutto l’occorrente per il mio blog, perchè non capisco perchè questa volta ci debbano essere stati così tanti problemi. In preda alla disperazione, ho persino preso la mia macchina virtuale Windows Server 2008 e ho fatto girare il mio blog lì dentro, senza alcun problema! Mah! Ora, in fondo si trattava del mio blog e quindi non era nulla di lavorativo che mi ha fatto perdere quattrini o servizi nei confronti di un mio cliente. Ma il mio blog è comunque casa mia, e l’idea di non avere più un mio spazio dove scrivere e dire la mia mi ha mandato fuori dai gangheri. Raramente mi sono sentito così arrabbiato e furioso: lo so che il motivo può sembrare stupido, però è così.

Quindi, mi sono dato da fare e ho provato io a reinstallare da zero tutto quanto. Morale: sarò anche incapace, però non sono più riuscito a configurare Subtext come si deve: o meglio, il blog c’era e funzionava pure, però chi di voi ha visitato il mio blog dall’11 Marzo fino a qualche giorno fa vedeva i contenuti dei post ma senza css associati; inoltre, tutti i link puntavano ad un url incorretto, e che dava un http error 404. Insomma, il vero problema che avevo è che non riuscivo più a configurare il dominio di 3° livello ‘blog.vivendobyte.net’ come prima, e quindi ho lasciato perdere. Roba che dovrebbe essere banale, ma non c’è stato verso.

Ok, tagliamo corto: a che punto siamo?
Se siete qui, avrete già capito che il mio blog è di nuovo on-line, senza alcuni post perso. Ci sono alcuni cambiamenti rispetto al passato:

  1. il mio blog engine è WordPress
  2. il titolo è passato da “reborn” a “reborn 2”: mi sembra giusto così
  3. ho perso i commenti: la migrazione da Subtext a WordPress è avvenuta usando l’onnipresente XML, e quindi – banalmente – i feed
  4. per chi di voi aveva sottoscritto il mio blog tramite FeedBurner, il feed è sempre lo stesso, ovvero http://feeds.feedburner.com/TechnologyExperiencereborn. Se invece c’è qualcuno di voi che usava l’url “proprietario” di Subtext, per favore cambiatelo con questo perchè, a meno di devastanti cambiamenti, dovrebbe rimanere sempre lo stesso indipendentamente dal blog engine che userò in futuro
  5. grazie all’aiuto del buon Gabriele, i vecchi url in Subtext-style dei post vengono convertiti automaticamente nel nuovo stile WordPress: perciò tutto quello che trovate su Google e che rimanda ai vecchi link continua a funzionare: Bel Colpo!

Concludendo, non avete idea di quante volte ho contattato quelli di WH4L: ho chattato e ho aperto ticket. Ho chiesto il perchè di quello e di questo. La cosa più sconvolgente secondo me riguarda Sharepoint: il team della old platform afferma che WSS era supportato ed il mio dominio era (giustamente) enjoy.vivendobyte.net. Quelli della new platform affermano invece che WSS non è supportato e che non sanno nulla di enjoy.vivendobyte.net. Allora ho ri-contattato quelli del vecchio supporto e gli ho spiegato la questione: questi hanno ripuntato il dns del dominio, e adesso di fatto uso un po’ i server nuovi, un po’ quelli vecchi.

Comunque l’importante è essere di nuovo qua. Grazie alle persone che mi hanno scritto consigliandomi, grazie a Gabriele Gaggi che mi ha aiutato a non perdere le indicizzazioni di Google dei vecchi url (con un meccanismo tanto semplice e complicato allo stesso tempo), grazie a tutti quelli che nei commenti e in messenger mi hanno detto che volevano che il mio blog continuasse a vivere.

VivendoByte continuerà ad esistere, più vivo che mai!

Send to Kindle