Navegando em Todos os Posts publicados em »fevereiro, 2012«

FluentIL – Parte 11 – Tornando Cecil (muito) mais amistosa

fevereiro 29, 2012

1

Olá pessoal. Tudo certo!? No post anterior mostrei como alterar assemblies .NET usando Cecil. Entretanto, ficou evidente a dificuldade do processo de Emitting proporcionado pela API. Nesse post, explico o início do processo de adequação do FluentIL para essa library. O código-fonte do FluentIL está disponível no Github (quer contribuir?!) O que iremos fazer?! O… [Leia mais…]

Um universo de possibilidades com Mono.Cecil

fevereiro 28, 2012

2

Olá pessoal. Tudo certo?! Nesse post, mostro como utilizar Mono.Cecil para alterar assemblies .NET. Trata-se de uma excelente alternativa para desenvolvimento de soluções com meta-programação. Também é excelente para desenvolvimento de soluções AOP. Como digo no título, um universo de possibilidades. Como você pode inferir pelo nome, Mono.Cecil faz parte do projeto Mono. Entretanto, pode… [Leia mais…]

Um “helper” para Shallow Cloning (usando emitting em C#)

fevereiro 27, 2012

3

Olá pessoal. Tudo certo?! No post anterior, afirmei que implementar a interface ICloneable dificilmente se justifica como uma boa decisão de design. Entretanto, como seria a abordagem adequada quando precisamos, efetivamente, de clones para nossos objetos!? Além disso, como fazer para que essa abordagem seja, ao mesmo tempo, genérica e com boa performance?! A resposta… [Leia mais…]

Por que implementar ICloneable não é uma boa idéia!?

fevereiro 27, 2012

4

Olá pessoal. Tudo certo?! Implementar ICloneable parece uma decisão razoavelmente simples de design. Não é mesmo?! Se desejamos dar a possiblidade de copiar objetos, implementamos. Caso contrário, não implementamos. Não é isso? Infelizmente, não é! Esse post explica o porquê. Torna a criação de tipos derivados mais complexa Sempre que implementamos uma interface em um… [Leia mais…]

.. E o bom é inimigo do ótimo

fevereiro 26, 2012

0

Olá pessoal. Tudo certo?! Sou ouvinte de um podcast muito bacana. Trata-se do Café Brasil. Nele, Luciano Pires comenta temas variados e provoca a reflexão. Ouvindo o episódio 286 desse podcast, chamado “A fantástica fábrica de estupidez”, tive o prazer de encontrar um texto que vai ao encontro de minhas convicções. Por isso, tomo a… [Leia mais…]

Melhorando a testabilidade através de classes Wrapper

fevereiro 26, 2012

1

Olá pessoal. Tudo certo!? Um dos excelentes aspectos da escrita de testes de unidade é, propriamente, a própria testabilidade. Tornar um código testável implica, forçosamente, na adoção de boas práticas. Dentre todos os benefícios, destaco um: redução do acoplamento. Nesse post, descrevo uma experiência recente onde encontrei dificuldades para aumentar a testabilidade de um código… [Leia mais…]

Criando um “LINQ Query Provider” para Mongo – Parte 2 – OrderBy

fevereiro 25, 2012

3

Olá pessoal. Tudo certo?! O primeiro post dessa série ficou bastante “denso”. Tivemos que começar o suporte a LINQ do zero. Implementamos suporte para filtro, usando a cláusula/operador Where, bem como toda a “tradução” para o modelo de objetos do driver mongo para c#. No post de hoje, vamos continuar o trabalho criando suporte para… [Leia mais…]

Criando um “LINQ Query Provider” para Mongo – Parte 1 – Where

fevereiro 24, 2012

2

Olá pessoal. Tudo certo?! No último post, indiquei como utilizar o driver oficial do MongoDB para C#. Recebi um feedback, pelo twitter, do @breno_ferreira quanto a “sintaxe difícil”, principalmente para consultas. Por causa disso, resolvi começar um  “Linq To Mongo”. Ou seja, um provider que permita fazer consultas no Mongo usando Linq (no lugar da… [Leia mais…]

Brincando com o MongoDB (usando C#)

fevereiro 23, 2012

1

Olá pessoal. Tudo certo!? Esse é um post “just for fun”. A ideia principal é explorar a utilização de MongoDB em aplicações C#. O que é MongoDB?! Usando a definição do site oficial: MongoDB (from "humongous") is a scalable, high-performance, open source NoSQL database. Written in C++! Como aprender MongoDB? MongoDB oferece um shell online… [Leia mais…]

Entendendo a estrutura de uma aplicação WP7

fevereiro 21, 2012

2

Olá pessoal. Tudo certo?! No último post falei sobre como a Microsoft planejou a experiência do usuário para o Windows Phone 7. Nesse post, começo a falar sobre o desenvolvimento de aplicações para a plataforma. Antes de começar Uma das características mais interessantes do Windows Phone 7 é a facilidade relacionada ao desenvolvimento de aplicações… [Leia mais…]

Já é hora de você conhecer (as personas) Anna e Miles!

fevereiro 20, 2012

3

Olá pessoal. Tudo certo?! Este é meu primeiro post (de muitos) falando especificamente sobre o desenvolvimento de aplicações e aprimoramento da experiência do usuário no Windows Phone 7. Nesse primeiro post, pretendo “apresentar” as duas personas, idealizadas pela Microsoft, para orientar o desenvolvimento de toda a experiência do usuário no Windows Phone. Também falo sobre… [Leia mais…]

Monads em C#

fevereiro 14, 2012

3

Olá pessoal. Tudo certo? Monad é uma abstração poderosa que facilita a escrita de soluções elegantes para problemas complexos. É um conceito matemático amplamente utilizado em linguagens funcionais (com destaque para Haskell). Além disso, foi amplamente considerado no design do LINQ. Nesse post, mostro como utilizar essa poderosa abstração em C#. O que é Monad?… [Leia mais…]

Map, Filter e Fold em C#

fevereiro 13, 2012

0

Olá pessoal. Tudo certo?! No paradigma funcional, há três funções, muito comuns, aplicadas a listas e sequências. São elas: Map – uma mesma operação aplicada a todos os elementos de uma lista e/ou sequência; Filter – seleção de elementos de uma lista/sequência, conforme um critério especificado; Fold – “acumulo” de todos os valores de uma… [Leia mais…]

Como Closures funcionam em C#

fevereiro 10, 2012

2

Olá pessoal. Tudo certo?! Uma discussão com o Juan Lopes (@juanplopes) me motivou a escrever este post. Pretendo explicar como Closures são entregues pelo compilador do C#. Uma questão intrigante… Para entender como closures funcionam é melhor examinar um código de exemplo. Observe: Seguindo o caminho de execução:  Main chama a função GetFunc que retorna… [Leia mais…]

Tail Recursion (em C#)

fevereiro 10, 2012

3

Olá pessoal. Tudo certo?! Nesse post, mostro como implementar “Tail Recursions” em C#. Embora o compilador do C# quase não forneça suporte para “Tail Recursion Optimizations”, o JIT em 64 bits fornece. Logo, utilizar técnicas de codificação para “Tail Recursion” pode representar um incremento significativo de performance. Nesse post, além de C#, usaremos um pouco… [Leia mais…]

Tornando o código mais elegante com “Currying” e “Partial Application” (em C#)

fevereiro 9, 2012

3

Olá pessoal. Tudo certo?! Fundamentalmente, programação funcional trata da aplicação de funções e suas combinações para algoritmos mais complexos. Outro dia, mostrei como “combinar” funções usando uma técnica chamada “Combinators” (veja o post). Hoje, mostro como decompor funções complexas usando uma ténica chamada “Currying” para, depois disso, criar composições mais inteligentes através de uma técnica… [Leia mais…]

Conhecendo o Microsoft “Roslyn” CTP – Parte 2 – Verificando o código (Linq To Code)

fevereiro 8, 2012

0

Olá pessoal. Tudo certo?! Nessa série, mostro os fundamentos do projeto Roslyn. Se está chegando agora, considere visitar o primeiro post (acho que vale a pena). Aqui, mostro como gerar e inspecionar uma árvore sintática de códigos em C#. O código que desejamos analisar Para demonstrar as funcionalidades do Roslyn, escrevi um arquivo com um… [Leia mais…]

HTTP Caching e Conditional Get (Last-Modified e ETag) em ASP.net MVC 3

fevereiro 5, 2012

0

Olá pessoal. Tudo certo!? Em um post anterior, mostrei como podemos usar o suporte de caching dos browsers para melhorar o desempenho de nossas aplicações. Naquele momento, mostrei como fazer a implementação “na unha”. Nesse post, mostro como implementar esse benefício utilizando ASP.net MVC 3. As coisas ficam um pouco mais fáceis. Caching simples Considere… [Leia mais…]

Buscando a SIMPLICIDADE

fevereiro 5, 2012

6

Olá pessoal. Tudo certo!? Sempre tive o péssimo hábito de propor soluções complicadas demais, difíceis demais. Tanto para entender, quanto para implementar. Tinha simpatia pelo rebuscado,o (pseudo-)erudito. Sempre fui, não sou (nem quero ser) mais. Recentemente, resolvi iniciar uma jornada particular em busca pela simplicidade. Neste post, compartilho alguns de meus motivos/critérios. O ótimo NÃO… [Leia mais…]

Melhorando o desempenho de aplicações WEB com HTTP Caching e suporte para Conditional Get (usando C#)

fevereiro 3, 2012

1

Olá pessoal. Tudo certo?! Uma das formas de melhorar a performance de aplicações Web é reduzir a quantidade de requests que são realizados para o servidor. Para isso, o sistema de caching dos browsers é um importante aliado. Ele é usado extensamente para armazenamento de recursos estáticos. Nesse post, mostro como suportar caching para recursos… [Leia mais…]