Na verdade eu estou curioso para ver como o catalyst vai resolver o problema da complexidade.
A resposta do Eden foi interessante pois mostrou que as diferenças não são tão grandes assim. Aliás -- acho que o projeto do Eden é muito promissor. []s Op 12 jul. 2011 20:30 schreef "Blabos de Blebe" <[email protected]> het volgende: >> e tal mas isso me faz questionar quantas pessoas realmente estão usando >> o mojolicious em produção, porque basic http auth é uma funcionalidade > > http://news.bbc.co.uk/2/hi/8499859.stm > > ... isso me faz questionar quantas pessoas realmente estão usando o > windows em produção... > > http://blogmal.42.org/tidbits/tcp-bug.story > > ... isso me faz questionar quantas pessoas realmente estão usando o > TCP em produção... > > http://www.osnews.com/story/19731/The-25-Year-Old-UNIX-Bug > > ... isso me faz questionar quantas pessoas realmente estão usando o > BSD em produção... > > http://blogs.westword.com/showandtell/01%20your%20argument%20is%20invalid.jpg > > Pronto, trolei um. > > Com comentários desnecessários e exemplo de código ruim, colocar o > Mojolicious nessa conversa foi um desfavor à discussão e ao framework. > A pergunta foi sobre sessões e Catalyst. Pra que botar Mojo na > história? Só pra gerar flame? Palhaçada isso. > > Trolei outro. > > ;) > > Abraços > > > > 2011/7/12 Eden Cardim <[email protected]>: >>>>>>> "Nelson" == Nelson Ferraz <[email protected]> writes: >> >> Nelson> Sem querer iniciar uma flamewar, mas este é apenas mais um exemplo >> Nelson> onde o Catalyst complica demais algo que deveria ser simples. >> >> Apesar do título da mensagem original ser sobre sessões, a dúvida do >> Lucas era sobre outra coisa, então o exemplo não procede. >> >> A princípio, não entendi o código de exemplo porque sessões e usuários >> são conceitos ortogonais, mas ok, pra fazer exatamente a mesma coisa no >> catalyst (mesmo sem fazer sentido): >> >> Nelson> Veja como isso pode ser feito no Mojolicious: >> >> ,----[ # 1: verificar uma variável de sessão ] >> | get '/' => sub { >> | my $self = shift; >> | my $username = $self->session('username'); >> | self->redirect_to('/login') if !$username; >> | $self->render( text => "Hello, $username" ); >> | }; >> `---- >> >> sub root :Path('/') { >> my($self, $c) = @_; >> my $username = $c->session->{username}; >> $c->res->redirect('/login') if !$username; >> $c->res->body("Hello $username"); >> } >> >> Não muda muita coisa, e se fosse só pelo golf, o Catalyst ainda levava. >> >> ,----[ 2: definir uma variável de sessão ] >> | get '/login' => sub { >> | my $self = shift; >> | >> | my $username = $self->param('username'); >> | my $password = $self->param('password'); >> | >> | if ($username eq 'foo' and $password eq 'bar') { >> | $self->session( username => $username ); >> | $self->redirect_to('/'); >> | } >> | >> | $self->render( text => "Please use: >> | http://localhost:3000/login?username=xxx;password=yyy" ); >> | }; >> `---- >> >> sub login :Path { >> my($self, $c) = @_; >> >> my($username, $password) = @{$self->params} >> {qw(username password)}; >> >> if($username eq 'foo' and $password eq 'bar') { >> $c->session->{username} = $username; >> $c->res->redirect('/'); >> } >> >> $c->res->body("Please use: http://localhost:3000/login?username=xxx;password=yyy"); >> } >> >> Nelson> # 3: remover uma variável de sessão >> >> ,----[ 3: remover uma variável de sessão ] >> | get '/logout' => sub { >> | my $self = shift; >> | >> | my $username = $self->session('username'); >> | $self->session( username => undef ); # poderia ter usado "expire" >> | >> | $self->render( text => "Bye bye, $username" ); >> | }; >> `---- >> >> sub logout :Path { >> my($self, $c) = @_; >> my $username = delete $c->session->{username}; >> $c->res->body("Bye, bye, $username"); >> } >> >> Claro que eu nunca recomendaria que se usasse autenticação dessa forma, >> a abordagem padrão do catalyst para autenticação é bem mais simples que >> isso: >> >> sub login :Path { >> my($self, $c) = @_; >> $c->authenticate() >> and $c->res->redirect('/'), return; >> $c->res->body('wrong username or password'); >> } >> >> sub login :Path { >> my($self, $c) = @_; >> $c->logout(); >> } >> >> O sistema de autenticação do Catalyst é extremamente flexível, robusto e >> completo, e tudo funciona colando os pedaços que você precisa, assim a >> aplicação não enche de bloat. Por exemplo, outro dia precisei >> implementar uma funcionalidade de sudo (um usuário com privilégios >> suficientes, precisaria ser capaz de trocar sua sessão pruma sessão de >> outro usuário qualquer). Um desenvolvedor do projeto, que aprendeu a >> programar perl há 4 meses implementou (completo, com testes, etc.), em 2 >> horas de trabalho. 30 minutos pra implementar a funcionalidade, 90 pra >> implementar os testes unitários e de integração. No final das contas, o >> core do código funcional ficou assim: >> >> $c->authenticate({ email => $email, pasword => 'DUMMY' }, 'sudo') >> if $c->user->check_user_roles('admin'); >> >> Inclusive, eu experimentei novamente o mojolicious outro dia porque o >> thiago precisa de autenticação prum projeto dele, mas o plugin que >> implementava basic http auth tava bugado por incompatibilidade com uma >> versão que saiu a mais de 10 releases atrás. O thiago submeteu um patch >> e tal mas isso me faz questionar quantas pessoas realmente estão usando >> o mojolicious em produção, porque basic http auth é uma funcionalidade >> trivial e muito exigida em apps do mundo real, se tivesse alguém usando >> em produção, já teriam esbarrado com o problema e atualizado o plugin na >> versão seguinte. >> >> Nelson> PS: Até onde eu sei, o Eden estava trabalhando em um projeto que >> Nelson> traria esse tipo de simplicidade para o Catalyst. Em que pé está esse >> Nelson> projeto, Eden? >> >> Na verdade, não é um projeto pra trazer simplicidade, a simplicidade já >> está no core. Só é uma extensão que inclui uma forma alternativa de >> declarar regras de dispatch: >> >> https://github.com/edenc/Catalyst-Lite/blob/master/lib/Catalyst/Lite.pm >> >> Estou investindo meu tempo livre aos poucos pra incluir mais sintaxe, o >> problema é que esse projeto não tá com uma prioridade muito alta na >> minha fila porque a única utilidade pra ele é brincar de golf. >> >> -- >> Eden Cardim Need help with your Catalyst or DBIx::Class project? >> Code Monkey http://www.shadowcat.co.uk/catalyst/ >> Shadowcat Systems Ltd. Want a managed development or deployment platform? >> http://blog.edencardim.com/ http://www.shadowcat.co.uk/servers/ >> http://twitter.com/#!/edenc >> =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
