May 30 2008

Futuro sistema de autenticação dos bancos

Autor: Marcos Dell Antonio - Categorias: Cotidiano

Do jeito que as coisas caminham os passos para autenticar online em um banco serão mais ou menos assim:

  1. Informe o número da conta;
  2. Informe a senha;
  3. Informe a frase;
  4. Informe o código do cartão na posição N;
  5. Informe o seu CPF;
  6. Informe a sua data de nascimento;
  7. Informe quantos carros estão estacionados na rua da sua casa;
  8. Informe o número de títulos da seleção brasileira de futebol;
  9. E por aí vai…

O Bradesco já está no caminho certo. As quatro primeiras etapas ele já “oferece”. Vamos ver até onde vai essa brincadeira.

Ps: só para contextualizar, estou postando essa inutilidade pois recentemente recebi um cartão do Bradesco com uma infinidade de números e na hora do login preciso informar um deles conforme o solicitado. Ou seja, sem cartão, sem login. Já me bastam os cartões de crédito… agora preciso carregar também um cartão de números (!).

Até +.

Comentários Faça o seu comentário

May 30 2008

Erro ao compilar o web site: aspnet_merge.exe exited with code 1

Autor: Marcos Dell Antonio - Categorias: .NET

Quando um erro deste tipo acontecer sugiro que você copie e cole a mensagem no Google (ou outro sistema de busca) para ver se alguém já passou pelo mesmo problema. Em último caso, visite algum fórum e deixe sua dúvida lá.

Quanto ao erro, acontece quando o web site é compilado e provavelmente existem duas classes com o mesmo nome. Mas e aí, como diagnosticar isto?

A melhor maneira é habilitando uma descrição mais detalhada do status do build. Para isto, vá até o menu Tools / Options / Projects and Solutions / Build and Run. Ao clicar neste item aparecerá um combo com a descrição MSBuild project build output verbosity onde você pode selecionar como é que será gerada a saída do build na Output Window. Escolha a opção Detailed.

Outra dica importante é como encontrar o erro na Output Window, pois com a opção Detailed marcada a aparecerão muitas informações. Então para facilitar utilize o search (ctrl+f) e pesquise por “error”.

Mais informações? Faça como eu: search!

Boa noite.

Comentários Faça o seu comentário

May 17 2008

Convert e Parse

Autor: Marcos Dell Antonio - Categorias: .NET

Há um bom tempo já me perguntam qual é a diferença entre os métodos da classe Convert e o método Parse de algumas classes. Confesso que também não sabia a resposta até ontem.

O artigo Conversão de Tipos - Convert x Parse publicado no site Linha de Código pelo Caique Dourado aborda muito bem o assunto, assim como o post int.Parse vs Convert.ToInt32 no blog do Felipe Camilo.

Basicamente funciona assim: se o argumento do método Convert.ToInt32 for null, então o resultado é 0 (zero). Caso contrário, será chamado o método int.Parse para fazer a conversão.

Até +.

Comentários Faça o seu comentário

May 17 2008

Interfaces IComparer e IComparable

Autor: Marcos Dell Antonio - Categorias: .NET

As interfaces IComparer e IComparable muitas vezes confundem a cabeça dos novos programadores pelo fato de terem nomes parecidos. Entretanto, é este nome complicado que facilita o entendimento de cada uma delas.

- Interface IComparer

Qualquer classe que implemente IComparer pode ser chamada de “comparadora” (comparer), ou seja, uma classe que pode fazer comparações entre dois objetos. Portanto, nada mais lógico do que esta interface definir um método chamado Compare e que recebe dois objetos para serem comparados e retorna um inteiro com o resultado. Veja um exemplo:

Classe Produto
Definição da classe Produto

Implementação da interface IComparer
Implementação da interface IComparer

Exemplo de utilização da interface IComparer
Exemplo de utilização da classe que implementa IComparer

É claro que existem outras imeplementações mais otimizadas para os trechos de código acima, mas fiz questão de deixar explícita a lógica para facilitar o entendimento.

Na implementação da interface o retorno do método será -1 quando o valor do produto 1 for menor que o 2, 1 quando for maior e 0 (zero) quando os dois valores forem iguais.

Esta interface também possui uma implementação genérica, a IComparer<T>.

- Interface IComparable

Se uma classe que implementa IComparer é considerada “comparadora”, então uma classe que implementa IComparable pode ser considerada “comparável” (comparable).

O método definido pela interface IComparable é o CompareTo. Ele recebe um objeto por parâmetro e retorna um inteiro com o resultado da comparação. Veja um exemplo:

Implementação da interface IComparable
Implementação da interface IComparable

Exemplo de utilização da classe que implementa IComparable
Exemplo de utilização da classe que implementa IComparable

Da mesma forma que no exemplo anterior, fiz questão de deixar explícita a lógica para facilitar o entendimento e, portanto, deve ficar claro que existem implementações mais otimizadas para esta situação.

A idéia neste exemplo é tão simples quanto a anterior: o retorno do método será -1 quando o valor do produto atual (this) for menor que o comparado, 1 quando for maior e 0 (zero) quando for igual.

Esta interface também possui uma implementação genérica, a IComparable<T>.

É isso ai!

Este post foi elaborado com base na explicação do Ray Hsieh no post IComparable vs IComparer do site byes.com. Gostei da abordagem dele.

E mais uma vez indico o livro Microsoft Visual C# 2005: Passo a passo, que aborda este e vários outros assuntos sobre C# e .NET.

Até +.

Comentários Faça o seu comentário

May 17 2008

HybridDictionary, Hashtable e ListDictionary

Autor: Marcos Dell Antonio - Categorias: .NET

