Gen 19 / Igor Damiani

Automatizzare il deploy di una tradizionale (e banale) applicazione WPF

Mi piacerebbe dedicare qualche post a descrivervi come ho deciso di organizzare il deploy di una piccola e normalissima applicazione desktop implementata in WPF. Penso che la conoscerete, perchè si tratta di CharMapMe, l’applicazione di cui ho già parlato qualche giorno fa. Il caso secondo me è interessante, perchè l’app non è complessa, e mira al cuore di un problema ben preciso, che si può riassumere velocemente con la seguente domanda.

Quanto è complesso ottenere in modo automatizzato i file corretti da distribuire nel caso di deploy tramite ClickOnce, Portable e magari Windows Store?

Ok, andiamo con calma.

Introduzione
CharMapMe sorge dalle ceneri di Show Cars, come vi ho raccontato qui. Vale a dire, quindi, che è un piccolo tool per sviluppatori (ma non solo) nato diversi anni fa, ritagliando tempo libero qua e là e risolvendo un problema che mi affliggeva, ovvero sfogliare tutti i font possibili ed immaginabili alla ricerca di simboli da inserire nelle mie view XAML. Utilizzare charmap, quello predefinito di Windows, è davvero impossibile, non sto qui a raccontare il perchè.

CharMapMe, quindi, è una normale applicazione WPF, puramente desktop, composta dai seguenti file:

image

Un eseguibile ed un po’ di dipendenze esterne. Nulla di che, estremamente banale.

Ho deciso sin da subito di distribuire CharMapMe sicuramente attraverso ClickOnce dal sito ufficiale http://charmapme.azurewebsites.net. E poi di distribuirla attraverso un file zip, in modalità portable, così eventualmente uno si mette l’applicazione dove più gli pare e piace, su una chiavetta USB o da altre parti. ClickOnce dà il vantaggio degli auto-aggiornamenti, ma anche la modalità portable è comoda e perfettamente legittima.

Ho voluto anche distribuirla attraverso il Windows Store, quindi trasformarla in Universal Windows Platform. Avevo due scelte: o la riscrivevo daccapo oppure utilizzavo Centennial, alias Desktop Bridge, per convertirla più velocemente. Ho optato per questa seconda scelta, più veloce e meno invasiva per il mio cervello (LOL). Sì, nei prossimi giorni vi racconterò anche qualcosa su questa esperienza, non tanto dal punto di vista tecnico, quanto piuttosto per descrivervi esattamente cosa accade, perchè non è un processo totalmente automatico.

Quindi, per riassumere…
Voglio distribuire CharMapMe attraverso ClickOnce, uno zip ed il Windows Store.

Di per sè, non è affatto complicato ottenere i package per ciascuna distribuzione.
ClickOnce è in pratica un wizard integrato dentro Visual Studio; dopo averlo configurato la prima volta, sono sufficienti 2-3 click per ottenere i file da uploadare sul sito via FTP.
Ottenere uno zip è pressoché banale: si copiano i file in Bin/Release in un folder dedicato, si cancellano i file non necessari (stando bene attenti), si zippano ed il gioco è fatto.
Ottenere il file .appx è più complesso, ma per ora sorvoliamo.

Ma la questione è: posso automatizzare tutto?
Certo che sì. Andiamo gradualmente. Questa è la struttura di cartelle che compongono CharMapMe, così come vengono scaricate dal TFS su cui sono memorizzati i sorgenti. CharMapMe, perdonatemi, non è (ancora?) open-source.

image

C’è il file di solution CharMapMe.sln, c’è il folder “packages” di NuGet, e poi c’è un folder per ciascuno dei progetti (CharMapMe è l’applicazione client WPF vera e propria, tutti gli altri sono assembly di supporto e di dipendenza).

Ho creato una cartella “Deploy” prima per avere un punto preciso dove finiranno i tre differenti deploy che mi interessa gestire. Vediamo cosa contiene.

image

Elenco e descrivo i file uno ad uno.

  • 7z.exe : è il comando appartenente a 7-Zip per zippare i file (mi serve per creare la distribuzione in modalità Portable)
  • DevOps.bat : è il cuore del sistema, ne parleremo nei prossimi post
  • DevOps.log : log generato automaticamente dall’ultima esecuzione di DevOps.bat
  • VivendoByte.* : certificati digitali per gestire e testare il package Windows Store

Ok, il sistema è pronto.

