quarta-feira, 16 de novembro de 2016

Gerando classes c# do JSON

Conforme a resposta no stackoverflow da pergunta "How to auto-generate a C# class file from a JSON object string [closed]" há 3 boas formas de gerar classes c# de um json:

  • Usar a ferramenta web json2csharp, sem precisar instalar nada.
  • Se você tiver o plugin Web Essentials no Visual Studio, use Edit > Paste special > paste JSON as class.

sexta-feira, 4 de novembro de 2016

Habilitando Análise de Código (Code Analysis) no Visual Studio

Habilitar a análise de código (Code Analysis) pode ajudar a melhorar a qualidade do seu código - já que com ele é possível ter relatório sobre violação de regras de projeto e de programação definidas na Microsoft .NET Framework Design Guidelines. Isso pode ser feito facilmente clicando com o botão direito no projeto e indo em property. Na aba Code Analysis marque a opção Enable Code Analysis on Build.





Ao habilitar esta opção, em toda compilação de projeto a análise de código será feita e avisos serão adicionados em pontos do código que devem ser avaliados.

Os tipos de avisos que podem ser adicionados são:
  1. Fazer disposes de fields que estão em classes e implementam a interface IDisposable
  2. String.Format com parâmetros em quantidade diferente do esperado
Para ver a lista completa de avisos veja o FxCop Warnings.


Referências:

How to: Enable and Disable Automatic Code Analysis for Managed Code

Code Analysis for Managed Code Overview

Documentação MSDN do FXCop


quarta-feira, 2 de novembro de 2016

Entendendo a requisição HTTP e seu caminho pela internet

O podcast DNE 77 entrevistou o PotHix, que comentou do livro que escreveu pela casa do código, desconstruindo a Web inspirado após fazer a palestra do vídeo abaixo:

Os slides da palestra estão disponíveis no SlideShare Desconstruindo a Web.

No vídeo é explicada toda resolução da requisição HTTP passando por:
  1. Interpretação do texto digitado pelo usuário no navegador, inclusive para saber se é um termo de pesquisa (que direciona para alguma engine de pesquisa como o Google) ou uma url que deve buscar em algum servidor
  2. Verificação se há algo no cache do navegador
  3. Se for url, resolução do DNS (Domain Name System), passando por cache do navegador, do sistema operacional.
  4. Uso do comando strace do linux, para analisar as chamadas do sistema pelo chrome (Para mais informações achei o post Analisando aplicações Linux com strace e ltrace do Sergio Prado)
  5. Resolução do DNS, inclusive a priorização entre ipv6 e ipv4
  6. Explicação do DNSTracer (Post com explicação em português do DNSTracer)
  7. Explicação do UDP e TCP
  8. Explicação do HTTP e HTTPS (Artigo explicando sobre HTTPS "The First Few Milliseconds of an HTTPS Connection")
  9. A apresentação foca em Http v1. Para saber um pouco mais sobre HTTP v2, e todos seus ganhos, tem o podcast Hipsters.tech #13 HTTP/2: magia com o novo protocolo)
  10. Uso do comando traceroute do linux
  11. Explicação do recebimento da requisição pelo Servidor proxy HTTP (No exemplo NGINX)
  12. Recebimento da requisição Servidor de aplicação (No caso Rack, Ruby e Rails) e seu retorno até o navegador
  13. Explicação de como o navegador funciona (Inspirado no artigo How Browsers Work: Behind the scenes of modern web browsers)

A apresentação cita várias fontes consultadas, algumas colocadas acima, dentre elas, o vídeo lúdico explicando como a internet funciona (Dawn of the Net - How the Internet works) abaixo: