Il mio primo MVP Summit

Come tutte le cose, soprattutto quelle belle, finiscono subito e così domenica sono rientrato in italia dopo il mio primo MVP summit.

Devo dire che per essere la prima volta le mie aspettative erano molto alte e fortunatamente sono state soddisfatte ūüėÄ

E’ stata una settimana intensissima di sessioni, party, incontri, chiacchiere e risate che mi hanno fatto capire perch√® c’√® gente che da anni si reca a questo evento e come finisce non f√† altro che aspettare il seguente.

Oltre alle sessioni √® questo clima di vera community che si respira che ti permette di fare networking con persone che vengono dall’altra parte della terra ( anche se a dire il vero in questo caso eravamo noi italiani quelli ūüėõ ) e di incontrare e scambiare quattro chiacchiere con dipendenti microsoft che prima evevo¬†visto solo su video di Channel 9 o dei grandi eventi ufficiali.

Quello che mi ha stupito è stato proprio questo clima di informalità dove con un bicchiere di caffè in mano, una birra e magari in un pub o su un autobus potevi discutere con chiunque di qualunque livello e di qualsiasi nazionalità

Mentre i contenuti naturalmente sono sotto NDA, posso tranquillamente ringraziare tutte le persone che hanno trascorso con me questa fantastica avventura e che mi hanno fatto da guida essendo al mio primo Summit ed anche al mio primo viaggio oltre oceano.

Devo per√≤ ringraziare nel dettaglio la mia famiglia che ha sopportato la mia assenza ūüėÄ , Cristina che mi ha sopportato per tutti i problemi tecnici che ho avuto e che ha cercato di risolvere, Nicol√≤ che mi ha sopportato come compagno di stanza e soprattutto tutti i componenti di DotNetToscana che come al solito accolgono tutti sotto la loro ala protettiva e sono sempre prodighi di consigli e suggerimenti (anche culinari) e perch√® no anche a scarrozzare tutti in giro per Siattle con l’autista e cicerone d’eccezione Marco Dal Pino ūüėÄ

Naturalmente sono tornato con molti gadget che divider√≤ al prossimo evento community e visto che c’ero ne ho approfittato per spendere qualche soldino ed acquistare anche il Surface Dial che da noi √® introvabile e del quale a breve leggerete qualche post.

A questo punto non mi resta che fare altro che augurarvi buon coding come al solito ed io non posso far altro che sperare di essere rinnovato il prossimo anno e di poter andare di nuovo al Summit ūüėÄ

mvp_summit

