sábado, janeiro 29, 2005

Bug no compilador do java 1.3.1

Acho que acabei de encontrar um bug no compilador do java 1.3.1. Não testei no 1.4 e acima pra ver se dá o mesmo resultado. Isso aqui não compila: Object x = true ? new Integer(1) : "string"; Mas isso aqui compila: Object x = true ? (Object) new Integer(1) : "string"; ou isso: Object x = true ? new Integer(1) : (Object) "string"; Alguém já ouviu falar de upcasting?

quarta-feira, janeiro 12, 2005

Software in the night exchanging glances...

Wondering in the night... Ontem a noite eu, Klaus (do Prevayler e Computação Soberana) e Rodrigo (do Boo e Bamboo) ficamos discutindo planos futuros. A brincadeira foi boa, rendeu a criação de um projeto Wiki (qual o nome para ele, hmmm..?) e muitas idéias legais. Pequenos detalhes ficaram retidos no meu banco de memória: - Boo é uma linguagem que vale a pena dar uma olhada. Dei uma sapeada na página hoje cedo e realmente vale a pena olhar ela com cuidado. - Computação Soberana é um conceito meio doido (mas isso eu já sabia), mas tem algumas coisas que a gente pode fazer aqui e agora. Acho que faz a coisa interessante, e mais imediata, são dois conceitos que andam processando na minha cabeça há um tempo: um é Rede Social e outro é Referência Semântica (na falta de um nome melhor). Se juntar os dois conceitos + Computação Soberana... hmm... hmmm... *processando* - Tem mais um um livro pra comprar: Object Oriented Software Construction - Acho que descobri o truque do Google (Será que eu era o único que não tinha sacado? Tão óbvio!), vou tentar fazer o mesmo. Do assunto principal mesmo eu não vou adiantar nada mais do que já adiantei, vamos fazer sair algo primeiro antes de ficar fazendo promessas, certo? ;)

terça-feira, janeiro 11, 2005

A área de T.I. tá ficando maluca ou sou só eu?

Sou só eu que acho estranho? A SUN está querendo propor um uma versão para XML binário... Hmmm... Mas pra eu iria querer isso? E se não é pra um humano ler isso, pq não usamos algum dos vários padrões binários que já existiram e eram muito bons? Acho que os caras estão perdendo o senso de sanidade, ou já perderam, quer ver? Conhece XDoclet, já usou pra configurar EJBs? Aquele negócio que vc coloca no comentário dos Java, passa um extrator e gera arquivos de configuração. Hmmm, vc usa arquivos de configuração pra não fazer configurações hardcoded, certo? Aí o arquivo fica complicado demais e vc volta a colocar a configuração no código... Tem algo errado aqui. É a área de T.I. que está perdendo a sanidade ou sou eu que preciso estudar mais?

Assertion Driven Development

Um tempo atrás, na lista do Test-Driven Development do Yahoo, surgiu um cara que propôs trocar o nome de TDD para ADD (Assertion-Driven Development). Eu até postei um comentário sobre isso. Mas aí a discussão continuou, cada um propôs uma coisa, e ninguém modificou nada. Esses dias atrás senti na pele o problema de colocar a palavra test num método de desenvolvimento. Está tão arraigado na cabeça das pessoas que teste é coisa pra se fazer no final do processo e que é responsabilidade da equipe de controle de qualidade, que eles param de te ouvir assim que vc menciona a palavra test. Acho que é impossível mudar a mente das pessoas num curto espaço de tempo, e é desperdício de fôlego ficar explicando que vc chama de teste uma coisa que não é bem um teste do jeito que o cara conhece. Daí, ao invés de mudar o mundo, acho melhor mudar minha abordagem. Pra mim tá decidido, nunca mais apresento TDD pra alguém como Test-Drive Development, pra mim agora é Assertion-Driven Development e ponto. Além do que, "ADD" é uma sigla muito mais comercial do que TDD.

quinta-feira, janeiro 06, 2005

Truque: Como retornar o número de colunas da última linha.

Quando a gente está fazendo uma tabela e colocando dados da esquerda para a direita, normalmente a última linha fica incompleta.
123
456
78 
Essa tabela, por exemplo, tem só duas colunas preenchidas na última linha. Pergunta! Dado o número de items, quantos items tem na última coluna? Reposta: número de items MOD número de colunas. Nossa tabela acima: 8 MOD 3 = 2. Ou seja, duas colunas na última linha. Legal né? É sim, mas o que acontece se o número de items bater certinho? Tipo, 9 items para 3 colunas? 9 MOD 3 = 0... Hmmm... ZERO não é o número de items da última coluna, o número de items da última coluna é 3. Ok, então, aqui vai um truque para voltar o número exato: (((colunas - 1) + (items MOD colunas)) MOD colunas) + 1 EITA!!! Exemplos pra tentar facilitar um pouco: 7 items, 3 colunas: (((3 - 1) + (7 MOD 3)) MOD 3) + 1 ((2 + 1) MOD 3) + 1 (3 MOD 3) + 1 0 + 1 1 9 items, 3 colunas: (((3 - 1) + (9 MOD 3)) MOD 3) + 1 ((2 + 0) MOD 3) + 1 (2 MOD 3) + 1 2 + 1 3 É isso aí. Pra quem não quer fazer um simples if, ou é um maníaco matemático. Essa é uma solução. Alguém conhece outras?