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