Blog Stats

  • Blogs - 41
  • Posts - 4184
  • Articles - 185
  • Comments - 23646
  • Trackbacks - 950

Bloggers (posts, last update)

Powered By:
Powered by Subtext

Latest Posts

Xamarin Forms, MVVM e il refresh dei command

Per questo post prendo spunto da una domanda ricevuta durante un corso che ho appena tenuto su Xamarin Forms, fornendo una soluzione che abbiamo recuperato tramite Internet ma che merita qualche approfondimento.

Se anche voi provenite da WPF e siete abituati ad utilizzare il pattern Model-View-ViewModel, sapete che la classe RelayCommand implementa l'interfaccia ICommand, che obbliga la classe ad avere, tra gli altri, un metodo CanExecute. Questo serve a dire agli oggetti in binding se un comando può essere eseguito oppure no.

Se ad esempio un pulsante è in binding con un comando e CanExecute è False, il pulsante risulta disabilitato. In WPF esiste la classe CommandManager e il suo metodo RequerySuggested, che consentono a RelayCommand di aggiornare manualmente lo stato di CanExecute. Essi però fanno parte dell'assembly PresentationCore che, ovviamente, in Xamarin non è disponibile.

In Xamarin Forms, però, esiste una classe Command che, oltre ad implementare ICommand, ha una struttura leggermente diversa e che può fare al caso. Per ottenere il risultato, in buona sostanza, si può riscrivere RelayCommand ereditando da Command invece che implementare ICommand e mettersi in ascolto di eventi PropertyChanged, al verificarsi dei quali verrà chiamato manualmente un delegate che si chiama ChangeCanExecute e che si occuperà di aggiornare, per l'appunto, lo stato di CanExecute.

Tradotto in codice:

    public class RelayCommand : Command
    {
        
public RelayCommand(Action<object> execute)
            : 
base(execute)
        {
        }

        
public RelayCommand(Action execute)
            : 
this(o => execute())
        {
        }

        
public RelayCommand(Action<object> execute, Func<objectbool> canExecute, INotifyPropertyChanged npc = null)
            : 
base(execute, canExecute)
        {
            
if (npc != null)
                npc.PropertyChanged += 
delegate { ChangeCanExecute(); };
        }

        
public RelayCommand(Action execute, Func<bool> canExecute, INotifyPropertyChanged npc = null)
            : 
this(o => execute(), o => canExecute(), npc)
        {
        }
    }

Fonte qui.

Alessandro

posted @ 30/06/2016 21:29 by Alessandro Del Sole

Microsoft rilascia .NET Core 1.0 e Visual Studio 2015 Update 3

Oggi è un giorno epocale, esattamente come lo fu quello in cui venne rilasciato .NET Framework 1.0 per la prima volta tanti anni or sono.

Microsoft ha infatti rilasciato .NET Core 1.0, la RTM del runtime open source, modulare e cross-platform che consente di sviluppare applicazioni per Windows, Mac e Linux.

Unitamente a questo, è stato anche rilasciato Visual Studio 2015 Update 3 che contiene una nutrita serie di bug fix e di miglioramenti alle performance.

Per quanto riguarda .NET Core, segnalo un interessantissimo articolo in italiano di Cristian Civera, che con la sua consueta chiarezza vi spiega meglio di che si tratta.

Per quanto riguarda Visual Studio 2015 Update 3, qui ci sono tutti i dettagli.

Ci vorrà probabilmente un po' di tempo, ma da oggi il mondo dello sviluppo comincerà ad essere diverso.

Alessandro

posted @ 27/06/2016 23:18 by Alessandro Del Sole

Xamarin: risolvere l'errore "Build action EmbeddedResource is not supported"

Un altro problema piuttosto fastidioso che può capitarvi con Xamarin è legato soprattutto a parecchi esempi di codice che potete scaricare dal Web, inclusi (anzi, per primi) quelli nel repo ufficiale su GitHub.

In buona sostanza succede questo: aprite la solution, la compilate ma la build fallisce col seguente errore "Build action 'EmbeddedResource' is not supported by one ore more of the project's target", che tipicamente si verifica nel progetto Android.