DevOps.bat è il file batch che si occuperà di generare i tre deploy, invocato on-demand oppure come post build events da Visual Studio.

Ne parleremo con calma nei prossimi post.

Send to Kindle
Gen 18 / Igor Damiani

Free ebook

Si sa che nel nostro lavoro non bisogna mai smettere in imparare.

A questo indirizzo GitHub potete trovare un grosso elenco di un sacco di ebook pronti da scaricare. Ce ne sono di tutti i tipi e per tutti i gusti: Assembler, Android, tecnologie Microsoft, HTML, libri puramente teorici su cloud, networking, sistemi operativi. Ce ne sono alcuni su ElasticSearch, Elixir, Git, PowerShell, PHP, Mercurial, .NET SQL e SQL Server. Date un’occhiata al link e troverete sicuramente quello che vi serve e fa al caso vostro!

Da non perdere, insomma:
https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md#aspnet-mvc

Buona lettura ed Happy Coding!

Send to Kindle
Gen 17 / Igor Damiani

Come bloggare nel 2017

Ci sono tanti software per scrivere e postare post sul proprio blog, ma il mio preferito (idem per tanti altri) rimarrà sempre il mitico Windows Live Writer, che fa parte della suite Windows Live Essentials, e che purtroppo risulta deprecato. E allora, come facciamo? Cerco di fare un po’ chiarezza, e di consigliarvi qualcosa.

Open Live Writer
Su utilizzate Windows 10 (mi auguro di sì) potete scaricare dal Windows Store Open Live Writer.

Di fatto è il porting di Windows Live Writer come Universal Windows App. Funziona alla perfezione, perchè è di fatto lo stesso applicativo convertito come UWP. Dal mio punto di vista ha un solo piccolo grande difetto: ad oggi non supporta i plugin. Cosa significa? Significa che se nei vostri post scrivete ed al massimo mettete qualche immagine, video od altri contenuti di questo tipo, vi va benissimo. Se invece eravate abituati ad utilizzare qualche plugin per inserire del codice in qualche linguaggio, oppure per inserire emoticon, oppure per embeddare video da YouTube o simili, siete fregati, perchè Open Live Writer non supporta i plugin.

Windows Live Writer
Ok, è deprecato, ma chi se ne importa, direte voi?

Se cercate “windows live writer download” su Google, per esempio, troverete probabilmente questa pagina. Da qui scaricherete un file wlsetup-web.exe, che è un installer minimale per la suite Windows Live Essentials. Se tenterete l’installazione, otterrete il seguente messaggio di errore:

image

Quindi, sembrerebbe che non si possa procedere. Ho trovato questo post su Technet, però, che risolve il problema. Si tratta in pratica di scaricare il file wlsetup-all.exe, che in pratica è un installer offline della suite Live Essentials (sono 130Mb). Questo, anche sotto Windows 10, funziona alla perfezione, e per giunta vi evita qualsiasi download. Il post spiega anche che è possibile lanciare un comando da command prompt per eseguire l’installazione in modalità silente, ma a me non è interessato particolarmente.

Questo è un passaggio importante, perchè così si può installare il caro buon vecchio WLW, utilizzando i nostri cari vecchi plugin, per postare codice C#, XAML, Javascript, etc. etc.
Postare senza incertezze!

NOTA IMPORTANTE: se per caso quel post dovesse sparire, e di conseguenza anche il link per fare il download, l’ho messo a disposizione anche io direttamente qua sul mio blog. Garantisco, per quello che posso, che è identico all’originale e non contiene virus! Smile

Word
Non scherziamo. Non fatelo. Non utilizzatelo.
Word è nato per altri scopi ed altri utilizzi. Non utilizzatelo per il vostro blog.
Nessuna scusante

L’editor online del vostro blog engine
Rimane sempre validissima l’opzione di utilizzare l’editor online fornito dal vostro motore di blog. Io utilizzo ormai da anni WordPress, che fornisce un editor potentissimo. Ma sapete come la penso: se posso, evito di utilizzare un’applicazione web (sono rarissimi i casi in cui lo faccio, primo fra tutti direi Facebook).

Altro?
Ho fatto ricerche, prima di scrivere questo post, ma non ho trovato nulla di davvero utile. Forse ai punti vince Open Live Writer, che va benissimo se non siete dev e quindi inserite solo del testo. Se avete bisogno di più e di plugin, puntate al sempreverde Windows Live Writer.

