31.7.05

Programming in Haskell

Um livro introdutório sobre a linguagem de programação Haskell - uma linguagem "puramente funcional de propósito geral". Além de um preview do livro, o site disponibiliza também slideshows (powerpoint) de cada um dos capítulos do livro. Um "kickstart" interessante para quem não conhece nada da linguagem.
O próprio site do haskell (da haskell??) tem uma boa quantidade de manterial interessanste, inclusive aplicações desenvolvidas na linguagem. O site também tenta desmistificar algumas idéias sobre a programação funcional e faz comparações com o modelo procedural/imperativo.

E pra quem simplesmente não acredita em programação "puramente funcional", apresentamos a O'Haskell!! :D

f [] = []
f (x:xs) = f ys ++ [x] ++ f zs
where
ys = [a | a  xs, a  x]
zs = [b | b  xs, b > x]

29.7.05

Genéricos: Mais críticas

Como eu sou o principal responsável por evitar que esse site se torne uma espécie de "Java Partyline", aqui vai mais um artigo criticando a implementação de genéricos na linguagem. É um comentário de Bruce Eckel sobre o artigo de Ken Arnold do qual eu falei neste post. Um trecho para abrir o apetite:

As much as Java people like to dis C++ for just about everything, C++ templates are much more straightforward than Java generics, because they are consistent. With erasure, you have to constantly remind yourself that you only think you know what a particular parameterized type is. But because you don't really (except sometimes), it causes all kinds of confusion. And a programming language is supposed to be an abstraction to reduce confusion, so Ken's comment about complexity: "I don't see that the value is there to justify the cost," is legitimate.


Vale lembrar que Eckel e Arnold são dois famosos expoentes da comunidade Java, autores de livros importantes sobre a linguagem (Arnold é co-autor do oficial "The Java Programming Language"), e não outsiders.

Eu acho que os genéricos foram implementados da melhor maneira possível considerando o requerimento de não quebrar a compatibilidade, e para conseguir isso foi necessária tanta teoria que um programador médio não faz nem idéia. Mas teria sido provavelmente melhor se a Sun não tivesse se preocupado tanto com compatibilidade e planejado uma forma de transição para que o código antigo continuasse a interoperar com o novo. Vai saber, evoluir um sistema muito utilizado é complicado de qualquer forma.

O Hibernate está enrolando a sua cabeça?

O "Road to Hibernate" é um tutorial introdutório sobre o Hibernate (se não o melhor framework Objeto-Relacional Java, pelo menos o mais "buzz word" já há um bom tempo).
O tutorial cobre muitos pontos críticos da tecnologia (como os problemas causados pela definição errada de caches e modelo de transaçao, que só são percebidas "tarde demais").

27.7.05

WEP Cracking

Continuando no tópico Wardriving, uma ferramenta muito interessante (ou não, dependendo de que lado da rede wireless você está). Ela quebra uma chave WEP rapidinho, permitindo entrar em redes privadas/criptografadas. E é open-source.
Ops!
(o link é colaboração do Rafael Torres! :))

Wardriving

Significa andar por ai com um laptop equipado com uma placa de rede wireless para tentar detectar redes wi-fi com brechas de seguranças. Um aparelho de GPS também pode ser utilizado p/ marcar a posição, latitude e longitude, onde a rede é encontrada. Já existe até uma versão do KNOPPIX (Linux Live CD) para esse fim, o Auditor. Esta versão traz várias ferramentas para este tipo de prática como wi-fi scanners além de scripts de força bruta para quebrar senha WEP. ;)

26.7.05

Biscoito da Sorte do Dia

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."

- Rich Cook

O Jdeveloper agora é grátis. Que m*, ein ?

Depois da Borland ter aberto o código-fonte do Jbuilder para a comunidade Eclipse, a Oracle jogou pesado e anunciou que a IDE Java da Oracle (Jdeveloper) poderá ser totalmente utilizada sem a necessidade de licenciamento, observando as regras no Site OTN da Oracle.

O pessoal da Oracle e os amantes do Jdeveloper (existe algum?) que me perdoem, mas não sei o que tem de tão bom nessa notícia, que só tende a piorar ainda mais o Jdev (e tem como?). Ao meu ver, a Oracle está tirando um peso dos seus ombros tornando o Jdev gratuito. Afinal, a partir de agora, se houverem mais reclamações que a ferramenta é ruim, a Oracle simplemente vai responder: "Tá reclamando de que? A IDE é de graça".

Já que estamos falando da Oracle, ela se ofereceu para liderar o projeto JavaServer Faces (JSF) dentro da comunidade open-source Eclipse Foundation e também irá participar do projeto Apache MyFaces como contribuidor.

StringBuffer ou StringBuilder?

