Rilasciato Visual Studio 2017 15.5

Arrivato fresco fresco forse uno degli aggiornamenti più attesi dall'uscita di Visual Studio 2017.
Tante sono le novità e soprattutto i miglioramenti inseriti in questa release.

Performance

Il caricamento delle solution (soprattutto quelle grandi) si è ridotto quasi della metà del tempo.
Visual Studio 2017 già era molto migliorato in questo senso rispetto ai suoi predecessori, adesso, con questo aggiornamento i miglioramenti si vedono anche ad occhio nudo.
Provare per credere.

Secrets Management

Integrato direttamente con Azure KeyValut, questa nuova implementazione di Visual Studio vi permette di non rilasciare i sorgenti con stringhe di connessione in chiaro (per esempio).
Maggiori informazioni le potete trovare qua: https://blogs.msdn.microsoft.com/visualstudio/2017/11/17/managing-secrets-securely-in-the-cloud/

Supporto ad Angular2/4/5

Non sapevo che versione mettere nel titolo, ma la cosa importante è che con questo aggiornamento è stato introdotto il code completitions e il code navigation nel codice Angular.

Publishing ASP.NET applications

Migliorata la pubblicazione di applicazioni ASP.NET direttamente su Virtual Machine di Azure.

Visual Studio for Mac

Come ormai siamo stati abituati, parallelamente a un rilascio per Visual Studio per Windows, arriva anche un aggiornamento per Visual Studio for Mac.
In questo aggiornamento una delle cose più importanti che è stata aggiunta è la possibilità di installare .NET Code 2.0 SDK direttamente dall'installer.

---

Potete trovare l'articolo completo a questo link: https://blogs.msdn.microsoft.com/visualstudio/2017/12/04/visual-studio-2017-version-15-5-visual-studio-for-mac-released/

La release notes completa invece la potete trovare qua: https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

 

 

Nuovo progetto: Please Update It

Spesso quando ci vengono richiesti siti e applicazioni "all'ultimo grido" che utilizzano le ultime uscite di HTML5 e CSS3, ci troviamo a combattere con le varie compatibilità dei browser.
Soprattutto (ahimè) con le versioni più vecchie di Internet Explorer.
Ci sono comunque tante altre features interessanti che ancora alcuni browser più in voga non hanno al momento implementato, come ad esempio WebRTC.

Per vedere il vostro browser cosa supporta, potete visitare questo sito: https://html5test.com/index.html

Se invece volete verificare "da codice" se una certa features è supportata, potete usare le API di Modernizr.
E se una tale features che state usando nella vostra applicazione non fosse supportata?
Potete mostrare un messaggio di errore oppure da adesso potete usare www.pleaseupdate.it. :)

Per usarlo è abbastanza semplice e vi lascio qua un esempio che ho messo su CodePen: https://codepen.io/kasuken/pen/mqVPbg

Recuperare le statistiche di esecuzione di una query da SQL Server (anche SQL Azure)

La funzione che vi scrivo qua sotto, in realtà, è disponibile fin dal Framework 2.0.
Con poche righe di codice potete recuperare le statistiche di esecuzione di una query, una stored procedure o una vista direttamente da C#.
Per farlo è sufficiente impostare la proprietà StatisticsEnabled prima di aprire la connessione al vostro SQL Server.
Una volta eseguita la query, potete lanciare la funzione RetrieveStatistics e avrete in questo modo un Dictionary con tutte le statistiche di esecuzione del vostro command.

Vi lascio qua sotto il codice completo che potete usare.

public Dictionary<string,string> Run(string connectionString, string query)
{
    using (var sqlConnection = new SqlConnection(connectionString))
    {
        sqlConnection.StatisticsEnabled = true;

        sqlConnection.Open();

        using (var cmd = new SqlCommand(query, sqlConnection))
        {
            cmd.ExecuteReader().Dispose();
        }
        var stats = sqlConnection.RetrieveStatistics();

        var statistics = new Dictionary<string, string>();

        foreach (DictionaryEntry entry in stats)
        {
            statistics.Add(entry.Key.ToString(), entry.Value.ToString());
        }

        sqlConnection.ResetStatistics();

        return statistics;
    }
}

Questo è il link al gist che ho creato su GitHub: https://gist.github.com/kasuken/4c9d9a4b4d5177e104833095e4275729

 

Guida intergalattica per Parallels 13 e Visual Studio 2017