Per risolverlo, innanzitutto non ignoriamo gli warning nella Error List Se troviamo un messaggio con codice IDE0006, espandiamolo: ci verrà praticamente detto cosa fare.

In sintesi:

  1. Per tutti i progetti nella solution, espandiamo il nodo References e verifichiamo che non ci siano problemi su qualche riferimento. Nel caso ci siano, semplicemente clicchiamo l'elemento. Questo, per qualche ragione, farà si che i riferimenti si aggiornino.
  2. Chiudiamo Visual Studio e apriamo un prompt dei comandi.
  3. Digitiamo la seguente riga: SET TRACEDESIGNTIME=TRUE per impostare questa variabile d'ambiente che serve ad avere un log di eventuali problemi
  4. Nella cartella della solution, eliminiamo la sottocartella chiamata .vs ed eventualmente il file .suo
  5. Riavviamo Visual Studio, riapriamo la solution e riproviamo a compilare.

Se ancora non dovesse andare a buon fine, nella cartella C:\Users\NomeUtente\AppData\Local\Temp cerchiamo una sottocartella che riporta il nome del progetto Android (quindi .Droid) e verifichiamo eventuali log che ci daranno le informazioni sul reale problema verificatosi.

Alessandro

posted @ 26/06/2016 21:01 by Alessandro Del Sole

Xamarin Forms e l'emulatore Android che non va

Se vi state cimentando con lo sviluppo cross-platform di app per dispositivi mobili usando Xamarin Forms, potreste incontrare un problema con l'emulatore Android di Visual Studio.

In sostanza succede che premete F5 per avviare il debug sul citato emulatore, ma non appena l'applicazione parte viene immediatamente interrotta, il controllo torna a Visual Studio 2015 e l'emulatore.. non fa nulla

Se doveste incappare in questo problema:

  1. Aprite Hyper-V Manager
  2. Tasto destro sull'emulatore Android, quindi Settings
  3. Espandete Processor e selezionate Compatibility
  4. Selezionate il flag Migrate to a physical computer with a different processor version


Se invece il problema che riscontrate è che il debugger non riesce a connettersi all'emulatore, cosa della quale Visual Studio vi avviserà con un noioso messaggio di errore, nelle proprietà del progetto Android andate in Android Options e togliete il flag da Use Fast Deployment:



Questo consentirà di ripubblicare l'app sull'emulatore e di includere tutte le librerie sicuramente necessarie.

Preciso che non è una mia scoperta, ma una soluzione che ho trovato in giro su Internet e che a me ha risolto il problema, per cui ho pensato di condividerla.

Alessandro

posted @ 26/06/2016 15:56 by Alessandro Del Sole

Tornano i Community Days!

Stanno per tornare i Community Days, il più famoso ed importante evento community italiano che si terrà nei giorni 21 e 22 settembre a Milano.

L'agenda è parzialmente online e, intanto che viene definita, voi potete cominciare ad iscrivervi gratuitamente

Come di consueto ci saranno molte sessioni interessanti. E siccome è un evento community, con la consueta atmosfera del ritrovarsi tra amici, non potete certamente mancare!

Se poi foste interessati anche a Visual Studio Code e all'insegnamento dello sviluppo per i più piccoli, sul palco troverete anche me e Renato Marzaro a rappresentare Visual Basic Tips & Tricks

Agenda e iscrizioni qui: http://www.communitydays.it/

Alessandro

posted @ 24/06/2016 17:32 by Alessandro Del Sole

Un mio nuovo articolo su MSDN Magazine: Language-Agnostic Code Generation with Roslyn

Prima o poi troveremo il tempo di fare una serie introduttiva anche su VB T&T in italiano , nel frattempo vi segnalo l'uscita di un mio nuovo articolo dedicato a Roslyn e pubblicato su MSDN Magazine del mese di giugno 2016. L'articolo si chiama .NET Compiler Platform: Language-agnostic Code Generation with Roslyn e vi parla di come utilizzare l'API SyntaxGenerator per generare codice che abbia come destinazione sia Visual Basic che C#, scrivendo la vostra logica una sola volta, invece di utilizzare le API di SyntaxFactory che hanno, al contrario, un'implementazione specifica per linguaggio.

Se create applicazioni che in qualche modo devono generare (e compilare) codice sorgente, credo meriti un'occhiata.

