Elemar DEV

Negócios, tecnologia e desenvolvimento

Como ‘foreach’ é resolvido pelo compilador C#

Olá. Tudo certo? Considere esse código: ele é escrito pelo compilador assim: Que tem correspondência exata para: Repare que não há qualquer relação com as interfaces IEnumerable, IEnumerable, IEnumerator e … Continuar lendo

12/12/2014 · 4 Comentários

Como o switch é resolvido pelo compilador do C#

Olá. Nesse post pretendo apresentar algumas informações sobre como o compilador do C# resolve o switch. O que eu vou apresentar é baseado em interpretações do código IL gerado pelo compilador. … Continuar lendo

12/12/2014 · 2 Comentários

O que eu aprendi colaborando com um projeto Open Source

Olá. O projeto CodeCracker tem pouco mais de um mês. Entretanto, parece ter mais. Ele me proporcionou muito aprendizado. Neste post, pretendo compartilhar algumas das coisas que aprendi. Pessoas motivadas … Continuar lendo

11/12/2014 · 4 Comentários

Entendendo a compilação do C# (csc.exe e JIT)

Olá pessoal. Em tempos de Roslyn, nunca é demais voltar a discutir o processo de compilação do .NET. Nesse post, apresento um exemplo inspirado em uma apresentação de um engenheiro … Continuar lendo

10/12/2014 · 2 Comentários

Considere métodos de criação “ReplaceXXXX” e “WithXXXX” em objetos somente leitura

