Arduino e Microsoft .NET Framework – Integrando os dois mundos

Arduino é uma plataforma eletrônica de hardware livre. Baseada em um microcontrolador Atmel AVR com suporte de entrada/saída embutido. O principal objetivo da plataforma é criar ferramentas acessíveis, de baixo custo e fáceis de serem utilizadas.

Neste post, será apresentado um modo de comunicação entre uma aplicação Microsoft .NET e um hardware Arduino.

clip_image002

Saiba mais

Captura de dumps de memória com o Debug Diag

Uma das ferramentas mais populares na coleta de dumps de memória é o Debug Diag (http://www.microsoft.com/en-us/download/details.aspx?id=42933). Atualmente na versão 2.1, este utilitário permite que a coleta de dumps seja feita em um formato mais completo, sem perda de informações relevantes.

Uma das principais vantagens do uso do Debug Diag é a coleta de dumps a partir de triggers.

Como apresentado na imagem abaixo, podemos notar que o Debug Diag nos fornece três regras básicas para a criação de triggers coletoras de dumps de memória.

clip_image001

Saiba mais

Feliz Natal 2015

tree

GZipStream – Compress/Decompress

O .NET Framework fornece recursos para compressão e descompressão de arquivos.

Dentre estes recursos temos a classe GZipStream, responsável encapsular manipulações em arquivos no formato gzip. O formato gzip é bastante popular e pode ser encontrado em muitas ferramentas de compressão.

th

Saiba mais

Busca binária

O objetivo deste post é apresentar um meio eficiente de busca de objetos em memória.

O surgimento da sintaxe LINQ, assim como a utilização de query methods, facilitou a busca em memória. Com estes recursos podemos facilmente executar queries em arrays, coleções e listas de tipos genéricos. O uso deste modelo de sintaxe agiliza o processo de desenvolvimento por tornar a busca em memória trivial e de simples codificação.

Mas, ao adotarmos esse modelo de sintaxe, estamos realmente escrevendo código performático? Será que essas consultas em memória são o modelo mais rápido de pesquisa? Não estaríamos perdemos poder computacional ou tempo de processamento ao adotar estes recursos em determinados cenários de pesquisa em memória?

Dada a necessidade de executar consultas eficientes e com baixo custo computacional, passamos a evitar consultas que consumam muitos recursos computacionais e que sejam lentas.

A busca binária é um algoritmo de busca que segue o paradigma da divisão e conquista. Partindo do pressuposto de que o conjunto de elementos está ordenado, são executadas diversas divisões do espaço de busca restringindo o possível local no qual o elemento buscado está posicionado. A imagem a seguir ilustra o processo de divisão do conjunto de elementos realizado pela busca de elementos.

clip_image002

Saiba mais

Erro 404 ao acessar URL sem extensão do ASP.NET MVC no IIS 7 / KB980368

Ao acessar uma URL do ASP.NET MVC, exposto no IIS 7, é lançado o erro 404 Page/Directory not found.

Existem duas maneiras de resolver este erro:

1) Adicionando o atributo runAllManagedModulesForAllRequests na seção Modules do Web.Config.

2) Instalação do KB980368 (http://support.microsoft.com/kb/980368).

A utilização do runAllManagedModulesForAllRequests é necessária para o roteamento de requisições quando não temos o KB instalado, mas a utilização da tag runAllManagedModulesForAllRequests acarreta em overheads de execução desnecessários.

Saiba mais

Padrão Generation Gap

O padrão Generation Gap surgiu da dificuldade de se manter código gerado automaticamente e código escrito manualmente em um mesmo arquivo.

Em primeiro lugar, precisamos contextualizar quando as duas abordagens tornam-se conflitantes.

A partir do momento que temos uma classe gerada automaticamente por alguma ferramenta (por exemplo: Entity Framework Database First) e precisamos adicionar a ela algum comportamento escrito manualmente (algum método, ou propriedade que não será persistida no banco de dados), corremos o risco de perder tais modificações manuais após qualquer atualização da classe gerada automaticamente. Isto é, qualquer modificação gerada a partir de uma atualização do modelo acarretará na perda de qualquer código escrito manualmente.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 77 outros seguidores