sábado, outubro 07, 2006

Novo endereço

Este blog mudou de endereço !

Acesse http://log4dev.wordpress.com.

Motivos da mudança ?

Bom, inicialmente foi porque o blogger nos deixou quase uma semana fora do ar. Depois de alguns dias fui atrás de novas opções, e descobri o WordPress.  Obviamente, neste dia, o blogger nos colocou no ar novamente. Mas Chegamos à conclusão que o WordPress oferecia umas funcionalidades bem interessantes, como busca e categorização, além de ser um projeto aberto.

Este blog continuará no ar....pelo menos por algum tempo.

Atenciosamente

Equipe Log4Dev

terça-feira, setembro 26, 2006

Longevidade dos Macs

Visitem o site http://www.lisa2.com/.

Nada demais..apenas algumas poucas páginas HTML bem simples. O interessante do site é que ele roda num Apple Lisa, o primeiro computador desenvolvido pela Apple, no início dos anos 80!!!! O site fornece a configuração da máquina e mostra fotos.

Aqui em casa tenho um Mac SE, comprado em 1989, com 2MB de RAM, 20MB de HD e 8MHz de clock. Ele ainda dá no couro, tem um ótimo editor TeX, um Word de 400k, um jogo de Xadrez, Mah-Jong....deu vontade de montar um servidorzinho nele. O problema é que não tenho placa Ethernet. Mas já vi na internet placas por poucos dólares. Quem sabe :-)


Interfaces

Outro dia, li este artigo do Joel que faz um review às avessas de um celular, e me lembrei de um problema de interfaces que eu presenciei recentemente.

Estava no Banco do Brasil, esperando na fila para usar a única máquina que emitia cheques da agência. Na minha frente, um senhora estava tentando fazer algo bem simples: imprimir um extrato. A sequência era mais ou menos essa:

  1. Insere e retira o cartão do leitor
  2. Selecione a opção desejada (são necessários uns 3 cliques até selecionar Extrato impresso)
  3. Digite sua senha de 6 digitos
  4. Digite seu código de 3 letras
  5. Insira e retire seu cartão para confirmar
Neste momento, se tudo desse certo, o extrato seria impresso. Só que no caso dela, provavelmente o cartão estava bloqueado por algum motivo. O resultado era que a seguinte mensagem aparecia na tela: Cartão bloqueado, utilize Terminal BB. A senhora em questão olhava a mensagem estupefata e repetia a operação....istou durou uns 10 minutos, até ela desistir.

É interessante analisar um fato: a senhora esta numa agência do Banco do Brasil, também conhecida como BB, usando um Terminal. Dificilmente consigo achar uma definição melhor para isso do que Terminal BB. O seja, basicamente o sistema mandava ela utilizar um terminal do banco do brasil pra resolver a questão do cartão dela, coisa que ela já estava fazendo, e mesmo assim não deu certo.

Isto já aconteceu comigo ! E devo dizer que ainda não sei como o Terminal BB pode me ajudar, porque eu pesquisei várias opções e nenhuma delas era a boa. Quando bloqueei meu cartão, a única salvação foi ir até a minha agência de origem e desbloquear com o gerente. Daí, ia até o terminal bb pra emitir uma nova senha.

segunda-feira, setembro 25, 2006

Lambda Probe

Pra quem desenvolve ou monitora aplicativos rodando em Tomcat/JBoss, a ferramenta LambdaProbe pode ser de grande valia. Este aplicativo web, que roda dentro do próprio servidor de aplicações, fornece uma interface web bastante intuitiva fornecendo uma grande quantidade de informações úteis. Dentre elas, a lista de aplicativos instalados e ativos no servidor, número de sessões por aplicativos, objetos salvos na sessão, datasources, memória utilizada e acesso aos logs de servidor. Além disso, permite executar deploy, undeploy, start e stop de cada aplicativo. Pode ser instalado a partir do site www.lambdaprobe.org

sábado, setembro 23, 2006

Funções inline 2

O meu último artigo com o título de "Funções inline" acabou gerando uma contestação interessante, dizendo que o artigo ao qual eu me referenciava não se tratava de funções inline mas, sim, de conceitos relativos a uso de funções em linguagens que suportam programação funcional. Bom, como não sou dono da verdade, fui atrás de uma definição formal de funções inline e eu estava errado. Certamente um melhor título para o artigo seria "Funções e programação funcional" ou alguma coisa do tipo. Para deixar os conceitos mais claros, segue uma boa definição de funções inline. Segundo a definição formal, funções inline são parecidas com o conceito de macros que aparece em muitas linguagens de programação. Eu acabei usando o termo funções inline de forma indiscriminada no meu artigo para referenciar a capacidade de se declarar funções anonimamente na mesma linha em que se está chamando uma outra função (isto, em inglês, acaba sendo chamado como "inline" também, mas significa outra coisa). Enfim, espero que esteja esclarecido este ponto. Sempre é bom ouvir outros pontos de vista e esclarecer nomenclaturas! :)

