Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Perfect Lion

Duelo. Fabyo X Perfect Lion

Recommended Posts

Aos interessados, desculpe a demora do resultado.

 

Já encaminhei minha avaliação ao red nek e estou aguardando algum comentário dele, espero que ele apareça no fórum. Imagem Postada

 

O resultado deve ser postado ainda hoje, no periodo da tarde.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este lance de duelo foi bem legal, eu gostei do resultado e espero que logo outras pessoas criem novos duelos em novos rounds... Imagem Postada

 

Esperei que o red neck aparecesse agora a tarde para postar algo sobre a avaliação, que enviei pra ele antes, eu já tinha recebido a avaliação dele, mas queria ver se ele tinha algo mais a acrescentar, sendo assim... lá vai!!!

 

===============================

 

Seguem os códigos e, abaixo, esta a avaliação dos mesmos...

<?

function host($hos,$porta){

$fopen = fsockopen($hos, $porta, $numoro_erro, $erro);

if ($fopen) {

$GETS = "GET / HTTP/1.1rn";

$GETS .= "Host: rn";

$GETS .= "Connection: Closernrn";

fwrite($fopen, $GETS);

while (!feof($fopen))

echo fgets($fopen, 128);

fclose($fopen);

} else {

echo "$numoro_erro: $erro <br />rn";

}

}

host("www.baratoweb.com.br",80);

?>

<form id="form1" method="post" action="curl.php">

<label>Digite um site Site:

<input type="text" name="site" value="www.baratoweb.com.br" />

</label>

<label>

<input type="submit" name="submit" value="Pesquisar" />

</label>

</form>

<?

 

if(isset($_POST["submit"])) {

$site = $_POST["site"];

$ch = curl_init();

$ret = curl_setopt($ch, CURLOPT_URL, $site);

$ret = curl_setopt($ch, CURLOPT_HEADER, 1);

$ret = curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

$ret = curl_setopt($ch, CURLOPT_TIMEOUT, 30);

$ret = curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$ret = curl_setopt($ch, CURLOPT_NOBODY, 1);

 

$ret = curl_exec($ch);

$ret = "<div style="border:1px solid gray;padding:10px;background-color: gray;color:white;">$ret</div>";

 

echo nl2br($ret);

curl_close($ch);

}

?>

Avaliação:

 

Método que utilizei para avaliar:

- as funções - foram contabilizadas de acordo com as que são essenciais para a resolução do problema;

- as linhas - foram consideradas apenas aquelas que fazem parte da solução e exibição dos resultados;

- aspectos como flexibilidade também foram levados em consideração;

- todos os testes foram realizados no ambiente de rede interno, em diferentes aplicações e plataformas;

- os servidores testados foram os seguintes: Linux/Apache, Windows/Apache, Linux/Tomcat, Windows/Tomcat e Windows/IIS

- todos os testes foram realizadas na minha máquina local (Pentium 4, 2.8Ghz, 512MB RAM - IIS 5.1 - SO Windows 2000 Pro)

- o tempo é analisado dado pelo seguinte código:

 

<?$tinicio = (float) array_sum( explode(' ', microtime()));// código ou função com solução do problema e exibição do resultadoecho (float) array_sum( explode(' ', microtime())) - $tinicio;?>

 

Velocidade:

1º Fabyo (100 - rápido)

2º Perfect Lion (90 - 2x mais lento)

 

Obs: este foi um aspecto dificil de ser avaliado, o script do Perfect Lion não faz tratamento de saída do resultado, o que ocorre então? Ele carrega, além das informações para solução do problema, o página inteira correspondente ao endereço testado. Caso não exista conteúdo no endereço, o script é rápido, mesmo assim fica 2x mais lento, caso tenha conteúdo, o script torna-se 3 ou 4x mais lento, dependendo de quanto conteúdo ele vai ter que fazer download.

 

Menor quantidade de funções prontas:

1º Fabyo (100 - usou 4 funções)

2º Perfect Lion (99 - usou 1 função a mais)

 

Menor quantidade de linhas de código:

1º Perfect Lion (100 - 9 linhas)

2º Fabyo (98 - 2 linhas a mais)

 

Extra/Detalhes:

Comentou o código?

Fabyo e Perfect Lion - Ninguém comentou nada... affy! Imagem Postada (-1 ponto)

 

Código flexivel?

Fabyo - criou um formulário para fazer o código funcionar. (+2 pontos)

Fabyo - usou uma biblioteca não padrão, quer dizer, que não é encontrada em toda e qualquer versão e instalação do PHP. (-10 pontos)

Perfect Lion - colocou seu código em uma função. (+5 pontos)

Perfect Lion - as funções de Rede são incluidas no PHP desde a versão 3. (+5 pontos)

 

Verificação de erro?

Fabyo - não verificou se seus campos foram ou não preenchidos, isto não causou erro, mas também não exibe mensagem sobre o ocorrido. (-2 pontos)

