Microsoft Open Source

Na última quinta-feira (22/09) estive em Ilha Solteira/SP na Unesp falando sobre Microsoft Open Source para o pessoal de Engenharia Elétrica. Valeu pessoal, a papo foi muito legal.

Nâo sei se todos sabem, mas existe muito código fonte sendo compartilhado pela Microsoft no GitHub, veja: https://github.com/microsoft. Mais interessante ainda é abrir um Linux dentro do Windows 10, quem diria! Eu fiz um outro post sobre isto.

Recentemente também a Microsoft ficou em primeiro lugar no ranking de empresas que colaboram no GitHub:

image

E para você que ainda está incrédulo, aqui estão os PPTs da minha palestra. E as fotos da minha visita aqui no facebook.

Abraços e até a próxima,
Carlos dos Santos.

C# 7.0–Tuples

Olá pessoal,

Há algum tempo atrás eu publiquei um post falando sobre Tuples em C#, que é um recurso bem interessante para retorno de múltiplos valores, principalmente quando você não quer criar uma classe somente para isto.

Agora com o C# 7.0 (ainda em preview) as Tuplas ganharam novos recurso que facilitam ainda mais a sua utilização, agora podemos dar nomes aos elementos, faclitando ainda mais o nosso código.

Para executarmos os exemplos você vai precisar baixar o Visual Studio “15” Preview 4. Atenção: se você ja tiver uma versão anterior deste Visual Studio, precisará removê-la antes de instalar o Preview 4.

O preview 4 é uma nova IDE, com novos recursos e um novo modelo de instalação, veja:

image

Você pode escolher o que achar interessante e depois clicar em “Install”. Esta instalação nos dá uma idéia do que esrá por vir, um modelo bem mais intuitivo de setup.

Depois de instalado o Visual Studio “15” Preview, vamos criar um projeto Console:

image

Inicialmente vou mostrar como estâo as tuplas hoje. Para isto vou criar um método que retorna vários parâmetros:

   1: class Program

   2: {

   3:    static void Main(string[] args)

   4:    {

   5:       var ret = BuscaNomeLimite(1);

   6:       Console.WriteLine($"Nome: {ret.Item1} - Limite: {ret.Item2}");

   7:    }

   8:  

   9:    static Tuple<string,decimal> BuscaNomeLimite(int ID)

  10:    {

  11:       return new Tuple<string, decimal>("Carlos",1000);

  12:    }

  13: }

Isto já facilita muito o desenvolvimento, principalmente quando você não quer criar uma classe para fazer isto, mas ao mesmo tempo gera um código um tanto confuso, pois os parâmetros sâo nomeados como Item1, Item2, etc.

Agora vamos ao C# 7 e ver como isto melhorou, e muito!!! Entâo vamos fazer um upgrade no nosso método usando a sintaxe nova, mas como ainda estamos em Preview, é necessário instalar o pacote System.ValueTuple usando o Nuget. Para isto clique com o botão direto no seu projeto e selecione “Manage Nuget Packages”, depois marque a opção “Include prerelease” e depois digite “tuple” na caixa de pesquisa:

image

Clique no botão Install e siga os passos! Pronto, agora vamos melhorar nosso código:

   1: static void Main(string[] args)

   2: {

   3:    var ret = BuscaNomeLimite(1);

   4:    Console.WriteLine($"Nome: {ret.nome} - Limite: {ret.limite}");

   5: }

   6:  

   7: static (string nome, decimal limite) BuscaNomeLimite(int ID)

   8: {

   9:    return ("Carlos", 1000);

  10: }

Veja que com a nova sintaxe, você pode nomear os campos da Tupla, ou seja, pode usar nomes mais intuitivos e a sintaxe é bem simples. Basicamente você coloca os nomes e tipos entre parênteses, no mesmo local onde antes estava a Tuple<>:

image

E no retorno você coloca os valores, também entre parênteses, na mesma sequência da definição do médodo:

image

Você pode também nomear os parâmetros no retorno, para isto basta colocar o nome do parâmetro e dois pontos, seguido do valor de retorno:

image

Tuplas são um recurso muito legal do C#, e agora, com a nomeção dos campos, seu código vai ficar ainda mais simples de ser entendido!

Abraços e até a próxima!

Carlos dos Santos.

Tem um Linux no meu Windows 10!

Fala pessoal,

É isto mesmo que você leu, tem um Linux dentro do Window 10, e não é uma máquina virtual, como muitos estão pensando, é um sub-sistema baseado no Ubuntu.

Se alguém falasse isto há alguns anos atrás, eu provevalmente diria que é loucura, mas o mundo mudou e a Microsoft também. Nós últimos anos a Microsoft vem trabalhando mais fortemente com comunidades open source, e o Linux é uma delas.

