<div>Hernan,</div>
<div> </div>
<div>Pô valeu pelo "tutorial" !</div>
<div> </div>
<div>O projeto que vou iniciar, vamos usar CouchDB.</div>
<div> </div>
<div>Hernan você já teve experiência usando Catalyst com CouchDB (ou MongoDB)?</div>
<div><br> </div>
<div class="gmail_quote">2011/1/7 Hernan Lopes <span dir="ltr"><<a href="mailto:hernanlopes@gmail.com">hernanlopes@gmail.com</a>></span><br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">Catalyst é sem dúvidas o melhor framework web do momento. E vai continuar sendo por muito tempo. <br>Vá em frente, você não vai se arrepender, ninguem se arrepende. <br>
Leia o manual do catalyst no cpan, lá tem tudo que você irá precisar inicialmente. A documentação é bastante farta e completa.<br>Recomendo HTML::FormHandler para trabalhar formulários web.<br>É bom se familiarizar também com DBIx::Class, conforme suas dúvidas forem aparecendo.... aqui estão todas as respostas para as questões de acesso a banco de dados... leia aqui antes de perguntar, garanto que a resposta está em alguma página do DBIx::Class.<br>
<br>Um exemplo de acesso à tabela produtos com DBIx::Class:<br><br>my $products = $c->model('DB::Product')<br> ->search({<br> categoria => 'computadores', #traz tudo que é categoria computadores<br>
preco => { '>=', 500 }, # traz tudo com preço >= 500<br> },{<br> rows=> 5, #opcional, a busca vai trazer limitar a 5 linhas<br>
page=> 1, #opcional, vai trazer apenas esta página<br> order_by => { -asc => [qw/created/] }, #opcional, vai ordenar por data de criação <br>
});<br><br>ai vc pode fazer um loop nos produtos ex:<br><br> while (my $p = $products->next) {<br> $c->log->debug('nome do produto', $p->nome );<br> $c->log->debug('nome do produto', $p->categoria );<br>
$c->log->debug('nome do produto', $p->preco );<br> }<br><br>Se você percebeu, esses códigos seriam executados nos controllers... como seria isso em uma view ? o catalyst utiliza o Template::Toolkit, que tem um excelente manual tb: ex <a href="http://template-toolkit.org/docs/manual/VMethods.html#method_match" target="_blank">http://template-toolkit.org/docs/manual/VMethods.html#method_match</a><br>
<br>então seguindo o exemplo acima, vamos supor que eu selecionei os $products... então o próximo passo seria jogar esses $products no "stash" do catalyst.. <br>O "stash" é um espaço/hash reservado onde você pode armazenar dados que serão acessados em outros métodos/view/partes do código.<br>
Então para setar os $products no stash faremos o seguinte:<br><br>$c->stash(<br>products => $products,<br>template => 'template-legal.tt2',<br>current_view => 'TemplatePadrao',<br>);<br><br>pronto, eu poderia ir para outro método e acessar o $c->stash->{products} , ou, posso ir para minha View e acessá-lo, conforme o exemplo: <br>
<br>(no template-legal.tt2):<br><br><div><br>....<br>[% WHILE (product = products.next) %]<br>Nome: [% product.nome %]<br>Preço: [% product.preco %]<br>Categoria: [% product.categoria %]<br>[% END %]<br>....<br></div><br>
<br><br><br>Ok, agora só falta um exemplo de formulário com HTML::FormHandler:<br><br> my $form = HTML::FormHandler->new( <br> field_list => [<br><br> nome => { <br> type => 'Text', <br>
label => 'Nome',<br> required => 1,<br> required_message => 'Campo obrigatório' ,<br> },<br><br> sexo => { <br> type => 'Select', <br>
label => 'Sexo',<br> required => 1,<br> required_message => 'Campo obrigatório' ,<br> options => [<br> { label => 'SIM', value => 'SIM'},<br>
{ label => 'NÃO', value => 'NÃO'},<br> ],<br> },<br><br> submit => {<br> type => 'Submit', <br> value => 'Salvar',<br>
},<br><br> ]);<br><br><br><br><br><br> if ($c->req->method eq 'POST') { #Assim podemos verificar o methodo do request<br> $form->process( params => $c->req->params ); # E acessar as chaves/valores do formulario postado<br>
}<br><br> $c->stash( form => $form ); # Jogamos o form no stash para acessar na view<br><br><br> return unless $form->validated; # Tentamos validar o formulario<br>
<br> $c->response->redirect($c->uri_for('/')); # e assim redirecionamos para a url /<br><br><br>Certo, depois para renderizar isto na view é muito simples... apenas:<br><br><div><br>
...<br>[% form.render %]<br>...<br></div><br><br><br><br><br>Espero ter ajudado a visualizar um pouco como as coisas básicas funcionam.<br><br>Fora isso o resto é auto explicativo, catalyst é bastante direto e sem complicações. <br>
e conforme já foi dito, é possível criar aplicações simples e complexas.<br><br>dá gosto trabalhar com catalyst!!!o melhor framework web, sem dúvidas!<br><br>att<br><br>Hernan<br><br><br><br>
<div class="gmail_quote">2011/1/7 Blabos de Blebe <span dir="ltr"><<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>></span>
<div>
<div></div>
<div class="h5"><br>
<blockquote style="BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">Eu tenho usado bastante o Mojolicious::Lite para prototipação.<br><br>Experimentei brevemente o Dancer e gostei da documentação.<br>
<br>Mojo e Dancer tem uma curva de aprendizagem bem suave. Você passa o<br>olho na doc e sai fazendo.<br><br>Já o Catalyst, por ser mais parrudo é mais chatinho no começo, depois melhora.<br><br>...<br><br>Divagando...<br>
<br>Não que seja o caso, nem é o foco da thread e talvez até contextualize<br>o tom da brincadeira, mas se eu vejo uma frase começando com 'não me<br>importo em *ter que* X', ou 'não tenho *problema* em Y', acende aquele<br>
sinal de alerta.<br><br>*Se* passa pela cabeça a expressão 'ter que programar em Perl' um<br>conselho que eu dou: *Não faça isso*.<br><br>Perl será uma linguagem iadequada, feia, cheia de caracteres<br>estranhos, write-only, não importa qual framework utilizado.<br>
<br>End of divagation<br>
<div>
<div></div>
<div><br>Abraços<br><br>2011/1/7 Rogerio Ferreira <<a href="mailto:rogeriotux@gmail.com" target="_blank">rogeriotux@gmail.com</a>>:<br>> ,<br>><br>> Eu não tenho problema em escrever em Perl, Python, ou outra coisa qualquer.<br>
> Só quero escolher um framework pra acelerar as coisas pro Projeto que vou<br>> iniciar.<br>><br>> Mas já valeu pelo cases que o Breno passou que usam Catalyst.<br>><br>> Em 7 de janeiro de 2011 15:13, Blabos de Blebe <<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>> escreveu:<br>
>><br>>> Escrever Perl é como sexo.<br>>><br>>> Pode ser prazeroso ou dolorozo dependendo de como você fizer.<br>>><br>>> Por isso é uma diversão melhor indicada para adultos que sabem o que<br>
>> estão fazendo :)<br>>><br>>> Abraços<br>>><br>>> 2011/1/7 Rogerio Ferreira <<a href="mailto:rogeriotux@gmail.com" target="_blank">rogeriotux@gmail.com</a>>:<br>>> > Valeu Breno!<br>
>> ><br>>> > Como ainda não tomei a decisão sobre qual Framework vou usar, a sua<br>>> > explanação vai dar alguma orientação. Mas vou fazer mais alguns testes<br>>> > com o<br>>> > Catalyst, e como não sou religioso de linguagem alguma, a pesar de já<br>
>> > ter<br>>> > sido com Python, quando desenvolvia com Zope/Plone, não me importo em<br>>> > ter<br>>> > que escrever código em Perl.<br>>> ><br>>> > Obrigado pelas informações.<br>
>> ><br>>> > Em 7 de janeiro de 2011 12:56, breno <<a href="mailto:breno@rio.pm.org" target="_blank">breno@rio.pm.org</a>> escreveu:<br>>> >><br>>> >> 2011/1/7 Rogerio Ferreira <<a href="mailto:rogeriotux@gmail.com" target="_blank">rogeriotux@gmail.com</a>>:<br>
>> >> > Oi Pessoal,<br>>> >> ><br>>> >><br>>> >> Oi Rogério, bem-vindo!<br>>> >><br>>> >> > Estou postando essa mensagem na lista, pois acredito que não lugar<br>
>> >> > melhor<br>>> >> > para chegar a uma conclusão. Já conheço alguns Frameworks, CMSs,<br>>> >> > etc...,<br>>> >> > e<br>>> >> > algumas linguagens de scripting. Eu tenho um projeto para iniciar e<br>
>> >> > andei<br>>> >> > pesquisando sobre o Catalyst, apesar de conhecer Rails, e como não<br>>> >> > gosto<br>>> >> > muito de Django, a pesar de gostar de python, eu tenho pretensão de<br>
>> >> > usar<br>>> >> > o<br>>> >> > Catalyst neste projeto. Por isso gostaria de saber de vocês, já que<br>>> >> > aqui<br>>> >> > é a<br>>> >> > vossa praia, sobre suas experiências com o Framework, tais como:<br>
>> >> > Agilidade<br>>> >> > para Produzir Resultados, Performance, Manutenção de<br>>> >> > Código Produzido e<br>>> >> > projetos que já usam Catalyst em ambiente de grande demanda de<br>
>> >> > acessos<br>>> >> > simultaneos.<br>>> >> ><br>>> >> > Quem puder compartilhar comigo algo a respeito, eu ficarei grato.<br>>> >> ><br>>> >><br>
>> >> O Catalyst é um excelente framework, estável e robusto, e permite o<br>>> >> desenvolvimento de aplicações escaláveis desde a primeira linha de<br>>> >> código. De fato, ele foi projetado pra isso, então o primeiro<br>
>> >> resultado pode não ser tão rápido quando em um framework mais simples,<br>>> >> mas o quinto resultado será muito mais rápido e gratificante. Se vc<br>>> >> leu o XKCD dessa semana[<a href="http://xkcd.com/844/" target="_blank">http://xkcd.com/844/</a>], o Catalyst faz um<br>
>> >> esforço bastante válido e razoável pra ligar o "code right" com o<br>>> >> "code fast" (e, quem sabe, te tirar eventualmente do loop infinito e<br>>> >> levar ao mítico "good code") :-)<br>
>> >><br>>> >> A agilidade para produzir resultados, infelizmente, e<br>>> >> consequentemente, depende do seu grau de conhecimento. Mais ainda<br>>> >> (alguns diriam até que principalmente), é importante que ele se<br>
>> >> encaixe com seu modo de pensar. Como o Catalyst é a grande cola entre<br>>> >> soluções de templating e ORMs, vc precisa saber usar todas essas<br>>> >> pontas para chegar a resultados palpáveis. Do lado das Views temos o<br>
>> >> Template Toolkit como escolha da maioria. Já para o Model você pode ir<br>>> >> do robusto DBIx::Class a alternativas como MongoDB, CouchDB ou mesmo<br>>> >> KiokuDB.<br>>> >><br>
>> >> Experimente fazer o<br>>> >> tutorial[<a href="http://search.cpan.org/perldoc?Catalyst::Manual::Tutorial" target="_blank">http://search.cpan.org/perldoc?Catalyst::Manual::Tutorial</a>] e<br>>> >> ver se vc se sente confortável com o Catalyst. O tutorial cobre ainda<br>
>> >> o básico de Template Toolkit e DBIx::Class. Se gostar, pode comprar o<br>>> >> livro<br>>> >><br>>> >> [<a href="http://www.amazon.co.uk/Definitive-Guide-Catalyst-Maintainable-Applications/dp/1430223650?&camp=2486&linkCode=wey&tag=enligperlorga-21&creative=8882" target="_blank">http://www.amazon.co.uk/Definitive-Guide-Catalyst-Maintainable-Applications/dp/1430223650?&camp=2486&linkCode=wey&tag=enligperlorga-21&creative=8882</a>].<br>
>> >> Se não gostar, não vale muito a pena insistir, e o mundo Perl está<br>>> >> cheio de alternativas bacanas para outros meios de pensar, como o<br>>> >> Mojolicious e o Dancer.<br>>> >><br>
>> >> O desempenho de soluções web depende muito da infraestrutura por<br>>> >> baixo. Se vc vem de Rails, sabe que um bom hardware faz toda a<br>>> >> diferença, que o grande gargalo é o banco, e que muitas vezes sai mais<br>
>> >> em conta pagar por uma melhoria na infra do que pagar um ou mais devs<br>>> >> pra otimizar o código. Dito isso, sim, as facilidades oferecidas pelo<br>>> >> Catalyst compensam e muito o overhead que ele causa, ainda mais<br>
>> >> rodando em cima de um fastcgi.<br>>> >><br>>> >> Ao contrário de muitas soluções, o Catalyst não coloca propaganda em<br>>> >> headers ou coisa que o valha, então é difícil listar sites com ele a<br>
>> >> menos que o dev procure a comunidade e avise. Se vc quer um exemplo de<br>>> >> "projetos que já usam Catalyst em ambiente de grande demanda de<br>>> >> acessos simultânos", um bom exemplo é o YouPorn[<a href="http://www.youporn.com/" target="_blank">http://www.youporn.com</a><br>
>> >> - NSFW], que circula entre os 50 sites mais visitados do mundo. O<br>>> >> iPlayer da BBC não é muito conhecido aqui no Brasil, mas também é de<br>>> >> altíssimo tráfego.<br>>> >><br>
>> >> Espero ter ajudado. Se sobrou alguma dúvida, tamos aí pra isso :-)<br>>> >><br>>> >> []s<br>>> >><br>>> >> -b<br>>> >> =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" target="_blank">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>>> ><br>>> ><br>>> ><br>>> > --<br>>> > Rogerio Ferreira<br>>> > <a href="http://rogerioferreira.objectis.net/" target="_blank">http://rogerioferreira.objectis.net</a><br>
>> > <a href="http://www.howtoday.com.br/" target="_blank">http://www.howtoday.com.br</a><br>>> > <a href="http://events.linuxfoundation.org/events/linuxcon-brazil/schedule" target="_blank">http://events.linuxfoundation.org/events/linuxcon-brazil/schedule</a><br>
>> > <a href="http://www.xen.org/files/XDBrazil2010/SpeakerProfiles.pdf" target="_blank">http://www.xen.org/files/XDBrazil2010/SpeakerProfiles.pdf</a><br>>> > Fone: (11) 9424-0419<br>>> > --------------------------------------------------------<br>
>> > LPI 302 (Mixed Environment) Specialty<br>>> > Senior Level Linux Professional (LPIC-3)<br>>> > Advanced Level Linux Professional (LPIC-2)<br>>> > Junior Level Linux Professional (LPIC-1)<br>
>> ><br>>> > =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" target="_blank">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>>> ><br>>> ><br>>> =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" target="_blank">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>><br>><br>><br>> --<br>> Rogerio Ferreira<br>
> <a href="http://rogerioferreira.objectis.net/" target="_blank">http://rogerioferreira.objectis.net</a><br>> <a href="http://www.howtoday.com.br/" target="_blank">http://www.howtoday.com.br</a><br>> <a href="http://events.linuxfoundation.org/events/linuxcon-brazil/schedule" target="_blank">http://events.linuxfoundation.org/events/linuxcon-brazil/schedule</a><br>
> <a href="http://www.xen.org/files/XDBrazil2010/SpeakerProfiles.pdf" target="_blank">http://www.xen.org/files/XDBrazil2010/SpeakerProfiles.pdf</a><br>> Fone: (11) 9424-0419<br>> --------------------------------------------------------<br>
> LPI 302 (Mixed Environment) Specialty<br>> Senior Level Linux Professional (LPIC-3)<br>> Advanced Level Linux Professional (LPIC-2)<br>> Junior Level Linux Professional (LPIC-1)<br>><br>> =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" target="_blank">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>><br>><br>=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" target="_blank">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></div></div><br><br>=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><br></blockquote></div><br><br clear="all"><br>-- <br>Rogerio Ferreira<br>
<a href="http://rogerioferreira.objectis.net/" target="_blank">http://rogerioferreira.objectis.net</a><br><a href="http://www.howtoday.com.br/" target="_blank">http://www.howtoday.com.br</a>
<div><a href="http://events.linuxfoundation.org/events/linuxcon-brazil/schedule" target="_blank">http://events.linuxfoundation.org/events/linuxcon-brazil/schedule</a></div><a href="http://www.xen.org/files/XDBrazil2010/SpeakerProfiles.pdf" target="_blank">http://www.xen.org/files/XDBrazil2010/SpeakerProfiles.pdf</a><br>
<div>Fone: (11) 9424-0419<br></div>--------------------------------------------------------<br>LPI 302 (Mixed Environment) Specialty<br>Senior Level Linux Professional (LPIC-3)<br>Advanced Level Linux Professional (LPIC-2)<br>
Junior Level Linux Professional (LPIC-1) <br>