Perchè community? (#TecHeroes loves #Gamedev Tour)

Poche settimane f√† insieme a Microsoft con DotNetAbruzzo abbiamo organizzato la tappa Aquilana del¬† #TecHeroes loves #Gamedev Tour, un’evento itinerante con varie tappe in giro per l’italia per far conoscere il mondo dello sviluppo di videogame.

Come √® consuetudine Microsoft in queste situazioni si appoggia alle community locali che conoscono bene il territorio per avere una mano nell’organizzazione e nel contempo d√† essa stessa una mano pubblicizzando l’evento e facendo quindi conoscere la community.

In questo caso come DotNetAbruzzo, di cui sono fondatore, siamo stati onorati della scelta, ancor di pi√Ļ per la giovinezza della nostra community che ha da poco superato il primo anno dalla fondazione.

L’evento √® stato un gran successo sia in partecipazione che in interesse, stupendo gli stessi speaker ( che diciamo non sono proprio neofiti e quindi ne hanno viste di platee ūüėÄ ) e ci ha ripagato come organizzatori e speaker di tutto quello che abbiamo fatto.

Questo √® un tipico esempio di quello che vorrei far capire alle persone che mi chiedono “perch√® utilizzi tempo ed energie per portare avanti la community?”

Dietro cose del genere c’√® molto lavoro di organizzazione, ricerca della location, pubblicit√†, preparazione delle sessioni ecc e se devo confessare a volte c’√® anche sconforto quando ti trovi davanti ostacoli futili ma poi ti rimbocchi le mani ed insieme agli altri membri cerchi di aggirare l’ostacolo (come non posso ringraziare Gino per la grande pazienza con me e lo sbattimento per la location ūüėÄ ).

Il tutto poi è fatto in modo gratuito, anzi spendendo anche dei soldi in viaggi, cene, alloggi che nessuno ti rimborsa. A questo punto la domanda torna, perchè?

Almeno nel mio caso √® la voglia di condividere e l’amore che ho per quello che faccio e che fortunatamente √® il mio lavoro. Vedere persone interessate, soprattutto ragazzi, che finito l’evento ti vengono a parlare, ti fanno domande e ti ringraziano personalmente non ha valore. C’√® poi la voglia di voler dare una mano alle nuove generazioni, quando ero io l√¨ al loro posto avrei voluto poter avere occasioni del genere ed avendo due figlie piccole vorrei che anche loro potessero avere occasioni del genere in futuro per poter sapere cosa li circonda e quale potrebbe essere il loro impegno futuro, soprattutto in un campo che √® quello della tecnologia che avanza ad una velocit√† impressionante ed in cui le universit√† fanno fatica a stare al passo.

Questa volta siamo stati fortunati e l’universit√† ha anche realizzato un video dell’evento quindi potete avere un’idea di quello che vi siete perso se non avete partecipato, e magari potr√† farvi venire voglia di andare ad un’altro evento. Quello che voglio consigliarvi √® di guardarvi intorno, di qualsiasi cosa siate appassionati cercate e sicuramente troverete una community in cui potrete partecipare per condividere le vostre passioni e magari se non c’√® fate come me √® fondatela ūüėÄ

Spero di non avervi annoiato con questo lungo post ma di aver invece stuzzicato la vostra voglia di conoscenza.

Di seguito trovate il video di cui vi parlavo.

Come sempre buon coding…….

Eliminare le lingue non inserite quando si invia un’app UWP allo store

Se state sviluppando un’app solo a livello nazione per cui non volete inserire la lingua inglese potreste ritrovarvi¬†la richiesta , anche se non avete inserito i relativi file, di compilare¬†i dati nello store anche¬†per questa lingua nel momento in cui la invierete.

Questo problema si presenta quando una libreria che stiamo utilizzando contiene già alcuni file localizzati, ad esempio per gestire i messaggi di errore (es. MVVM Light), in questo caso Visual Studio generà erroneamente anche il pacchetto per la lingua inglese.

Per risolvere il problema basterà aprire il file di progetto ed aggiungere la seguente riga
<SkipIntermediatePriGenerationForResourceFiles>false</SkipIntermediatePriGenerationForResourceFiles>

subito dopo l’apertura del primo tag¬†PropertyGroup che troverete in modo da avere una situazione del genere

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
 <PropertyGroup>
 <SkipIntermediatePriGenerationForResourceFiles>false</SkipIntermediatePriGenerationForResourceFiles>
 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

Se avete dei problemi a trovare il¬†file di progetto potete scaricare il progetto facendo tasto destro sull’elemento

unload_menu

e poi editarlo sempre utilizzando il tasto destro sul progetto scaricato

edit_project

una volta modificato il file, sempre con il tasto destro, sarà possibile ricaricarlo.

NB: Potreste ritrovarvi con un messaggio di errore simile a questo

err_1potete tranquillamente ignorarlo e caricare il vostro progetto.

Se adesso genererete il vostro pacchetto e lo invierete allo store vedrete che verranno richiesti i dettagli esclusivamente per le lingue effettivamente incluse nella vostra app

Grazie a Fela per il tip!!!

Buon coding!!

Slide Xamarin Forms

Ringrazio i cugini di DomusDotNet che mi hanno dato la possibilità di partecipare come speaker al loro evento su Xamarin.

E’ stata una giornata molto interessante in cui oltre a poter condividere ho anche potuto apprendere molte cose interessanti e naturalmente godere come sempre dell’ottimo clima community

Di seguito potete trovare le slide della mia sessione su Xamarin Forms, naturalmente potete contattarmi per qualsiasi dubbio

Buon coding!!!

Due utili estensioni per generare gli asset delle nostre UWP

A tutti sarà successo di dover creare i vari asset per le nostre app e di aver perso molto tempo con i vari photoshop  o simili per ridimensionare tutte le immagini nelle giuste dimensioni, voglio quindi segnalarvi due estensioni per Visual Studio che possono permetterci di risparmiare un pò di tempo facendo il lavoro per noi.

UWP Tile Generator

E’ l’estensione pi√Ļ semplice da usare. Permette partendo da un file immagine PNG o SVG di generare tutte le immagini di cui abbiamo bisogno.

Una volta installata facendo click con il tasto detro del mouse su un file compatibile avremo a disposizione due¬†nuove voci nel men√Ļ contestuale

uwp20context

che ci permetteranno di generare tutti i file per le nostre Tile oppure per lo splash screen.

I sorgenti del progetto sono anche disponibili su GitHub,¬†quindi se volete potete partecipare allo sviluppo potete farvi avanti ūüėÄ

UWP Visual Assets Generator

Ha sostanzialmente le stesse funzioni di UWP Tile Generator ma con molte pi√Ļ opzioni che permettono di selezionare quali file generare e che caratteristiche devono avere e come potete vedere nella schermata √® un p√≤ pi√Ļ complessa nell’utilizzo.

screenshot

Questa estensione oltre ai file SVG e PNG permette di aprire anche file JPG e GIF ma di contro non dispone della possibilit√† di essere lanciata con il tasto destro su un’ immagine ma dovremmo lanciare la relativa finestra da

View -> Other Windows -> UWP Visual Assets Generator

Quale utilizzare?

Come sempre non c’√® una scelta giusta ma occorre sempre decidere quale √®¬†pi√Ļ √® utile nel nostro caso.

Se non volete preoccuparvi dei dettagli ma solo avere le vostre icone generate in automatico UWP Tile Generator è forse la scelta migliore, se invece volete avere controllo su tutti i file generati UWP Visual Assets Generator farà al vostro caso.

Voi quale avete scelto? Ne conoscete altre? Fatemi sapere nei commenti

Buon coding!!

Windows 10 Anniversary Update è arrivato

Da pochissimi giorni √® disponibile l’aggiornamento di Windows 10 chiamato Anniversary Update sulle varie piattaforme (XBox, PC, Iot,Hololens) al momento manca all’appello solo la versione per mobile ma dovrebbe essere questione di pochissime settimane.

Questo aggiornamento introduce importanti novit√† sia per gli utenti (basta citare l’inserimento della Shell Bash ūüėÄ ) che¬†per gli sviluppatori come l’apertura dello store alle app convertite con il Desktop Bridge o le nuove api per Cortana e¬†Windows Ink

Per tutti i dettagli sull’aggiornamento e per i link per scaricare l’SDK aggiornato √® possibile far riferimento alla pagina ufficiale del rilascio¬†https://blogs.windows.com/buildingapps/2016/08/02/windows-10-anniversary-update-sdk-14393

Per utilizzare il nuovo SDK vi basterà cambiare la versione Target nelle impostazioni del progetto, ma se avete qualche dubbio in merito è stata creata anche una pagina apposita con tutte le istruzioni passo passo

https://blogs.msdn.microsoft.com/visualstudio/2016/08/02/universal-windows-apps-targeting-windows-10-anniversary-sdk/

Se siete arrivati a questo punto della lettura non posso far altro che augurarvi buon coding ūüėÄ

La vostra nuova app per windows 10 appena pubblicata non è ancora visibile? Facciamo un pò di chiarezza

Ultimamente ho letto su molti siti e forum di persone che si lamentano che la loro nuova app appena pubblicata che ha passato tutti i controlli non √® ancora visibile o scaricabile.La cosa √® normale vista la complessa architettura che c’√® dietro, le varie cache e allineamenti dei server. Basandomi sulla mia esperienza ecco le tempistiche che ho potuto registrare nei vari step

Pagina sullo store / store web

Di solito visibile entro circa 24h dalla pubblicazione, in alcuni rari casi sono arrivato anche a 48h

Disponibilità app al download

Di solito entro 24h/48h dalla visibilit√† dell’app. Durante questo lasso di tempo possono esserci utenti che potranno scaricarla ed altri che riceveranno degli errori dallo store o vedranno l’app come ancora non disponibile

Non disperate quindi se non vedete la vostra nuova app scaricabile o se qualcuno vi segnala qualche problema, vedrete che massimo entro 3/4 giorni tutto andrà a posto.

Naturalmente nel caso di aggiornamento i tempi saranno decisamente ridotti e di solito in qualche ora sarà visibile.

Il mio consiglio è quindi di aspettare a pubblicizzare la vostra app, sò che fremete ma conviene attendere qualche giorno per evitare i commenti negativi degli utenti che non riescono a scaricarla.

Sono passati 4 giorni e la mia app ancora ha dei problemi nel download o non è visibile

Il team dello store ha pensato anche a questo caso, è stato infatti aggiunto un link per poter segnalare questo problema nella sezione submissions

store_help

Occorre quindi avere solo un pò di pazienza e al 99% la visibilità della vostra app si sistemerà sola!

Buon coding!

UWP: ListView con larghezza degli elementi al 100%

Se volete che in una vostra app gli elementi di una ListView occupino il 100% dello spazio disponibile orizzontalmente dovrete andare a modificare il tema del controllo ListView e non sar√† sufficiente utilizzare la solita propriet√†¬†HorizontalAlignment=”Stretch” del controllo in questione.

Lo stile che andr√† modificato √® pi√Ļ precisamente¬†l’ItemContainerStyle.

E’ possibile farlo in modo molto semplice utilizzando le seguenti righe da codice da inserire all’interno del tag <ListView><ListView> della vostra app

<ListView.ItemContainerStyle>
 <Style TargetType="ListViewItem">
 <Setter Property="HorizontalContentAlignment" Value="Stretch" />
 </Style>
 </ListView.ItemContainerStyle>

Buon coding!!

MVP Microsoft 2016!!!

mvp

Solo qualche ora f√† ho ricevuto una delle pi√Ļ belle notizie degli ultimi anni, quella di essere essere stato nominato MVP Microsoft per l’anno 2016 nella categoria ¬†Windows Development!

Come recita la mail che mi è portato questa bella notizia

Si tratta di un premio destinato ai leader delle community tecniche con doti eccezionali che condividono attivamente con altri la straordinaria qualità della propria competenza sul campo

Devo ammettere di avere ancora le idee un p√≤ confuse ma questo non voglia dire che non sono felice soprattutto pensando che fino a qualche anno f√† ero dall’altro lato, tra quelli che andavano a seguire gli eventi nella capitale e guardavano da lontano questi personaggi infervorati di tecnologia che parlavano dal palco!

Poi andando avanti e conoscendoli ho visto il mondo che c’era dietro ed ho conosciuto il vero amore per la tecnologia.

Da l√¨ la voglia di fare qualcosa e di mettere su una community anche in Abruzzo dove non c’√® mai molto in questo campo ūüėÄ

Grazie anche a Erica e Lorenzo di Microsoft con le loro dritte ho iniziato ad organizzare DotNetAbruzzo, e da li a poco ecco il primo evento!

Naturalmente da solo non avrei potuto far nulla ed ecco quindi che mi¬†sono venuti in soccorso gli MVP di tutta italia con Gian Maria,Marco ^2, Massimo, Matteo, Nicol√≤ (spero di non scordarne nessuno ūüėÄ ) per i vari eventi ed¬†anche se praticamente li conoscevo pochissimo si sono gettati in questa avventura per dare una mano i puro stile community.

Poi da l√¨ a poco c’√® stato il palco di Future Decoded davanti a tutta quella gente con il training di Lorenzo e di tutti gli altri della squadra DX e non solo, dell’ottimo gruppo di Microsoft Italia!

Questo riconoscimento √® il miglior coronamento per tutto questo, e naturalmente non √® un punto di arrivo ma uno stimolo per migliorare sempre di pi√Ļ, anche se in questa regione non √® cos√¨ semplice fare innovazione tecnologica di certo non mi tiro indietro, quindi aspettatevi nuovi eventi e nuovi post ūüėÄ

Buon Coding!!!!

UWP: Lavorare con i file – i permessi

Riscrivendo come UWP la mia app Your Files e volendo trasformarla anche in un file manager ho avuto (e stò avendo) molto a che fare con la gestione dei files. Ho deciso quindi di scrivere questa serie di post cercherò di condividere  quello che ho imparato in modo che possa essere utile anche ad altri.

Questi post hanno come riferimento le app UWP per windows 10 ma visti i punti in comune con la versione RT della piattaforma (Windows 8/8.1 e Windows Phone 8.1 RT) quanto sarà descritto potrà essere applicato anche ad essa.

Permessi per accedere ai file

Le app UWP per poter essere controllate e non fare danni o accedere a file sensibili sono confinate in una sandbox e hanno necessità che gli vengano forniti i permessi per poter accedere ai file sul file system.

L’accesso ai file pu√≤ avvenire in due modi:

  • Attraverso il file di¬†manifest
  • Attraverso una richiesta programmatica all’utente (FilePicker)

Permessi attraverso il file di manifest

Tramite il file di manifest possiamo selezionare due permessi di accesso alla raccolta musicale ed alle immagini che ci permettono di avere accesso diretto alle due cartelle relative

manifest

 

Per tutti gli altri file e cartelle (compresa quella dei documenti) occorre fare esplicita richiesta all’utente

Permessi tramite esplicita richiesta

Per poter richiedere il permesso di poter accedere a qualsiasi file o cartella (non protetta) del file system Windows 10 ci mette a disposizione gli oggetti FileOpenPicker e FileSavePicker per i file e FolderPicker per le directory

Iniziamo a vedere un esempio di come ottenere l’accesso ad un file

// Configurazione
 FileOpenPicker fop = new FileOpenPicker();
 fop.FileTypeFilter.Add(".png");
 fop.FileTypeFilter.Add(".jpeg");
 fop.FileTypeFilter.Add(".jpg");
 
 // Interazione con l'utente
 StorageFile sf=await fop.PickSingleFileAsync();
 // controllo se il file è stato selezionato
 if (sf != null)
 

Come potete vedere una volta creato l’oggetto FileOpenPicker √® necessario popolare la lista FileTypeFilter con le estensioni tra cui vogliamo che l’utente possa scegliere.

Considerazione importante è che non è possibile aggiungere il filtro .* o simili sempre per motivi di sicurezza, quindi è necessario sempre inserire la lista completa delle estensioni che si vogliono gestire

Se vogliamo invece avere accesso a tutti i file di una cartella (e di tutte le relative sottocartelle) possiamo utilizzare il FolderPicker in modo molto simile a come visto precedentemente

FolderPicker fp = new FolderPicker();
StorageFolder folder=await fp.PickSingleFolderAsync();
if(folder!=null)

Mantenere i permessi ricevuti

Utilizzando il codice che abbiamo visto negli scorsi paragrafi saremo costretti a richiedere i permessi ogni volta che andiamo ad utilizzare una cartella, anche se l’utente li aveva gi√† dati in una sessione precedente. Per risolvere il problema possiamo utilizzare l’oggetto¬†FutureAccessList che ci permette di memorizza cartelle e file con relativi permessi per un utilizzo futuro.

In pi√Ļ ad ogni oggetto possiamo assegnare un token per una ricerca pi√Ļ veloce.

L’utilizzo √® decisamente semplice

// Aggiunta di una cartella o file alla lista
 StorageApplicationPermissions.FutureAccessList.Add(folderOrFile, metadata);
 
// Ripristino di un file o folder con i relativi permessi
StorageFile sf=await StorageApplicationPermissions.FutureAccessList.GetFileAsync(token);
 StorageFolder folder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(token);

La classe mette a disposizione anche ulteriori metodi come CheckAccess per controllare se sono presenti i permessi per una determinata cartella.

Conclusioni

In questo post abbiamo visto come vengono devono essere gestiti i permessi per accedere ai file nelle nostre app.

Rispetto alla normale programmazione desktop occorre avere qualche accortezza in pi√Ļ, ma √® lo scotto da pagare per avere una piattaforma pi√Ļ sicura.

Nei prossimi articoli vedremo come visualizzare modificare tutti i dettagli dei file e come utilizzarli per scrivere e leggere le informazioni in essi contenute

Se avete qualche dubbio lasciate pure un commento! Buon coding!!

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi