Mudei de casa
http://marcospereira.wordpress.com/
Para aqueles que usam algum agregador de feeds, o novo endereço é:
http://marcospereira.wordpress.com/feed/
valeuz...
File f = new File(args[0]);Claro, não vou colocar os imports e tudo mais, apenas o uso mais direto. Nada demais, certo? Errado! O yaml4j peca por me fazer criar objetos dos quais eu não quero saber, apenas para dar suporte a interface provida, ou melhor para superar a barreira criada pela interface não oferecida. O que eu realmente gostaria de fazer é:
Reader reader = new BufferedReader(new FileReader(f));
Loader loader = new Loader();
loader.load( reader );
Object doc = loader.getDocument();
Loader loader = new Loader();Ou mais direto ainda:
loader.load("C:/my_file.yml");
Object doc = loader.getDocument();
Object doc = Loader.load("C:/my_file.yaml");É provavel que muita gente diga que aí eu não poderia usar outros tipos de Reades, ou seja lá o que for, para fazer o load do arquivo. Não é verdade, simplesmente. Não o é porque quero apenas uma interface mais direta e não uma mais resumida, por mim o exemplo anterior poderia existir à vontade, mas a API deveria me prover métodos mais diretos. Outros com certeza dirão que, por ser código Java, eu poderia criar uma pequena extensão para a API, parar de reclamar e resolver o problema. Também não é verdade, ao menos para mim, pois estou preocupado em resolver os problemas do meu dominio e não em escrever linhas e mais linhas para dar suporte a API.require 'yaml'Ou, para ninguém ficar na bronca, para não pensarem que quero ver Java morta e enterrada, um exemplo da APIs que usei (alterei apenas para facilitar a leitura, mas perceba: é um correspondente direto para o código em Ruby):
doc = YAML::load(File.open('C:/my_file.yml'))
File file = new File("ReceiptEntry.yml");
Entry entry = Yaml.loadType(file, Entry.class);Um outro exemplo para mim é o Mentawai, apesar de o último release apresentar bons métodos para facilitar o uso do ActionConfig, poderia prover métodos como addForward, addRedirect, addNull. São consequences muito usados, então, por que não facilitar a vida? O addConsequence continua para permitir consequences customizadas. Vejo isso em arquiteturas que permitem o uso de plugins/extensões também. Agora eu não uso apenas software exatamente como ele vem - out-of-the-box - posso eu mesmo criar extensões de acordo com necessidades bastante particulares. Dos softwares que já usei, um dos primeiros, ao menos que eu me lembre, com esse tipo de funcionalidade era o Winamp. Agora, para mim, um dos melhores exemplos é o Firefox, o tal browser que incomoda a liderança menos folgada do Internet Explorer. E das tantas - e úteis - extensões para o Firefox, uma que me chama a atenção ainda mais é o Greasemonkey porque leva adiante o conceito de extensão. Vejo o Greasemonkey praticamente como uma extensão que permite criar extensões.
É uma daquelas sacadas bem geniais e, como boa parte das idéias geniais, se baseia em um conceito simples: que tal alterar as paginas que vc usa com freqüência? Colocar os links que vc mais usa e não aparecem de imediato, botões para ações comuns, remover partes da pagina que vc não usa, mudar o tamanho das letras, remover propagandas inconvenientes, enfim, o que fazer fica a seu critério. Isso tudo com scripts escritos em JavaScript (se vc for um programador, clique aqui), o bom conceito de se manter compatível com o que já existe.
 Feliz 2006! Sim eu sei que ainda não chegou, mas ninguém espera que eu vá bloggar durante a virada de ano, então, antes de viajar para Pipa - estou com preguiça de procurar algo no google para linkar, se vira! - ficam os votos para um ano melhor do que 2005, para todos vocês três, meus caros leitores.
Feliz 2006! Sim eu sei que ainda não chegou, mas ninguém espera que eu vá bloggar durante a virada de ano, então, antes de viajar para Pipa - estou com preguiça de procurar algo no google para linkar, se vira! - ficam os votos para um ano melhor do que 2005, para todos vocês três, meus caros leitores. Eu falei de Ruby apenas uma vez no blog até agora, na verdade, não diretamente de Ruby, e não escrevi nada mais do que algumas linhas embasbacadas por um video do RoR. De lá para cá, no tempo livre, parei para estudar um pouco sobre a linguagem e sempre fica aquela impressão de "não pode ser, só isso?" ou "hum, interessante". Esses dias enquanto fuçava no repositorio remoto do gem em busca de alguma biblioteca para rss - sei lá porque rss, oras - encontrei o Simple-RSS (para instalar gem install simple-rss), e convenhamos, o "simple" no nome é bem justificado. Para testar, resolvi ler o rss dos novos posts no forum do JavaFree. Nada de muito complicado, apenas acessar o rss, iterar sobre as entradas e mostrar os titulos dos posts. O código, gigantesco, 5 linhas, um absurdo, ficou assim:
Eu falei de Ruby apenas uma vez no blog até agora, na verdade, não diretamente de Ruby, e não escrevi nada mais do que algumas linhas embasbacadas por um video do RoR. De lá para cá, no tempo livre, parei para estudar um pouco sobre a linguagem e sempre fica aquela impressão de "não pode ser, só isso?" ou "hum, interessante". Esses dias enquanto fuçava no repositorio remoto do gem em busca de alguma biblioteca para rss - sei lá porque rss, oras - encontrei o Simple-RSS (para instalar gem install simple-rss), e convenhamos, o "simple" no nome é bem justificado. Para testar, resolvi ler o rss dos novos posts no forum do JavaFree. Nada de muito complicado, apenas acessar o rss, iterar sobre as entradas e mostrar os titulos dos posts. O código, gigantesco, 5 linhas, um absurdo, ficou assim:require 'rubygems'Nem quero imaginar como fazer um leitor RSS em Java. De qualquer modo, claro, uma ajudinha das closures, ausentes em Java, não fazem mal a ninguém. Por fim, nada de RoR, por enquanto, já que quero aprender Ruby para valer e depois sim usar o framework com alguns "add-ons". Os planos são fazer uma serie de exemplos simples e praticos até me sentir à vontade com a sintaxe. A proposito, acho que um livro não vai fazer mal.
require 'simple-rss'
require 'open-uri'
rss = SimpleRSS.parse open('http://www.javafree.org/javabb/rss/newPosts.jbb')
rss.channel.entries.each {|e| puts e.title}