Non temete, gli esempi a corredo sono anche in VB e non solo in C#

Alessandro

posted @ 22/06/2016 22:21 by Alessandro Del Sole

SQL Server 2016 è disponibile per tutti

1 giugno di rilasci importanti per Microsoft, che ha appena annunciato la GA (general availability) di SQL Server 2016, il potente e popolarissimo motore di database.

Il supporto per Hadoop, JSON e Power BI sono solo alcune delle novità introdotte con la versione 2016. Potete leggere i dettagli nel post di annuncio e vedere il confronto con le precedenti edizioni a questo indirizzo.

Se siete abbonati MSDN, il download è già disponibile. Tra l'altro, da quel che ho visto, credo siano sparite le edizioni a 32 bit.

Alessandro

posted @ 01/06/2016 23:42 by Alessandro Del Sole

Tips & Tricks per la scrittura di contenuti tecnici

Ognuno di noi, soprattutto in ambito tecnico, impara dagli altri. Per aggiornarci, informarci, ma anche risolvere problemi tecnici, leggiamo articoli, libri, contenuti vari. Personalmente scrivo da parecchi anni. Mi è sempre piaciuto poter dare il mio contributo alla comunità di sviluppatori.

Ho cominciato a scrivere articoli per Visual Basic Tips & Tricks nel 2000, ho avuto il privilegio, la fortuna, la fatica anche di scrivere parecchi libri e articoli in inglese, in molti casi anche per editori prestigiosi come MSDN Magazine.
Ovviamente gli anni portano esperienza e sicuramente questa, oggi, mi agevola molto soprattutto con l’editoria americana, piuttosto diversa dalla nostra. E così, poiché io stesso come te mi documento e mi aggiorno da contenuti tecnici, ho pensato di raccogliere in questo post alcune lezioni che ho imparato in questa attività e che spero possano essere utili soprattutto a chi scrive con meno frequenza e ha meno esperienza.

Perchè voglio scrivere?
Sembra una domanda banale ma è alla base dell’attività ed è strettamente correlata al paragrafo successivo. Ci sono essenzialmente quattro motivi che ci portano a scrivere contenuti tecnici, che spesso si intersecano e uniscono tra loro: passione per la condivisione della conoscenza, rafforzare la propria reputazione, per questioni economiche o perché ci viene chiesto da terzi, come un editore. Sono tutte giuste e lecite, non sto qui a discuterle. L’ultima ti risolve (quasi sempre) il problema della scelta  dell’argomento di cui parlare, che si tratti di un articolo o di un libro. Pensa dentro di te cosa ti spinge a farlo. Il motivo lo scoprirai tra breve.

Scelta degli argomenti da trattare
Questo è un punto cruciale. Da qui dipende prevalentemente l’impegno che ti richiederà scrivere e buona parte dell’interesse che la tua produzione riscuoterà. Se lo fai perché ti viene chiesto da un editore o  comunque da terzi, parte del problema è risolto nel senso che ti verrà quasi sicuramente proposto anche  l’argomento su cui, magari, sei già preparato. Se scrivi prevalentemente perché ti piace o perché hai  passione per la condivisione di ciò che sai o di ciò che hai sperimentato, provato, risolto, sei  completamente libero di scegliere il tuo argomento, indipendentemente dall’audience che ti aspetti (ma  non trascurare comunque il paragrafo successivo). Se lo fai per gli altri motivi, la scelta diventa un po’ più complicata e va fatta con criterio. Può essere una buona idea quella di discutere qualcosa in voga in un  certo periodo, un c.d. trending topic. Oppure puoi prendere spunto da discussioni nei forum tecnici, che  sono spesso una grande fonte di problemi reali che puoi descrivere come risolvere con un buon articolo.  Se i motivi che ti inducono a scrivere sono molteplici e si incrociano tra loro, una buona idea è discutere un problema che può verificarsi in un trending topic e come risolverlo, oppure descrivere specifiche funzionalità. Non ti consiglio di parlare di cose troppo in anteprima o che, comunque, non è ancora  possibile provare. A noi tecnici piace giocare, sperimentare in pratica, il futuro dev’essere anche  “toccabile” e, qui, non siamo negli USA.

