Code contest

viram?

Marketeiro… :twisted:

((calma, calma, foi só uma brincadeirinha… hehehe…

caramba, mega expressão regular, parabéns… (; :stuck_out_tongue:

Opa opa, thanks.

PS: tem que testar aquele teu código ainda einh Daniel, por enquanto só funciona no papel,hehehe.

Esse context foi covardia. Java não tem regex na linguagem, o que eu acho PÉSSIMO. Os malucos do Mustang prefererm colocar XML na linguagem do que REGEX. Vai entender !!!??? (Não, o suporte de Java a Regex, não é bom, principalmente quando eu tenho que escapar a barra invertida, ou seja, escapar o escape!)

Java é a pior linguagem para fazer parse/tratamento de textos, isso é fato.

Contest #2:

Fazer um servidor em Non-Blocking mode para receber conexões com a String “Hi” e responder com “Bye” e fechar a conexão.

:slight_smile:

Realmente Ruby é muito mais pragmático do que Java, isso não se discute mesmo. O que a gente pode fazer é ir abstraindo a API do Java por conta própria em nossos próprios projetos. Se a API não é pragmática a gente abstrai ela pra ela ficar. (Claro que isso ainda é pior do que ter uma linguagem realmente pragmática)

Uma pergunta de leigo em Ruby: Qual é o Tomcat do Ruby ??? Qual é web container do Ruby e qual é a API de “rubylets” no Ruby ? Como eu faria um script ruby para receber uma requisição e responder com <html>Hi Ruby</html> ? Só posso usar RoR pra isso ? E o equivalente a JSP, existe ? Será que daria para portar o Mentawai para Ruby ?

Ninguém respondeu então tive que correr para o Google !!!

Achei algo bem interessante:

http://www.linuxjournal.com/article/8356

Legal, mas vamos lembrar, que digitar menos caracteres não quer dizer necessáriamente que alguma coisa é melhor :slight_smile:

Versão Python ou Perl, anyone?

Daniel,

Mande uma nova versão:

def content = new URL("http://www.google.com.br/search?q=groovy").getText();
println(content =~/class=l href=\"(.*?)\">(.*?)< /a.*?j><font .*?>(.*?)<br /></);

Para não dizer que é covardia, a versão em Ruby faz isso. :smiley:

Falando nisso, já viram? http://grails.codehaus.org/

Só existe uma coisa que me deixa puto da vida nesses “contest” e o fato de sempre puxarem a sardinha para um lado. E nem precisava, por que o Java vai perder em numero de linhas do Ruby de qualquer forma… mas:

  1. Pra que isso? Nos outros não há isso.
urlConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7");
  1. Nao usar Regexp do Java. Pode não ser assim, mas têm.
    http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/package-summary.html

Concordo com você. Quando eu me deparo com essas situações eu até me assusto, tipo “essa classe útil me parece meio óbvia. Porque isso não tá na API?”

Eu fico me perguntando se não existem projetos que já fazem isso. Tem o Commons da Apache mas nã sei se se encaixa exatamente. Por exemplo, existe alguma coisa que faça isso:

new XMLSerializer.write(myObject);
String s = FileUtil.read("simples-assim.txt");

Além do Sérgio, é costume de vocês fazer essa “pragmação”? Que tal juntar tudo e fazer um framework?

Tem alguma sugestão melhor?Mande que eu altero lá. Ninguém falou que o código não pode receber ajustes e comentários.

[quote=juzepeleteiro]1) Pra que isso? Nos outros não há isso.

urlConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7"); [/quote]

Porque segundo o Giuliano, sem esta linha não estava funcionando. Mais uma vez, mande o código que você melhorou e (se funcionar,claro) eu troco lá.

Só para aproveitar a deixa:
http://blastemica.blogspot.com/2006/03/apis-que-no-mordem.html

O código em Groovy ficou muito legal. Preciso arrumar um tempinho para incluir a linguagem nos meus estudos.

valeuz…

Falando em RegEx acabo de ficar p*** da vida com o java.util.regex.

        Pattern pKey = Pattern.compile("PA");
        
        Matcher mKey = pKey.matcher("PATO");
        return mKey.find();

O dito não tem o comportamento das outras implementações de Reg Ex e retorna true (o correto seria false). Para fazer ele trabalhar da maneira correta tem que acrescentar “^PA$”.

abs.,
Flávio Suguimoto

[quote=juzepeleteiro]Só existe uma coisa que me deixa puto da vida nesses “contest” e o fato de sempre puxarem a sardinha para um lado. E nem precisava, por que o Java vai perder em numero de linhas do Ruby de qualquer forma… mas:

  1. Pra que isso? Nos outros não há isso.
urlConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7");
  1. Nao usar Regexp do Java. Pode não ser assim, mas têm.
    http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/package-summary.html

[/quote]
o problema é que o google não curte java, e da um erro se o User-Agent não for alterado, para evitar que qualquer um saia fazendo um buscador automático pro google.

mas o código java aquele é muito grande mesmo, da uma olhada neste:

[code]import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;

public class HTTPSample {
public static void main(String[] args) throws Exception {
URLConnection con = new URL(“http://www.google.com/search?q=java”).openConnection();
con.setRequestProperty(“User-Agent”, “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7”);
Scanner sc = new Scanner(con.getInputStream());
System.out.println(sc.findWithinHorizon("<a class=l href=".?">.?", 0).replaceAll("<a class=l href="(.?)">(.?)", “$2=$1”).replaceAll("<.*?>", “”));
}
}[/code]

[quote=jack_-_ganzha]http://blastemica.blogspot.com/2006/03/apis-que-no-mordem.html

valeuz…[/quote]

Texto Sensacional! Teu blog?

Nha Diego. teu wordpress ta executando meus comentarios :twisted: arruma isso ai

o codigo que eu postei eh php ta um pouco mais enchuto…

<?php
	$html = implode('', file('http://www.example.com/'));	
	preg_match_all("|class=l href=\"(.*?)\">(.*?)</a.*?j><font.*?>(.*?)<br><|", $html, $out, PREG_SET_ORDER);
	echo $out[0][1]." ".$out[0][2]." ".$out[0][3];
?>

Também li, gostei…

Tem até sugestão de melhoria pro menta…

Mas de boa, acho que o pessoal não faz mais coisas assim por falta de sugestão…
Eu pelo menos faria.

VELO

Urubatan, realmente, bem melhor a tua versão. Já tem até versão em VB lá, que por sinal é a piada da vez. Ah, Fernando, ficou legal tua versão em PHP, ta praticando é? :stuck_out_tongue:

Segue a versao que fiz aqui em Python (2.4.3)

import urllib
import re

class AppURLopener(urllib.FancyURLopener):
  version = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1"

urllib._urlopener = AppURLopener()

html = urllib.urlopen('http://www.google.com.br/search?q=python').read()
out = re.search('class=l href="(.*?)">(.*?)</a.*?j><font.*?>(.*?)<br><', html, re.DOTALL)
print re.sub('<.*?>', '', (out.group(1) + '\n' + out.group(2) + '\n' + out.group(3)))

versao em TCl/TK (8.4.12)

package require http
http::config -useragent {Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1}
set html [http::data [http::geturl {http://www.google.com.br/search?q=tcl}]]
set out [regexp -inline {class=l href="(.*?)">(.*?)</a.*?j><font.*?>(.*?)<br><} $html]
puts [regsub -all {<.*?>} [concat "[lindex $out 1]\n[lindex $out 2]\n[lindex $out 3]"] "" ]

*Edit para incluir a versao em TCL e para arrumar a versao Python.
mudancas na versao python:

  • re.findall -> re.search : (findall retorna todos os "matches", search retorna soh o primeiro)
  • out[0][0] -> out.group(1) : (findall retorna uma lista de tuplas, search retorna um MatchObject)

flwz!

Olá

Alguns dos códigos que li por lá e por aqui são discursos enfáticos de porque usar Java e não usar sânscrito, perl e outras coisas igualmente complexas (apesar de às vezes divertidas).

[]s
Luca