Em um mundo voltado para nuvem, não faz mais sentido a Microsoft focar somente no Windows e prova disto é que o Linux é muito utilizado nas máquinas virtuais do Azure, isto mesmo, na nuvem Microsoft, existe Linux.

Noticias como a “Microsoft Ama o Linux”:

image

E o “SQL Server Ama o Linux”:

image

Talvez soem um tanto estranho para quem utiliza somente o Windows no dia a dia, mas como eu disse antes, o mundo está mudando e principalmente, está se tornando multi plataforma  “de verdade”. De verdade, quero dizer que você consegue construir um software realmente multiplataforma, onde o mesmo código roda, por exemplo, no Windows, Linux e Mac. Isto pode ser feito com o .Net Core/Asp.Net Core e Xamarin, só para citar alguns exemplos.

Mas voltando ao título do artigo, como assim tem um Linux dentro do meu Windows ? Simples, meu caro leitor, a Microsoft colocou um sistema Linux junto com o seu Windows 10, não uma máquina virtual, mas um sistema nativo Linux, baseado no Ubuntu.

O que vamos mostrar agora vale para quem já instalou a versão de aniversário do Windows 10 ou está no Programa Insiders.

Então vamos lá:  para instalar o Linux no seu Windows, abra o “Painel de Controle” e vá em Programas, e depois em “Ativar ou Desativar Rescursos do Windows”:

image

Agora selecione a opção “Windows Subsystem for Linux”:

image

Clique em OK para instalar! Provavelmente você terá que reiniciar a máquina!

Depois de instalado, você abre o Prompt de Comandos e digita “bash”:

image

Agora a mágica acontece, você está de fato em um Linux, mas compartilhando os seus discos e pastas, veja por exemplo o comando ls:

image

Vamos ver a versão do Linux, usando o comando “lsb_release –a”:

image

Vamos por exemplo instalar o editor de textos nano. Assim como no Ubuntu Linux, vamos usar o comando apt-get:

apt-get update
apt-get install nano

Mas antes de criar um arquivo e mostar no windows, vou mudar de diretório no Linux. Veja que estamos em /mnt/c e agora vou para o meu Temp:

cd /mnt/c/Temp

nano teste.txt

image

Agora vamos salvar o arquivo e verificar no Windows:

image

O sub-sistema ainda está em beta, mas muitos programas linux funcionam e muitos mais irão funcionar em novas versões, isto é só o começo de uma grande resolução e eu espero que você fique antenado nas mudanças!

Abraços e até a próxima,
Carlos dos Santos.

Serializando JSon com JIL

Fala pessoal, tudo bem!

Hoje vou falar sobre uma biblioteca muito legal para serializar e deserializar objetos Json, pois este tipo de dados está cada vez mais comum com o advento das APIs web.

Um exemplo de dado em Json é o próprio WebAPI que faz parte do Asp.Net MVC, pois ele retorna basicamente dados em Json. Então qual o problema a ser resolvido ?

Você recebe um dado em Json, que é basicamente um texto, e precisa manipular seu conteúdo através de uma classe! E é aí que entra o JIL !!!

A biblioteca JIL, criada pela equipe do site StackExchange desempenha este trabalho com muita rapidez e simplicidade! Esta biblioteca está disponível através do NuGet.

Vamos codificar para ver!

Vou criar um projeto bem simples do tipo Console Application no Visual Studio 2015, mas você pode usar outras versões do Visual Studio também:

image_thumb1

E vamos instalar o JIL usando o NuGet Package Manager Console (Tools/NuGet Packager Manager/Packager Manager Console):

image_thumb3

Vamos agora criar um classe e trabalhar com a serialização e deserialização:

   1: public class Cliente

   2: {

   3:         public int ID { get; set; }

   4:         public string Nome { get; set; }

   5:         public string Cidade { get; set; }

   6: }

Agora vamos trabalhar com o JIL, veja como é simples:

Vamos criar um objeto do tipo cliente e serializar:

   1: var cli = new Cliente() { ID = 1, Nome = "Carlos", Cidade = "CPP" };

   2:  

   3: var json = JSON.Serialize<Cliente>(cli);

   4:  

   5: Console.WriteLine(json);

Criamos o objeto e passamos como parâmetro para a classe JSON.Serialize()

O retorno é este:

image

Agora vamos fazer o inverso, pegar uma string Json e converter para um objeto:

   1: var jsonData = "{\"ID\":1,\"Nome\":\"João\",\"Cidade\":\"SP\"}";

   2: var cliente = JSON.Deserialize<Cliente>(jsonData);

   3:  

   4: Console.WriteLine("ID: {0}\nNome: {1}\nCidade: {2}\n", cliente.ID, cliente.Nome, cliente.Cidade);

Temos o dado jsonData, que poderia ter vindo de qualquer serviço na web, e depois chamamos o método JSON.Deserialize(). Pronto, temos nosso objeto cliente!