Ciò che scrivi è di tutti
Un grosso, grosso errore è quello di pensare che la tua audience possa essere ristretta, soprattutto se  non scrivi con una certa frequenza e soprattutto se non hai mai scritto per editori di un certo livello, con  un certo blasone e con una certa visibilità. Quando scrivi un articolo che viene pubblicato su Internet o un  libro venduto nelle librerie fisiche o online, dalla sua pubblicazione non hai più alcun controllo su chi e quanti  potranno leggerlo. Questa parentesi è importante: quando scrivi, pensa sempre che ci sarà qualcuno che leggerà ciò che hai prodotto. Non pensare mai che lo possano leggere in pochi o che lo  leggeranno solo quelli che non sono già esperti di un certo argomento. Tutti, anche gli esperti, hanno da  imparare da ogni buon contenuto. Perciò, anche se lo fai solo per hobby o per passione, scrivi in modo  che gli altri possano capire e imparare. Scrivi pensando a come tu vorresti capire le cose che scrivono o  descrivono gli altri. Meglio essere semplici, comprensibili e tecnicamente accurati piuttosto che altisonanti ma con poca sostanza.

Fidati di te stesso, ma non troppo
Se lavori su un articolo o su un libro che riguarda un certo argomento, è evidente che tu ti senta  preparato per discuterlo. Purtroppo, però, nessuno di noi è infallibile. Il rischio di scrivere cose inesatte è  sempre dietro l’angolo e da questo può dipendere la tua reputazione di “scrittore”. Quando scrivi, perciò,  affidati a uno o più revisori tecnici preparati sugli argomenti che tratti. Chiaro che questo non può avvenire su un blog personale del quale, in quanto tale, ne sei responsabile in prima persona. Nel caso tu scriva per degli editori,  la revisione tecnica è un passaggio imprescindibile della pipeline, quindi questo ti eviterà di preoccuparti  di cercare un revisore: ti verrà assegnato comunque. Se però scrivi per tuo conto o se scrivi per entità  (es. siti web) che non prevedono una revisione tecnica, non trascurarla e chiedi a qualcuno che conosci.  Considera pure che, in molti casi, l’argomento che tratti si intreccia con altri che conosci meno. Meglio  metterci qualche ora in più ma essere sicuri che i contenuti siano esatti. D’altronde, anche tu ti  aspetteresti che i contenuti che leggi siano tecnicamente accurati. Lo stesso faranno gli altri con te.

Le misure contano
Contenuti troppo brevi rischiano di essere incompleti e frettolosi, mentre troppo lunghi rischiano di essere dispersivi e noiosi. Solo l’esperienza di potrà aiutare a trovare il giusto equilibrio in ciò che scrivi, il consiglio che posso darti è questo: cerca di andare alla sostanza delle cose senza tanti fronzoli,  assicurandoti, però, di dare quel minimo di base necessaria per riuscire a capirla. Altrimenti, se devi scegliere, scegli di scrivere di più. Se vuoi parlare di Code First in Entity Framework, insomma, assicurati di descrivere almeno cosa sia quest’ultimo. Ma non è necessario descrivere tutti e 4 i template che la finestra New Entity Data Model ti mette a disposizione. Questo è il senso.