Send to Kindle
Gen 16 / Igor Damiani

Ammy al posto dello Xaml?

L’altra notte, complice un po’ di insonnia e tensione, non riuscivo a dormire. Mi sono svegliato ed ho cominciato a sfogliare dal telefono la mia timeline di Twitter.

Fino a quando trovo questo:

image

Un certo Miguel da Icaza mi porta a conoscenza dell’esistenza di Ammy. Di cosa si tratta? Lo riassumo in qualche punto per chiarire le idee:

  • il sito di riferimento è il seguente: http://www.ammyui.com/
  • è un linguaggio json-like da utilizzare al posto dello XAML per descrivere la UI
  • è un package da scaricare via NuGet: solo 59Kb
  • rispetto a XAML presenta dei vantaggi: è più compatto (ma va?), supporta nativamente la capacità di modificare a run-time la Window o la Page, implementa il concetto di mixin, l’Intellisense nei file .ammy in Visual Studio funziona a meraviglia
  • ci sono anche svantaggi: essendo json, non è possibile in questo momento collassare/espandere porzioni di view, tecnica che io utilizzo molto per nascondere parti di Window o di Page che non mi interessano in quel momento. Al momento supporta solamente WPF e non UWP. Non ho ancora utilizzato Ammy in produzione (è uscito il 22/12/2016), quindi non ho esperienze dirette

Ad esempio, una porzione di XAML come questa:

   1: <StackPanel>

   2:     <TextBlock Text="A story to tell" />

   3:     <TextBlock Text="{Binding Story}" Style="{StaticResource StoryStyle}" />

   4: </StackPanel>

 

Diventa il seguente blocco Ammy:

   1: StackPanel {

   2:     TextBlock { "A story to tell" }

   3:     TextBlock {

   4:         Text: bind Story

   5:         Style: resource "StoryStyle"

   6:     }

   7: }

 

Più compatto, è vero, ma Ammy supporta delle feature davvero molto interessanti, come il poter definire una sorta di “funzione” (mixin) da richiamare dove serve per generare controlli più o meno complessi. Ammy è da provare senz’altro, tanto più che è possibile mischiare tranquillamente view implementate in XAML con altre in Ammy. Le view implementate in Ammy sono salvate in file con estensione .ammy, che all’atto della compilazione vengono tradotte e convertite in XAML. Il team di sviluppo afferma che qualsiasi cosa fattibile con XAML è fattibile anche con Ammy.

CharMapMe 1.2 supporta già adesso Ammy!

Ho subito adattato il mio CharMapMe affinchè possa generare Label, TextBlock e TextBox in linguaggio Ammy. La versione 1.2 è già online, pronta per essere installata via ClickOnce.

Ho scritto al team di sviluppo di Ammy, giusto per metterli al corrente del mio tool, mi hanno risposto entusiasti ed hanno capito il valore di CharMapMe.

Send to Kindle
Gen 13 / Igor Damiani

Show Cars è morto, lunga vita a CharMapMe!!!

Che Show Cars fosse un nome orribile per un tool nato sulle orme del charmap di Windows, è fuori di dubbio. Che prima o poi dovessi riscriverlo, o quantomeno ribattezzarlo in altro modo, idem.

Ed ecco quindi che ho trovato il tempo di farlo.

image

Lo trovate qui : http://charmapme.azurewebsites.net/

Il vecchio sito, che non menziono per renderlo il più possibile obsoleto, vi reindirizzerà automaticamente verso questo nuovo indirizzo.

Questa volta il nome non l’ho deciso io, ma un noto MVP (o ex? o futuro? non svelerò mai la mia fonte amica) a cui ho chiesto consiglio. Perciò state attenti a giudicarlo! Smile

Show Cars è morto, lunga vita a CharMapMe!!!!
Di cosa stiamo parlando? Di un tool per sviluppatori, ma non solo, che nasce con lo stesso intento del charmap di Windows, ovvero farvi sfogliare tutti i font di Windows, installati e non, per permettervi di cercare e trovare il più velocemente possibile il carattere desiderato da inserire ovunque vi serva: un documento Word, un foglio Excel, oppure una pagina web, oppure una Windows/Page di XAML.

E’ un tool per sviluppatori, perchè vi permette di generare controlli per le seguenti piattaforme:

  • Universal Windows Platform (XAML)
  • Windows Presentation Foundation (XAML)
  • HTML5 (HTML, ovviamente)