Dopo l'atto di amore del post precedente verso il mio mac, in questo vi scriverò quali sono le impostazioni che utilizzo attualmente su Parallels per far girare correttamente Windows e in realtà Visual Studio 2017 al top delle perfomance.
Come ho detto prima, la mia macchina principale è quella OSx, quindi alcune delle impostazioni che vi dirò di mettere su Windows è perchè oggettivamente non mi servono, ma andiamo per gradi. :)

Impostazioni macchina virtuale di Parallels

Seguendo alcune delle indicazioni che Parallels fornisce sul proprio sito, ho impostato così la mia macchina virtuale con Windows 10.

  • 2 CPU Virtuali (la metà di quelle che avete sul Mac)
  • 4096MB di RAM (anche se loro dicono che si può mettere fino a metà della RAM del Mac)
  • 256MB di memoria grafica (anche in questo caso loro indicano 512MB, ma se non fate lavori di grafica, bastano e avanzano)
  • Disabilitata l'opzione di ottimizzazione del disco in tempo reale
  • Ho abilitato la condivisione dei volumi del Mac con Windows e disabilitato la condivisione delle cartelle utente
  • Nella sezione dello schermo non ho messo l'impostazione per display retina, ma quella ridimensionata.

Ovviamente utilizzo la modalità Full Screen e non quella Coherence perchè alcune applicazioni Windows non si vedono bene sul Mac e soprattutto non seguono lo stesso flusso di lavoro (es. le gesture del trackpad).
In questa modalità inoltre posso mettere in un secondo monitor la macchina con Windows e tenere il resto sullo schermo principale del Mac.

Impostazioni Windows

Una volta installato Windows 10 sulla macchina virtuale, ho disabilitato alcune impostazioni riguardanti effetti grafici, con ovviamente guadagno sulle perfomance.
Dal pannello di controllo dove andare su System and Security -> Advanced System Settings -> Advanced -> Performace e impostare l'option button.
Potete disabilitare tutto e lasciare solo "Smooth edges of screen fonts" perchè ne avrete un guadagno in chiarezza dei fonts su Windows.

Impostazioni Visual Studio 2017

Visual Studio funziona bene anche con le impostazioni di default che vi trovate dopo l'installazione, ma con alcuni accorgimenti vedrete dei netti miglioramenti.
Queste impostazioni comunque le tengo anche sulla mia macchina con solo Windows (che adesso non ho più).

  • Da Options -> Environment -> General ho disabilitato i tre checkbox per il rendering grafico (Automatically adjust visual experience based on client performance)
  • Da Options -> Debugging -> General ho disabilitato alcune opzioni di debug che non utilizzo 
  • Ho disabilitato la Navigation Bar, tanto ho visto che utilizzavo pochissimo per non dire mai: Options -> Text Editors -> All Languages
  • Scatenando sicuramente l'ira di qualcuno ho disabilitato CodeLens: Options -> Text Editor -> All Languages -> CodeLens
  • Inoltre da Options -> Text Editor -> General ho disabilitato Track Changes
    E' quella opzione che ti fa vedere i punti del file che avete modificato da quando lo avete salvato l'ultima volta
  • Ultima cosa ho tolto la selezione dell'elemento attualmente aperto in Solution Explorer: Options -> Projects and Solutions -> General -> Track active item in Solution Explorer

Queste erano tutte cose che comunque non usavo nemmeno sulla macchina Windows.

Se invece avete la possibilità di lavorare con ASP.NET Core 2.0 o comunque sia con progetti .NET potete sempre fare a meno di utilizzare una macchina virtuale e utilizzare Visual Studio For Mac e Visual Studio Code.

Perché tanti sviluppatori preferiscono un Mac?

Sempre più spesso (nonostante le ultime vendite non siano andate come previsto), ci sono tanti sviluppatori che utilizzano un Mac invece di un PC con Windows.
Io stesso, anni fa ormai, ho fatto questa scelta.
Al di là dell'aspetto puramente estetico, ci sono secondo me, alcuni aspetti che per ora non mi faranno tornare indietro e così anche altre persone con cui ho parlato riguardo a questo argomento.
Ho provato a raccogliere qua alcuni delle risposte che ci siamo dati e che spesso do quando mi viene chiesto il motivo per cui l'ho fatto.

Qualità dell'hardware