A classe StringBuilder foi introduzida no Java 5.0. Trata-se de uma versão non-thread-safe (portanto, mais rápida) da velha e boa StringBuffer. As operações da StringBuilder são iguais às de sua prima. Então, se antes você fazia:
StringBuffer bf = new StringBuffer();
bf.append("google");
bf.append("tron!");
System.out.println(bf.toString());
Agora você faz:
StringBuilder bf = new StringBuilder();
bf.append("google");
bf.append("tron!");
System.out.println(bf.toString());

(O que? Você faz concatenação de strings usando a classe String??? Bad, bad developer. No donuts for you...)

25.7.05

Mapeamento Objeto-Relacional: Técnicas e Implementações

Outro artigo da série de artigos velhos. Conceitos básicos e estratégias para o mapeamento objeto entre objetos e bases de dados relacionais. Versão online aqui ou PDF aqui.

23.7.05

Você sofre de GeekBlock?

Just as writers are prone to writer's block, programmers are prone to GeekBlock.

Maybe we can't find the cause of a particular bug,or maybe we just can't stop surfing the web when we know there's things we should be doing.

Having found myself in the clutches of GeekBlock more than once, I've put together some notes from the inside.

22.7.05

Java Generics

Artigo véeeeelho sobre a introdução dos Generics no Java 1.5 (ops, falha nossa...). Pode ainda servir de referência, though.

21.7.05

A Microsoft Certified Professional mais jovem do planeta!

"Meet Arfa, a promising young software programmer from Faisalabad, Pakistan, who is believed to be the youngest Microsoft Certified Professional in the world. She received the certification when she was 9. During a recent meeting with Bill Gates, she presented him with a poem she wrote that celebrated his life story."

20.7.05

Dasher

Se você usa algum dispositivo sem teclado completo (PDA, por exemplo) ou só quer usar uma mão e mesmo assim escrever em uma velocidade razoável, pode valer a pena dar uma olhada no Dasher, um software para entrada de texto baseado em gestos contínuos de apontar.

Segundo o site é possível chegar tranquilamente a 25 palavras por segundo, e os usuários experientes chegam até 39 palavras por segundo; além disso, funciona em qualquer língua.

No endereço tem demonstrações de usuários entrando texto com o bicho; realmente, parece um jogo de videogame. Isso porque uma das idéias principais da interface é usar zoom; tenho certeza que Jef Raskin aprovaria.

19.7.05

Mbooster - Compilador J2ME

Com o aumento da demanda por desenvolvimento J2ME, começam a surgir novas ferrramentas no horizonte para auxiliar no desenvolvimento. Este é a proposta do MBooster, um compilador especifico para J2ME que promete reduzir o byte code. Quando será que teremos o "JikesME" ?

http://www.innaworks.com/mBooster.html

18.7.05

RSS Screensaver


Um screensaver interessante, que permite exibir RSS Feeds no seu desktop. Por enquanto, disponível somente para Windows (com o Not Yet Framework instalado).

Momento Dilbert...

17.7.05

Will RFID-guided robots rule the world?

Os robôs guiados por RFID são uma das novas tendências mecatrônicas.

Enquanto isso, teóricos da conspiração, malucos, religiosos e jornalistas discutem se o RFID não é, na verdade, um sinal do apocalipse...

16.7.05

A Máquina de Turing

Que tal uma Máquina de Turing toda feita de LEGO?

Introduzida por Alan M. Turing em 1936, a Máquina de Turing é uma abstração usada no estudo da Teoria da Computação: o que um computador pode ou não fazer.

O processo computacional foi graficamente mostrado no artigo de Turing quando ele pediu ao leitor que considerasse em dispositivo que pudesse ler e escrever símbolos em uma fita que estava dividida em quadrados. Uma cabeça de leitura/gravação se moveria em qualquer direção ao longo da fita, um quadrado por vez, e uma unidade de controle poderia interpretar uma lista de instruções simples sobre leitura e gravação de símbolos nos quadrados, movendo-se ou não para a direita ou esquerda. O quadrado que é "lido" em cada etapa é conhecido como "quadrado ativo". A regra que está sendo executada determina o que se convencionou chamar 'estado' da máquina. A fita é potencialmente infinita.

14.7.05

DAOGen

Todo programador já teve aqueles dias em que não tem saco para fazer nada. Imagina então que em um destes dias você tem de implementar um DAO para acessar o banco de dados com Interface para lá, implementacao para cá e uma Factory no meio de brinde. Bem, pensando nisso surgiu o projeto DAOGen, que simplesmente faz todo o "trabalho sujo" para você (que eu gosto, Mas sou minoria no meio). Basta gerar as classes seguindo o passo a passo e dentro de segundos... Voilá, um DAO quentinho saindo do forno. Agora é só utilizar o famoso ctrl + xupis e ctrl + cuspis.

http://titaniclinux.net/daogen/

Palm's new logo


A Palm (antiga PalmOne, que um dia já se chamou Palm Inc), a empresa que mais sofre de crise de identidade no mundo da tecnologia, mudou de nome e de logo. Mais uma vez. Novamente.