[SP-pm] Data::Manager, alguém utiliza este troço ?!

Lucas Oliveira lucasmateus.oliveira at gmail.com
Tue Sep 3 14:51:08 PDT 2013


	Blabos, e se você tiver 2 formulários na mesma página, por exemplo, um de login e um de cadastro ? Vai ter que melhorar na gambi né ? heheheheheh

	Se mudar o nome do campo entao… chora hehehe

	Se precisar fazer um "pirulito" para importar para a base a validação não é aproveitável… esqueçe

	Marcar o campo errado em vermelho vai precisar de mais gambi :D

	Tem muitas vantagens usar o Data::Manager 


Em 03/09/2013, às 18:30, Blabos de Blebe <blabos em gmail.com> escreveu:

> Opa,
> 
> O meu caso é muito simples (pequeno) e o meu tempo é curto. O que foi mais rápido pra mim foi essa tosqueria aqui:
> 
> No controller:
> 
> ...
> my $errors  = [];
> 
> ## not null
> foreach my $field ( keys %{$fields} ) {
>     push @{$errors}, 'empty_' . $field
>       unless $fields->{$field};
> }
> 
> ## unique
> foreach my $field (qw{ username email }) {
>     push @{$errors}, 'already_' . $field
>       if $rs_user->find( { $field => $fields->{$field} } );
> }
> 
> ## invalid email
> push @{$errors}, 'invalid_email'
>   unless Email::Valid->address( $fields->{email} );
> 
> if ( @{$errors} > 0 ) {
>     $c->stash->{user}   = $fields;
>     $c->stash->{errors} = $errors;
>     return;
> }
> ...
> 
> No template:
> 
>     [% IF errors.size > 0 %]
>         <div data-alert class="alert-box alert">
>             [% FOREACH error IN errors %]
>                 [% msg_block = 'msg_' _ error %]
>                 [% PROCESS $msg_block %]<br>
>             [% END %]
>             <a href="#" class="close">×</a>
>         </div>
>     [% END %]
> ...
> 
> [% BLOCK msg_empty_full_name %]
>     Você precisa preencher o seu nome completo.
> [% END %]
> 
> [% BLOCK msg_empty_username %]
>     Você precisa preencher o seu username.
> [% END %]
> ...
> 
> 
> 
> Deve ter formas mais inteligentes de fazer isso, mas no momento, a mais inteligente pra mim, é a que eu consigo fazer mais rápido. Esse é meu "único" form.
> 
> []'s
> 
> 
> 2013/9/3 Solli Honorio <shonorio em gmail.com>
> Blabos, o que você está imaginando para validar ? Estilo old-school com um encadeamento de if ? Dispatch table ? NDA ?
> 
> Abraços,
> 
> Solli Honorio
> 
> 
> Em 3 de setembro de 2013 16:35, Blabos de Blebe <blabos em gmail.com> escreveu:
> 
> Em alguns casos, complexidade é um pouco ponto de vista.
> 
> Acho que entendi a abordagem do mantovani, mas pro meu caso específico, acho que é também o overhead, já que eu só valido 4 campos em uma situação eventual. Estou cogitando nem usar o Data::Manager.
> 
> Se fosse um cazilhao de campos sendo validados constantemente, acho que valeira a pena.
> 
> Mantovani, cuidado pra não ficar aparafusando pregos, certo!?
> 
> []'s
> 
> 
> 2013/9/3 Solli Honorio <shonorio em gmail.com>
> Sério mesmo Mantovani que vc acha que um sistema de fila é a solução para eu validar se todos os campos de um formulário estão dentro do aguardado para trabalhar no  banco de dados ?
> 
> Mantovani, só posso dizer que estou orgulhoso de você... vejo que você terá um excelente futuro na industria de tecnologia (coisa que eu não tive), pois este é bem o comportamento dos vendedores de TI. Você está agregando complexidade numa lugar que estou tentando agregar simplicidade :D !!!
> 
> Abraços,
> 
> Solli Honorio
> 
> 
> 
> Em 3 de setembro de 2013 14:58, Daniel de Oliveira Mantovani <daniel.oliveira.mantovani em gmail.com> escreveu:
> 
> 2013/9/3 Solli Honorio <shonorio em gmail.com>:
> > Lucas,
> >
> > Obrigado pelo retorno. Ontem a noite estudei o código do Data::Manager e ví
> > que realmente não rola fazer o que eu estava querendo fazer (passar uma
> > pilha de mensagem e receber de acordo com o contexto) e ai estou
> > encaminhando para a mesma solução que você.
> 
> " o que eu estava querendo fazer (passar uma pilha de mensagem e
> receber de acordo com o contexto)"
> 
> Shonorio, repetindo o AMQP se encaixa perfeitamente. Eu sugiro que
> você leia o link que eu te enviei. Se um serviço na sua máquina vai te
> poupar centenas de linhas de código, talvez nessa situação, nesse
> contexto obscuro no qual não foi definido pelo interlocutor seja uma
> boa.
> 
> Se você acha que isso é demais para você, eu sinto muito que alguém
> com pelo menos 15/20 anos de experiência ainda não saiba formular uma
> pergunta. Perguntas genéricas, respostas genéricas. E ainda acho
> extremamente desnecessário o seu ataque gratuito, mas se você ainda
> não percebeu isso afasta as pessoas da lista.
> 
> >
> > Como vc faz com o I18N ?
> >
> > O Renato Cron publicou um 'template'  ( https://github.com/AwareTI/MyApp )
> > de como eles estão utilizando o Data::Manager. Estudei o código e achei
> > engenhoso, mas ainda quero manter um melhor controle do ResultSet porquê
> > quero devolver uma estrutura mais complexa de informação.
> >
> > Abraços,
> >
> > Solli Honorio
> >
> >
> >
> > 2013/9/3 Lucas Oliveira <lucasmateus.oliveira em gmail.com>
> >>
> >>
> >> Normalmente eu uso sempre com I18N mas da pra quebrar o galho assim
> >>
> >> <code>
> >> #!/usr/bin/env perl
> >>
> >> use common::sense;
> >> use Data::Manager;
> >> use Data::Verifier;
> >>
> >> my %msg_data = (
> >>    missing_name_last => 'Nao foi informado o campo name_last, seu idiota
> >> !',
> >> );
> >>
> >> sub messages { $msg_data{$_[0]} || $_[0] }
> >>
> >> my $dm = Data::Manager->new;
> >> my $dv = Data::Verifier->new(
> >>     filters => [ qw(trim) ],
> >>         profile => {
> >>             name_first => {
> >>                 required => 1,
> >>                 type     => 'Str',
> >>                 filters  => [ qw(collapse) ]
> >>             },
> >>             name_last => {
> >>                 required => 1,
> >>                 type     => 'Str',
> >>                 filters  => [ qw(collapse) ]
> >>             },
> >>             age  => {
> >>                 type        => 'Int'
> >>             },
> >>             sign => {
> >>                 required    => 1,
> >>                 type        => 'Str'
> >>             }
> >>         }
> >>     );
> >>
> >> $dm->set_verifier( name => $dv );
> >> $dm->verify( name => { name_first => 'Solli' });
> >>
> >> if (!$dm->success) {
> >>    print &messages( $_->msgid ).$/
> >>       foreach (@{ $dm->messages->messages });
> >> }
> >> </code>
> >>
> >>
> >> Em 02/09/2013, às 11:10, Solli Honorio <shonorio em gmail.com> escreveu:
> >>
> >> Pessoal,
> >>
> >> Estou tentando configurar uma mensagem padronização no Data::Manager, mas
> >> não está funcionando. Alguém aqui já utilizou o Data::Manager para saber se
> >> é possível fazer isto que eu quero ?
> >>
> >> O código abaixo, estou criando uma mensagem e adicionando no Data::Manger,
> >> porquê eu imaginei que quando ocorrer o problema dentro do escopo e msgid,
> >> eu teria o texto padronizado, mas o que estou recebendo é mais uma pilha de
> >> mensagem, mesmo quando não existe o erro.
> >>
> >> <code>
> >> #!/usr/bin/env perl
> >> use common::sense;
> >> use Data::Manager;
> >> use Data::Verifier;
> >> use Data::Printer;
> >>
> >> my $msg = Message::Stack->new;
> >> $msg->add({
> >>     msgid   => 'missing_name_last',
> >>     level   => 'error',
> >>     scope   => 'name1',
> >>     subject => 'name_last',
> >>     text    => 'Não foi informado o campo name_last, seu idiota !'} );
> >>
> >> my $dm = Data::Manager->new( { messages => $msg } );
> >> my $dv = Data::Verifier->new(
> >>     filters => [ qw(trim) ],
> >>         profile => {
> >>             name => {
> >>                 required => 1,
> >>                 type     => 'Str',
> >>                 filters  => [ qw(collapse) ]
> >>             },
> >>             age  => {
> >>                 type        => 'Int'
> >>             },
> >>             sign => {
> >>                 required    => 1,
> >>                 type        => 'Str'
> >>             }
> >>         }
> >>     );
> >>
> >>
> >> };
> >>
> >>
> >> $dm->set_verifier('name1', $verifier);
> >> $dm->verify('name1', { name_last => 'Honorio', name_first => 'Solli' });
> >>
> >> my $results = $dm->get_results('name1');
> >> my $stack   = $dm->messages_for_scope('name1');
> >>
> >> say $results->success;
> >>
> >> say "Is invalid name_first ", $results->is_invalid('name_first');
> >> say "Is invalid name_last ",  $results->is_invalid('name_last');  # yes
> >>
> >> say "Is missing name_first ", $results->is_missing('name_first'); # no
> >> say "Is missing is_missing ", $results->is_missing('name_last'); # yes
> >>
> >> say "Missing count ", $results->missing_count;
> >>
> >> say "Count : ",  $stack->count ;
> >> p $stack->get_message( 0 );
> >> p $stack->get_message( 1 );
> >>
> >> </code>
> >>
> >>
> >> --
> >> "o animal satisfeito dorme". - Guimarães Rosa
> >> =begin disclaimer
> >>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
> >> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
> >> 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: SaoPaulo-pm em pm.org
> >>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> >> =end disclaimer
> >>
> >
> >
> >
> > --
> > "o animal satisfeito dorme". - Guimarães Rosa
> >
> > =begin disclaimer
> >    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
> >  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
> >  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> > =end disclaimer
> >
> 
> 
> 
> --
> 
> -dom
> 
> --
> 
> Daniel de Oliveira Mantovani
> Business Analytic Specialist
> Perl Evangelist /Astrophysics hobbyist.
> +55 11 9 8538-9897
> XOXO
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
> 
> 
> 
> -- 
> "o animal satisfeito dorme". - Guimarães Rosa
> 
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>  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: SaoPaulo-pm em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
> 
> 
> 
> 
> -- 
> "o animal satisfeito dorme". - Guimarães Rosa
> 
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>  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: SaoPaulo-pm em pm.org
> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer

-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130903/ce89e31c/attachment-0001.html>


More information about the SaoPaulo-pm mailing list