Radical
Anno nuovo buone nuove :-) Grazie al preziosissimo aiuto di Michael (https://github.com/micdenny) ed Enos (https://github.com/enosrecanati) stiamo dando linfa a Radical A new home Siamo sempre su GitHub, niente paura, ma abbiamo anche deciso di sfruttare la GitHub Pages per avere un bel front-end: http://radical.topics.it Universal Apps Cominciato dall’instancabile Enos e portato a termine in queste vacanze natalizie oziose possiamo finalmente annunciare che abbiamo il supporto per Universal Apps, la nuova versione è in un repository separato per agevolare il versioning che non ha senso che vada di pari passo con quello della versione desktop. ...
Abbiamo già parlato del lavoro legato alla performance di Radical, i punti toccati non sono stati poi molti, il voro nocciolo della questione giro intorno ad un signore che si chiama “Ensure” e che vi permette di scrivere qualcosa del tipo: class MyClass
{
public void Foo( String arg )
{
Ensure.That( arg ).Named( () => arg ).IsNotNullNorEmpty();
}
}
A runtime quello che succede è che se “arg” è null o empty vi beccate una simpatica eccezione con tutti i dettagli del caso, compreso:
...
Aurelio è uno dei tanti fruitori di Radical (che vi ricordo ha cambiato casa) e mi ha segnalato un fastidioso problema di performance nel momento in cui viene messa in binding una list di entità, basate sulla classe base “AbstractViewModel” di Radical, la cui numerosità sia corposa: Nell’esempio, che Aurelio ha prodotto per riprodurre il problema, a sinistra vengono create 2.000 istanze di un banalissimo ViewModel che implementa direttamente INotifyPropertyChanged, mentre a destra viene fatta la stessa cosa con un ViewModel che eredita da “AbstractViewModel”. Come si nota i tempi sono abissalmente superiori e anche inaccettabili...
Grandi novità per Radical che grazie al preziosissimo supporto di Micheal ha cambiato casa spostandosi da CodePlex a GitHub: https://github.com/RadicalFx/radical/ Il motivo è complessivamente semplice, è molto più facile gestire la collaborazione, abbiamo migrato i sorgenti, la documentazione esistente e tutti gli issue presenti (aperti). Ne abbiamo approfittato anche per creare un gruppo su Google che può essere un ottimo modo per continuare il corposo lavoro che abbiamo iniziato con gli web cast: https://groups.google.com/forum/#!forum/radical-mvvm-framework/ .m
Con grande rammarico causa pressanti e impellenti impegni lavorativi devo purtroppo annullare l’appuntamento di stasera. Avevo previsto di preparare il materiale nel weekend, ma ho lavorato tutto il weekend. Mi scuso con tutti gli iscritti per il disguido e vi aggiorno a breve su quali potrebbero essere le nuove date. Scusate ancora. .m
Come precedentemente annunciato è adesso possibile localizzare il “display name” di una proprietà del ViewModel, per ora solo per la gestione degli errori, per ora… :-) [Display( ResourceType = typeof( Properties.Resources ), Name = "MyProperty" )]
public String FirstName
{
get { return this.GetPropertyValue( () => this.FirstName ); }
set { this.SetPropertyValue( () => this.FirstName, value ); }
}
Utilizzando l’attributo Display, delle DataAnnotations, al posto dell’attributo DisplayName, è possibile localizzare il valore. Attenzione che per come funzionano le DataAnnotations le risorse devono essere pubbliche, cosa che purtroppo non è il comportamento...
Nonostante il disastro totale che è la mia agenda in questo periodo ce la possiamo fare :-) La data in cui riesco a pianificare e rendere sostenibile la preparazione del quarto appuntamento con Radical è Lunedì 25/11 alle 21.30 (magari anche un po’ prima, ma quello lo decidiamo insieme). L’agenda, o meglio una possibile idea di agenda, è: Introduzione del polimorfismo nel modello dati al fine di capire come gestire visualizzazioni condivise e editing diverso; Approfondimento dei concetti di “UI Composition” per capire come strutturare un’applicazione a moduli/plugin; ...
A seguito di una richiesta da parte di un utente ho aggiunto una piccola ma a lungo parcheggiata funzionalità nella gestione degli errori offerta da Radical. è finalmente possibile specificare un DisplayName per le proprietà che vengono validate, come si vede dall’esempio la proprietà validata si chiama Text, o Sample, ma viene visualizzato, nel riepilogo degli errori, un nome diverso. La cosa è apparentemente semplice, ma volendo supportare la localizzazione (feature che arriverà a breve) non è proprio così immediata. Per tagliare corto quello che potete fare adesso è usare la validazione come avete sempre fatto,...
L’ultima volta ci siamo lasciati con l’impegno di affrontare i seguenti argomenti: Introduzione del polimorfismo nel modello dati al fine di capire come gestire visualizzazioni condivise e editing diverso; Approfondimento dei concetti di “UI Composition” per capire come strutturare un’applicazione a moduli/plugin; Adesso vediamo di definire come e quando riprendere i nostri incontri: http://doodle.com/4etu7et382shtcen Inoltre se avete richieste particolari e/o argomenti che vorrete veder trattati come al solito approfittate dei commenti o dei contatti che avete (come la mail nelle slide dei precedenti eventi). .m
Anche il materiale del terzo incontro è disponibile per il download, lo trovate su SkyDrive: http://sdrv.ms/17OBNzo. Se qualcuno si fosse perso le puntate precedenti sono disponibili registrazioni, esempi e slide: http://sdrv.ms/12y2IO9 http://sdrv.ms/13DJLtT Il prossimo appuntamento sarà presumibilmente dopo la metà di settembre, more to come, è gli argomenti “vorrebbero” essere i seguenti: Introduzione del polimorfismo nel modello dati al fine di capire come gestire visualizzazioni condivise e editing diverso; Approfondimento dei concetti di “UI Composition” per capire come strutturare un’applicazione...
Full Radical Archive