<p>Amigos,</p><p>Demorei um pouco, desculpe...<br></p><p>Agradeço a todos pela colaboração e sugestões, realizarei diversos testes pois agora tenho o real ambiente montado e irei ler apenas um texto em uma URL, exemplo para esclarecimento:</p>
<p>Acesso o endereço <a href="http://host/status">http://host/status</a> e é exibido uma página com o texto Serviço=Ok.</p><p>Obrigado mais uma vez a todos.</p><p>Alexandre</p><br><div><span class="gmail_quote">Em 05/06/08, <b class="gmail_sendername">Marcos Machado</b> &lt;<a href="mailto:listas@istf.com.br">listas@istf.com.br</a>&gt; escreveu:</span><blockquote class="gmail_quote" style="margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex">
Eden,<br> <br> Acho que já fico clara nossa diferença de ponto de vista. Obrigado pela<br> discussão construtiva. São conversas assim que me deixam satisfeito por<br> participar desse grupo.<br> <br> Um abraço!<br> <br> []s, MM<br>
 <br> <br> Eden Cardim escreveu:<br> <br>&gt; 2008/6/4 Marcos Machado &lt;<a href="mailto:listas@istf.com.br">listas@istf.com.br</a>&gt;:<br> &gt;&gt; Se você é um fã do Mechanize, me desculpe, mas para o que ele pediu isso<br>
 &gt;&gt; é overkill.<br> &gt;<br> &gt; Não sou &quot;fã&quot; do Mechanize, mas sou fortemente a favor do reuso de<br> &gt; código comunitário porque foi assim que o perl chegou onde está hoje e<br> &gt; é o único motivo pelo qual perl é uma solução viável para um negócio.<br>
 &gt;<br> &gt;&gt; A sugestão do Mechanize parece ter sido influenciada pelo fato do<br> &gt;&gt; servidor estar ouvindo na porta 80.<br> &gt;<br> &gt; E pelo fato do endereço especificar o protocolo de transporte.<br> &gt;<br>
 &gt;&gt; Ou você iria sugerir que ele instalasse o Apache do outro lado para usar<br> &gt;&gt; o Mechanize do lado de cá? Eu acho que estamos nos aprofundando demais<br> &gt;&gt; em uma sugestão sem conhecer a real necessidade.<br>
 &gt;<br> &gt; Não, existem outras soluções de servidor web mais lightweight. Mas<br> &gt; isso não vem ao caso, o problema inicial dele pediu http e por isso<br> &gt; parte-se do pressuposto de que há um servidor http escutando do outro<br>
 &gt; lado.<br> &gt;<br> &gt;&gt; Claro, a parte do meu sistema que trata esse conteúdo não é do interesse<br> &gt;&gt; da lista. Isso acontece quando enviamos &quot;exemplos básicos&quot; que poderão<br> &gt;&gt; ser incrementados de acordo com a necessidade.<br>
 &gt;<br> &gt; Robustez é requisito de qualquer solução que não seja um exercício acadêmico.<br> &gt;<br> &gt;&gt; Quando quaisquer desses problemas levantados aparecerem, o fato de abrir<br> &gt;&gt; um socket ou usar o Mechanize não me parece fazer nenhuma diferença. Ou<br>
 &gt;&gt; o Mechanize utiliza alguma magia negra para se conectar em um servidor<br> &gt;&gt; que não existe?<br> &gt;<br> &gt; Não, mas ele trata os casos excepcionais automaticamente.<br> &gt;<br> &gt;&gt; A parte de conexão dele é construída sobre o LWP que usa IO::Socket<br>
 &gt;&gt; (sim, eu acabei de checar!) só acrescentando uma enorme camada de opções<br> &gt;&gt; que podem ou não serem úteis.<br> &gt;<br> &gt; Isso não é relevante, módulos e API&#39;s existem para encapsular código e<br>
 &gt; você não precisar se preocupar com esse tipo de coisa.<br> &gt;<br> &gt;&gt; Minha &quot;solução&quot; (se é que podemos chamá-la assim, pois não passa de uma<br> &gt;&gt; sugestão simples) está funcionando em mais de 50 sistemas diferentes, em<br>
 &gt;&gt; um contexto bem grande, sob as mais adversas condições de rede, e todos<br> &gt;&gt; os problemas dessa natureza são tratados de forma bem elegante.<br> &gt;&gt;<br> &gt;&gt; Quer ver um exemplo que me deu dor de cabeça? Sabe aqueles \r\n\r\n do<br>
 &gt;&gt; final da requisição GET? Pois é, se usarmos só um \n funciona<br> &gt;&gt; maravilhosamente bem para a maioria dos servidores web. Só que em alguns<br> &gt;&gt; ambientes, que estão atrás de certos tipos de proxy transparente, essa<br>
 &gt;&gt; requisição estava dando timeout.<br> &gt;&gt;<br> &gt;&gt; Cerca de uma hora foi o tempo que levei para descobrir (via comparação<br> &gt;&gt; byte a byte de um dump da conexão) qual a diferença do meu socket para<br>
 &gt;&gt; uma requisição do wget.<br> &gt;<br> &gt; Olha o &quot;false laziness&quot; aparecendo aí, somando essa 1 hora com o tempo<br> &gt; inicial já temos mais de uma hora pra implementar um requisito<br> &gt; trivial.<br>
 &gt;<br> &gt;&gt; O Mechanize resolveria? Sim, resolveria. Mas essa questão não é<br> &gt;&gt; resolvida por ele e sim pelo LWP, neste trecho, que está escrevendo no<br> &gt;&gt; socket:<br> &gt;&gt;<br> &gt;&gt; &lt;code&gt;<br>
 &gt;&gt; print $sock join(&quot;\015\012&quot; =&gt;<br> &gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;GET $path HTTP/1.0&quot;,<br> &gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Host: $netloc&quot;,<br> &gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;User-Agent: lwp-trivial/$VERSION&quot;,<br>
 &gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&quot;, &quot;&quot;);<br> &gt;&gt; &lt;/code&gt;<br> &gt;<br> &gt; Isso não é relevante, módulos e API&#39;s existem para encapsular código e<br> &gt; você não precisar se preocupar com esse tipo de coisa. Mas tudo bem,<br>
 &gt; admito que algum sabor do LWP seria mais adequado pra esse caso.<br> &gt;<br> &gt;&gt; Isto resolvido, voltei para casa feliz, já que só precisei atualizar um<br> &gt;&gt; script ao invés de instalar o Mechanize e seus pré-requisitos em 50<br>
 &gt;&gt; servidores (alguns deles com sérias restrições de espaço, memória e<br> &gt;&gt; processamento).<br> &gt;<br> &gt; Se a solução inclui implantação homogênea em 50 servidores diferentes<br> &gt; então seu problema mudou de foco, e não é culpa dos módulos que você<br>
 &gt; usa. A hora que você gastou resolvendo o problema dos newlines você<br> &gt; poderia ter usado para montar um sistema de arquivos remoto com o<br> &gt; WWW::Mechanize e suas dependências (que são todos perl puro), por<br>
 &gt; exemplo. O espaço total ocupado por ele e suas dependências é de 3.8<br> &gt; MB sem compressão, e a execução de *todos* os testes consumiram 2.28<br> &gt; segundos da minha CPU virtual, se isso é um problema, então suas<br>
 &gt; restrições de espaço e processamento são *muito* mais do que sérias. O<br> &gt; custo de 20 horas de um bom desenvolvedor talvez seria o suficiente<br> &gt; pra resolver o problema do hardware e o empreendimento ainda teria um<br>
 &gt; aumento do seu patrimônio líquido.<br> &gt;<br> &gt;&gt; Mas, como já disse, não temos os pré-requisitos da solução, motivo pelo<br> &gt;&gt; qual prefiro sugerir por baixo e ir crescendo só o necessário.<br> &gt;<br>
 &gt; Eu prefiro o que for consumir menos recursos do projeto. Prevenção<br> &gt; gratuita nunca é ruim desde que não ocupe um desenvolvedor por muito<br> &gt; mais tempo do que ocuparia com as soluções &quot;mais simples&quot;.<br>
 &gt;<br> <br> <br>_______________________________________________<br> Rio-pm mailing list<br> <a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br> <a href="http://mail.pm.org/mailman/listinfo/rio-pm">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
 </blockquote></div><br><br clear="all"><br>-- <br>Alexandre<br>SlackUser<br><br>&quot;Seja Livre, Use Linux!&quot;