E’ comodo perchè rispetto al charmap originale di Windows:

  • la finestra è ridimensionabile
  • i caratteri sono ridimensionabili (così non diventate miopi per vederli)
  • è più colorato e piacevole da utilizzare
  • vi fa sfogliare i font installati o quelli contenuti nei file .ttf
  • vi fa sfogliare i caratteri a paginate (numero di caratteri personalizzabile)
  • vi permette di taggare i caratteri con i chartag
  • è possibile cercare caratteri in base ai chartag che avete assegnato

Cosa sono i chartag?
I chartag sono una feature che ho implementato a mio avviso molto utile: vi permette di taggare un particolare carattere con uno o più tag a vostra scelta, separati da virgola. Esempio: se vedete i caratteri $ (dollaro), € (euro), ₽ (rublo), T (tenge), potreste deciderli di taggarli come currency. Oppure potreste decidere di marcare i classici simboli che troviamo su una toolbar (le icone del nuovo, salva, formattazioni varie, copia, incolla, etc.) con il tag toolbar, e così via. A che scopo? CharMapMe vi permette di effettuare delle ricerche sui caratteri per chartag, così da recuperare più velocemente tutti quei caratteri che avete precedentemente taggato.

Dallo screenshot qui sotto magari potete intuire questa feature.

Come si può facilmente immaginare, ho scritto CharMapMe in base alle mie esigenze di sviluppatore, e quindi ho cercato di inserire tutte quelle feature che trovavo più utili.

Quindi, se credete che CharMapMe possa esservi utile, puntate il vostro browser all’indirizzo:
Lo trovate qui : http://charmapme.azurewebsites.net/

Tutti i feedback del caso sono ovviamente ben accetti!

Send to Kindle
Gen 12 / Igor Damiani

Corso di Public Speaking con NOE Formazione

Sapete, è successa una cosa strana durante l’ultima edizione di Future Decoded, tenutasi a Milano nei primi giorni di novembre dello scorso anno. Balzando da una sessione all’altra, con quasi tutti i miei amici colleghi relatori di questo o di quell’altro argomento, improvvisamente mi sono chiesto:
e perchè io no?

Amo la community, ma non sono uno che si butta in nuove avventure. Se qualcuno me lo chiede, o me lo impone, allora ci provo, ed esco dalla mia zona di comfort. Altrimenti nisba. Una di queste cose riguarda proprio il parlare in pubblico, o public speaking, appunto. Diciamoci la verità: facendo docenza da qualche anno ormai mi sono parecchio sciolto, e tengo lezioni anche con classi che magari arrivano ad una ventina di persone. Ho tenuto eventi e sessioni con un pubblico più ampio, da solo o in coppia, per cui…ecco…un po’ di timidezza è sparita.
Grazie Brain-Sys, anche per questo.

La mia azienda mi ha mandato, il 18-19 Novembre scorso, a partecipare ad un corso di due giorni incentrato sul public speaking. Il corso era erogato da NOE Formazione, a Bergamo.

Corso semplicemente fantastico, che rifarei anche oggi.

Cosa voglio raccontarvi in questo post? Ci ho pensato a lungo, e sono giunto alla conclusione che desidero raccontarvi poco, o poco più di nulla. Perchè? Bisogna partecipare per capirlo, parlo sul serio. Sapete che con il marketing non c’entro per nulla: se dico una cosa del genere, non è perchè ho firmato un documento di riservatezza o chissà per quale ragione. Ad un corso del genere dovete partecipare e basta, perchè la componente non verbale è fondamentale per capirlo. Qualsiasi tentativo di descrizione sminuisce notevolmente il valore stesso del corso. Ma ci provo comunque.

Sappiate solo questo: sono due giorni intensi, con teoria & pratica, dove la pratica la fa da padrone. Verrete a conoscenza di tante tecniche per rendere il vostro speech più efficace, in grado di fare la differenza. Farete prove pratiche, insieme agli altri partecipanti del corso, e lavorerete assieme per migliorare voi stessi. Imparerete piccoli trucchi per gestire lo sguardo, come usare e dove mettere le mani, come affrontare platee piccole e grandi, come usare la vostra voce. Complimenti sinceri al nostro coach Federico Olivati, perchè è semplice e chiaro nell’esposizione, ed è stato simpaticissimo e cordiale con tutti.

image