Scrivere bene ti conviene (semicit.)
Intendiamoci, non bisogna essere professori di lingua per scrivere contenuti tecnici. Ci mancherebbe altro. Ma non c’è dubbio che scrivere il più possibile correttamente nella lingua richiesta ha il suo peso per vari  motivi: come scrivi è visibile e già questo darà un’idea di te, soprattutto quando scrivi nella tua lingua madre; scrivere in modo lineare e corretto aiuta gli altri a capire meglio il tuo contenuto (pensa sempre a cosa tu ti aspetteresti). Infine, soprattutto se scrivi per un editore, aiuterai la figura del revisore linguistico a essere più veloce ed efficace, a dover fare meno correzioni e, conseguentemente, a rispettare il cosiddetto time-to-market. Un discorso a parte, sebbene collegato, è quello dello scrivere in un’altra lingua. Sicuramente l’editore estero ha una certa indulgenza, comprendendo che quella non è la tua lingua madre. Ma se ti renderai conto che ti si aprono delle opportunità e che la collaborazione va avanti, soprattutto se ti rendi conto che hai delle lacune  grammaticali e di vocaboli in quella lingua, non trascurare la possibilità di un corso. Questo ti renderà non solo più sicuro di te, ma porterà una migliore considerazione nei confronti tuoi e dei tuoi contenuti. Prova a pensare a un revisore tecnico o a un revisore linguistico che devono capire delle frasi scritte in modo approssimativo: a una soluzione ci si arriva sempre, ma richiede il triplo del tempo con inevitabili ripercussioni sul processo. E sulle tue opportunità future. Io scrivo moltissimo in inglese, ormai forse più che in italiano. La mia fortuna è stata quella di essermi appassionato all’inglese ai tempi delle scuole medie. Ovviamente, però, scrivere in inglese tecnico non è la stessa cosa. Oggi ho il piacere di ricevere tanti complimenti per il mio inglese dai più importanti editori con cui ho collaborato (SAMS, Syncfusion, MSDN Magazine) ma chiaramente c’è del lavoro dietro. L’esercizio è stato fondamentale, così come il leggere contenuti tecnici quasi esclusivamente in inglese. Facendo questo, negli anni passati ho imparato tantissimo su come scrivere in un buon inglese, tutte cose che oggi mi ritrovo e che mi permettono di essere più veloce. Inoltre, e qui torna l’importanza della figura dei revisori, ho sempre cercato di fare mie le espressioni utilizzate dal revisore tecnico o linguistico, sapendo che quello era il modo in cui in inglese si comunicano determinate cose. Scrivere in un buon inglese oggi per me è fondamentale, perché permette di essere più veloce a me sicuramente ma conseguentemente anche a chi pubblicherà i miei contenuti.
Ultima nota: se decidi di aprire un blog in inglese, assicurati di scrivere in un inglese mediamente corretto: l'audience, infatti, non sarà indulgente come un editore.

Conclusione: Impara dagli altri e fai tesoro dell’esperienza
Concludo qui e poi non vi annoio oltre. Leggi gli articoli di chi ha una reputazione tecnica stabile, impara a capire come vengono strutturati e descritti gli argomenti, poi lanciati e vedrai che, articolo dopo articolo, non solo migliorerai tu ma anche i tuoi contenuti. Di conseguenza, migliorerà la tua reputation con le conseguenze del caso.

Alessandro

posted @ 20/05/2016 12:41 by Alessandro Del Sole

Articolo "Maximize your MVVM experience with Roslyn" su MSDN Magazine

Non vi dico nulla di nuovo in merito al mio particolare interesse per Roslyn a.k.a. .NET Compiler Platform e alle API dei compilatori open source C# e VB.

Quindi non vi sorprenderà l'uscita, ma spero vi interessi l'argomento, di un nuovo articolo apparso su MSDN Magazine del mese di maggio 2016 dal titolo "Maximize your MVVM experience with Roslyn". In questo articolo ho voluto dare un punto di vista alternativo al pattern Model-View-ViewModel nelle applicazioni WPF e UWP, sfruttando proprio i compilatori per fare delle cose carine, come ad esempio generare dei ViewModel a partire dalle classi Model.

Lo trovate qui: https://msdn.microsoft.com/en-us/magazine/mt703435

Alessandro

posted @ 12/05/2016 22:54 by Alessandro Del Sole

Visual Studio Code Succinctly, il mio nuovo ebook

Forse avete sentito parlare di Visual Studio Code, strumento di sviluppo orientato alla scrittura di codice della famiglia Visual Studio, primo tool cross-platform che gira su Linux, Mac OSX e Windows. Il suo scopo primario è favorire la scrittura di applicazioni cross-platform per il Web e la Cloud, tendenzialmente utilizzando Node.js e ASP.NET Core.

Oltre a due articoli introduttivi che potete trovare nell'apposita area di Visual Basic Tips & Tricks, segnalo l'uscita del mio nuovo ebook, ovviamente gratuito, dal titolo Visual Studio Code Succinctly, edito e pubblicato da Syncfusion.

In 128 pagine imparerete ad usarlo, ad apprezzarlo e a sfruttarlo al suo massimo.



Alessandro

posted @ 12/05/2016 22:47 by Alessandro Del Sole