Perfect Lion - faz a verificação se o socket foi aberto corretamente, mas não verifica se os parametros da função foram passados adequadamente, de acordo com a configuração padrão do PHP, isto causa um Maximum execution time of 30 seconds exceeded. (-15 pontos)

 

Resultado final:

1º Fabyo (287 pontos)

2º Perfect Lion (283 pontos)

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa só queria comentar uns detalhes, no proximo duelo tem que ficar definido as regras por escrito porque eu nao comentei meu codigo para nao aumentar as linhas e nao usei nenhum tipo de debuger tbm nem javascript pra testar campo, nem em php porque achava que isso nao era importante ,

 

e achei essa parte injusta:

Fabyo - usou uma biblioteca não padrão, quer dizer, que não é encontrada em toda e qualquer versão e instalação do PHP. (-10 pontos)

 

o curl existe desda versao PHP 4.0.2. nao sabia que na regra tinha que fazer pra funcionar em php3, e outra eu usei uma função mais adequada para esse caso

 

outra coisa que achei injusto foi porque eu nao criei uma função, nesse ponto de vista é a mesma coisa que eu receber os dados de post e ter que criar uma função pra isso, mas eu usei isset para saber se o for foi submetido e assim roda o script mesmo sistema padrao de cadastros

 

mas beleza, vamos escrever as regras por escrito da proxima vez pra evitar

 

 

agora vou comentar só pra ajudar quem se interessou:

 

Curl - Biblioteca de Cliente de URL

 

 

curl_init() Inicializa uma sessão CURL

 

curl_setopt Define uma opção para a transferencia CURL

 

CURLOPT_URL : Esta é a URL que você quer que o PHP obtenha.

Você pode definir esta opção também quando estiver inicializando a sessão com a função curl_init().

 

CURLOPT_HEADER : Defina esta opção para um valor diferente de zero se você quer que o

cabeçalho seja incluído na saída

 

CURLOPT_FOLLOWLOCATION : Defina esta opçãp para um valor diferente de zero para seguir qualquer

cabeçalho "Location: " que o servidor envie como parte do cabeçalho HTTP ( note que isto é recursivo, o

PHP irá seguir tantos cabeçalhos "Location: " quantos sejam enviados.)

 

CURLOPT_TIMEOUT : Passe um número long como parâmetro que contém o limite de tempo, em segundos,

que você permite as funções CURL levar.

 

CURLOPT_RETURNTRANSFER : Passe um valor diferente de zero se você quer que o CURL retorne

diretamente a transferencia ao invés de mostra-la diretamente.

 

CURLOPT_NOBODY : Defina esta opção para um valor diferente de zero se você não quiser que o

corpo seja incluído na saída

 

curl_exec() Executa uma sessão CURL

 

 

curl_close() Fecha uma sessão CURL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa fabão seu codigo ta lindo... enquanto o meu tá um coco =( mais pelo - cheguei ao objetivo do tema =DD bora para o segundo round quem sabe dessa vez eu não passe a frente e empata =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, como já terminou este round, não há problemas de eu postar isto. Imagem Postada

 

Até onde sei não existe nenhuma função nativa para tal. Mas, no manual contém uma função get_server_software() postada nos comentários da função fsockopen(). Vejam: http://br.php.net/manual/pt_BR/function.fsockopen.php#29577. :thumbsup:

 

Postei só para constar ... Imagem Postada

 

Editado

 

Ops, perdão. É verdade Fabyo (em relação ao que foi dito abaixo), existe função nativa sim, que no caso é a get_headers(). É minha falta de memória mesmo, pois já usei esta função uma vez ... :yay:

 

[]’s Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

existe sim o curl serve pra isso e mais um monte de coisas o curl é cliente de URL e ele é nativo para isso mesmo

 

e tem outras funções tbm:

 

http://br.php.net/get_headers

http://br.php.net/manual/pt_BR/function.ap...est-headers.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, as regras são praticamente as mesmas usadas no desafio, sendo que eu achei interessante fazer um plus, fazer uma avaliação um poucou mais exigente, mas isto não fez com que o resultado se alterasse.

 

De qualquer forma, todos estão de parabens, gostei de ambas as soluções. Imagem Postada

 

Este duelo entre Fabyo e Perfect Lion esta encerrado. Me coloco a disposição para ser Duelado por algum interessado.

 

Resolvemos fazer os duelos em um unico round invez de tres, isto vai evitar que os temas se extinguam antes do tempo.

 

Se alguém tiver mais alguma coisa a acrescentar, sintam-se a vontade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu queria fazer um ... ate falei com o fsphp sobre agente duelar em alguma coisa simples... mais que seja util pra alguma coisa huiahuauimais eu so muito noobie ainda... tenho ate vergonha de tenta faze alguma coisa.. mais se rolasse alguma coisa meio "simples" eu queria fazer \o//

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.