Nell’immagine qui sopra vedete il feedback che ho lasciato al termine del corso, rubato dalla homepage del sito NOE Formazione. Riporto in grassetto la frase “Grazie per la visione positiva delle cose”, perchè a mio avviso è uno dei punti di forza: al contrario di quello che accade normalmente, durante questo corso di public speaking si pone l’accento sui vostri punti di forza, e non sui difetti. E’ un approccio che mi ha davvero colpito e che ho apprezzato. Ricordo che gli obiettivi che volevo risolvere nel corso erano avere un tono di voce meno monotono, eliminare un po’ la mia erre moscia, essere meno frenetico. Volete sapere com’è finita? No, troppo comodo. Spoiler. Mi fermo qui: se volete sapere com’è finita, andate sul sito e partecipate alla prossima edizione. Fidatevi: ne vale la pena.

image

Volete sapere anche cos’è questa foto qui sopra? Beh, mi chiedete troppo. Sarebbe uno spoiler!

Send to Kindle
Gen 11 / Igor Damiani

Capolinea per il mio Dell XPS 12

Vi ricordate il mio Dell XPS 12, di cui andavo così tanto orgoglioso nel Novembre 2012?
Beh, per è arrivato il capolinea. E sarebbe anche ora, aggiungo volentieri, visto che ha lavorato egregiamente per poco più di quattro anni.

Cosa è successo? Nulla di particolarmente grave, solo che è diventato davvero troppo vecchio.

Per la cronaca: nonostante gli scherni di tanti amici, lo schermo non si mai rotto, ruota ancora che è una bellezza. Promosso a pieni voti, onestamente un’idea geniale che non è stata più perseguita.

Ma il motivo più importante è…
Tra l’altro, il progetto principale su cui sto lavorando in questi mesi (circa un paio d’anni, a dire il vero) è un applicativo industriale desktop scritto in C# e WPF, ed è contenuto in una solution Visual Studio 2015 con al momento 29 progetti. E’ una solution piuttosto complessa, ed il mio XPS 12 semplicemente non ce la fa più. Apro la solution e la ventola parte come se volesse far decollare l’ultrabook. I progetti compongono in modo articolato l’intero applicativo, con tutti i layer che si possono immaginare:

  • una UI con 128 interfacce utente, divise tra Page e Window, ciascuna con il suo viewmodel (utilizziamo MvvmLightLibs)
  • un access layer che accede a due database SQLite differenti, gestiti in parte con Entity Framework 6.0 (mappati ovviamente con due edmx diversi)
  • un gruppo di assembly dedicati ai protocolli di comunicazione specifici per le macchine hardware con le quali l’applicativo deve dialogare (non è una parte di mia competenza)
  • un assembly dedicato alle risorse per la traduzione. Al momento abbiamo tradotto in italiano ed in inglese, ma in produzione le lingue saranno decise di più (16, tra cui cinese, polacco, russo, svedese, etc. etc.)
  • un progetto dedicato agli unit-testing
  • un assembly contenente tutte le bitmap utilizzate dall’applicativo
  • varie ed eventuali (utility ed altri tool di supporto)

Tutto questo per dire che, quando apro questa solution, il mio Dell muore definitivamente. Ventola a palla, tempi lunghi per la compilazione e scarsissime prestazioni durante lo sviluppo di codice vero e proprio. E’ giunto il momento di cercare il suo successore. Non so ancora dove andrò a parare, non so ancora se opterò per il prossimo Surface Pro 5 o magari preferirò rimanere sul più consolidato Pro 4. Non so se deciderò di rimanere con Dell, o magari puntare su altri brand.

Feature richieste? Le seguenti:

  • Almeno 16GB di Ram
  • Sicuramente un monitor touch, quindi parliamo quantomeno di un convertibile 2-1
  • SSD da almeno 512GB

Vi farò sapere, se avete qualcosa da consigliarmi, ben venga!!!!

Send to Kindle
Gen 10 / Igor Damiani

UWP, SharpDX e font installati

Tempo fa ho avuto la necessità di recuperare l’elenco dei font installati in Windows da un’app UWP. La cosa non è possibile utilizzando il framework UWP di base, per cui ho trovato ed utilizzato la libreria SharpDX, che è una libreria wrapper open-source verso il mondo DirectX. Tramite SharpDX è possibile accedere a funzioni grafiche 2D e 3D e delle varie componenti più a basso livello (DirectSound, DirectX 9-11 e 12, DirectInput, eccetera). La cosa interessante è che SharpDX supporta .NET 4.5 ed è scritta all’interno di una libreria Portable, per cui è disponibile un po’ ovunque.

