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

Blabos de Blebe blabos at gmail.com
Tue Sep 3 19:14:38 PDT 2013


Na verdade foi até coincidência o Solli tocar no assunto, pq assim como
mapas, eu ia perguntar isso pra vcs em breve.


2013/9/3 Blabos de Blebe <blabos em gmail.com>

> > 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
>
> Correto.
>
> > Se mudar o nome do campo entao… chora hehehe
>
> Correto denovo.
>
> > Marcar o campo errado em vermelho vai precisar de mais gambi :D
>
> Mais ou menos. Eu uso uma alternativa, no exemplo. Mas sim, é melhor
> marcar o campo com vermelho.
>
> > Tem muitas vantagens usar o Data::Manager
>
> Correto denovo.
>
> O porém é que o meu exemplo é exatamente específico. Um form, quatro
> campos.
>
> Não to dizendo que nao vou usar o Data::Manager, ou alguma solução
> parecida. Só nao vou usar nessa semana :)
>
> As soluções apresentadas são apenas o mais pá-pow que dá pra fazer com *a*
> hard-restriction desse sprint: tempo; e uma soft-restriction: Data::Manager
> é novo pra mim.
>
> Depois eu refatoro. Tá previsto isso.
>
> Tá pronto x Tá bom.
>
> No meu caso nesse momento, tá pronto é mandatório. Quem me conhece sabe o
> quanto eu gosto de gambiarra e o quanto tá custando esse tá pronto.
>
> :)
>
> []'s
>
>
>
>
>
> 2013/9/3 Lucas Oliveira <lucasmateus.oliveira em gmail.com>
>
>>
>> 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
>>
>>
>>
>> =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/b5c85408/attachment-0001.html>


More information about the SaoPaulo-pm mailing list