Tenho certeza que muitos desenvolvedores conhecem muito bem a classe Hashtable. Entretanto, alguns deles (e isso inclui até mesmo os mais experientes) desconhecem a HybridDictionary e a ListDictionary.

A função das três é a mesma: armazenar uma lista de objetos no formato key/value, ou seja, cada item indexado por uma chave. Até aqui nenhuma novidade.

O detalhe é que a ListDictionary foi criada e otimizada para armazenar no máximo até 10 itens, enquanto que a Hashtable suporta muito mais do que isso com um ótimo desempenho.

Na prática podemos pensar assim: a coleção armazenará até 10 itens? Se sim, use ListDictionary, caso contrário use Hashtable.

Mas e quando não sabemos quantos itens a coleção irá armazenar? Aí é que entra a HybridDictionary. Ela foi criada para ser flexível, ou seja, enquanto o número de itens for pequeno uma estrutura do tipo ListDictionary será utilizada para armazená-los. Quando este número de itens crescer, eles serão automaticamente armazenados em uma Hashtable.

Confira esta e outras dicas sobre coleções no livro Microsoft Visual C# 2005 - Passo a passo.

Fonte: blog do Yow-Hann Lee

Até +.

Comentários Faça o seu comentário

May 16 2008

Desabilitando um Validator com Javascript

Autor: Marcos Dell Antonio - Categorias: .NET

Para desabilitar um Validator do ASP.NET através de uma função javascript basta utilizar o seguinte trecho de código:

Função para desabilitar um Validator por JavaScript
Função para desabilitar um Validator por Javascript

A função ValidatorEnable, que acompanha o framework ASP.NET, pode ser utilizada tanto para habilitar quanto para desabilitar um Validator, dependendo do último parâmetro (true habilita e false desabilita).

Fonte: Blog do Jonas Bush

Não deixe de conferir também os livros Microsoft ASP.NET 2.0: Passo a Passo e Javascript: guia de consulta rápida, que abordam este e outros assuntos.

Até +.

Comentários Faça o seu comentário

May 16 2008

Algumas dicas rápidas sobre Reflection

Autor: Marcos Dell Antonio - Categorias: .NET

Antes de tudo não esqueça do using System.Reflection. Agora as dicas:

- Carregar uma DLL

Carregar DLL usando o método LoadFile da classe Assembly
Exemplo de como carregar uma DLL com o método LoadFile da classe Assembly

- Obter as classes da DLL

Obter as classes de uma DLL
Exemplo de como obter as classes de uma DLL usando o método GetTypes

- Obter os métodos de uma classe

Obter os métodos de uma classe
Exemplo de como obter os métodos de uma classe usando o GetMethods

- Obter os parâmetros de um método

Obter os parâmetros de um método
Exemplo de como obter os parâmetros de um método usando o GetParameters

Yah? :)

Boa noite.

Comentários 1 comentário

May 13 2008

Como percorrer uma coleção que implementa ICollection?

Autor: Marcos Dell Antonio - Categorias: .NET

Talvez o título correto do post deveria ser “Como percorrer uma coleção que implementa IEnumerable?”. Entretanto, eu achei melhor utilizar ICollection pois normalmente as propriedades são declaradas com este tipo.

A ICollection é a interface básica para grande parte das coleções do .NET Framework. Ela herda diretamente de IEnumerable e, portanto, pode ser percorrida através de um IEnumerator.

Exemplo:

Exemplo de como percorrer uma ICollection
Exemplo de como percorrer uma ICollection

É uma dica simples, mas que as vezes pelo fato de só utilizarmos outras construções acabamos esquecendo desta.

Até +.

Comentários Faça o seu comentário

May 12 2008

E não é só porque é Java…

Autor: Marcos Dell Antonio - Categorias: Cotidiano

… mas eu odeio isso quando vou instalar algum software/update:

Update do java

O pior de tudo é que o checkbox veio marcado. Daí o cara vai com pressa fazer o NNF (next, next and finish) e créu!

Isso também acontece na instalação do Live Messenger. Lá é pior, parece que a Microsoft quer te enfiar pela garganta o Live Writer e mais uns outros três softwares.

Comentários Faça o seu comentário

May 09 2008

Aproveite as vantagens de ser PJ

Autor: Marcos Dell Antonio - Categorias: Cotidiano

Muitos profissionais da nossa área (TI) trabalham como Pessoa Jurídica (PJ), ou seja, abrem uma empresa para prestar serviço para outra. Entretanto, o que grande parte deles não sabe é que podem tirar um grande proveito disto através das associações de empresários.

Aqui em Florianópolis, por exemplo, existem diversas associações onde os empresários podem se filiar para obter vantagens em inúmeras situações. Alguns dos benefícios são:

  • Desconto em planos de saúde;
  • Desconto com serviços de advogados;
  • Desconto para a divulgação de vagas em emissoras de Rádio e TV;
  • Desconto para locação de veículos;
  • Desconto em academias de ginástica/musculação;
  • Desconto em clínicas de estética;
  • Desconto em óticas;
  • Desconto com instituições de ensino.

A lista é gigante e varia conforme a associação.

Normalmente para fazer parte de uma organização deste tipo você deve pagar um valor mensal que não é muito alto. A Associação Comercial e Industrial de Florianópolis (ACIF), por exemplo, cobra algo em torno de R$ 30,00. Já a Associação Catarinense de Empresas de Tecnologia (ACATE) cobra aproximadamente R$ 70,00.

O que muda de uma para a outra são os convênios e a mensalidade, mas normalmente sempre há um ótimo custo/benefício.

Você, PJ, fique atento! Se bobiar até consegue comprar um carro em nome da empresa e obter um ótimo desconto. :)

Até +.

Comentários Faça o seu comentário

Próxima página »