Extension Methods e interfaces

Com certeza não colocaria a implementação de uma rotina de comparação de propriedades entre duas instâncias distintas de um dado objeto (que possam retornar um dicionário contento apenas o que existe de diferente entre elas) como sendo algo complexo, na verdade existem diversas maneiras de implementar esta solução. A título ilustrativo poderíamos elencar algumas idéias como, por exemplo escrever um de/para manual diretamente nos objetos², o uso de reflection para varrer as propriedades de escopo público de qualquer objeto da aplicação, ou até mesmo se formos pensar completamente out of the box, trabalhar com o compare entre as strings XML serializadas dos objetos em questão.

Mas vamos adicionar ao requisito principal ( comparar objetos) um outro requisito que diz respeito a impossibilidade de alterarmos a implementação atual dos objetos em questão (ex: estes objetos estão ‘trancados’ em um assembly que não temos acesso / não são de nossa responsabilidade) e, existe também a necessidade de obtermos o máximo de performance desta rotina. Um detalhe importante relativo ao lado da performance é que, eventualmente, poderemos trabalhar com objetos muito grandes e complexos (propriedades com lista / dicionários de outros tipos do sistema) que mudam com o tempo sem que todos os envolvidos no projeto sejam notificados. Agora ficou divertido!

Pra que toda a solução proposta aqui no post fique bem clara (e ninguém queira me queimar sob acusação de magia negra), vamos começar bem do começo.

Continue lendo

Anonymous type para todos!

É, como previsto, demorou um tempo entre meu último post e este. Neste post, abordarei uma situação que aconteceu comigo hoje e achei por bem compartilhar o caso e o desfecho. Fato é que acho que encontrei uma forma de passar Anonymous Types por parâmetros e consumi-los futuramente sem precisar fazer a gambiarra sugerida no MSDN. Calma que eu explico…
Continue lendo

Etiquetado , , ,

Lista para leitura – Microsoft Research

Na tentativa de manter posts fresquinhos por aqui, segue uma pequena lista dos tópicos, textos e ferramentas que mais me chamaram a atenção nos últimos dias (todos parte da Microsoft Research):

e, meu predileto: Infer.Net

Etiquetado , , , , , , ,

Escopo no window.setTimeout

Sim, mais um micropost. Agora para falar de um detalhe relacionado a esta função do JavaScript que vez ou outra causa uma dor de cabeça na hora de usar.

O problema

Imagine que você tem o seguinte código:

var MeuObjeto = function () {
            var _intervalo = 1000;
            this.Rodar = function () {
                alert("rodou!");
                window.setTimeout(function () { this.Rodar() }, _intervalo);
            }
        }

Ao que parece, tudo certo, certo? Errado! Continue lendo

Etiquetado ,

DIY – Faça sua parte!

Quem me conhece sabe que por questões de criação (graças a Dna. Mãe! :D) eu to sempre tentando me envolver em projetos que visam difundir o conhecimento que acumulei durante os anos que trabalho na área. Faz coisa de dois anos dei o primeiro passo neste sentido (que infelizmente não foi muito feliz) e, agora estou tentando uma nova empreitada. Continue lendo

Etiquetado , , ,

(To.Double() || !To.double()) { return “That’s the question”; }

Aconteceu hoje de um cliente me questionar sobre a existência de um eventual overhead gerado por boxing e unboxing de variáveis do tipo Double (big D) contra a utilização de double (small d). Após explicar a ele que isto não existe pois ambas as variáveis são armazenadas no stack, notei que havia ficado aquela pitada de desconfiança e, para fechar o assunto de forma adequada, preparei um pequeno exemplo, segue:

Continue lendo

Etiquetado , , , , , ,

DSL usando M

Como todas as outras coisas da minha lista de “TODOs”, a linguagem M é uma das que mais tinha destaque e finalmente consegui um tempo para enfrentar o processo de aprendizado a fim de tirar o melhor proveito do que ela se propõe a resolver.

Conceitualmente, a linguagem M se baseia em quatro pilares: Linguagem, dados, constraints e transformação. Vamos a eles. Continue lendo

Etiquetado , ,

Quick Update: Layer Validation

Eu sempre me perguntei: Quando será que farão (Microsoft) uma ferramenta que possa ser usada pra impedir que aquele programador preguiçoso atrapalhe todo o planejamento arquitetural do projeto. A resposta aparentemente chegou em forma de uma Feature do VS2010. Continue lendo

O tempo passa, o tempo voa, mas o EntityFramework continua estranho!

Não rima, mas é verdade.

Faz mais de um ano eu escrevi um post em meu outro blog (agora migrado pra cá) sobre minhas primeiras impressões quanto a ferramenta de dados lançada junto ao .Net framework 3.5 (SP1),  conhecida popularmente como Entity Framework e, para minha surpresa, o motivo que me fez não usar a solução em NADA no passado deve ser a mesma que me prevenirá de usá-la na versão atual.

Continue lendo

Etiquetado

Redes Neurais – C# – Hopfield

Continuando o artigo anterior de Redes Neurais para C#, vamos agora entrar no glorioso mundo das redes neurais de Hopfield, esta que é muito provavelmente o tipo mais simples de implementação para ANN. Em uma definição resumida do formato em questão, direi que trata-se de uma rede que contem uma única camada, completamente conectada e auto associativa, onde, por auto associativa quero dizer que uma vez que um padrão seja identificado, o mesmo será retornado. Continue lendo

Etiquetado ,
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.