Olá. Tudo certo? De uns tempos para cá, certamente influenciado pelo paradigma funcional, venho adotando com grande frequência objetos somente leitura. Um exemplo de objeto somente leitura (em tempo, todo … Continuar lendo

09/12/2014 · 1 comentário

CodeCracker – Parte 8 – Make a variable const whenever it’s possible

Tudo certo, pessoal? Nesse post, apresento a implementação do issue #79 do CodeCracker. A ideia é converter toda variável em constante quando for possível. Analyzing Abaixo, a implementação para identificar … Continuar lendo

01/12/2014 · Deixe um comentário

CodeCracker – Parte 7 – Suggest switch if you have 3 or more nested if / else statements

Olá. Tudo certo? No post de hoje apresento a implementação de mais um analyzer e codefix desenvolvido para o projeto CodeCracker: Suggest switch if you have 3 or more nested … Continuar lendo

25/11/2014 · Deixe um comentário

Multiplicação divertida (em C#)

Olá. Tudo certo? Como multiplicar dois números positivos sem usar o operador de multiplicação? A abordagem mais simples, ao meu ver seria: Entretanto, essa abordagem está longe de ser eficiente. … Continuar lendo

24/11/2014 · 2 Comentários

Pensando produtos inteligentes e conectados (IoT) e a competição

Olá. Tudo certo? É pouco provável que você ainda não tenha ouvido falar em Internet das Coisas. De qualquer forma, é muito interessante pensar no impacto nos negócios que esta … Continuar lendo

24/11/2014 · Deixe um comentário

CodeCracker – Parte 6 – On Linq clauses move predicate from Where to First, Single, etc when applicable

Olá. Tudo certo? No post de hoje apresento a implementação de mais um analyzer e codefix desenvolvido para o projeto CodeCracker: On Linq clauses move predicate from Where to First, … Continuar lendo

20/11/2014 · Deixe um comentário

CodeCracker – Parte 5 – Always use ‘var’

Olá. Tudo certo? Agora que já cobri os fundamentos para que você possa entender e colaborar com o projeto CodeCracker, vou começar a mostrar algumas implementações que estamos fazendo. Começo … Continuar lendo

19/11/2014 · 1 comentário

CodeCracker – Parte 4 – Depurando e Testando

Olá. Tudo certo? Se você já baixou o Visual Studio 2014 Preview, instalou as extensões recomendadas no site do Roslyn e clonou o repositório do CodeCracker, então, já está pronto … Continuar lendo

17/11/2014 · 1 comentário

CodeCracker – Parte 3 – “Arrumando” o código (CodeFix)

Olá. Tudo certo? Na parte anterior, mostrei como “detectar” código que pode ser melhorado através de Diagnostic Analyzers. Agora, vou mostrar como escrever o “CodeFix” para o código detectado. O … Continuar lendo

15/11/2014 · Deixe um comentário

CodeCracker – Parte 2 – Construindo um Analyzer

Olá. Tudo certo? Nesse post, apresento uma breve introdução ao desenvolvimento de “Diagnostic Analyzers” usando Roslyn. O que é um Roslyn Diagnostic Analyzer? Um code analyzer é um “artefato” que … Continuar lendo

15/11/2014 · 4 Comentários

CodeCracker – Parte 1 – O que é? Como colaborar?

Olá. Tudo certo? Bem-vindos ao CodeCracker. Uma ferramenta open source, iniciada por brasileiros, que melhora a experiência de codificação no Visual Studio 2015 (ainda em preview, já disponível para download). … Continuar lendo

15/11/2014 · 3 Comentários

Resolvendo o problema do Caixeiro Viajante usando algoritmos genéticos

Olá. Tudo certo? Este post é uma releitura, em .NET, desse post. Trata-se de uma implementação simples de um algoritmo genético para encontrar soluções boas para o problema do caixeiro … Continuar lendo

29/10/2014 · 2 Comentários

Resolvendo o problema do caixeiro viajante usando Simulated Annealing

Olá. Este post é uma releitura, em .NET, desse post. Quero apresentar uma implementação muito simples da metaheurística “Simulated Annealing” para encontrar soluções boas para o problema do caixeiro viajante. Você … Continuar lendo

28/10/2014 · 1 comentário

Tentando superar “Buy now with one-click” com uma “Wish list”

Olá pessoal. Tudo certo? Eu sempre gostei de ler, estudar e aprender. Mas, já há algum tempo, vinha comprando mais livros do que conseguia ler. Também estava perdendo tempo demais … Continuar lendo

25/10/2014 · 2 Comentários

A busca (não tão) insana pela dívida técnica e o retorno (sofrido) ao Greenfield!

Olá, Alguns fatos sobre a forma como faço o meu trabalho Em busca da dívida técnica Fato 1 No meu trabalho, desenvolvo soluções com considerável complexidade técnica. Meus algoritmos não … Continuar lendo

23/10/2014 · Deixe um comentário

Static Analysis 101 – Parte 2 – Acoplamento aferente e acoplamento eferente (com NDepend)

Olá. Nesse post, sigo discussão sobre análise estática de código. Aqui, trato de acoplamento aferente e acoplamento eferente. Há algum tempo, Leandro Daniel escreveu um ótimo post conceituando os termos. … Continuar lendo

21/10/2014 · 1 comentário

Quando o contexto (enganoso) torna as decisões arquiteturais (bem) mais difíceis (Teenage Sex Pattern)

Olá, Esse post é resultado de uma “provocação” que encontrei no excelente livro Microsoft .NET – Architecting Applications for the Enterprise (2nd edition). Vou compartilhar com vocês e gostaria de … Continuar lendo

18/10/2014 · 3 Comentários

Static Analysis 101 – Parte 1 – O que é?

Olá pessoal. Tudo certo? Este é o primeiro post da série onde apresento técnicas e ferramentas para análise estática de código. O que é análise estática? Segundo a definição da Wikipedia: … Continuar lendo

16/10/2014 · 9 Comentários

O que há de novo no C# 6 – Parte 9 – nameof operator

Olá. Este é o nono post da série onde apresento as novidades do C# 6. Nesse post, apresento o operador nameof. Nunca gostei de ter que usar “strings mágicas” para representar … Continuar lendo

02/10/2014 · 3 Comentários

O que há de novo no C# 6 – Parte 8 – Expression Bodied Members

Olá. Este é o oitavo post da série onde apresento as novidades do C# 6. Nesse post, apresento Expression Bodied Members. Observe o seguinte código: Reparou Length e Scale? Bacana não? São … Continuar lendo

01/10/2014 · 5 Comentários

O que há de novo no C# 6 – Parte 7 – Dictionary Initializer

Olá. Este é o sétimo post da série onde apresento as novidades do C# 6. Nesse post, apresento um novo formato para inicialização de dicionários. Como é no C# 5 Nunca … Continuar lendo

01/10/2014 · 4 Comentários

O que há de novo no C# 6 – Parte 6 – Exception Filters

Olá. Este é o sexto post da série onde apresento as novidades do C# 6. Nesse post, apresento Exception Filters: Até o C# 5, caso desejássemos implicar alguma condicional para o … Continuar lendo

01/10/2014 · 2 Comentários

O que há de novo no C# 6 – Parte 5 – Null-propagating operator

Olá, Este é o quinto post da série onde apresento as novidades do C# 6. Nesse post, apresento uma das novidades mais bacanas (IMHO) do C#6: Null-propagating operator. Esse código do … Continuar lendo

30/09/2014 · 6 Comentários

O que há de novo no C# 6 – Parte 4 – using static

Olá, Este é o quarto post da série onde apresento as novidades do C# 6. Aqui, apresento um recurso muito interessante: fazer “using” de classes para poder evocar membros estáticos … Continuar lendo

30/09/2014 · 4 Comentários

O que há de novo no C# 6 – Parte 3 – Relação entre Explicit Constructors e Primary Constructors

Olá. Tudo certo? Este é o terceiro post da série onde apresento as novidades do C# 6. Aqui, apresento a relação entre explicit constructors (tradicionais) e primary constructors (novidade no … Continuar lendo

30/09/2014 · Deixe um comentário

(WITHDRAWN) O que há de novo no C# 6 – Parte 2 – Primary Construtors

Olá. Tudo certo?! UPDATE: A Microsoft parece ter desistido de implementar essa funcionalidade nessa versão do C# Bem-vindo ao segundo post da série onde apresento as novidades do C# 6 … Continuar lendo

29/09/2014 · 13 Comentários

O que há de novo no C# 6 – Parte 1 – Auto-property initializers

Olá. Tudo certo? Este é apenas o primeiro post da série em que apresento o que há de novo no C# 6. Para testar cada uma das novidades que relaciono, … Continuar lendo

29/09/2014 · 4 Comentários

Encapsulando APIs de nível mais baixo

Olá. Tudo certo? As vezes, precisamos utilizar APIs de nível mais baixo do que aquele que estamos utilizando na aplicação. O que fazer? Isolar ao máximo essa API do restante … Continuar lendo

22/09/2014 · Deixe um comentário

Potencial de paralelismo: Sequencial, “Por tarefa” e “Por dados”

Olá. Tudo certo?! Identificar o potencial de paralelismo de nossos códigos pode nos ajudar a escrever programas mais rápidos e que aproveitam melhor o hardware que temos a disposição. Existem, … Continuar lendo

20/09/2014 · Deixe um comentário

Tente outra vez … (Retry Pattern)

Olá. Tudo certo?! O que fazemos (ou deveríamos fazer) quando, devido a condições circunstanciais, geralmente relacionadas a um instante de execução, vemos nossas aplicações falharem em completar uma tarefa? Tentamos outra vez! Para isso, … Continuar lendo

28/08/2014 · 3 Comentários

Service Health Checking (e Health Monitoring Endpoint Pattern)

Olá pessoal. Tudo bem?! No último post, tratei do “Circuit breaker pattern”, cujo a implementação consiste em uma espécie de proxy que “blinda” recursos externos evitando requisições em momentos de instabilidade e/ou recuperação. … Continuar lendo

26/08/2014 · 2 Comentários

Circuit Breaker Pattern

Olá pessoal. Tudo certo?! Nesse post, falo de um pattern que melhora a estabilidade percebida de nossas aplicações. Trata-se do “Circuit Breaker Pattern”. Ele indica uma forma de tratar instabilidades … Continuar lendo

22/08/2014 · 5 Comentários

Regras! Regras! Regras! – Exemplo trivial de “Business Rule Engine” [Revisado e sem reflection]

Olá pessoal, Esse post é uma revisão do anterior. Graças ao feedback do meu amigo @juanplopes, percebi que o reflection acabou adicionando um bocado de complexidade de implementação. Segue versão … Continuar lendo

06/08/2014 · 6 Comentários

Regras! Regras! Regras! – Exemplo trivial de “Business Rule Engine”

Olá pessoal. Tudo certo?! Nesse post, falo de “rules engines”. Se o conceito é novo para você, recomendo a leitura desse post do Martin Fowler (bem básico, mas didático o … Continuar lendo

06/08/2014 · 1 comentário

Como obter os “bytes” de um tipo primitivo (double, por exemplo)

Olá pessoal. Tudo certo? Quase todo mundo que programa com C# sabe que um double ocupa 8 bytes de memória. Certo?! Mas, como, a partir de um valor, podemos saber … Continuar lendo

16/06/2014 · 3 Comentários

Uma “outra” abordagem para blindar “entidades”…

Olá pessoal. Tudo certo? Há tempos atrás eu propus uma solução “inventiva” e considera, por muitos, complexa para “blindar” entidades. Hoje, apresento outra abordagem, bem mais simples, que não é, … Continuar lendo

02/06/2014 · 2 Comentários

Aplicativos que fazem diferença: Moves e Audible

Olá pessoal. Tudo certo? Diferente do que faço normalmente, hoje quero compartilhar com vocês dois aplicativos que estão incrementando minha rotina: Moves (Facebook) e Audible (Amazon) MOVES Genial! Segundo o … Continuar lendo

29/04/2014 · 3 Comentários

Weak Event Patterns – Parte 3 – Especialização de WeakEventManager (WPF)

Olá pessoal. Tudo certo?! Esse é o terceiro post da série onde explico como implementar “weak events” em .Net. Recapitulando, Weak Events são um “afrouxamento” na relação entre Senders e … Continuar lendo

28/04/2014 · Deixe um comentário

Weak Event Patterns – Parte 2 – Generic Event Wrapper

Olá pessoal. Tudo certo? No post anterior, apresentei uma alternativa para “aliviar” o acoplamento entre objetos que “disparam” eventos e aqueles que “escutam” eventos. Entretanto, a abordagem que eu disponibilizei … Continuar lendo

25/04/2014 · Deixe um comentário

Weak Event Patterns – Parte 1 – Event Wrapper

Olá pessoal. Tudo certo? Eventos são uma abstração extremamente inteligente e poderosa. A sintaxe oferecida pelo C# para suporte de eventos é bela e simples de entender. Entretanto, tem algumas … Continuar lendo

25/04/2014 · Deixe um comentário

E o void voltou…

Olá amigos, Estou muito feliz em anunciar que o Void Podcast está retomando, aos poucos, suas atividades. Ouça e comente o último episódio se deseja que retomemos o projeto. Em … Continuar lendo

22/04/2014 · 2 Comentários

C++/CX – Parte 9 – Exceptions

Olá pessoal. Tudo certo? Este é o nono post da série onde estamos explorando C++/CX – o conjunto de extensões da Microsoft, no C++, para o desenvolvimento de aplicações modernas. O … Continuar lendo

07/04/2014 · Deixe um comentário

Descobrindo Owin e Katana – Parte 8 – Lendo o “Response Body”

Olá pessoal. Tudo certo? Este é o oitavo post da série onde “descobrimos” Owin e Katana. Hoje, mostro como ler o response body. O problema Considere o seguinte código de exemplo. Responda … Continuar lendo

07/04/2014 · 1 comentário

C++/CX – Parte 8 – Delegates

Este é o oitavo post da série onde estamos explorando C++/CX – o conjunto de extensões da Microsoft, no C++, para o desenvolvimento de aplicações modernas. Os temas desse post … Continuar lendo

07/04/2014 · Deixe um comentário

C++/CX – Parte 7 – Propriedades e Enums

Este é o sétimo post da série onde estamos explorando C++/CX – o conjunto de extensões da Microsoft, no C++, para o desenvolvimento de aplicações modernas. Os temas desse post … Continuar lendo

07/04/2014 · Deixe um comentário

C++/CX – Parte 6 – Interfaces

Olá. Tudo certo? Este é o sexto post da série onde estamos explorando C++/CX – o conjunto de extensões da Microsoft, no C++, para o desenvolvimento de aplicações modernas. Básico … Continuar lendo

07/04/2014 · Deixe um comentário

Estatísticas

  • 702,795 hits