Veja o retorno:

image

Veja o código todo aqui:

   1: using Jil;

   2: using System;

   3:  

   4: namespace ConsoleApplication2

   5: {

   6:     class Program

   7:     {

   8:         static void Main(string[] args)

   9:         {

  10:             var cli = new Cliente() { ID = 1, Nome = "Carlos", Cidade = "CPP" };

  11:             var json = JSON.Serialize<Cliente>(cli);

  12:             Console.WriteLine(json);

  13:  

  14:             var jsonData = "{\"ID\":1,\"Nome\":\"João\",\"Cidade\":\"SP\"}";

  15:             var cliente = JSON.Deserialize<Cliente>(jsonData);

  16:  

  17:             Console.WriteLine("ID: {0}\nNome: {1}\nCidade: {2}\n", cliente.ID, cliente.Nome, cliente.Cidade);

  18:  

  19:  

  20:         }

  21:     }

  22:  

  23:     public class Cliente

  24:     {

  25:         public int ID { get; set; }

  26:         public string Nome { get; set; }

  27:         public string Cidade { get; set; }

  28:     }

  29: }


Abraços e até a próxima,

Carlos dos Santos.

Visual Studio Summit

Fala pessoal,

Neste úiltimo final de semana tive o prazer de novamente ser palestrando do Visual Studio Summit, um evento sensacional que aconteceu na Microsoft em SP e contou com cerca de 300 pessoas.

Fiquei muito feliz em poder realizar duas palestras (com repeteco) sobre RaspBerry PI e .Net Core. Muito obrigado a todos que assistiram as minhas quatro palestras, todas as vezes estava com a sala cheia!

Veja aqui algumas fotos e os slides do RaspBerryPI e .Net Core.

Abraços e até a proxima,
Carlos dos Santos.

JoinCommunity 2016

Olá pessoal,

Neste final de semana tive a grata satisfação de palestrar no evento Join Community em Goiânia, a convite do Marcelo Paiva. Um evento muito bem organizado, quie contou até com tradução para Libras, o que mostra a importância dos organizadores profissionais com deficiência auditiva. Confesso que fiquei supreso!

Neste evento fiz a palestra de abertura e falei sobre o SonarQube, uma ferramenta fantástica para medir a qualidade do código fonte, e não estou falando apenas de código .Net, você pode analisar Java, HTML, CSS e muito mais! Se você ainda não usa o Sonar na sua empresa, começe agora mesmo, pois é free e fácil de implementar nos slides eu coloquei os links para download.

No sábado falei sobre Microsoft OpenSource, uma palestra de quebra de paradigma e que sempre gera supresa, mas como tenho falado, você precisa conhecer a “Nova Microsoft”, veja nos slides!

Os links para os slides são estes:

Sonarqube
Microsoft OpenSource

Confira também algumas fotos do evento!

Abraços e até a próxima,
Carlos dos Santos

Palesta sobre Microsoft Open Source no FLISOL de Marília

Hoje foi dia de Global Azure Boot Camp, um evento sobre Azure realizado no mundo todo, no mesmo dia. Mas eu tive outra missão este ano, falar sobre Microsoft open source em um evento de software livre, o FLISOL.

Falar de Microsoft Open Source parece ser algo inimaginável, mas é a pura realidade e hoje mostrei isto na palestra em Marília. Fico muito feliz que tenham gostado da apresentação e principalmente entendido que a Microsoft mudou e muito!

Gostaria de agradecer aos professores Caio, Leonardo e Fabio pelo convite e, como sempre, pela excelente recepçao! Muito obrigado!

Prepare-se para uma nova Microsoft!

Os slides do evento estão no meu SlideShare e as fotos no Facebook.

Abraços e até a próxima,
Carlos dos Santos.

CodeCracker 1.0

Depois de um longo tempo e muito trabalho, temos o oriulho de anunciar a versão 1.0 do CodeCracker, uma das mais populares ferramentas para análise estática de código do mercado, e totalmente free e open source.

Só relembrando, Análise Estática de Código, é o fato de conseguirmos analisar seu código direto no editor, sem a necessidade de compilar. Com o compilador Roslyn (.Net Compiler), que veio junto com o Visual Studio 2015, se tornou possível escrever códigos (analisadores e fixers) que atuam no fluxo da compilação, pois o Roslyn atua como “Compiler as a Service”, um serviço de compilação que podemos consumir.

Falando do CodeCracker, este projeto começou em novembro de 2014 com 3 MVPS: Carlos dos Santos (eu), Giovanni Bassi e Elemar Junior. Nós iniciamos este projeto com o intuito de aprender Roslyn, e ralamos muito pois nesta época quanse não existia documentação ou exemplos sobre Roslyn. Conforme fomos trabalhando, começamos a receber ajuda de outros desenvolvedores ao redor do mundo, criando tarefas, detectando bugs e implementando código.

Somo gratos a todos estes desenvolvedores e colaboradores, sem eles este projeto não teria se tornado realidade. Para nós é uma felicidade enorme ver que este projeto tomou proporções mundiais, sendo utilizado inclusive pela Microsoft em algumas demonstrações e eventos. Mais felizes ainda pelos feedbacks que recebemos quase diariamente no projeto, o que nos dá mais vontade de criar mais analisadores e fixers!

O projeto não acaba aqui não, esta é somente a versão 1.0, temos muitas tarefas para serem desenvolvidas e muitas novas funcionalidades a serem criadas, O CodeCracker é um projeto que a todo momento recebe solicitações de funcionalidades e melhorias! E se você ainda nào está colaborando, começe agora mesmo!

Para conhecer um pouco mais do projeto, veja este vídeo que gravamos para o Channel 9.

Quer colaborar com o projeto, acesso o GitHub agora mesmo!

A a nossa versão 1.0 está descrita aqui!

Abraços e até a próxima.
Carlos dos Santos.

C# Interativo (REPL)

Alguma vez você já pensou em testar aquele trecho de código sem precisar compilar toda a solução ?

Acho que este é um sonho de vários desenvolvedores. Será que dá para executar só aquele “pedacinho” do código ? Normalmente você tem que executar o codigo todo e fazer um braek point e depois rodar o debug sem parar, ou mais ainda, quem de nós que nunca criou um programa console só para testar um trecho de código ?

Bom, para acabar com este sofrimento, o Visual Studio introduz uma funcionalidade de C# interativo ou REPL (read-eval-print-loop), como é também conhecido, e que nada mais é do que um shell de execução interativa para a linguagem.

Vamos a um exemplo prático, mas você precisa ter o Visual Studio Update 1 ou Update 2, no meu caso estou com o Update 2.

Vou criar um programa Console em C# para trabalharmos com o exemplo, mas você pode executar em qualquer projeto C# ou VB:

image

Após criar a solução, vamos abrir o console interativo:

image

Feito isto, teremos o console na parte inferior da IDE do Visual Studio:

image

Aqui podemos fazer várias coisas, como por exemplo escrever um código qualquer, que será executado imediatamente, por exemplo:

image

Veja que eu criei uma lista e depois adicionei dois elementos. Ao final digitei “lista.Count” e o resultado está na tela! Simples assim!

Agora vamos imaginar que você já tenha um código e queira testá-lo no modo interativo. Mais simples ainda, basta selecionar o trecho do código e clicar com o botão direito do mouse, escolhendo a mesma opção “Execute in Interactive”:

image

O resultado será a mesma janela do modo interativo, mas com o seu código carregado:

image

Logicamente que códigos mais complexos também podem ser utilizados. Vamos então fazer um exemplo acessando um banco de dados de modo totalmente interativo:

> #r "System.Data.dll"
> using System.Data.SqlClient;
> var conexao = new SqlConnection("data source=(local); initial catalog=northwind; integrated security=true");
> conexao.Open();
> conexao.Database
"northwind"
> conexao.Close();
>

Na primeira linha estamos carregando a DLL System.Data para o contexto do compilador interativo e após isto temos o código para se conectar no SQL e por fim estou apenas mostrando o nome do banco de dados.

Acredito que agora vocês estão imaginando as possibilidades!!!

PAra complementar, neste link tem um guia várias informações interessantes que podem complementar seu estudo!

Abraços e até a próxima,
Carlos dos Santos.

Desenvolva com Microsoft sem gastar dinheiro

Ola pessoal,

Esta semana tivemos fortes emoções no mundo Microsoft durante o evento Build. Foram tantos anúncios que levaremos semanas para entender tudo que aconteceu e principalmente o que vai acontecer daqui para frente, mas resumindo em poucas palavras: Muita coisa agora é open source, de graça mesmo!

Nesta onda de ferrmentas gratuitas e open source, gostaria de apresentar a vocês o portal Visual Studio Dev Essentials:

image

Bom, mas o que tem de tão especial neste portal ? Simples, todas as ferramentas que você precisa para desenvolver uma aplicação, vamos ver como funciona ?

Primeiro acesse o portal, clicando em “Ingressar agora”, coloque seu live ID e senha:

image

E pronto, veja a quantidade de softwares disponíveis:

image

Se você clicar em Download, verá uma lista separada por tipos de ferramentas:

image

E você pode ter acesso tambem ao SQL Server Developer Edition, que agora é FREE:

image

E não podemos esquecer do Xamarin, que a partir de agora também possui versões gratuitas:

image

Como eu disse no facebook, este é o começo de uma nova era para desenvolvedores, fique atento pois muita coisa está mudando!

Abraços e até a próxima,
Carlos dos Santos.