Desenvolvimento Efetivo na Plataforma Microsoft: o livro.

Desenvolver software é complexo. E fazer isso de forma ágil, manutenível, gerando soluções escaláveis, performáticas, seguras e com alta disponibilidade é mais complexo ainda.

Diante desses desafios, o time de engenheiros de suporte a campo Modern Apps Brazil decidiu por reunir um conjunto de práticas e lições aprendidas em campo com a plataforma Microsoft em um livro. Esses engenheiros são focados na resolução de problemas críticos relacionados a ALM, IIS e .NET Framework na plataforma Microsoft.

clip_image001

Leia mais deste post

Projetos open source no GitHub

Olá,

Tenho dois projetos open source no GitHub. Tenho a intenção de nos próximos meses migrar outros projetos nos quais tenho trabalhado (ou que já trabalhei) e compartilha-los.

Estes dois projetos atualmente são:

– Pantheon Repository – este é um repositório genérico de acesso a dados. Seu objetivo é facilitar a utilização do Entity Framework em projetos grandes. Sua url é essa: https://github.com/FerHenrique/PantheonRepository. Já falei sobre este projeto neste post: https://ferhenriquef.com/2013/03/28/construindo-camadas-de-acesso-a-dados-parte-iii-repositrios-genricos-pantheon/

– Owl – este é um framework para construção de documentos do Microsoft Office. O objetivo deste projeto é facilitar o uso do OpenXML, encapsulando comandos comuns utilizados na construção de documentos. Tenho trabalhado neste projeto nos últimos dois meses. Teremos mais atualizações logo mais. A url deste projeto é: https://github.com/FerHenrique/Owl

Leia mais deste post

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

Leia mais deste post

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

Leia mais deste post

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

Leia mais deste post

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.

Criando um componente SQL CLR para o registro de mensagens no event log do Windows

O Common Language Runtime é o coração do .NET Framework. O SQL Server fornece recursos que permitem a incorporação de componentes CLR ao seu ambiente de execução, desta forma podemos construir stored procedures, triggers, user-defined functions, user-defined types e user-defined aggregates utilizando código gerenciado.

Este post descreve os passos necessários para criação de um componente SQL CLR para o registro de mensagens no event log do Windows a partir da execução de stored procedures.

Leia mais deste post