<br><div class="gmail_quote">2011/7/15 Nelson Ferraz <span dir="ltr"><<a href="mailto:nferraz@gmail.com">nferraz@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">2011/7/15 Hernan Lopes <<a href="mailto:hernanlopes@gmail.com">hernanlopes@gmail.com</a>>:<br>
> catalyst é perfeito...<br>
<br>
</div>Se ele é perfeito, significa que não pode ser melhorado. Eu me recuso<br>
a pensar dessa maneira.<br>
<br>
E se ele *não é* perfeito, a questão que fica é: como pode ser<br>
melhorado? Todos nós sabemos -- e eu sou o primeiro a admitir -- que o<br>
Catalyst é extremamente flexível e poderoso. Qualquer melhoria nessa<br>
área trará apenas ganhos marginais, e não nos ajudará a atingir a<br>
ubiquidade. (Se é que este é o nosso objetivo.)<br>
<div class="im"><br>
> depois de trabalhar com .net por 1 ano e pouco,<br>
> tive aula de struts na faculdade e te confesso que fiz o trabalho final em um final<br>
> de semana após a primeira semana de aula...  acabei indo estudar e trabalhar um<br>
> pouco com COBOL em uma oportunidade de estágio que me apareceu... depois<br>
> dessas experiências estava me formando em ciência da computação e o assunto<br>
> do momento eram "frameworks"<br>
<br>
</div>Você estudou ciência da computação, tem experiência com .Net, PHP, e<br>
até COBOL. Definitivamente não é o público-alvo que me preocupa.<br>
<br>
Aliás: posso estar enganado, mas a maioria daqueles que defenderam o<br>
Catalyst nessa thread estudam (ou estudaram) Ciência da Computação.<br>
<br>
Vamos pensar sobre isso.<br>
<br>
E aqui eu peço um favor: não entrem em modo de defesa automático, não<br>
tentem proteger o seu framework preferido; ajudem-me a identificar<br>
falhas, pontos que podem ser melhorados.<br>
<br>
Eu quero saber como é que o sujeito que *não* estudou computação e mal<br>
sabe HTML -- ou seja, 99% da população -- vai usar o Catalyst.<br>
<br>
Vamos fazer o seguinte exercício: uma página web simples, com um<br>
formulário que ao ser enviado responda "Hello, $nome!". É assim que a<br>
maioria das pessoas vai tomar o primeiro contato com o seu framework.<br>
<br>
<br>
1) PHP<br>
<br>
Abra um editor de texto e salve estes dois arquivos, em qualquer lugar:<br>
<br>
==== index.php =====<br>
<br>
<form method="post" action="hello.php"><br>
  <input type="text" name="name"><br>
  <input type="submit"><br>
</form><br>
<br>
==== /index.php =====<br>
<br>
<br>
==== hello.php =====<br>
<br>
<h1><?php echo( $_POST["name"] ) ?></h1><br>
<br>
==== /hello.php =====<br>
<br>
Isso é tudo. Dois arquivos, em qualquer lugar, e está funcionando.<br>
<br>
<br>
2) Mojolicious::Lite<br>
<br>
==== <a href="http://hello.pl" target="_blank">hello.pl</a> =====<br>
<br>
#!/usr/bin/perl<br>
<br>
use Mojolicious::Lite;<br>
<br>
get '/' => 'index';<br>
<br>
post '/hello' => sub {<br>
    my $self = shift;<br>
    my $name = $self->param('name');<br>
    $self->stash( name => $name );<br>
} => 'hello';<br>
<br>
app->start();<br>
<br>
__DATA__<br>
@@ index.html.ep<br>
<form method="post" action="/hello"><br>
  <input type="text" name="name"><br>
  <input type="submit"><br>
</form><br>
<br>
@@ hello.html.ep<br>
<h1>Hello, <%= $name %></h1><br>
<br>
==== /<a href="http://hello.pl" target="_blank">hello.pl</a> =====<br>
<br>
Execute o programa com: ./<a href="http://hello.pl" target="_blank">hello.pl</a> daemon<br>
<br>
Isso é tudo. Um arquivo, em qualquer lugar, e está pronto.<br>
<br>
<br>
3) Catalyst<br>
<br>
Vou seguir o tutorial em<br>
<a href="http://search.cpan.org/~bobtfish/Catalyst-Manual/lib/Catalyst/Manual/Tutorial/02_CatalystBasics.pod" target="_blank">http://search.cpan.org/~bobtfish/Catalyst-Manual/lib/Catalyst/Manual/Tutorial/02_CatalystBasics.pod</a><br>

<br>
    $ <a href="http://catalyst.pl" target="_blank">catalyst.pl</a> Hello<br>
    created "Hello"<br>
    created "Hello/script"<br>
    created "Hello/lib"<br>
    created "Hello/root"<br>
    ...<br>
    created "Hello/script/<a href="http://hello_create.pl" target="_blank">hello_create.pl</a>"<br>
    Change to application directory and Run "perl Makefile.PL" to make<br>
sure your install is complete<br>
    $ cd Hello<br>
<br>
    $ script/<a href="http://hello_create.pl" target="_blank">hello_create.pl</a> view HTML TT<br>
<br>
<br>
Open the lib/Hello/Controller/Root.pm file in your editor.<br>
<br>
    sub index :Path :Args(0) {<br>
        my ( $self, $c ) = @_;<br>
<br>
        $c->stash(template => '<a href="http://index.tt" target="_blank">index.tt</a>');<br>
    }<br>
<br>
Create a root/<a href="http://index.tt" target="_blank">index.tt</a> template file (put it in the root under the<br>
Hello directory that is the base of your application).<br>
<br>
    <form method="post" action="/hello"><br>
        <input type="text" name="name"><br>
        <input type="submit"><br>
    </form><br>
<br>
==== Neste ponto eu precisei buscar na documentação como obter um<br>
parâmetro do request ($c->req->params), pois a informação só aparece<br>
duas páginas do tutorial adiante - WTF???? =====<br>
<br>
    sub hello :Path :Args(0) {<br>
        my ( $self, $c ) = @_;<br>
<br>
        my $name = $c->req->params->{name};<br>
<br>
        $c->stash(<br>
            name => $name,<br>
            template => '<a href="http://hello.tt" target="_blank">hello.tt</a>',<br>
        );<br>
    }<br>
<br>
Create a root/<a href="http://index.tt" target="_blank">index.tt</a> template file (put it in the root under the<br>
Hello directory that is the base of your application).<br>
<br>
    <h1>Hello, [% name %]</h1><br>
<br>
<br>
Isso é tudo... pelo menos eu acho, pois não consegui instalar o<br>
Catalyst no meu Mac [one dependency not OK<br>
(MooseX::Role::WithOverloading)]. WTF?!?!?!?!?!!<br>
<br>
Espero que vocês consigam entender a minha frustração. Imaginem um<br>
usuário iniciante, com pouca experiência em Perl!<br></blockquote><div><br></div><div>Eu fico sem graça de opinar pois não colaboro com a comunidade, mas, qual o sentido de deixar o Catalyst fácil para 99% das pessoas ( as que mal sabem HTML )? Essas pessoas querem é produtos prontos: Wordpress, Joomla, Openbravo, etc....</div>
<div><br></div><div>Acho que a discussão na verdade é aquela velha: "Como angariar novos seguidores para Perl?" - e penso que a resposta também é: Produtos.</div><div><br></div><div>O problema que enfrentamos é que a comunidade é formada em sua maioria de pessoas com perfil de cientistas da computação, então a galera prefere escrever coisas mais core.</div>
<div><br></div><div>O pessoal aqui já faz demais - [ workshop, equinocio, yapc ] - ( para ser sincero eu não faço nada para a comunidade atualmente ), mas acho que falta definirem um produto e trabalharem nele, de preferência algo mais enterprise, tipo um CRM.</div>
<div><br></div><div>abs,</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
[]s<br>
<font color="#888888"><br>
Nelson<br>
</font><div><div></div><div class="h5">=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
</div></div></blockquote></div><br>