Indiscutibilmente a livello qualitativo l'hardware del Mac è superiore a qualsiasi altro laptop della stessa fascia di prezzo.
E quando si parla di prezzo, sappiamo tutti che Apple non li vende proprio a sconto i propri MBP.
Il trackpad non è nemmeno paragonabile a quello di un PC e ogni volta che ho provato a usarne un altro, ne ho sentito la mancanza.
Per questo motivo tante persone (me compreso) ha smesso di usare il mouse.
Per la qualità dello schermo vale lo stesso discorso. Proprio in questo periodo ho avuto per lavoro un pc con schermo 4k e la qualità non era paragonabile rispetto a quello dello mio MAC.
Altro punto di forza è lo chassis in alluminio. Oltre a dare solidità dà anche efficienza nel raffreddamento.

Durata della batteria

Credo si tratti solo di un discorso di efficienza del sistema operativo. OSx è molto più attento alla risorse utilizzate e di conseguenza la batteria dura molto più a lungo.
Ovviamente dipende dalle attività svolte durante il giorno, ma sviluppando con Visual Studio Code e Safari a volte ci ho tirato una giornata intera di sviluppo.
Basta pensare che utilizzando la macchina virtuale con Parallels in cui ho Windows 10, la batteria riesce a durarmi anche 3-4 ore, quindi come un portatile normale con Windows.

Supporto per le versione più vecchie

Un altro elemento di forza sicuramente da valutare è il supporto che fornisce Apple a hardware anche più vecchi.
Ad esempio io ho un MBP del 2014 e in questi anni ho sempre aggiornato il sistema operativo all'ultima versione disponibile e tutto è sempre filato liscio.
Oltre a questo non ho mai avuto problemi di driver nè durante gli aggiornamenti principali nè durante gli aggiornamenti minori.
Non mi sono mai dovuto preoccupare di driver di terze parti o cose del genere.
Questo per me è molto importante perchè permette di concentrarsi solo sull'uso quotidiano del proprio computer, senza dover perdere tempo con problemi relativi ad agenti che c'entrano poco con il proprio lavoro.
Oltre a tutto questo, nonostante i 3 anni di vita abbondanti, la macchina risulta ancora performante e oserei dire che ad ogni aggiornamento la reattività delle applicazioni è migliorata.

Usato garantito

In caso vogliate cambiare un Mac dpo qualche anno di utilizzo, la cosa di cui potete stare certi, è che il suo prezzo scende, ma non si svaluta mai quanto un pc normale.
Per farvi un esempio il mio MBP del 2014 lo posso rivendere tranquillamente a quasi il 60% del prezzo rispetto al prezzo di acquisto di tre anni fa.
Direi che non è per niente male, visti i prezzi di quelli nuovi. :)

E Windows?

Nonostante Visual Studio Code, Visual Studio for Mac e tanti altri strumenti disponibili sia per Windows che per OSx ho bisogno spesso di lavorare su Windows.
Questo non è un grosso problema perchè anche in questo caso ci sono diverse alternative.
La prima è quella di usare Parallels e l'altra è quella di fare una partizione su Mac con Bootcamp.
Io fra le due preferisco la macchina virtuale, per diversi motivi.
Primo fra tutti è che essendo una macchina virtuale, posso clonarla, salvare lo stato, rifarla da zero, ogni volta che voglio.
La seconda è che comunque Parallels è molto più ottimizzato rispetto a Bootcamp perchè usa hardware virtualizzato ad hoc.
Il Mac invece non ha hardware disegnato per Windows, anche se Windows 10 ci gira molto bene.
Oltre a questo sulla macchina virtuale comunque tengo solo l'ambiente di sviluppo installato e tutto il resto lo tengo su OSx.
In questo modo ho un netto risparmio di risorse quando non mi serve Windows e quindi tutto si ricollega ai punti precedenti di risparmio di batteria e guadagno di produttività con desktop virtuali e tutto il resto.
Parlerò della configurazione ottimale di Parallels per sviluppare nel prossimo post.

That's all folks.

p.s. ah... dimenticavo il motivo principale... il mac con gli adesivi attaccati fa molto figo, hipster e nerd!

Rilasciato Visual Studio 2017 15.4

Da pochi giorni è stato rilasciato un nuovo aggiornameto per Visual Studio 2017.
Siamo arrivati alla versione 15.4.
Sembra un minor update, ma anche questa release è piena di novità. Alcune cose che sembrano essere rilasciate come bug fixing in realtà sono delle nuove funzionalità.
Potete trovare la release notes completa a questo indirizzo: https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes#15.4

Per noi sviluppatori web, alcune fra le novità più importanti:

  • .NET Core 2.0 installato di default, quindi non va scaricato a mano dal sito
  • Aggiunto lo scaffolding anche nei progetti con Razor Pages
  • Migliore integrazione con Docker durante la pubblicazione
  • Durante la pubblicazione di un webjobs, è già possibile schedulare l'avvio con la simpaticissima sintassi Cron

