Ormai da più di sei mesi uso regolarmente in casa il TouchSmart HP. Anche se le applicazioni tradizionali non risultano molto usabili con le dita, nel senso che non c'è un gran vantaggio su Outlook ad esempio, ad usare lo schermo touch o multitouch. Le applicazioni native, come il "Media Center" di HP, sono invece tutta un'altra cosa essendo progettate appositamente per l'esperienza di tocco sullo schermo.
Il vero problema, soprattutto per chi come me abita in campagna, sono i piccoli insetti che, vedendo la luce (molto intensa) dello schermo si posano sullo schermo e, ovviamente, agiscono da touch...se sono in due...da multitouch :-)
Scherzi a parte, mi è capitato più di una volta, di trovarmi finestre spostate o applicazioni chiuse da piccoli insetti: la soluzione al problema è "addormentare" il tutto prima di lasciare lo schermo (un tempo avremmo detto tastiera) incustodito. Quando si è al PC è più complesso, sembra di condividere le applicazioni con un utente remoto che agisce sul tuo PC, ma in questo caso l'utente remoto è un ragnetto oppure un moschino che non è esattamente un utente esperto...ok, è vero...spesso non lo neanche l'utente remoto...ma questa è un'altra storia :-)
Abbiamo aggiunto altre slide e informazioni al nostro corso sullo sviluppo per Azure Services Platform che adesso consta di ben 315 slide e numerose demo sull'accesso ai dati, .NET Workflow Services e Service Bus.
La settimana prossima al Remix 09 terrò una sessione introduttiva sull'argomento nel track Web Development What's new.
E' stata rilasciata una nuova versione degli strumenti per lavorare con Windows Azure.
La prima novità è il supporto per Visual Studio 2010 Beta1.
L'SDK, questa volta in formato EXE, è arrivato alla versione 1.0.20521.1202 e richiede come sempre il SP1 di Visual Studio 2008, SQL Express per lavorare con il Development Storage in locale.
Come per la versione precedente (Marzo 2009) questo componente include anche l'SDK per Windows Azure che non richiede un download e una installazione separata.
E' migliorata novevolmente la stabilità del Development Fabric e Development Storage.
Download disponible: http://www.microsoft.com/downloads/details.aspx?FamilyID=11b451c4-7a7b-4537-a769-e1d157bad8c6&displaylang=en
Sono richieste le seguenti hotfix prima di installare il tutto:
- Install the Hotfix: Native Debugging Improvements (not required for Visual Studio 2010)
- Install the Hotfix: Support for FastCGI on the Development Fabric (not required for Windows 7 RC)
- Install the Hotfix: Improve Visual Studio Stability (not required for Windows 7 RC)
Chiusa la nostro DevCon 2009 (http://devcon.devleap.com) si riparte con un nuovo evento. Siamo stati coinvolti al Microsoft Remix 09 (http://www.microsoft.com/italy/nextweb/remix/index.aspx), dove terrò una sessione di anteprima su Windows Azure. Sarà l'occasione per fornire ai partecipanti il link al capitolo 3 del nostro nuovo libro sulla programmazione in Windows Azure che sarà disponibile in settembre 2009.
Grazie per la partecipazione a DevCon e per chi ci sarà, ci vediamo al Remix.
Dal 30 aprile, anche nella CTP di Windows Azure, ci sono due novitò che riguardano appunto la geo-location.
Una applicazione ospitata su Windows Azure può essere composta da quello che viene definito un Hosted Service ovvero un servizio o una applicazione ASP.NET esposta su un endpoint pubblico che sfrutta il sistema operativo in the cloud, e/o da un Storage Account, ancora una volta un endpoint pubblico che può ospitare dati (Simple Table, Blob, Queue in queste prime CTP). Ho inserito "e/o" in quanto lo storage è comunque accessibile da una soluzione on-premise quindi potremmo avere una classica applicazione ASP.NET che teniamo in casa o presso qualunque provider che accede ai dati ospitati in the cloud.
La prima novità riguarda la possibilità di decidere la Region in cui ospitare la nostra applicazione. Nelle primissime CTP non ci era dato sapere dove fossero i server che ospitavano la nostra soluzione (non che ci interessasse visto che si trattava di una CTP su cui eseguire il test per imparare ad usare la piattaforma). Nella versione attuale e ovviamente nella versione finale è possibile decidere dove ospitare la nostra applicazione. Per adesso sono disponibili solamente USA-Nortwest, USA-Southwest o USA-Anywhere ma chiaramente sarà possibile scegliere poi il data center più consono per la nostra applicazione o per i nostri dati. Se la nostra applicazione ha vincoli legali dettati dalla comunità europea potremmo quindi decidere di ospitare la nostra applicazione e soprattutto i nostri dati in Europa.
La seconda novità riguarda la creazione di un "affinity group": è importante infatti tenere lo Storage Account ospitato sui server vicini rispetto al progetto Hosted Service per abbassare il più possibile la latenza nelle richieste alle risorse in the cloud rispetto all'applicazione in the cloud. Scegliere una Region identica non ci assicura che le risorse siano veramente vicine: sicuramente sono nella stessa region ma non è detto che siano nello stesso data center. L'affinity group che possiamo create consente di indicare a Windows Azure di tenere il più vicine possibile le risorse rispetto allo storage.
L'affinity group si può creare sia da un progetto Hosted Service che dal progetto Storage Account: gli affinity group creati sono condivisi ad entrambi i progetti.
...o triplicati ?
Il problema, ho scoperto, nasce da una installazione della versione GDR se viene installata con Visual Studio aperto. Io sono sicuro di averla installata con Visual Studio chiusoo, quindi forse il problema può esistere in entrambi i casi.
La soluzione è semplice: da un command prompt eseguito come amministratore (e con VS chiuso) è sufficiente fare questo
"%ProgramFiles%\Microsoft Visual Studio 9.0\DBPro\DBProRepair.exe" RemoveDBPro2008
"%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" /ResetUserData
Tutto torna come deve essere.
In previsione di cambiare auto per scadenza del contratto, sto leggendo qualche rivista del settore e mi sono imbattuto in un articolo su Albert 3, computer che sviluppa l'aereodinamica (SOLO l'aereodinamica) per un team di formula 1.
4.224 processori
8.448 GB di memoria
50.700 miliardi di operazioni al secondo...in pratica il lavoro di un anno di 4.7 milioni di persone che ogni 3 secondi moltiplicano due numeri di 8 cifre ciascuno.
Da paura !
Adesso torno sul mio dual core con 4 GB di RAM :-)
Con grande piacere vi comunico la la SQL Conference 2009 è quasi sold-out: vi invito, se avete intenzioni di iscrivermi, a farlo subito per evitare di non trovare posto.
Per quanto mi riguarda, terrò due sessioni:
SQL Server Replication Techniques
SQL Server offre diverse tipologie di replica dei dati, ognuna adatta a scenari ben definiti e ottimizzata/ottimizzabile in funzione del tipo di sincronizzazione che si vuole raggiungere. In questa sessione di livello medio si esploreranno le diverse tipologie di replica messe a disposizione da SQL 2005/2008, partendo dalla Snapshot Replication per arrivare alla ben più complessa Merge Replication, passando per le due modalità di Transactional Replication. L'obiettivo della sessione è analizzare le 3 tipologie dal punto di vista architetturale, indicarne le aree di configurazione e gli errori più comuni spesso riscontrati in produzione, fare luce sulle aree più importanti su cui agire per tarare l'implementazione e fornire i puntatori per approfondire gli aspetti tecnici.
SQL Server Compact Edition 3.5 (SP1) for Smart Client
SQL CE 3.5 viene spesso sottovalutato in soluzioni Desktop, relegandolo a soluzioni mobile. Se da una parte è assolutamente vero che le sue funzionalità nascono per l'ambiente mobile e sono quindi ridotte rispetto a SQL Express, è altrettanto vero che la facilità di installazione, la semplicità di utilizzo, l'assenza di una configurazione esterna al prodotto, l'integrazione con ClickOnce e Sync Services e la portabilità totale della soluzione in ambiente mobile, ne fanno la prima scelta per soluzioni desktop anche complesse.
SQL CE è la base per le nuove tecnologie di sincronizzazione dei dati come Sync Services e un client ideale per soluzioni di cloud computing. In questa sessione si vedranno le caratteristiche del prodotto, l'ottimizzazione dell'accesso ai dati con tecniche diverse (BTC) rispetto a SQL Express/SQL Server, l'integrazione con ClickOnce per il deploy della soluzione.
Buona conferenza: www.sqlconference.it
Dopo il post di Marco su Sql Services, altre novità sono state presentate, anzi sono già scaricabili, per quanto riguarda lo sviluppo su Windows Azure.
I due SDK per lavorare con progetti Web Role e Worker sono stati aggiornati alla versione March 2009.
Il primo download è il Windows Azure Tools for Visual Studio e SDK: comprende sia il Windows Azure SDK con librerie ed esempi, che i Tools per Visual Studio 2008 che forniscono template per entrambi i role, il Development Fabric e il Development Storage. Nelle precedenti versioni questi due strumenti andavano scaricati separatamente
Il secondo è download disponibile è il solo Windows Azure SDK (compreso anche nel primo download). Non occorre più installare questo SDK se installate l'altro.
Le novità per il Windows Azure SDK riguardano la possibilità di sviluppare applicazioni Full Trust, la possibilità di eseguire PInvoke, un nuovo modulo URL Rewrite per eseguire URL Rewriting nelle applicazioni. Sono migliorate anche le performance nell'interazione fra il Devevlopment Storage e SQL Server.
Per quanto riguarda invece gli strumenti per Visual Studio, sono stati fixati numerosi bug ed è stata aggiunta la possibilità di debuggare native code.
Alla nostra DevCon 2009 abbiamo una sessione molto pratica di inquadramento dello sviluppo Windows Azure.
Dopo aver installato Silverlight 2 SDK su una macchina con VS 2008 SP1 (penso sia stato questo) non riesco più a creare Unit Test partendo da tasto destro su un metodo in progetti .NET FW 3.5.
Sto facendo un prototipo misto fra .NET CF e .NET FW: sui progetti mobile non ho problemi a automatizzare la creazione di unit test, mentre sui progetti Desktop, appare la mascherina, ma è completamente vuota e premendo ad esempio Settings la mascherina si chiude.
Ho scoperto che il problema può derivare dalla presenza nella solution di un progetto Database GDR oppure un progetto Silverlight.
Dopo qualche ricerca, ho trovato la KB 962866 e la relativa patch http://code.msdn.microsoft.com/KB962866/Release/ProjectReleases.aspx?ReleaseId=2356.
Spero utile
Per chi ha già fatto qualcosa su Windows Azure, soprattutto se l'applicazione fa riferimento al local time.
Direttamente dal Team: la piattaforma viene migrata alle coordinate UTC, in quanto, essendo un servizio globale è importante che le applicazioni si comportino in modo indipendente dalla location fisica.
Ecco l'estratto della notizia:
Currently, the time zone within Windows Azure is Pacific Standard Time (PST). Soon, we will be migrating to Coordinated Universal Time (UTC). This is potentially a breaking change for applications which rely on local time.
When will we make the change?
We will start rolling out this change starting Sunday, March 8 at 10:00 AM GMT.
Why are we doing this?
Windows Azure is a global service. To ensure that applications behave the same way regardless of their physical location, it’s important that Windows Azure have a consistent time zone across all geographies. UTC is a natural choice given our global customer base, and UTC is not subject to potentially disruptive changes in Daylight Savings Time.
What’s the potential impact to you?
If your application running in Windows Azure relies on local time, you will be impacted by the migration to UTC. Here are a few examples of potential issues:
- Gaps may occur in event logs if local timestamps are used.
- User interfaces that depend on local timestamps may show different results.
- Local timestamps stored by your application may be interpreted differently after the changeover.
Many applications have already been designed to rely only on UTC time. These applications should be unaffected.
Abbiamo appena finito di creare e pubblicare "in the cloud" il sito della nostra prossima conferenza.
http://devleaprob.cloudapp.net
Più che di sito dovremmo parlare di applicazione; infatti il tutto è composto da
1) Pagine ASP.NET di presentazione dei contenuti
2) Servizi WCF per la gestione dell'elenco sessioni e speaker
3) Client Silverlight che recupera i dati di sessione e speaker tramite i servizi
L'applicazione è stata scritta seguendo il modello architetturale che usiamo nei nostri progetti reali e proponiamo nei nostri corsi/conferenze sin dal 2004; molti dei nostri clienti sanno di cosa parlo e molti di loro hanno anche visto il progettino reale nei nostri ultimi incontri come esempio di estensione verso Silverlight del modello architetturale.
Questo il System Diagram di Team System della parte server-side pre-cloud:
Come si nota la parte Web che ospita i servizi WCF e le pagine ASP.NET utilizza un Business Layer (DevLeapDevCon09Biz) per accedere alle informazioni. Il Biz tramite un factory (Dal) ottiene il Dal pluggabile (DalInMemory) per l'accesso alle informazioni. Il Dal restituisce entità di Business (del progetto Entities) in modo che gli altri strati applicativi vengano isolati dall'effettivo store delle informazioni.
Visto che il progetto, nato a ottobre, non aveva un database ben definito, avevamo optato (e da quì il nome DalInMemory) per creare comunque uno strato Dal pluggabile in modo da poterlo sostiuire non appena saremmo stati pronti con un database ben strutturato. In realtà non avendo il tempo necessario per progettare una buona base dati, adattabile alle nostre varie conferenza, il sito ufficiale di DevCon utilizza appunto il DalInMemory che si preoccupa di restituire l'elenco delle sessioni e degli speaker.
Questo disegno si traduce nella seguente parte di solution server-side:
Nella solution server-side non è presente la parte Silverlight, sviluppata con Luca Regnicoli in una solution separata.
Dunque...come portiamo il tutto in the cloud ?
In prima battuta abbiamo semplicemente creato un progetto "Web Role" per Windows Azure che utilizzando Biz e Dal esistenti consentiva, senza riscrivere praticamente niente, di utilizzare l'architettura esistente. Per semplificare la creazione della parte ASP.NET e WCF nel progetto Web Role sono stati linkati i sorgenti (tramite Add Link da Visual Studio 2008) del progetto web precedente. In questo modo, stanotte, dopo neanche 20 minuti di lavoro avevamo il sito DevCon in the cloud.
Ultimo step della prima fase: cambiare gli url a cui puntava il client Silverlight verso i servizi esposti http://devleaprob.cloudapp.net/SpeakerService.svc e http://devleaprob.cloudapp.net/sessionService.svc al posto dei vecchi url ospitati sul sito ufficiale di DevCon.
Chiaro che il compito è stato molto facile in quanto, non avendo una struttura dati sottostante, non c'è stato bisogno di adattamenti particolari: da quì lo Step 2.
Per complicarci la vita :-), l'idea di appoggiare i dati al Cloud Storage offerto da Windows Azure.
Grazie alla corretta progettazione della soluzione è stato semplicissimo creare uno strato DalCloud che rispettasse le interfacce definite. Quindi è stato creato il progetto DevLeap.DevCon09.Dal.Cloud che tramite la classe SpeakerDal gestisce i dati nel Cloud Storage. Più in basso un estratto di codice.
Il diagramma SD della parte server si è quindi arricchito del nuovo DAL:
Il nuovo componente DalCloud si preoccupa di lavorare con le entità Speaker e Session memorizzate nel Cloud Storage. Il nuovo progetto (DevCon2009_WebRole) rappresenta l'applicazione da portare su Windows Azure ed è stato creato tramite il template Web Role di Visual Studio.
Visto che il componente pluggabile Dal viene scelto in base al file di configurazione la nostra solution è adesso in grado di:
1) Essere ospitata in the cloud e usare il vecchio DalInMemory
2) Essere ospitata in the cloud e usare il Cloud Storage tramite DalCloud
3) Essere ospitata on-premise sul sito DevCon ufficiale e usare il vecchio DalInMemory
4) Essere ospitata on-premise sul sito DevCon ufficiale e usare però il DalCloud: visto che l'accesso al Cloud Storage viene effettuato via REST (o Data Service) è possibile accedere ai dati nel cloud da una soluzione locale.
La riprova di quello che diciamo da sempre: le cose cambiano, le tecnologie vanno avanti e l'unico segreto è progettare bene le applicazioni potendo intervenire solo nei punti necessari; in questo caso abbiamo rivisto solo il Dal per lavorare con il Cloud Storage e non abbiamo dovuto toccare nient'altro. Se, presi dalla fretta di uscire con il sito di DevCon a ottobre, avessimo fatto le cose al volo con Drag&Drop o strumenti automatizzati, non sarebbero bastate le 2 ore che ho impiegato stanotte per eseguire il porting in the cloud. Un domani che decideremo di creare anche un database SQL Server locale oppure decideremo di appoggiarsi a SQL Services in the cloud dovremmo ancora una volta creare solo un nuovo strato di accesso ai dati e cambiare una riga nel config.
La nostra solution è diventata quindi questa:
Per l'accesso ai dati ho usato le classi helper per adesso fornite insieme ai sample dell'SDK di Windows Azure (progetto StorageClient caricato direttamente dalla directory dell'SDK), in modo da non dover comporre a mano interrogazioni REST verso i servizi. Avendo però una architettura così flessibile sarebbe semplice fornire un Dal che accede ai dati via Rest, così come modificare il ServiceAgent lato client Silverlight per eseguire chiamate REST (o via ADO.NET Data Service) direttamente sul Cloud Storage (che appunto è esposto in entrambe le modalità.
Ecco il codice che lavora con il Cloud Storage:
In questo esempio ho usato un ciclo foreach per mappare le entità memorizzate nelle table del Cloud Storage rispetto alle entità applicative. Si può usare tranquillamente una query LINQ visto che dal contesto ho restituito un IQueryable<SpeakerStorageEntity> tramite la proprietà context.Speakers. Ho lasciato questo codice per una facile comprensione anche a chi non usa LINQ.
Una delle cose più interessanti dello sviluppo su Windows Azure è la possibile di eseguire il publish della soluzione sull'ambiente di staging, verificarne le funzionalità e poi portarlo in produzione. Ecco l'immagine del "manage" delle applicazioni su Windows Azure per spiegare meglio il concetto:
Come si nota la prima versione dell'applicazione (quella indicata all'inizio che usava il vecchio DalInMemory) è stata pubblicata sul server di Staging che viene esposto tramite guid.cloudapp.net; dopo averne verificato il funzionamento tramite l'icona di swap è possibile portare l'applicazione in produzione. Al momento un cui ho sviluppato il nuovo DalCloud, dopo averlo testato in locale sul Development Fabric e Development Storage, ho eseguito nuovamente il Deploy sul server di staging; verificate le funzionalità in the cloud sul server di staging, basta premere l'icona di swap per portare la versione stating in production e riportare la versione presente in production sul server di staging: questa funzionalità è molto comoda in quanto se qualcosa non va nell'applicazione in produzione è possibile tornare alla versione funzionante riswappando (si dice in italiano ?) i due ambienti. Nell'immagine si nota come la Iteration 2 del progetto sia adesso in produzione, mente la vecchia versione sia sull'ambiente di staging.
Per chi è interessato allo sviluppo in the cloud, proponiamo il corso Developing in the Cloud Preview che in giorno consente di apprendere le modalità di sviluppo, gli strumenti necessari/utili, il Cloud Storage, servizi .NET Services (Workflow, Service Bus, Access Control) esposti dalla piattaforma e Sql Services.
Affrontiamo questi temi anche alla DevCon 2009 (il cui sito è in the cloud, ma le sessioni verranno tenuto nella realtà :-)) durante una sessione plenaria che ha l'obiettivo di partire da zero e arrivare alla comprensione dell'applicazione che appunto potete già vedere in the cloud.
Abbiamo pubblicato la scheda del nostro nuovo corso sullo sviluppo su Windows Azure e Azure Services. Il corso si basa ad oggi sulle CTP attuali e verrà aggiornato man mano che escono nuovi SDK o versioni CTP/Beta.
La scheda del corso è visibile a questo url: http://www.devleap.com/document.aspx?id=3878
A DevCon 2009 abbiamo una sessione introduttiva sull'argomento come Bonus Session.
Dopo non essere riuscito, per ragioni di tempo, ad installare la versione PDC, sull'HP TouchSmart IQ810IT (che, sigh, avevo preso subito dopo il rientro dalla conferenza per provare il touch e multi-touch), finalmente stasera sono riuscito a fare una installazione funzionante.
Il problema sul tempo di cui sopra deriva dal fatto che il TouchSmart ordinato in Italia ha Windows Vista in italiano, mentre le versioni di Windows 7 (PDC e l'attuale Beta) sono disponibili solo in inglese: da quì l'impossibilità di fare un upgrade in place che avrebbe salvato i driver e le applicazioni esistenti.
I passi che ho seguito sono i seguenti (spero utili per chi deve fare la stessa operazione):
Creare una partizione apposita per la nuova installazione
Scaricamente dei Driver
Installazione dei driver
-
Sempre dalla partizione Vista occorre scompattare tutti i driver prima di installare Windows 7 sulla nuova partizione
-
IMPORTANTE: Scompattare tutti i driver in directory diverse (ovviamente). L'installazione diretta da setup non funziona per tutti i driver in quanto il setup verifica la versione di Windows
Installazione di Windows 7
-
Usando Daemon Tools (o quello che volete) ho montato l'immagine ISO di Windows 7
-
Lanciare il Setup
-
Eseguire una nuova installazione
-
Scegliere la partizione creata di cui sopra
-
Il sistema si riavvia varie volte e parte senza alcuni driver
Installazione dei Driver su Windows 7
-
Per prima cosa disabilitare UAC
-
Poi eseguire come Administrator i due seguenti comandi dal command prompt
-
bcdedit /set nointegritychecks ON
-
bcdedit /set testsigning ON
-
Da Windows 7 andare su Control Panel -> System
-
Per tutti i driver non trovati da Windows 7 richiedere l'update e selezionare la root della directory creata dove sono stati scompattati i driver
-
N.B. Il driver della rete wireless non era presente sul sito HP, ma se usate HP Update lo trovate sotto c:\hp\drivers, quindi durante l'upgrade del driver scegliere questa directory al posto di quella creata manualmente
-
Al termine date un occhio ai file .exe dei driver e tramite il "title" di ognuno verificate se è stato installato: per quelli non installati procedere con il programma di setup tradizionale:
-
Audio
-
Intel Chipse update
Multi-Touch
Stiamo finendo le valutazioni sull'agenda di DevCon 2009: se ci sarà spazio portiamo il TouchSmart con una applicazione WPF 4.0 Multi-touch enabled.
More Posts
Next page »