Vi lascio qualche link utile:

Wiki dedicata a SharpDX

SharpDX su NuGet

SharpDX su GitHub

Purtroppo in questo momento sto utilizzando Open Live Writer per bloggare, per cui non riesco a postarvi alcuna riga di codice utile per ottenere l’elenco dei font – anche perchè la cosa non è così banale ed immediata. All’interno di OLW infatti non sono ancora supportati. Confido nei prossimi giorni di riuscire a pubblicare qualcosa su GitHub per darvi una mano! Stay tuned!

Send to Kindle
Gen 9 / Igor Damiani

Installazione offline di Visual Studio

E’ possibile? Ovviamente sì, ma c’è qualcosa da sapere prima. Vediamo.

Visual Studio 2015
E’ possibile scaricare un installer offline di Visual Studio 2015 dal command prompt di Windows usando questa sintassi:

vs_enterprise /Layout C:\CartellaDownload

Morale: si scaricare l’installer “vs_enterprise.exe” dal sito Microsoft (circa 800Kb). Successivamente si lancia il comando specificato qui sopra. Così facendo vengono scaricati tutti i pacchetti e le dipendenze di Visual Studio 2015, in modo da procedere all’installazione di tutto anche rimanendo sconnessi dalla rete. Io l’ho fatto per la versione Enterprise e la dimensione è di 25,8 GB (6.755 file divisi in 2.641 cartelle).

Visual Studio 2017
E’ possibile fare la stessa cosa anche con la versione corrente (Release Candidate) di Visual Studio 2017. Ma la sintassi è leggermente differente:

vs_enterprise –-layout C:\CartellaDownload

La morale però è sempre la stessa. Alla fine del download nella cartella specificata vi ritroverete tutto il necessario per procedere senza avere connettività. Trovate maggiori informazioni a questo indirizzo.

image

Una volta lanciato il comando, partirà un download più o meno lungo in base alla vostra connessione.

image

Non è solo questione di offline
Questa procedura è utilissima anche perchè se dobbiamo installare Visual Studio su N postazioni, è inutile fare il download ogni volta: lo facciamo una volta e poi si va via lisci. E’ anche questione di risparmio di banda e soprattutto di tantissimo tempo. Ad esempio, sul mio PC se installo Visual Studio 2015 partendo dall’iso, ed installando tutto, impiego circa 4h30min. Parliamo di un PC desktop, con i7, 16GB di RAM, ed un SSD Crucial da 750Gb. Eh insomma, parecchio tempo.

Se comincio la stessa installazione sullo stesso PC, ma utilizzando l’installer offline, tutto il setup viene chiuso in poco meno di un’ora e mezza. Eh insomma, un bel risparmio di tempo.

Note dolenti
Tutto questo funziona alla grande, tranne che per il setup dell’SDK di Android che – come recita la pagina che vi ho linkato prima – “does not support an offline installation experience”. Quindi, sappiate che se installate qualcosa riguardante Android (sviluppo nativo o cross-platform con Xamarin Forms) qualcosa potrebbe andare storto, e quindi in questo caso avete bisogno di Internet dietro le quinte. Pazienza, a quanto pare ad oggi non c’è soluzione.

Send to Kindle
Gen 6 / Igor Damiani

Una giornata dedicata a DevOps

Quando? Venerdì 10 Febbraio, tutta la giornata, dalle 9 alle 18.

Dove? Nella sede Microsoft di Roma, in Via Avignone 10.

Chi? Gli amici di DomusDotNet.

Maggiori informazioni? A questo indirizzo!

Ovviamente la giornata è gratuita. Ovviamente fino ad un certo punto, visto che organizzare e gestire giornate community di questo tipo non è mai semplice, richiede impegno & costi, perciò ringraziamo la community romana e partecipiamo numerosi.

All’indirizzo https://www.eventbrite.it/e/biglietti-devopswork-2017-30931208076?aff=es2 trovate l’agenda e l’abstract di ciascuna sessione. Si parlerà di Visual Studio Team Services, Docker, Git, Azure, e molto altro ancora.

Un ennesimo appuntamento da non perdere.
Iscriviamoci numerosi e partecipiamo!!!

Send to Kindle