Importante: se non vi compare l'aggiornamento da dentro Visual Studio, potete lanciare Visual Studio Installer. Prima vi si aggionerà lui e dopo vedrete spuntare un aggiornamento direttamente nell'installer. Per i più fortunati, vale sempre la via a cui ci hanno abituati da dentro Visual Studio.

Visual Studio for Mac

Arriva anche un aggiornamento per noi utilizzatori di macchine Apple.
E' uscita infatti la versione 7.2 di Visual Studio for Mac.
Anche in questo caso, .NET Core 2.0 viene installato di default insieme all'aggiornamento.
Oltre a questo, come per Windows, pubblicazione su Docker direttamente da Visual Studio.

Office 365 Developer Bootcamp a Milano

Se siete sviluppatori Office 365 o SharePoint, il 14 novembre non potete perdervi il developer Bootcamp che stiamo organizzando a Milano.
Tappa unica organizzata da Fabio Franzini, in cui io e Peppe daremo una mano durante tutta la giornata.
Dopo alcune sessioni introduttive vi diamo la possibilità di sviluppare direttamente dai vostri PC dei laboratori o comunque sia potete farci delle domande sulle tecnologie che girano intorno a Office 365, come Teams, Graph API, Office Add-ins, SharePoint Add-ins e tante altre.
In particolare in questa giornata ci concentreremo sullo SharePoint Framework e sulle Microsoft Graph API.

Per particare all'evento vi dovete semplicemente iscrivere utilizzando questo link: https://www.eventbrite.it/e/office-365-developer-bootcamp-milano-tickets-38377577367
L'evento si svolgerà nella nuova sede Microsoft in via Pasubio 21, che è molto vicina alla fermata della metro Garibaldi, quindi molto comoda.
Ci è stata riservata una sala abbastanza capiente, ma il consiglio è quello di iscrivervi subito per non perdere questa occasione.

Nei prossimi giorni vi aggiornerò in modo più dettagliato su cosa dovrete aver installato sul proprio computer per essere produttivi fin dai primi momenti della giornata.

Volete un altro motivo per partecipare a questa giornata?

Passerete una tranquilla giornata di novembre con questi tre bei ragazzi!
Se vi sempra poco!
:) 

SharePoint Saturday Milan: the day after and slides

Sabato, come ho scritto in precedenza, si è tenuta la tappa italiana dello SharePoint Saturday a Milano.
Giornata ad alto contenuto tecnologico vista l'altezza degli speaker.
Sentirmi infatti in mezzo a nomi del genere mi ha fatto un po' strano, ma evidentemente ci dovevo essere anche io. :)

Durante la mia sessione ho parlato di come realizzare un'applicazione ASP.NET (e come schedularla) per interagire con le Graph API.
Non con il solito approccio che si trova spesso in cui si interrogano le Graph con l'utente attualmente loggato, ma con la delega a un'applicazione che può accedere praticamente a tutto il tenant AD a cui è legato.
Questo approccio ovviamente apre molti scenari per sviluppare molte applicazioni o utility.
Qua sotto trovate le mie slide, al cui interno, potete trovare anche il link all'applicazione che ho fatto vedere durante le demo.

Ci vediamo al prossimo SharePoint Saturday italiano...

 

Abilitare gli utenti "Guest" su Microsoft Teams

Da qualche giorno Microsoft ha annunciato una delle features più attese dalla prima uscita di Microsoft Teams: la condivisione con gli utenti esterni.
Di default però questa funzionalità è disabilitata.
Per abilitarla sono necessarie poche operazione. Vediamo quali.

  • Con un utente Admin di Office 365, andate sul portale di amministrazione di Office https://portal.office.com/adminportal/home
  • Dal menu di navigazione selezionate Settings e dopo Service Add-ins
  • Nella schermata con l'elenco dei servizi, selezionate Microsoft Teams
  • A questo punto dovete selezionare dal menu a tendina la licenza chiamata Guest e abilitare il pulsante che si trova subito sotto che abilita gli utenti Guest

Questo settings ci mette almeno un'ora per essere abilitato sul vostro tenant (a volte anche meno, se siete fortunati), quindi prima di poter aggiungere utenti esterni, dovete aspettare un po'.

A questo punto non vi resta che andare sul team in cui volete aggiungere un utente esterno e inserire la sua mail.
Attenzione che deve essere un work account e non un'utenza hotmail, gmail o affini.
Subito dopo l'invito, l'utente riceverà una mail in cui dovrà confermare l'accesso.

