lunedì 17 dicembre 2012 #

WinRT: SemanticZoom.ZoomedOutView & DataBinding

WinRT ci mette a disposizione un nuovo controllo SemanticZoom che permette allo sviluppatore di definire due viste della stessa collection utile per facilitare l'utente nella ricerca di elementi "raggruppati"; il tutto è illustrato chiaramente in un esempio nell'SDK.

Nell'esempio dell'SDK, il controllo (nel caso specifico una GridView) che ospiterà la vista ZoomedInView che rappresente la visualizzazione "standard" del controllo è correttamente settata nello XAML sfruttando il DataBinding; invece la CollectionViewSource della vista ZoomedOutView ovvero la vista pensata proprio per facilitare l'utente nella sua ricerca; viene inizializzata nel CodeBehind della pagina nel costruttore, e cercando in rete si trovano praticamente solo esempi identici a quello dell'SDK; al limite l'inizializzazione dello ZoomedOutView è fatta nel metodo OnNavigatedTo sempre della View.

Questo approccio funziona senza problemi se i nostri dati (ed i relativi gruppi) sono conosciuti a priori; ma mostra tutti i suoi limiti nel caso sia necessario che i dati e relativo raggruppamento avvengano in un servizio esterno. In questo caso, il controllo ZoomedOutView non mostra nulla in quanto nel costruttore della pagina la collection risulta ancora vuota (visto che le chiamate a servizi esterni devono essere asincrone) e quindi il controllo diventa completamente inutilizzabile per l'utente.

Cercando una soluzione intelligente al problema penso che la soluzione migliore sia utilizzare un semplice converter:

public class CollectionViewSourceToCollectionGroupsConverter : IValueConverter
{
	public object Convert(object value, Type targetType, object parameter, string language)
	{
		object result = null;
		
		try
		{
			var cvs = value as ICollectionView;
			
			if (cvs != null)
			{
				result = cvs.CollectionGroups;
			}
		}
		catch (Exception ex)
		{
			result = null;
		}
		
		return result;
	}
	
	public object ConvertBack(object value, Type targetType, object parameter, string language)
	{
		throw new NotImplementedException();
	}
}

Così possiamo semplicemente specificare lo stesso CollectionViewSource per entrambe le viste (ZoomedInView e ZoomedOutView) e sfruttare appieno il motore di DataBinding.

posted @ lunedì 17 dicembre 2012 14.30 | Feedback (0)

martedì 4 ottobre 2011 #

WP7 Developer Tools & DevArt dotConnect for Oracle

Quando ancora i tools di WP7 erano in RC sono incappato in una situazione strana in Visual Studio dopo averli installati (cosa che invece non era successa con la beta2): potevo creare correttamente progetti WP7, ma all’interno di questi quando tentavo di aggiungere un nuovo elemento l’elenco dei templates disponibili era completamente vuoto ed il pulsante “Add” era disabilitato, anche scrivendo a mano il nome dell’oggetto che intendevo aggiungere (es. Myclass.cs oppure MyView.xaml). Dopo qualche ricerca ho trovato questo post e la situazione descritta era proprio la mia, macchina con installato DevArt dotConnect for Oracle; così ho provato a mettere in pratica il suggerimento ed in effetti tutto è tornato alla normalità (tra i commenti del post segnalato ce n’è uno del Team di DevArt in cui dicono che dalla verisone 6.10.111 di dotConnect for Oracle il problema è risolto).

Ora ho aggiornato i tools di WP7 in versione RTM, e mi aspettavo di non avere problemi, visto che il prodotto DevArt ora è stato installato come suggerito senza flaggare la voce “Install menu item and toolbox components into Visual Studio”; invece mi sbagliavo e l’aggiornamento dei tools di WP7 ha fatto si che il problema si ripresentasse tale e quale; ho quindi disinstallato i componenti di DevArt ma anche questo non ha ripristinato i templates (nemmeno lanciando devenv.exe con le opzioni /installvstemplates e /resetsettings).

 

Alla fine sono riuscito a trovare la soluzione funzionante, è fondamentale l’ordine in cui vengono installati i vari componenti:

  • Se sulla macchina è già installato dotConnect for Oracle, disinstallarlo prima di aggiornare/installare i tools di WP7 altrimenti bisognerà ricominciare le installazioni da capo
  • Installare i tools di WP7
  • Solo successivamente reinstallare dotConnect for Oracle togliendo la spunta dalla voce “Install menu item and toolbox components into Visual Studio”

 

Questo è stato l’unico modo per avere entrambi funzionanti; ci sono volute diverse installazioni e reinstallazioni di entrambi prima di trovare l’ordine corretto; per fortuna che dei tools di WP7 è possibile scaricare la ISO e che l’SSD mi ha dato una grossa mano nell’accorciare i tempi di installazione.

posted @ martedì 4 ottobre 2011 20.38 | Feedback (0)

martedì 15 marzo 2011 #

TeraCopy

Durante il weekend scorso ho dovuto migrare una grossa quantità di dati (qualcosina in più di 800 GB) tra due dischi USB, e la clonazione del disco non era un’opzione praticabile. Come primo tentativo ho provato a lanciare la copia da Windows; risultato tempo stimato circa 36 ore, decisamente troppo. Mi sono quindi spostato su Ubuntu, ma anche qui la stima era di circa 36 ore.

