Exceptions: Sempre use try-finally

A interface IDisposable e try-finally tem uma relação muito próxima. IDisposable é uma interface que implementa o método Dispose, que realiza a limpeza dos recursos de forma determinística. Normalmente esse método é chamado dentro de um bloco finally. Existe a forma equivalente de chamar o Dispose através do using. A regra é simples: se o…

0

Exceptions: The timeout period elapsed prior to obtaining a connection from the pool

Use try-finally para resolver seu problema de “The timeout period elapsed prior to obtaining a connection from the pool”. Já comentei nos artigos anteriores sobre as construções: try-catch try-catch-finally Dessa vez vou falar quando usar o try-finally. Exemplo Criei um programa que executa uma Stored Procedure no SQL Server. A versão é bastante simplificada, mas…

0

Cuidado com o GC.Collect

Você já usou o comando GC.Collect? Há inúmeros casos que esse comando resolve problemas de memory leak. Entretanto, esse procedimento é somente uma solução temporária e não resolve a real causa raiz. Pense: se o Garbage Collector (GC) do .NET faz a limpeza automática de memória, então por que rodá-lo manualmente? Nesse artigo, vou abordar…

0

Deploy do ambiente de Staging

Esse é um artigo rápido para falar de recursos úteis do WebApp: Integração contínua com GitHub Console administrativa com linha de comando Monitoração proativa do Application Insight Configuramos a aplicação Web em apenas 5 minutos no Azure App Services. Web App No portal do Azure, há um dashboard com as principais métricas de requisições, throughput…

0

Exceptions: Evite o try-catch

Nesse artigo vou falar para evitar o uso do try-catch e try-catch-finally. No artigo anterior sobre try-catch-finally, comentei sobre o tratamento de exceptions usando o try-catch ao invés de try-catch-finally. Pense duas vezes antes de adicionar um bloco de catch para capturar o erro. Na dúvida, evite o uso do try-catch. O que é uma…

0

Exceptions: Não use try-catch-finally