Speaker fantastici e dove trovarli

Si preannuncia un autunno intenso e pieno di eventi, come sempre.
Dopo essersi ricaricati con le ferie (?) estive e le prime serate a lavorare con i clienti tornati anch'essi dalle ferie, si inizia a delineare il calendario degli eventi per questo fine 2017.
Vi faccio un elenco degli eventi a cui parteciperò io e di cui posso già parlare, ma seguiranno aggiornamenti.

SharePoint Saturday Milano - 30 settembre

 

Come avevo già scritto in qualche post precedente, quest'anno farò parte anche io degli speaker presenti a un grande evento che mancava da troppo tempo a Milano: lo SharePoint Saturday.
Appassionati e professionisti di questa fantastica tecnologia (si, lo penso davvero) siete tutti invitati a partecipare.
Ce ne sarà per tutti, dagli sviluppatori a figure più di sys admin.
Io nella mia sessione del pomeriggio parlerò di come realizzare un servizio schedulato che accede alle informazioni del vostro tenant e in particolare di SharePoint Online.
Una sessione mista fra sviluppo e infrastruttura Azure perchè ovviamente tutto sarà deployato sul cloud di Microsoft.
Poco prima del pranzo poi sarò comunque sul palco insieme a un mio collega per parlare di SmartFlow 365.
Il prodotto su cui sto lavorando da un po' di tempo a questa parte e che mi ha permesso di sviscerare ogni angolo più nascosto delle Microsoft Graph API.
Vi aspetto numerosi e con tante domande.
Ah, dettaglio da non sottovalutare. Se venite alla nostra sessione "commerciale" vi regaliamo la birra. :)

http://www.spsevents.org/city/Milan/Milan2017/home

Visual Studio Saturday 2017 - 21 ottobre

Era già qualche mese che non andavo a Pordenone a parlare con gli amici di 1nn0va e iniziavo a sentirne la mancanza :)
Intorno alla fine di ottobre infatti sarò di ritorno nella fantastica sede dell'università di Pordenone che anche questa volta ci permette di garantire ai partecipanti una ottima location e spero anche degli ottimi contenuti.
Almeno noi ce la metteremo tutta perchè sia così.
In questa occasione parlerò di ASP.NET Core 2.0 e più nello specifico di Web API nella nuova versione del framework.
Oltre a una breve introduzione vedremo quali sono le best practices per realizzarne di un livello da far invidia ai vostri colleghi e concorrenti.
Fatto questo, vedremo anche come Azure ci può aiutare a distribuire i nostri endpoint con Azure API Management.

https://www.eventbrite.it/e/biglietti-visual-studio-saturday-2017-36603569261

SQL Saturday - Parma - 18 Novembre

Prima volta per me a un SQL Saturday da speaker.
Effettivamente ha senso perchè non sono un esperto di SQL Server come si possono trovare a un SQL Saturday.
Ma Azure serve anche a questo, cioè ad avvicinare mondi che a prima apparenza sembrano diversi.
Avrò una sessione nella track "Development" in cui parlerò di Azure Search e ASP.NET (e non solo).
Infatti farò vedere come in pochi passi è possibile indicizzare un database su SQL Azure con Azure Search e, sfruttando le API esposte dal servizio stesso, utilizzare il motore di ricerca full-text basato su Lucene in salsa Cloud.
L'esempio che farò sarà su ASP.NET, ma essendo REST API è facilmente integrabile con la tecnologia che più vi aggrada.
Potete vedere l'agenda completa a questo indirizzo: http://www.sqlsaturday.com/675/Sessions/Schedule.aspx

Cloud Conference Italia - Treviso - 22 Novembre

Altro evento a cui è la prima volta che partecipo come speaker e non vedo l'ora di farlo!
Cloud Conference Italia è un evento quasi unico nel suo genere perchè incentrato tutto sulla tematica Cloud.
Anche qua speaker di grandissimo livello e argomenti vari.
Io parlerò di come ottimizzare il caricamento delle applicazioni web (in particolare ASP.NET, ma alcuni concetti possono essere sfruttati anche per altre tecnologie), utilizzando Azure.
In particolare parlerò di due servizi molto importanti come il CDN e il Traffic Manager.
Se utilizzati bene, possono ridurre il tempo di caricamento delle pagine web, anche dell'80%!
Spero di avervi convinto a partecipare anche a questo evento! :)

http://www.cloudconferenceitalia.it/2017/

 

 

A breve aggiornerò questo post con altri eventi o anche quelli che ho già inserito, con alcune novità. :)