domingo, setembro 17, 2006

NeoOffice Aqua

A versão Aqua do NeoOffice já está disponível para download. Pra quem não sabe, o NeoOffice é um porte do pacote OpenOffice nativo para o Mac OS X. O OpenOffice tem um porte oficial para Mac, mas depende do uso do servidor X pra funcionar. O endereço para download do NeoOffice é http://www.neooffice.org/.

sábado, setembro 16, 2006

Java.io.File

Outro dia estava desenvolvendo um programa em Java e precisei manipular alguns arquivos. Até ai, tudo bem. Java, para variar, possui um conjunto de classes em sua API padrão específica para tratamento de arquivos no pacote java.io. Mais especificamente, eu estava usando a classe java.io.File, que possui uma abstração para acesso de arquivos independente do sistema operacional. Foi ai que tive um problema inesperado quando precisei de criar um link simbólico. Para aqueles que não estão acostumados com o conceito, um link simbólico é, simplificadamente, um arquivo especial que no fundo só é um apontador para outro arquivo. Quem quiser maiores informações pode ler aqui. Este conceito de arquivo é muito usado em sistemas *nix, mas hoje ele está presente em outros sistemas também, como o Windows. Apesar de ser um conceito muito bem difundido, para meu espanto, a classe java.io.File não consegue criar um link simbólico! O engraçado é que ela faz várias outras coisas: cria arquivos, cria diretórios, apaga arquivos, renomeia arquivos... Mas não cria links simbólicos! Imaginei que poderia haver alguma outra forma de se criar um link simbólico em Java, mas após uma pesquisa rápida não achei nenhuma solução prática que não fosse a execução direta no sistema operacional do comando que cria links simbólicos, o que não é uma solução muito boa pois é dependente de sistema operacional e, se estamos programando em Java, uma das coisas que provavelmente estamos buscando é portabilidade (e, no meu caso, isto é verdade). Para aumentar ainda mais minha perplexidade, achei um bug aberto no bug tracker da Sun descrevendo este problema em 1997. Só que o bug continua aberto e sendo atualizado com informações. Um dos últimos posts neste bug diz que talvez no Java 7 (que ainda está meio longe de aparecer, ainda estamos no Java 5) a interface para manipulação de arquivos em Java irá mudar (http://bugs.sun.com/bugdatabase/view_bug.do;:YfiG?bug_id=4042001 e http://bugs.sun.com/bugdatabase/view_bug.do;?bug_id=4313887). Provavelmente esta funcionalidade foi deixada de lado na classe Java.io.File para que Java pudesse manter compatibilidade com todos os sistemas operacionais que rodam Java. No entanto, por ser uma funcionalidade muito aceita e muito útil, acho que o certo seria termos uma interface Java.io.IFile que possuisse todos os métodos e, cada sistema operacional teria sua implementação especifica desta interface. Estes detalhes, inclusive, poderiam ser totalmente abstraídos para o desenvolvedor, que poderia continuar usando a classe Java.io.File. A única coisa é que se ele tentasse criar um link simbólico em um sistema de arquivos que não suportasse isso, uma exceção seria gerada. É pitoresco como uma linguagem muito utilizada como Java possui uma deficiência grave como esta. Alias, na minha opinião, a interface de manipulação de arquivos como um todo em Java é bem fraca. Não existe, também, um mecanismo atômico para copia de arquivos. Se alguém quiser copiar um arquivo, acho que a melhor solução será abrir um streaming para ler um arquivo, criar um novo arquivo e abrir outro streaming copiando todo o conteúdo do arqiuvo original. Algo muito mecânico se comparado com algumas outras grandes facilidade proporcionadas pela plataforma Java. Enfim, apesar de Java ter muitas facilidades, é necessário algumas evoluções am alguns campos ainda. Apesar da minha reclamação, de certa forma isto é natural. Se todos os sistemas que existissem não precisassem de evolução a computação por si só perderia sentido.

segunda-feira, setembro 11, 2006

Funções inline

Seguindo a onda do Miguel, segue mais um artigo muito interessante do Joel sobre funções inline e sua grande aplicabilidade. É interessante como são poucas as lingugens ditas comercias e amplamente difundidas que possuem está funcionalidade. Tudo bem que está não é uma funcionalidade extremamente essencial nem sempre útil, mas pode facilitar muito a vida em determinadas situações. É impressionante também como o Joel escreve bem. :) Ah, e não sei se vocês perceberam, mas agora sou um colaborador oficial deste blog! :) Obrigado Miguel!