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");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.
Entry entry = Yaml.loadType(file, Entry.class);
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.
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}