Dopo qualche ricerca in rete ho un valido alleato in TeraCopy, applicativo per Windows gratuito per uso personale (disponibile anche in versione portable); la versione pro utilizzabile anche in ambito lavorativo costa 14,95 €.

Considerando che i dati erano misti (a partire da piccoli documenti office fino ad arrivare a film in HD) la copia è stata ultimata, con l’opzione verifica dei dati copiati attiva, in poco meno di 11 ore; decisamente un bel risparmio di tempo rispetto ai tools offerti nativamente sia da Windows che da Linux. Un’altro aspetto interessante è TeraCopy offre anche la possibilità di mettere in pausa e riprendere successivamente il processo di copia.

Il programma può essere configurato per sostituire in tutto e per tutto la funzione di copia di Windows; anche se siceramente su pochi MB risulta più lento dei tools offerti dal Sistema Operativo stesso.

posted @ martedì 15 marzo 2011 20.58 | Feedback (0)

lunedì 21 febbraio 2011 #

MONO: installazione & prime impressioni…

Ho da poco iniziato un piccolo progetto web su Mono versione 2.6.7, avendo come target la realizzazione di un’applicazione ASP.NET MVC 2.0, utilizzando come ambiente di sviluppo MonoDevelop.

La macchina sulla quale ho configurato il tutto è un vecchio PowerPC G4 con Leopard;  l’installazione sia di Mono che MonoDevelop sono state portate a termine senza problemi perché vengono rilasciati di entrambi i pacchetti precompilati anche per PowerPC; e non solo di Mono 2.6.7 ma anche della recentissima  versione 2.10 che è stata rilasciata da pochissimo e contiene succose novità.

In questi giorni è nata la necessità di avere anche un ambiente di sviluppo più mobile (a dire la verità semplicemente perché il progetto lo porto avanti prevalentemente la sera, che spesso passo nella sala prove di 3 baldi giovani Smile), quindi ho riesumato il mio vecchio VAIO e installato Ubuntu 10.10 per ricreare l’abiente che ho su OSX. Ho cercato in rete alcuni tutorials sull’argomento e, come al solito, tutti prendevano in considerazione solo l’installazione via terminale lanciando una serie di comandi “apt-get” specificando un elenco di pacchetti più o meno criptico; quindi ne ho seguito uno che però non mi ha portato a quello che volevo (l’ambiente sembrava funzionare, ma tutte le volte che andavo in debug veniva caricata sempre e comunque la versione corrispondente alla prima compilazione). Ho quindi disinstallato il tutto e deciso di fare di testa mia; ho lanciato l’utilissimo Ubuntu Software Center e senza neanche dover passare dalla funzionalità di ricerca basta andare nella categoria “Developer Tools –> IDEs” e scorrere la lista fino alla voce “monodevelop” e lanciare l’installazione, volendo si può anche visualizzare la schermata di dettaglio prima di lanciare lo scaricamento e l’installazione dove è possibile personalizzare il pacchetto che si andrà ad installare aggiungendo plugins come XSP2 (il web server di default in mono), selezionare il debugger da configurare in monodevelop, aggiungere il supporto ai database, al testing tramite NUnit, la documentazione e molto altro; una volta scelto cosa installare basta attendere il download e l’installazione per avere un ambiente completamente funzionante.

Sulle due macchine, ovviamente, è installato anche l’ormai immancabile DropBox in modo così posso lavorare indifferentemente su uno o l’altro PC.

Dopo qualche giorno di sviluppo devo dire che sono pienamente soddisfatto sia della facilità di installazione e configurazione dell’ambiente (tralasciando i tutorial su linux, ma questo è valido per il mondo linux in generale e non solo per mono), sia di MonoDevelop che è un ambiente molto simile a Visual Studio (ce ne si rende conto già alla prima apertura) anche se migliorabile sotto diversi aspetti: uno su tutti l’intellisense che non sempre è all’altezza (anche se questo fondamentalmente si traduce in pratica nel dover prestare più attenzione a quello che si sta scrivendo che non è sempre un male Smile with tongue out).

Adesso si comincia a fare sul serio sfruttando linq2sql per interrogare un database PostgreSQL. A proposito lo sapevate che nativamente Mono offre provider linq2sql per Firebird, Ingres, SQL Server, MySQL, Oracle, PostgreSQL, SQLite?

posted @ lunedì 21 febbraio 2011 20.19 | Feedback (1)

giovedì 21 ottobre 2010 #

Hello World!

Ciao a tutti,

dopo un pò di titubanza ho finalmente deciso di unirmi a voi sperando di poter ricambiare per quello che ho imparato in questi anni seguendovi passivamente; ma come prima cosa cercherò di farmi conoscere un pò visto che pochi di voi (o meglio solo chi ha avuto modo di passare dalle parti di Managed Designs negli ultimi tempi) sapranno chi sono.

Qualcuno mi definisce un developer “ibrido” (e credo che la definizione calzi a pennello) perché oltre a dedicarmi alla programmazione C#,in particolare su progetti web (…e da qualche tempo sto anche “giocherellando” con WP7), mi piace affrontare  sfide anche di natura sistemistica…e qualche volta riesco pure nei miei intenti .

Aspettatevi quindi di trovare su questo spazio anche post riguardanti il mondo IT più in generale e non solo legati al mondo della programmazione.

A presto.

Enos

posted @ giovedì 21 ottobre 2010 21.11 | Feedback (7)