Archive for the ‘TI’ Category

Compartilhe suas coisas…

quarta-feira, 26/03/2008

Página inicial do shared stuffO google está com um novo produto beta (como sempre, né?) que permite que você compartilhe reportagens/posts/artigos que você encontrar na net e achar interessante.

Este produto é o Google Shared Stuff. Ao acessar esta página talvez você receba o aviso de que não há nada compartilhado, mas à direita, no canto superior, ha a opção “Sign in”. Faça o login com a sua conta do google e você já será levado para a sua página de coisas compartilhadas.

Compartilhando um item…Depois basta você ir no botão à direita (note o círculo na imagem) e arrastar para a sua barra de favoritos. Isso criará um link que sempre que você clicar irá enviar a página que vc está vendo para o seu shared stuff, ou coisas compartilhadas, conforme a segunda imagem.

O mais legal é que as pessoas podem assinar um RSS e acompanhar as coisas que você está compartilhando. Se você não sabe o que RSS, por hora entenda que é um mecanismo que permite que você seja notificado sempre que um site tiver o conteúdo atualizado.

Os meus itens compartilhados, por exemplo, estão neste endereço. Para visitar a minha página de itens compartilhados, acesse este endereço aqui.

Quem me mostrou isso foi o meu amigo Marcos Toledo, que disponibiliza os shared stuffs dele aqui.

Anúncios

Erros bizarros

sábado, 15/12/2007

Olhem só estas as imagens de alguns erros bizarros no Windows. É um “melhor” que o outro. Hehehehe.

🙂

Como saber de qual jar uma classe foi carregada

quarta-feira, 18/07/2007

Este é um post técnico, sobre Java. Se que costuma vir aqui querendo saber a respeito da minha vida ou buscando resumo de livros pode estranhar um pouco.

Vou colocar esta dica aqui para evitar que outras pessoas tenham o mesmo problema que eu tive no meu trabalho. Quem achou este código foi o meu amigo Marcos Toledo, enquanto me ajudava com meu problema.

O problema que tinha era descobrir de qual jar uma classe java estava sendo carregada. No meu caso eu havia colocado uma classe C, com um novo método M dentro de um jar J.

Acontece que quando eu executava minha aplicação eu recebia um “NoSuchMethodError”, pois não era possível localizar o método M dentro da classe C.

Se eu coloquei o método na classe e a minha aplicação disse que não achou, era óbvio que ela estava olhando no lugar errado. Estava sendo carregada uma classe C de um lugar onde ela (por desatualização) não tinha o método M. Mas onde?

Usando as linhas de código abaixo, consegui descobrir de qual arquivo jar a classe C estava sendo carregada. Eis o código:

Class cls = MyFoo.class;
ProtectionDomain pDomain = cls.getProtectionDomain();
CodeSource cSource = pDomain.getCodeSource();
URL loc = cSource.getLocation();
System.out.println(loc);
// imprime algo como “c:/jars/MeuJar.jar”

Fazendo isso descobri que minha classe estava sendo carregada de um arquivo J.jar_BKP, que era um backup da versão anterior do arquivo, antes de eu adicionar o método M na classe.

Isso tudo só ocorreu pois o JBoss, atrevido, abre qualquer arquivo para ver o que tem dentro. Eu achei que ele só abriria o .jar, mas ele abre o .BKP, ou qualquer outra coisa que você colocar na extensão.

E como arquivos .BKP, estão na frente os .JAR na ordem alfabética, ele carregava primeiramente a classe desatualizada.

Mas no fim deu tudo certo.

Sugiro que você construa uma classe utilitária, com métodos estáticos, para que possa chamar este código em qualquer parte da sua aplicação sempre que precisar.

De outro mundo

quarta-feira, 14/03/2007

Acho que o submarino utiliza um calendário diferente do nosso.

Olha só a data de término da promoção deles:
tilt.jpg

Sensacional!

Evitando filas

sábado, 03/03/2007

Você é daqueles que precisa ir até a uma agência bancária sempre que o seu boleto do aluguel ou plano de saúde vence pois o seu internet banking não deixa você pagar boleto vencido?

E chegando lá, tem que esperar um longo tempo numa fila maior que o mundo? Seus problemas acabaram!

Vou mostrar aqui como ‘enganar’ o seu internet banking para que você consiga pagar um boleto padrão FEBRABAN já vencido. Isso que eu vou mostrar não é ilegal, e utiliza apenas alguns artíficios matemáticos e um pouco de conhecimento que quem está na área de TI acaba adquirindo.

Tomemos o exemplo da numeração de um boleto meu:

  • Vencimento: 20/02/2007;
  • Valor: R$ 58,11;
  • Valor dos juros e mora: R$ 0,19 por dia, conforme instruções no boleto;
  • Data efetiva do pagamento: 02/03/2007;

O boleto possuía a seguinte representação numérica:

23792.77409 90070.360061 37000.235004 1 34230000005811

Embora apenas a parte em negrito importe, caso você queira saber, os 3 primeiros números(237 nesse caso) são o código do banco que emitiu o boleto, que no meu caso foi o Bradesco.

O que você precisa saber é que número 1, que está sozinho é apenas um dígito verificador e por hora não importa.

Após ele, no começo do último bloco de números estão os valores 3423. Este número representa a data do vencimento, que no caso é 20/02/2007. Quando a FEBRABAN criou o padrão definiu-se uma data inicial para todos os boletos, que em 20/02/2007 era 3423 dias atrás.

Como eu paguei o boleto em 02/03/2007, basta adicionar 10 ao valor 3423, obtendo 3433. Lembre-se, Fevereiro só teve 28 dias!

Pronto agora o seu internet banking já vai ‘entender’ que o boleto vence em 02/03/2007 e não vai te bloquear.

Mas não é só isso. Você está pagando um boleto atrasado e há multa para isso. Não adianta dar uma de esperto, pois quando o banco informar o pagamento ao recebedor ele vai ter o controle da data de vencimento e pagamento e vai te cobrar a diferença depois.

Então, no meu caso eu calculei a multa prevista: R$ 0,19 por dia de atraso. Em 02/03/2007 eram 10 dias, que resulta em R$ 1,90 de multa.

O valor do meu boleto agora passa a ser R$ 58,11 + R$ 1,90, que resulta em R$ 60,01. Este é o valor que o caixa calcularia para você.

Os números à direita, a partir de onde identificamos a data, no último bloco de números, representam o valor. No caso, sem os zeros é 5811.

Já vimos que o valor do boleto mudou, logo altere este valor para 6001. Caso o valor fosse maior que R$ 100,00, por exemplo, você poderia apagar um zero à esquerda.

Pronto, você já pode pagar o boleto. A representação final do código de barras fica assim:

23792.77409 90070.360061 37000.235004 1 34230000005811 = original
23792.77409 90070.360061 37000.235004 1 34330000006001 = modificada

Caso você tente pagar e o seu internet banking diga que o dígito verificador é inválido, vá trocando o 1(lembra dele?) por outros números até dar certo. São no máximo 10 tentativas incluindo o zero.

É isso aí, a partir de agora você nunca mais vai precisar gastar seu tempo do almoço na fila do banco!