Essa semana estava revendo um trecho do ARDA (https://github.com/DXBrazil/Arda) e os primeiros issues e pull requests estavam relacionados com o tratamento de exceção. Por coincidência, nessa mesma semana, fui perguntado sobre as melhores práticas de Exceptions sobre como e quando usar. Comecei olhando a documentação do C# sobre o try-catch-finally. Try-catch-finally https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/try-catch-finally Nesse artigo, há…

2

Bots, Devops e Docker

Participamos de um Hackathon de Bots. Whitepaper: Bots, DevOps e Docker – Lições aprendidas em 48 horas [Download do Whitepaper] Já faz quase um ano que nos juntamos para trabalhar em um projeto de Bot. Nosso time era composto por pessoas com diferentes especialidades e, por isso, decidimos empregar as técnicas de DevOps para garantir…

0

Falha Nossa no Git (TOP 5)

Fiz aqui um TOP 5 das coisas mais estranhas que notei no nosso repositório do ARDA. Seguem os links dos repositórios: Antigo: https://github.com/DXBrazil/Arda_old Recente: https://github.com/DXBrazil/Arda Bons desenvolvedores mantém o histórico do GIT linear e conciso usando um workflow definido (ex: gitflow), squash commit, rebase, etc. Nosso time é bom, mas ignoramos essas práticas e mantivemos todos…

2

Adaptando o time ao Git

No começo do projeto, nosso time do ARDA tinha 4 desenvolvedores ativos. O primeiro passo foi criar um repositório Git para começarmos a trabalhar no código. Por que criar um repositório de código? Essa é uma das perguntas que não sei responder – como é que alguém consegue trabalhar sem controle de versão? Eu sei…

2

Todo time tem um estagiário

Durante uma apresentação sobre Microserviços, o meu amigo Fabricio Sanchez apresentava o ambiente de desenvolvimento do ARDA (https://github.com/dxbrazil/arda). Eu não estava nesse evento, mas soube que a demonstração falhou no momento da integração entre os microserviços. Naquele naquele dia, “por coincidência”, nosso estagiário fez um checkin de código. Não é uma afirmação, mas suspeito que…

0

7 Motivos para não usar o Entity Framework

Vamos falar sobre 7 motivos para não usar o Entity Framework (EF) e 1 ótimo motivo para usá-lo imediatamente! Nos artigos anteriores, fui levantando alguns problemas que encontramos ao longo do nosso projeto ARDA. Entity Framework: Code-First, Database-Never Entity Framework: Broken LINQ Entity Framework: A vida do DBA Antes de comentar sobre o bom motivo…

0

Entity Framework: A vida do DBA

Vamos falar sobre o Entity Framework do ponto de vista do DBA. Veja os demais artigos: Entity Framework: Code-First, Database-Never Entity Framework: Broken LINQ 7 Motivos para não usar o Entity Framework Iniciei o SQL Profiler no projeto do ARDA (https://github.com/DXBrazil/Arda) para coletar as queries que estão rodando no banco de dados. Rapidamente encontrei algumas…

8

Entity Framework: Broken LINQ

Não tenho nada contra o LINQ. Gosto da funcionalidade e acho sua sintaxe bastante expressiva: Se quisesse evitar duplicação de usuários, bastaria adicionar uma chamada ao Distinct. Por outro lado, a implementação procedural equivalente já não seria tão elegante. Existem vários exemplos que mostram agrupamento e agregação: LINQ query examples https://msdn.microsoft.com/en-us/library/gg509017.aspx Embora o LINQ seja…

3

Entity Framework: Code-First, Database-Never

Conheço desenvolvedores que gostam do Entity Framework (EF), mas nunca vi um DBA que fale bem dele. Para explicar parte desse fenômeno, quero dar um exemplo baseado no projeto do ARDA (https://github.com/dxbrazil/arda). [UPDATE 12/07] Obrigado ao André Baltieri por gravar um vídeo com uma explicação tão didática. Depois de assistir ao vídeo, já estou entrando em contato…

20

ASP.NET x NodeJS e MongoDB

Nosso time está acostumado com a stack de tecnologia WINS (Windows, IIS, .NET, SQL Server). Começamos o projeto ARDA (https://github.com/dxbrazil/arda) pensando no stack MEAN: MongoDB, Express.js, Angular, NodeJS. Queríamos colocar o Nginx na frente dos servidores Node, acessar um banco Mongo, guardar o código no GitHub, fazer o build no Jenkins e o deployment em…

0

Criando a Arquitetura do ARDA

ARDA foi nosso projeto interno de 2016. Gastei inúmeras horas discutindo a arquitetura e as tecnologias envolvidas, mas o aprendizado aconteceu somente quando mergulhei na codificação. O código-fonte está aqui: https://github.com/dxbrazIl/arda Antes de começar a analisar o código, é importante dar um pouco mais de contexto. Afinal, eu nem disse para que serve o Arda!…

0

GitHub e Open Source

O futuro da Microsoft é Open Source. Há 3 anos atrás não me imaginava falando isso. Hoje não tenho dúvidas de que a Microsoft abraçou o Open Source como parte fundamental de seu negócio. Uma das manifestações mais claras é a forma que os funcionários são encorajados a participar no GitHub. GitHub Embora estivesse sumido…

0

Cloud, Cloud, Cloud

Recentemente participei de duas discussões técnicas com clientes, que me fizeram as seguintes perguntas: Por que Cloud é mais segura do que meu data center? Não sei se o custo da Cloud é tão favorável. Por que migrar? Estive trabalhando com o Microsoft Azure há quase 2 anos e curiosamente tive muita dificuldade para responder….

2

As 9 Regras Ninjas de Performance

Esse post resume muita coisa do que já passei. Resolvi compilar uma série de regras para abordar os problemas mais comuns de performance. Essas são as “regras ninjas” para ajudar a guiar o trabalho do dia a dia e atingir bons resultados em pouco tempo.   REGRA 1: DISK – Monitore o consumo de recursos…

9

A História do Hekaton – Parte 3

Originalmente publicado no Lab27: http://www.lab27.com.br/a-histria-do-hekaton-parte-1/     Bem vindo ao último post da série Hekaton! No primeiro post da série, disse que o Hekaton é completamente diferente do DBCC PINTABLE. No segundo post, expliquei um pouco sobre as mudanças que ocorreram no Hekaton em relação ao projeto inicial. Agora quero terminar falando sobre a integração…

4