Archive for the ‘Open Source’ Category.

Agora é multi plataforma!

Olá a todos,

Neste primeiro post de 2017 vou falar de algo que já está afetando a vida dos desenvolvedores: criar software multi plataforma! Há muito tempo se fala neste tipo de desenvolvimento e muito se prometeu com ferramentas e linguagens, algumas um tanto mirabolantes!

Me lembro de ter ido conhecer uma ferramenta Windows que havia sido portada para Linux e quando comecei a fazer perguntas sobre funcionalidades bem básicas a resposta foi:  “Bem, isto ainda não fizemos…”, e nem preciso dizer que instalar a tal ferramenta era coisa para alguns dias de muitos comandos em um sistema Linux. E o pior: nenhuma compatibilidade com o que já existia!

Muita coisa mudou deste então e muitas outras ferramentas e plataformas surgiram, algumas muito semelhantes a que descrevi e outras que nem existem mais!

Como desenvolvedores, e muitas vezes, empresários, é muito complicado ficar apostando em tecnologias que prometem muita coisa e que no final não entregam absolutamente nada!

Primeiro gostaria de falar com vocês sobre desenvolvimento mobile, então vamos imaginar um cenário em que você vai desenvolver uma app: primeiro você faz para Android, afinal é a plataforma líder, depois para iOS e talvez você pense no Windows Phone. Mas o grande problema sempre foi aproveitar o código, e isto nunca foi possível de verdade, porque cada plataforma tem uma linguagem e um jeito de fazer!

Eis que então temos algumas alternativas:

  • Apache Cordova, uma plataforma baseada em HTML+JS+CSS que promete entregar uma app em qualquer plataforma, e realmente ela consegue fazer isto de maneira muito satisfatória! O Visual Studio traz um conjunto de ferramentas para você trabalhar com Cordova que pode ser baixado neste link. Mas o problema é a performance, pois você está rodando uma aplicação com um browser embutido nela, um WebView, e isto pode te trazer alguns inconvenientes! 
  • Algumas outras ferramentas também surgiram com a promessa do desenvolvimento mobile multi plataforma, como: PhoneGap, MonoDroid e finalmente o Xamarin, que agora pertence a Microsoft.

Com Xamarin temos um desenvolvimento realmente muiti plataforma, com o mesmo código. Então podemos desenvolver em C# para Android, iOS e Windows Phone, usando uma única linguagem para todas as plataformas, desenvolvendo somente uma vez!

Mas alguns podem dizer, eu não gosto de Windows, eu uso Linux, uso Mac! E aí que vem a beleza da ferramenta, pois existem versões para Windows, Linux e Mac, usando o Xamarin Studio e mais recentemente o Visual Studio for Mac. Se você estiver a fim de aprender mais sobre Xamarin, recomendo o Monkey Nights, que é um hub de conteúdo sobre Xamarin!

Muito bem, mas o mundo não é so desenvolvimento Mobile, temos também Desktop e Web, como fica isto no mundo multi plataforma ?

Se você é um desenvolvedor Asp.Net e trabalha com C#, a boa notícia é que agora podemos desenvolver uma aplicação que roda no Windows (IIS) e no Linux (com diversos servidores web) e isto traz, uma quebra de paradigma para desenvolvedores acostumados com o mundo Windows: a famigerada LINHA DE COMANDO, isto mesmo, você terá que digitar muito comando e não pense que isto é ruim não! Veja, eu gosto muito da IDE do Visual Studio, acho realmente muito produtiva, talvez a mais produtiva do mercado, mas quando eu trabalho com projetos no Git, eu prefiro usar a linha de comando, sabe por quê, simples: eu tenho mais controle sobre o que está acontecendo e talvez a IDE ainda não tenha todos os comandos que eu preciso…

Entâo caro amigo desenvolvedor, se acostume a ver as telas abaixo:

image

SNAGHTML37ff22fb

Esta segunda tela é um terminal Linux para um servidor da empresa. E isto é bem interessante, já que até algum tempo atráz tudo era somente Windows, e agora temos um SQL Server rodando no Linux. Então tem dias que eu trabalho mais no Linux que no Windows!

Mas por quê eu estou usando Linux afinal de contas ? Simples, por quê eu estou desenvolvendo para web multi plataforma usando Asp.Net Core, estou usando C# e criando ferramentas que podem ser hopedadas em Windows ou Linux.

Então vamos ao contexto: a Microsoft vem trabalhando em uma nova versão do Asp.Net, que foi totalmente reescrito, que roda muito mais rapido que o atual e principalmente, é totalmente multi plataforma: Windows, Linux e Mac.

Mas não precisa arrancar todos os cabelos por causa do terminal do Linux, pois o Visual Studio 2015 já trabalha com Asp.Net Core, basta instalar as ferramentas deste link. E se você gosta de coisas novas, assim como eu, também pode usar o Visual Studio 2017 RC, lembrando que ainda está em beta.

Temos também uma ferramenta fantástica e multi plataforma, chamada Visual Studio Code, e esta ferramenta já é uma das mais utilizadas para desenvolvimento Javascript, pois é muito simples de trabalhar e conta com centenas de plugins que permitem a ela trabalhar com diversas linguagens! Eu já trabalhei com Arduino e Java no VS Code, veja alguns exemplos de linguagens:

image

Bom, eu falei tudo isto para enfatizar que existe uma nova Microsoft, que trabalha com Open Source (veja meus slides aqui) e que já é muiti plataforma, pois até Linux já existe dentro do seu Windows 10, se não acredita, veja este post aqui.

Então meu amigo desenvolvedor, é hora de quebrar paradigmas, de estudar Linux, de pensar diferente, pois o mundo é multi plataforma! Trabalhar com Windows, Linux, Mac, Visual Studio, VS Code, é o nosso dia a dia!!!

E viva a diversidade!

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.

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.

GitHub–Boas Práticas

Pessoal,

Durante o último MVP Summit, em Redmond nos Estados Unidos, tive o prazer de gravar um vídeo (em inglês) com o Phill Hack e mais alguns MVPs e RDs sobre boas práticas em projetos open source no Github. Se você trabalha com GitHub ou com projetos open source, vale a pena assistir ao vídeo e entender um pouco mais do que é praticado mundo afora!

O link para o vídeo é este aqui.

Abaços,
Carlos dos Santos.