Quem se interessa pela mineracao de dados e pela otima perspectiva que engloba pode ser beneficiar do weka.E um software capaz de usar varios algoritmos de mineracao de dados, entre outros regressao linear de muitas variaveis e redes neurais.E simples de usar, bastando fornecer um arquivo com os dados num formato proprio para o programa -- em txt simples. E o melhor de tudo, e livre de licenca!Fica a dica! Galera. Estava com um problema que consistia no seguinte: baixar o conteudo de um site (resposta em xml), e exibir alguns campo na tela.Como nao sou besta, pensei: Teve ter uma ferramenta no shell do linux p fazer isso para mim. E nao e que tem mesmo?Chama-se xmllint e e usado para processar xml via linha de comandoum exemplo de como usei:xmllint -xpath "string(//PAPEIS/PAPEL$ULTIMO_VALOR)" /tmp/cotacao/tmp/cotacao era o arquivo que continha o meu xml. //PAPEIS/PAPEL$ULTIMO_VALOR vai procurar o atributo ULTIMO_VALOR dentro do no PAPEL que esta dentro do no PAPEIS. Lembrando que a pesquisa xpath e case-sensitive - isto e - se os nos estao em maiusculo no arquivo xml, voce tem de pesquisar caracteres maiusculo!E uma ferramenta muito pratica e util. Estou desenvolvendo um sistema que possui uma tela com varios botoes primeiro, proximo, anterior e ultimo. Eu queria uma funcionalidade parecida com a das telas em access, em que os registros podem ser navegados por um array de objetos. Assim, aproveitando as caracteristicas de orientacao a objeto do javascript e padrao de projeto observer, eu desenvolvi o seguinte codigo://------------------------------- inicio do codigo javascript --------------------------------------------// obj e um array de objetos. Pode ser array de array. Mas o metodo atualizar que sera definido fora da //classe deve conhecer o objeto que correspondera a cada item do arrayfunction Navegador( obj ){ this.lst = obj; this.ptr; this.ind_ptr ; this.primeiro = function(){ this.ind_ptr = 0; this.ptr = this.lst[this.ind_ptr]; this.atualizar(this.ptr); // imprime um objeto de cada vez } this.anterior = function(){ if (!this.ind_ptr == 0){ this.ind_ptr--; this.ptr = this.lst[this.ind_ptr]; this.atualizar(this.ptr); // imprime um objeto de cada vez } } this.goto = function(indice){ var qde = len(this.lst); if(indice < 0 || indice >= qde) alert('Indice Invalido!'); else{ this.ind_ptr = indice; this.ptr = this.lst[this.ind_ptr]; this.atualizar(this.ptr); // imprime um objeto de cada vez } } this.proximo = function(){ var qde = len(this.lst_questao_prova); if(!this.ind_ptr == qde -1){ this.ind_ptr++; this.ptr = this.lst[this.ind_ptr]; this.atualizar(this.ptr); // imprime um objeto de cada vez } } this.ultimo = function(){ var qde = len(this.lst); this.ind_ptr = qde -1; this.ptr = this.lst[this.ind_ptr]; this.atualizar(this.ptr); // imprime um objeto de cada vez } this.atualizar ; // esqueleto da funcao que exibe um objeto de cada vez. Sera definido na criacao // do objeto Navegador}// -------------------------------- fim do codigo javascript ---------------------------------------------No codigo acima, a funcao atualizar nao esta implementada. Isso porque os compnentes a serem atualizados (textox, radiobutton, texto) nao sao conhecidos de dentro do componente. Essa funcao deve ser implementada quando for utilizada p ex:// -------------------------- codigo javascript de exemplo ---------------------------------------------- function atual( obj_questao ) { alert('deu certo!'); } // define a implementacao do metodo atualizar Navegador.prototype.atualizar = atual; var c = new Questao('a','b','c','d','e',2); var arr = new Array();