Re: [Rio-pm] Metodos de Download em Massa
Gostei desse Future. Talvez possa usar como alternativa para IPC::ShareTables em algumas situações. Quanto ao Fork, eu passei muito tempo na sombra quanto ao assunto de threads, forks, parallel, async, queue, ..., vejo muitas pessoas com posições diferentes mas a maioria fala pra evitar threads por exemplo, eu mesmo nunca usava nada por causa das diversas opnões (e infelizmente computação não é minha principal expertize), mas eu aprendi que tudo depende. No caso do meu script, eu uso fork pra fazer varios downoads, é uma atividade simples na maioria das vezes, e no final se você acompanha os processos (pai e filhos), o consumo de memoria e CPU é praticamente 0 cada (juro, mem = 0, cpu <= 0.7), então o máximo que pesa nesse caso é o número de PIDs que o sistema vai gerenciar. Devo ta falando muita besteira, mas continuando, o problema que eu vejo em fork nesse caso é imprimir o download. Nesse caso é um problema de pós processamento, que pode ser resolvido linearmente, gerando temp files pra cada download depois unindo tudo seria uma solução. Minha pergunta nesses casos é: "quanto essa etapa influência no desempenho total do programa?". Por exemplo, eu tenho uma aplicação que simplismente faz wraper que encapsula um outro programa de bioinfo, é um programa que mesmo você pedindo pra usar 8 cpu demora (dependendo do dataset) 20h pra terminar, eu não me importo em um servidor criar 40 maquinas virtuais com 8 cpu cada e paralelizar com fork mesmo todos os processos filhos e terminar tudo em 30 minutos mesmo que pese. Claro que depende de recursos computacionais tbm. No final não é so custo, mas benefício tambem. Especificamente no caso desse downloader não é necessidade, é mais o caso de criar opções e explorar possibilidades, pois tenho outros downloaders que resolvem meu problema, so que esse é o primeiro que devide e paraleliza os processos. From: Rio-pm on behalf of Renato Santos Sent: Wednesday, May 24, 2017 9:57:19 PM To: Perl Mongers Rio de Janeiro Subject: Re: [Rio-pm] Metodos de Download em Massa Recomendo usar qualquer coisa menos forks para fazer downloads. Forks são pesados, geram muitas trocas de contextos desnecessárias para tarefas tão triviais como downloads em paralelo. Se o yada ta complicado, ainda tem o https://metacpan.org/pod/HTTP::Async que com o Future fica uma mão na roda Algo como: use Future; use Future::Utils qw( try_repeat fmap1 ); use IO::Async::Loop; use Net::Async::HTTP; my $loop = IO::Async::Loop->new; my $http = Net::Async::HTTP->new( # serio, é assim q eu uso em produção, com max_connections_per_host=400 max_connections_per_host => 400, timeout => 10 * 60 ); $loop->add($http); sub DO_SOMETHING { my ( $algum_content, $url, $algum_contexto_talvez ) = @_; my $what = $http->do_request( method => 'GET PORT DELETE...', uri => "$url", content_type => 'text/plain', headers => [ 'Content-Type' => 'text/plain' ], content => ( join "\n", @$algum_content ) ); $what = try_repeat { $what } until => sub { eval { $_[0]->get->code == 200 }; }; return $what; } my @futures; for my $url ( 1 ... 100 ) { my $future = DO_SOMETHING( [...], $url, $algum_contexto_talvez )->on_done( sub { my $res = shift; if ( $res->content =~ /401 Unauthorized/ ) { # trata como se fosse erro, por exemplo } else { # ... } } )->on_fail( sub { my $failure = shift; log_error "error: $failure"; } ); push @futures, $future; } my @results = Future->needs_all(@futures)->get; 2017-05-24 16:53 GMT-03:00 Felipe Leprevost mailto:leprevos...@gmail.com>>: Apenas como curiosidade Aureliano, de onde você está tentando obter os arquivos ? On Wed, May 24, 2017 at 3:21 PM Felipe da Veiga Leprevost mailto:fel...@leprevost.com.br>> wrote: Apenas como curiosidade Aureliano, de onde você está tentando obter os arquivos ? On Wed, May 24, 2017 at 3:19 PM Aureliano Guedes mailto:guedes_1...@hotmail.com>> wrote: Opa, Yada achei muito complicado pra pouca coisa que vou fazer. Mas to convencido a tentar. Breno, o truncado é por causa que estou fazendo varios downloads com o Parallel::ForkManager de um arquivo no formato texto, onde cada identificador é um dado do arquivo, como eu trabalho com milhoes desses identificadores e o servidor recomenda se limitar a 500 por requisição acaba que tenho que fazer varios downloads. So que to imprimindo tudo em STDOUT e redirecionando a saida pra um aarquivo estilo UNIX mesmo > , então tem varios processo tenetando escrever na tela ao mesmo
Re: [Rio-pm] Metodos de Download em Massa
Então, esses no caso to pegando do NCBI. Muita gente vai dizer que tem e-utilities, BioPerl, mas convenhamos que epost, efetch não são muito eficientes para dataset largos, um curl e furl ja baixam mais rápido. BioPerl é dispensável pra pra um simples get. E ja baixei o que precisava, inclusive eu tinha outro script pra essa tarefa, so que agora to usando muitos datasets todos na faixa dos 2-3 milhoes de entradas cada. From: Rio-pm on behalf of Felipe Leprevost Sent: Wednesday, May 24, 2017 7:53:48 PM To: Perl Mongers Rio de Janeiro Subject: Re: [Rio-pm] Metodos de Download em Massa Apenas como curiosidade Aureliano, de onde você está tentando obter os arquivos ? On Wed, May 24, 2017 at 3:21 PM Felipe da Veiga Leprevost mailto:fel...@leprevost.com.br>> wrote: Apenas como curiosidade Aureliano, de onde você está tentando obter os arquivos ? On Wed, May 24, 2017 at 3:19 PM Aureliano Guedes mailto:guedes_1...@hotmail.com>> wrote: Opa, Yada achei muito complicado pra pouca coisa que vou fazer. Mas to convencido a tentar. Breno, o truncado é por causa que estou fazendo varios downloads com o Parallel::ForkManager de um arquivo no formato texto, onde cada identificador é um dado do arquivo, como eu trabalho com milhoes desses identificadores e o servidor recomenda se limitar a 500 por requisição acaba que tenho que fazer varios downloads. So que to imprimindo tudo em STDOUT e redirecionando a saida pra um aarquivo estilo UNIX mesmo > , então tem varios processo tenetando escrever na tela ao mesmo tempo, eu pensei em fazer um lock mas acho q isso vai fazer demorar. Exatamente aqui é o problema, IPC::ShareTable ou algo assim deve resolver. Alguma sujestão de solução ? my $pm = new Parallel::ForkManager($req); while(my $id = <$IN>){ $cnt++; chomp $id; if ($cnt == $split || $. == $nl){ #$split = 500; push @ids, $id; my @tmp = @ids; undef @ids; $cnt = 0; $pm->start and next; # do the fork my @resp = get_fasta(\@tmp, $db, $timeout); if ($resp[0]){ $resp[1] =~ s/^\s*\n+//mg; print STDOUT $resp[1]; } else{ print STDERR "Status: $resp[2]\n$resp[3]\nDetails: $resp[1]\n"; print STDERR join (" ", "Fail:", @tmp, "\n"); } $pm->finish; #tihs is a fork, at the end (here) the memory will be released } else{ push @ids, $id; } } $pm->wait_all_children; From: Rio-pm mailto:hotmail@pm.org>> on behalf of breno mailto:oainikus...@gmail.com>> Sent: Wednesday, May 24, 2017 3:54:47 AM To: Perl Mongers Rio de Janeiro Subject: Re: [Rio-pm] Metodos de Download em Massa Oi Aureliano, se você está interessado em benchmarks, pode experimentar o LWP::Curl em vez do Furl, ou se tiver paciência pra ir direto ao metal, Net::Curl ou WWW::Curl. O que quer dizer com "truncado"? Se a conexão cai depois de X bytes baixados (e se vc consegue garantir que o arquivo parcial contém apenas dados válidos), vc pode baixar só o que falta e depois juntar os dois pedaços na mão. Por exemplo, se o arquivo parcial foi baixado em "parcial.tmp": -8<- my $ua = Furl->new; my $res = $ua->get( 'http://exemplo.com/arquivo.tmp', Range => 'byes=' . -s 'parcial.tmp' . '-'); open my $ fh, '>>', 'parcial.tmp; print $fh, $res->content; close $fh; -8<- (código não testado, estou no celular) Se o servidor suporta conteúdo parcial (ele responde o primeiro request com Accept-Ranges), isso deve baixar o resto do arquivo. Idealmente, em vez de sobrescever o arquivo parcial, vc junta o conteúdo dos dois em um terceiro arquivo. Finalmente, se quiser baixar vários pedaços do arquivo em paralelo, pode experimentar o HTTP::Range e o LWP::Parallel::UserAgent, ou se inspirar neles e implementar sua própria solução paralela com Furl ou LWP::Curl. []s -b On 23:26, Tue, 23 May 2017 Aureliano Guedes, mailto:guedes_1...@hotmail.com>> wrote: Ola Monges, Gostaria de saber qual metodo vocês mais gostam para fazer downloads em massa. Eu usava muito LWP, recentemente comecei usar uma combinação de Parallel::ForkManager e Furl, mas pra meu tipo de dado tem truncado parte dos download. (vale uma dica pra lidar com dados truncados?) No meu caso, eu to fazendo download de mais me milhoes de sequencias, pra isso eu sigo a regra do servidor e peço apenas 500 por vez e limito em 10 fork. Tem outros metodos que posso usar mas acabo perdendo e muito a eficiência. Por isso pretendo testar um benchmark em varias formas diferentes. Bom, sei que existem ferramentas, BioPerl, etc... Abraços, acpguedes ___ Rio-pm mailing list Rio-pm@pm.org<mailto:Rio-pm@pm.org> http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org<mailto:Rio-
Re: [Rio-pm] Metodos de Download em Massa
Opa, Yada achei muito complicado pra pouca coisa que vou fazer. Mas to convencido a tentar. Breno, o truncado é por causa que estou fazendo varios downloads com o Parallel::ForkManager de um arquivo no formato texto, onde cada identificador é um dado do arquivo, como eu trabalho com milhoes desses identificadores e o servidor recomenda se limitar a 500 por requisição acaba que tenho que fazer varios downloads. So que to imprimindo tudo em STDOUT e redirecionando a saida pra um aarquivo estilo UNIX mesmo > , então tem varios processo tenetando escrever na tela ao mesmo tempo, eu pensei em fazer um lock mas acho q isso vai fazer demorar. Exatamente aqui é o problema, IPC::ShareTable ou algo assim deve resolver. Alguma sujestão de solução ? my $pm = new Parallel::ForkManager($req); while(my $id = <$IN>){ $cnt++; chomp $id; if ($cnt == $split || $. == $nl){ #$split = 500; push @ids, $id; my @tmp = @ids; undef @ids; $cnt = 0; $pm->start and next; # do the fork my @resp = get_fasta(\@tmp, $db, $timeout); if ($resp[0]){ $resp[1] =~ s/^\s*\n+//mg; print STDOUT $resp[1]; } else{ print STDERR "Status: $resp[2]\n$resp[3]\nDetails: $resp[1]\n"; print STDERR join (" ", "Fail:", @tmp, "\n"); } $pm->finish; #tihs is a fork, at the end (here) the memory will be released } else{ push @ids, $id; } } $pm->wait_all_children; From: Rio-pm on behalf of breno Sent: Wednesday, May 24, 2017 3:54:47 AM To: Perl Mongers Rio de Janeiro Subject: Re: [Rio-pm] Metodos de Download em Massa Oi Aureliano, se você está interessado em benchmarks, pode experimentar o LWP::Curl em vez do Furl, ou se tiver paciência pra ir direto ao metal, Net::Curl ou WWW::Curl. O que quer dizer com "truncado"? Se a conexão cai depois de X bytes baixados (e se vc consegue garantir que o arquivo parcial contém apenas dados válidos), vc pode baixar só o que falta e depois juntar os dois pedaços na mão. Por exemplo, se o arquivo parcial foi baixado em "parcial.tmp": -8<- my $ua = Furl->new; my $res = $ua->get( 'http://exemplo.com/arquivo.tmp', Range => 'byes=' . -s 'parcial.tmp' . '-'); open my $ fh, '>>', 'parcial.tmp; print $fh, $res->content; close $fh; -8<- (código não testado, estou no celular) Se o servidor suporta conteúdo parcial (ele responde o primeiro request com Accept-Ranges), isso deve baixar o resto do arquivo. Idealmente, em vez de sobrescever o arquivo parcial, vc junta o conteúdo dos dois em um terceiro arquivo. Finalmente, se quiser baixar vários pedaços do arquivo em paralelo, pode experimentar o HTTP::Range e o LWP::Parallel::UserAgent, ou se inspirar neles e implementar sua própria solução paralela com Furl ou LWP::Curl. []s -b On 23:26, Tue, 23 May 2017 Aureliano Guedes, mailto:guedes_1...@hotmail.com>> wrote: Ola Monges, Gostaria de saber qual metodo vocês mais gostam para fazer downloads em massa. Eu usava muito LWP, recentemente comecei usar uma combinação de Parallel::ForkManager e Furl, mas pra meu tipo de dado tem truncado parte dos download. (vale uma dica pra lidar com dados truncados?) No meu caso, eu to fazendo download de mais me milhoes de sequencias, pra isso eu sigo a regra do servidor e peço apenas 500 por vez e limito em 10 fork. Tem outros metodos que posso usar mas acabo perdendo e muito a eficiência. Por isso pretendo testar um benchmark em varias formas diferentes. Bom, sei que existem ferramentas, BioPerl, etc... Abraços, acpguedes ___ Rio-pm mailing list Rio-pm@pm.org<mailto:Rio-pm@pm.org> http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] Metodos de Download em Massa
Ola Monges, Gostaria de saber qual metodo vocês mais gostam para fazer downloads em massa. Eu usava muito LWP, recentemente comecei usar uma combinação de Parallel::ForkManager e Furl, mas pra meu tipo de dado tem truncado parte dos download. (vale uma dica pra lidar com dados truncados?) No meu caso, eu to fazendo download de mais me milhoes de sequencias, pra isso eu sigo a regra do servidor e peço apenas 500 por vez e limito em 10 fork. Tem outros metodos que posso usar mas acabo perdendo e muito a eficiência. Por isso pretendo testar um benchmark em varias formas diferentes. Bom, sei que existem ferramentas, BioPerl, etc... Abraços, acpguedes ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] (sem assunto)
Eu resolvi o problema, era so eu retornar um array de resultados da recurção [caso tenha] e incluir juntar com o array da interação anterior sempre que terminar uma das recurções. Quanto a dúvida da string, seria forçar uma string vazia (uma string que não está guardando nenhuma referência) virar um array; my @a = qw(a b c d e); my $b = \@a; #isso é uma string com o endereço de memoria do array (referÊncia) my $b; @$b = qw(a b c d e); #isso é um array forçado mas a dúvida é, o que fica em $b? Pelo que me parece ele cria automaticamente uma referência pra um array anonimo que dereferenciado por @$b O que me leva a crer que my @a = qw(a b c d e); my $b = \@a; é o mesmo que my $b ; @$b = qw(a b c d e);j From: Rio-pm on behalf of Andre Carneiro Sent: Friday, March 24, 2017 4:54:22 PM To: Perl Mongers Rio de Janeiro Subject: Re: [Rio-pm] (sem assunto) Creio que você esteja pensando nisso errado! Se vc tem uma String em $S, você não tem uma referência para array @A. Se você quer uma referência do array @A em $S, você pode fazer: my $S = \@A; Eu sugiro que você use Data::Printer ou mesmo Data::Dumper para ver o conteúdo das variáveis. Quanto ao problema da string, não sei se entendi o que vc quer. Vou dizer como transformar uma string em array sem usar 'join'. use strict; use warnings; use feature qw/say/; use Data::Printer colored => 1; my $s = "WHATEVER"; my @A = split //,$s; print p @A; 2017-03-22 19:14 GMT-03:00 Aureliano Guedes mailto:guedes_1...@hotmail.com>>: Olá monges, Estou com uma série de dúvidas relacionada a uma rotina que estou fazendo; Dado um hash de arrays eu preciso construir uma hierarquia não redundante dos valores desse array. Tudo esta explicado melhor em : http://pastebin.com/64fJvYr6 Duas dúvidas surgiram meio essa questão 1- Como forçar uma string virar um array sem fazer join dos valores, sendo que a string não está guardando uma referência? Algo como: my $s; @$s = qw(a b c d e); 2- Se eu tenho uma string $S que guarda uma referencia para um array @A, essa string está dentro de uma rotina e a rotina é recursiva, e precisa enviar os valores da string S para a recursão, o que deve ser enviado é a string $S ou o array @$S? sub teste{ my ($S) = @_; teste(\@$S) # ou simplesmente $S? } Desde já grato. Att, acp ___ Rio-pm mailing list Rio-pm@pm.org<mailto:Rio-pm@pm.org> http://mail.pm.org/mailman/listinfo/rio-pm -- André Garcia Carneiro Software Engineer (11)982907780 ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] (sem assunto)
Olá monges, Estou com uma série de dúvidas relacionada a uma rotina que estou fazendo; Dado um hash de arrays eu preciso construir uma hierarquia não redundante dos valores desse array. Tudo esta explicado melhor em : http://pastebin.com/64fJvYr6 Duas dúvidas surgiram meio essa questão 1- Como forçar uma string virar um array sem fazer join dos valores, sendo que a string não está guardando uma referência? Algo como: my $s; @$s = qw(a b c d e); 2- Se eu tenho uma string $S que guarda uma referencia para um array @A, essa string está dentro de uma rotina e a rotina é recursiva, e precisa enviar os valores da string S para a recursão, o que deve ser enviado é a string $S ou o array @$S? sub teste{ my ($S) = @_; teste(\@$S) # ou simplesmente $S? } Desde já grato. Att, acp ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Função uniq com bug ou erro no codigo?
Verdade, um simples chomp; antes do código resolve. To enferrujado From: Rio-pm on behalf of Nicole Scherer Sent: Monday, March 6, 2017 4:30:39 PM To: Perl Mongers Rio de Janeiro Subject: Re: [Rio-pm] Função uniq com bug ou erro no codigo? Oi Aureliano, Já testaste usar um chomp antes do split? []'s Nicole Em Domingo, 5 de Março de 2017 13:36, Aureliano Guedes escreveu: Ola, Caros Monges. Estou com uma pequena dúvida. Estou usando a função uniq (List::Util e List::MoreUtils) para reduzir a redundância de um array. echo "SP+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM" | perl -MList::Util='uniq' -MDDP -ne '@a = uniq (split (/\+/, $_)); print "\n"; p @a; print "\n"' Separa os elementos pelo '+' e depois remove a redundância. Acontece que o ultimo elemento for redundante ele não é eliminado. Alguém sabe o porque disso?? Alguma sujestão de como reverter sem q eu tenha que criar um script pra isso ou minha propria rotina uniq?? Desde já grato. ___ Rio-pm mailing list Rio-pm@pm.org<mailto:Rio-pm@pm.org> http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Função uniq com bug ou erro no codigo?
Saldações, Obrigado pela explicação, havia esquecido que o echo gera a quebra de linha. Abs, From: Rio-pm on behalf of Ronaldo Ferreira de Lima Sent: Monday, March 6, 2017 12:04:44 PM To: Rio PM Subject: Re: [Rio-pm] Função uniq com bug ou erro no codigo? Saudações Aureliano, On Sun, Mar 05, 2017 at 04:35:49PM +, Aureliano Guedes wrote: > Ola, > > Caros Monges. > > Estou com uma pequena dúvida. > Estou usando a função uniq (List::Util e List::MoreUtils) para reduzir a > redundância de um array. > > echo "SP+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM" | perl -MList::Util='uniq' -MDDP > -ne > '@a = uniq (split (/\+/, $_)); print "\n"; p @a; print "\n"' > > Separa os elementos pelo '+' e depois remove a redundância. Acontece que o > ultimo elemento for redundante ele não é eliminado. > > Alguém sabe o porque disso?? O comando 'echo' produziu uma quebra de linha que não foi tratada pelo código, ou seja, depois do 'split', a sua lista ficou assim: $VAR1 = [ "SP", "TM", "TM", "TM", "TM", "TM", "TM", "TM", "TM", "TM", "TM", "TM\n" ]; > > Alguma sujestão de como reverter sem q eu tenha que criar um script pra isso > ou > minha propria rotina uniq?? Como já sugerido, remova a quebra de linha com o chomp ou similar que estará resolvido. > Desde já grato. []'s -- "Não manejo bem as palavras Mas manipulo bem as strings." -- https://perspicazsite.wordpress.com ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Função uniq com bug ou erro no codigo?
Obrigado, era so o chomp mesmo. Perl6 é interessante mas pra agora não seria ideal. A solução com array seria a melhor talvez, mas ate tentei echo "WXG+WXG+PT-COG5412+Tox-SHH+TM+TM+TM+TM" | perl -MDDP -nE 'foreach(split /\+/){$a{$_}++}; p %a' Mas deu problema que fiquei com preguissa de tratar. saiu linha em branco e a ultima repetição. Obrigado monges From: Rio-pm on behalf of Fernando Oliveira Sent: Sunday, March 5, 2017 5:15:08 PM To: Perl Mongers Rio de Janeiro Subject: Re: [Rio-pm] Função uniq com bug ou erro no codigo? echo "SP+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM" | perl6 -n 'say set .split: "+"' Enviado do meu iPhone Em 5 de mar de 2017, às 13:59, Fernando Oliveira mailto:fernandocor...@gmail.com>> escreveu: Eu não sei qual é o problema, mas tenho uma sugestão de solução (código não testado, tô no celular): echo "SP+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM" | perl -nE '%a{split "+"}++; say keys %a}' Enviado do meu iPhone Em 5 de mar de 2017, às 13:51, Lucas Mateus mailto:lucasmateus.olive...@gmail.com>> escreveu: É algum bug no código echo "SP+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM" | xargs perl -MList::Util=uniq -MDDP -e '@a=uniq(split(/\+/,$ARGV[0]));p @a' Em 5 de março de 2017 13:35, Aureliano Guedes mailto:guedes_1...@hotmail.com>> escreveu: Ola, Caros Monges. Estou com uma pequena dúvida. Estou usando a função uniq (List::Util e List::MoreUtils) para reduzir a redundância de um array. echo "SP+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM" | perl -MList::Util='uniq' -MDDP -ne '@a = uniq (split (/\+/, $_)); print "\n"; p @a; print "\n"' Separa os elementos pelo '+' e depois remove a redundância. Acontece que o ultimo elemento for redundante ele não é eliminado. Alguém sabe o porque disso?? Alguma sujestão de como reverter sem q eu tenha que criar um script pra isso ou minha propria rotina uniq?? Desde já grato. ___ Rio-pm mailing list Rio-pm@pm.org<mailto:Rio-pm@pm.org> http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org<mailto:Rio-pm@pm.org> http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] Função uniq com bug ou erro no codigo?
Ola, Caros Monges. Estou com uma pequena dúvida. Estou usando a função uniq (List::Util e List::MoreUtils) para reduzir a redundância de um array. echo "SP+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM" | perl -MList::Util='uniq' -MDDP -ne '@a = uniq (split (/\+/, $_)); print "\n"; p @a; print "\n"' Separa os elementos pelo '+' e depois remove a redundância. Acontece que o ultimo elemento for redundante ele não é eliminado. Alguém sabe o porque disso?? Alguma sujestão de como reverter sem q eu tenha que criar um script pra isso ou minha propria rotina uniq?? Desde já grato. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] (sem assunto)
Ola monges, Tenho uma pergunta simples pra vocês. Eu tenho um script que abre um arquivo e printa o resultado na saida padrão. Os parâmetros adicionais são processados via Getopt::Long; Bom, o que eu queria era fazer algo mais Unix style. Quero poder receber o nome do arquivo para abrir ou poder redirecionar a saida padrão pro script caso esteja em um pipeline. Por exemplo, hoje, se eu der um grep em um arquivo pra depois passar pro script eu tenho que fazer: $ grep '' arquivo >arquivo.tmp $ script.pl arquivo.tmp Eu quero poder fazer algo no estilo $ grep '' arquivo | script.pl Como eu poderia fazer isso? lembrando que eu posso passar pro script mais parametros se precisar Abraços, ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] [HELP] Getopt::Long multiplos parametros por opção
Monges,Boa noite. Estou tentando fazer um script que abre varios arquivos recebido pela linha de comando. A ideia é que ele rode com comando semelhante a esse:./programa -f file1 file2 file3 ... filen Ou seja, independe da quantidade de arquivos. eu to tentando algo do tipo: use Getopt::Long;my @files;GetOptions("f=s{2}" => \@files,) or die "erro";print $_,"\n" foreach @files; Porem assim eu tenho que passar exatamente 2 parametros. 1 ou 3 da erro, logicamente. Eu queria saber como eu faço pra ele ser flexivel para receber 1 ou n parametros que o usuário passar. Como devo fazer? Abraços,Aureliano Livre de vírus. www.avast.com. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] RES: RES: [SP-pm] Testando o Slack (https://brazil-pm.slack.com)
Podem me convidar, também? Date: Sat, 30 Apr 2016 08:29:43 -0300 From: dtos...@gmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] RES: RES: [SP-pm] Testando o Slack (https://brazil-pm.slack.com) Podem me convidar? Em 18/04/2016 15:33, "Gabriel Vieira" escreveu: http://www.nyctechslack.com/ Podemos ter algo assim. 2016-04-17 8:48 GMT-04:00 astec : > Brigado turma > > > > Julio cezar > > > > De: Rio-pm [mailto:rio-pm-bounces+astec=centroin.com...@pm.org] Em nome de > Otávio Fernandes > Enviada em: domingo, 17 de abril de 2016 06:25 > Para: Perl Mongers Rio de Janeiro > Assunto: Re: [Rio-pm] RES: [SP-pm] Testando o Slack > (https://brazil-pm.slack.com) > > > > > > 2016-04-16 13:07 GMT+02:00 astec : > > as...@centroin.com.br > > > > Opa! Desculpa a demora, mas segue o convite. > > abraço, > > > -- OF > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm -- Gabriel Vieira ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm Livre de vírus. www.avast.com. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] [DÚVIDA]Hash: varias key pra um mesmo value
Ola monges, Eu tenho uma dúvida, caso possam me ajudar.Eu tenho varias códigos que acessam o mesmo valor (no caso que uso são vários códons que traduzem o mesmo aminoácido). Exemplo: Aminoacido -> Códons Sendo os aminoácidos representados por 20 letras diferentes mais o X (stop códon). E os codons, combinações de 3 nucleotídeos, sendo um total de 4 nucleotídeos (A, T, C e G), logo temos 64 combinações de 3 nucleotídeos (64 codons possíveis).Por isso um mesmo aminoácido pode ser codificado por mais de um códon. No caso do aminoácido Alanina (Ala || A) é códificado pelos códons GCA, GCC, GCT ou GCU. Observe que os dois primeiros nucleotídeos são C e G, respectivamente, e o terceiro pode ser ocupado por qualquer um dos 4 nucleotídeo possíveis. Dessa forma:A -> CGA ou CGC ou CGT ou CGGOutros: F -> TTC || TTTL -> TTA || TTG || CTA || CTG || CTC || CTT Bom, meu objetivo é simplesmente criar um hash, como esse: my %aa = ( "UUU" => "F", "UUC" => "F", "UUA" => "L", "UUG" => "L", "UCU" => "S", "UCC" => "S", "UCA" => "S", "UCG" => "S", "UAU" => "Y", "UAC" => "Y", "UAA" => "X", "UAG" => "X", "UGU" => "C", "UGC" => "C", "UGA" => "X", "UGG" => "W", "CUU" => "L", "CUC" => "L", "CUA" => "L", "CUG" => "L", "CCU" => "P", "CCC" => "P", "CCA" => "P", "CCG" => "P", "CAU" => "H", "CAC" => "H", "CAA" => "Q", "CAG" => "Q", "CGU" => "R", "CGC" => "R", "CGA" => "R", "CGG" => "R", "AUU" => "I", "AUC" => "I", "AUA" => "I", "AUG" => "M", "ACU" => "T", "ACC" => "T", "ACA" => "T", "ACG" => "T", "AAU" => "N", "AAC" => "N", "AAA" => "K", "AAG" => "K", "AGU" => "S", "AGC" => "S", "AGA" => "R", "AGG" => "R", "GUU" => "V", "GUC" => "V", "GUA" => "V", "GUG" => "V", "GCU" => "A", "GCC" => "A", "GCA" => "A", "GCG" => "A", "GAU" => "D", "GAC" => "D", "GAA" => "E", "GAG" => "E", "GGU" => "G", "GGC" => "G", "GGA" => "G", "GGG" => "G",); Contudo pensei em tomar outra abordagem, informar pra chave quem ela pode ser. Não sei se é possível, mas eu comecei tentando algo como:my %codon = ( "CG"./[ACTG]/ => "A", "TT"./[CT]/ => "F", ("TT"./[AG]/||"CU"./[ACTG]/) => "L",);Mas não funcionou. Pensei em pegar uma abordagem mais IUPAC, onde:Y = C ou TR = A ou GN = A, C, G ou T*tem outros, mas por enquanto apenas estou vendo a possibilidade. Então fiz: my $Y = /[CT]/;my $R = /[AG]/;my $N = /[ACTG]/; my %codon = ( "CG".$N => "A", "TT".$Y => "F", ("TT".$R||"CU".$N) => "L",);Mas não funcionou. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Dúvida com split
Eu conheço o BioPerl. Mas eu preciso fazer essas pequenas rotinas eu mesmo. Porque alem de serem pequenas pra necessitar de módulos externos, fica mais portável para sistemas que nao possuem o BioPerl instalado. E também são exercícios. Mesmo assim obrigado. Andre Carneiro escreveu: Aureliano, Você considerou usar Bioperl, para auxiliá-lo na 'lida' com bioinformática? É uma biblioteca bastante madura e amplamente usada. Seria bom dar uma olhada - http://www.bioperl.org/wiki/Main_Page https://metacpan.org/pod/distribution/BioPerl/BioPerl.pm Atenciosamente 2014-11-07 20:35 GMT-02:00 Ronaldo Ferreira de Lima : > Saudações Aureliano, > > On Fri, Nov 07, 2014 at 02:03:08PM +0000, Aureliano Guedes wrote: > [...] > > o fato é que ainda não aprendi bem regex então não conhecia \w. > [...] > Sendo regexp uma limitação, você poderia fazer a manipulação de strings > sem o uso de regexp neste caso. Dois exemplos (de provavelmente > dezenas): > > 1. # Obs.: Destrói o conteúdo de $rna >my @condom; >push @condom, substr $rna, 0, 3, q() while length $rna > 2; > > 2. # Trata o conteúdo da scalar $rna como um filehandle >local $/ = \3; >open my $fh, q(<), \$rna; >my @condom = <$fh>; > > []'s > -- > "Não manejo bem as palavras > Mas manipulo bem as strings." > -- > http://tecnoveneno.blogspot.com > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > -- André Garcia Carneiro Software Engineer (11)982907780 ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Dúvida com split
Obrigado. Ajudou muito mesmo. Vou salvar aqui pois depois posso precisar dessas dicas. Enrique Pessoa escreveu: Aureliano, Sobre, \w, \W, \s, \S, mais informações em http://perldoc.perl.org/perlre.html#Regular-Expressions , item Character Classes and other Special Escapes. Para casar apenas com um A, C, U ou G você deveria usar /[ACUG]/. Para casar com 3 dessas letras acrescente {3} para indicar 'três vezes', assim: / [ACUG]{3}/ No caso da sequências de caracteres com as quais você está trabalhando (que contém sempre apenas essas letras), todas as outras opções abaixo são válidas, mas não necessariamente apropriadas. /.{3}/ - três caracteres quaisquer /\w{3}/ - três letras /\D{3}/ - três não digitos /\S{3}/ - três não espaço /[^vV]{3}/ - três caracteres que não sejam a letra v /[ACUG]{3}/i - três caracteres que sejam A, C, U ou G (podendo ser minúsculas) Quanto às formas de se obter partes de uma sequência de caracteres, eu só tenho o hábito de usar split quando quero remover o delimitador. my $lista_de_numeros = '12,23,34'; my $delimitador = ','; my @numeros = split($delimitador, $lista_de_numeros); Uma outra forma possível de fazer esse mesmo trabalho é: my @codons; # global continue pegando de um a três caracteres (para caso len($ma) mod 3 não dê zero) while ($ma =~ /\G(.{1,3})/gc) { push @codons, $1; } Abraços, Enrique Pessôa *Enrique Pessôa | Technology Products Manager, Brazil | RR Donnelley | Global Capital Markets* +55 21 2103.0508 | enrique.pes...@rrd.com | +55 21 9.8127.0077 * <http://www.infoinvest.com.br/> | 15 anos de tecnologia para RI | Clique para conferir <https://www.youtube.com/watch?v=gkxxbshF4Ic&feature=youtu.be>* Em 7 de novembro de 2014 12:51, Daniel Vinciguerra < dan.vincigue...@gmail.com> escreveu: > pode usar o split mesmo... > > my @array = split '(\w{3})', $rna; > > > *Daniel Vinciguerra (@dvinciguerra)* > Web solution architect, perl dev, vegetarian, geek and co-founder at > *Bivee* > bivee.com.br - github.com/Bivee > > 2014-11-07 12:03 GMT-02:00 Aureliano Guedes : > > Funcionou, o fato é que ainda não aprendi bem regex então não conhecia o >> \w. Mas compreendi completamente o código. >> Obrigado. >> >> -- >> Date: Fri, 7 Nov 2014 11:47:06 -0200 >> From: leprevos...@gmail.com >> To: rio-pm@pm.org >> Subject: Re: [Rio-pm] Dúvida com split >> >> >> Oi Aureliano, >> >> tenta o seguinte: >> >> my @codons = $rna =~ m/\w{3}/g; >> >> abraços >> >> >> On 07-11-2014 11:44, Aureliano Guedes wrote: >> >> Ola monges, >> >> Tenho uma dúvida simples. >> Digamos que eu tenha uma string com uma sequencia de RNA: >> $rna = 'AUGACGAAGCGUUGAUCC'; >> Só hipotético mesmo. >> >> Então quero agrupar de 3 em 3 letras (nucleotídeos) formando codons: >> AUG ACG AAG CGU UGA UCC >> >> Para isso eu acho conveniente colocar em um array, e faço isso usando um >> split >> my @codons = split /condição/, $dna; >> >> O meu problema é na condição, não estou conseguindo uma condição para >> agrupar de 3 em 3 letras já tentei: >> /(A|C|U|G){3}/ >> /(A|C|U|G)(A|C|U|G)(A|C|U|G)/ >> /(d+){3}/ >> /d+\d+\d+\/ >> /d+{3}/ >> /d+d+d+/ >> Ate tentei mexer no split >> my @codons = /(A|U|C|G)/, $rna, 3; >> >> Sei que a dúvida é besta, mas alguém de daria uma luz? >> Obrigado. >> >> >> ___ >> Rio-pm mailing listRio-pm@pm.orghttp://mail.pm.org/mailman/listinfo/rio-pm >> >> >> -- >> Felipe da Veiga Leprevost, PhD.www.leprevost.com.br >> Laboratory for Proteomics and Protein Engineering. >> Fiocruz, Brazil. >> >> >> ___ Rio-pm mailing list >> Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm >> >> ___ >> Rio-pm mailing list >> Rio-pm@pm.org >> http://mail.pm.org/mailman/listinfo/rio-pm >> > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Dúvida com split
Funcionou, o fato é que ainda não aprendi bem regex então não conhecia o \w. Mas compreendi completamente o código. Obrigado. Date: Fri, 7 Nov 2014 11:47:06 -0200 From: leprevos...@gmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] Dúvida com split Oi Aureliano, tenta o seguinte: my @codons = $rna =~ m/\w{3}/g; abraços On 07-11-2014 11:44, Aureliano Guedes wrote: Ola monges, Tenho uma dúvida simples. Digamos que eu tenha uma string com uma sequencia de RNA: $rna = 'AUGACGAAGCGUUGAUCC'; Só hipotético mesmo. Então quero agrupar de 3 em 3 letras (nucleotídeos) formando codons: AUG ACG AAG CGU UGA UCC Para isso eu acho conveniente colocar em um array, e faço isso usando um split my @codons = split /condição/, $dna; O meu problema é na condição, não estou conseguindo uma condição para agrupar de 3 em 3 letras já tentei: /(A|C|U|G){3}/ /(A|C|U|G)(A|C|U|G)(A|C|U|G)/ /(d+){3}/ /d+\d+\d+\/ /d+{3}/ /d+d+d+/ Ate tentei mexer no split my @codons = /(A|U|C|G)/, $rna, 3; Sei que a dúvida é besta, mas alguém de daria uma luz? Obrigado. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Felipe da Veiga Leprevost, PhD. www.leprevost.com.br Laboratory for Proteomics and Protein Engineering. Fiocruz, Brazil. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [HELP] Download
Ajudou muito, não conhecia o Entrez. Obrigado. From: leprevos...@gmail.com To: rio-pm@pm.org Date: Thu, 6 Nov 2014 08:27:54 -0200 Subject: Re: [Rio-pm] [HELP] Download Oi Aureliano, Não sei se você já ouviu falar do NCBI Entrez Direct ou se já o utilizou alguma vez, ams nesse caso acredito que ele possa ser mais útil. O Entrez Direct é um conjunto de scripts bash e Perl que o NCBI forneceu para que quisesse realizar algum tipo de acesso mais "avançado" aos seus bancos de dados, e de forma programática. veja aqui mais informações sobre o Entrez Direct: http://www.ncbi.nlm.nih.gov/books/NBK179288/ Bom, vamos ao seu problema agora; O que você está querendo fazer é baixar pelo terminal uma sequencia do banco de nucleotídeos certo? De acordo com a documentação do Entrez Direct você vai precisar usar o seguinte comando: ./esearch -db nucleotide -query "AL123456 [ACN]" | ./efetch -format fasta O eDirect funciona encadeando os scripts, nesse caso eu estou usando 2 deles, o esearch para a busca e o efetch para o download. Você pode ver na página do livro (o link que passei acima) todos os parâmetros que existem, da pra fazer muita coisa com esses scripts deles. Então, para salvar em um arquivo a sequencia do genoma basta direcionar o comando acima: ./esearch -db nucleotide -query "AL123456 [ACN]" | ./efetch -format fasta > genome.fa e pronto, seu genoma foi baixado e salvo. Espero que dessa forma você consiga contornar o problema que lhe impedia de usar o wget ou o ftp para o download. abraços On 05-11-2014 23:57, Aureliano Guedes wrote: Ola Monges, tenho uma dúvida que talvez seja um pouco específica, provavelmente voltada para bioinformatas. Bom precisava fazer o download desse arquivo (http://www.ncbi.nlm.nih.gov/nuccore/AL123456.3?report=fasta&log$=seqview). Só que não posso fazer de qualquer forma, precisava que fosse um script executando o wget ou ftp. O problema é fazer o download através do wget que estou com dificuldade. Seria basicamente um 'system 'wget .'' só não estou sabendo como fazer. Alguém aqui poderia me ajudar com o wget? No final, só preciso gerar um arquivo no formato fasta. Ex: >gi|444893469|emb|AL123456.3| Mycobacterium tuberculosis H37Rv complete genome TTGACCGATGAGGTTCAGGCTTCACCACAGTGTGGAACGCGGTCGTCTCCGAACTTAACGGCGACC CTAAGGTTGACGACGGACCCAGCAGTGATGCTAATCTCAGCGCTCCGCTGATCAGCAAAGGGCTTG GCTCAATCTCGTCCAGCCATTGACCATCGTCGATTTGCTCTGTTATCCGTGCCGAGCAGCTTTGTC CCGAAATCGAGCGCCATCTGCGGGGATTACCGACGCTCTCAGCCGCCGACTCGGACATCAGA ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Felipe da Veiga Leprevost, PhD. www.leprevost.com.br Laboratory for Proteomics and Protein Engineering. Fiocruz, Brazil. -- Felipe ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] Dúvida com split
Ola monges, Tenho uma dúvida simples. Digamos que eu tenha uma string com uma sequencia de RNA: $rna = 'AUGACGAAGCGUUGAUCC'; Só hipotético mesmo. Então quero agrupar de 3 em 3 letras (nucleotídeos) formando codons: AUG ACG AAG CGU UGA UCC Para isso eu acho conveniente colocar em um array, e faço isso usando um split my @codons = split /condição/, $dna; O meu problema é na condição, não estou conseguindo uma condição para agrupar de 3 em 3 letras já tentei: /(A|C|U|G){3}/ /(A|C|U|G)(A|C|U|G)(A|C|U|G)/ /(d+){3}/ /d+\d+\d+\/ /d+{3}/ /d+d+d+/ Ate tentei mexer no split my @codons = /(A|U|C|G)/, $rna, 3; Sei que a dúvida é besta, mas alguém de daria uma luz? Obrigado. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] [HELP] Download
Ola Monges, tenho uma dúvida que talvez seja um pouco específica, provavelmente voltada para bioinformatas. Bom precisava fazer o download desse arquivo (http://www.ncbi.nlm.nih.gov/nuccore/AL123456.3?report=fasta&log$=seqview). Só que não posso fazer de qualquer forma, precisava que fosse um script executando o wget ou ftp. O problema é fazer o download através do wget que estou com dificuldade. Seria basicamente um 'system 'wget .'' só não estou sabendo como fazer. Alguém aqui poderia me ajudar com o wget? No final, só preciso gerar um arquivo no formato fasta. Ex: >gi|444893469|emb|AL123456.3| Mycobacterium tuberculosis H37Rv complete genome TTGACCGATGAGGTTCAGGCTTCACCACAGTGTGGAACGCGGTCGTCTCCGAACTTAACGGCGACC CTAAGGTTGACGACGGACCCAGCAGTGATGCTAATCTCAGCGCTCCGCTGATCAGCAAAGGGCTTG GCTCAATCTCGTCCAGCCATTGACCATCGTCGATTTGCTCTGTTATCCGTGCCGAGCAGCTTTGTC CCGAAATCGAGCGCCATCTGCGGGGATTACCGACGCTCTCAGCCGCCGACTCGGACATCAGA ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Modulos Publicados no CPAN e Lattes
Hahaha. Eu também vi isso. Mas eu tenho lattes a um bom tempo. Sou sensato. Mas estou acostumado colocar artigos, nunca coloquei um programa. Mas é so pra saber vou cocar minhas aplicações de bioinformática. Samir Cury escreveu: Aureliano, acho que e tranquilo, desde que ajude o curriculo a cumprir seu papel. Um tempo atras vi uma galera achando que Lattes era perfil do Orkut e escrevendo muita coisa sem nocao. Desde que tenha bom senso, esta valendo. Abs 2014-10-25 5:09 GMT-07:00 Aureliano Guedes : > Certo. Obrigado mesmo. > > Felipe da Veiga Leprevost escreveu: > > Oi Aureliano, > > Eu listo os módulos como software sem registro, e no tipo de software eu > seleciono 'bibliotecas (libraries)'. Costumo colocar apenas os módulos > relacionados à área acadêmica. > > -- > Felipe Leprevost > > > > On Sat, Oct 25, 2014, at 10:02 AM, Aureliano Guedes wrote: > > Ola, Monges > > Tenho uma dúvida simples. > > Não sei se alguém aqui é da área acadêmica ou usa o currículo na > plataforma Lattes. > > O que queria saber é se posso colocar os módulos publicados no CPAN no > Lattes? Se sim, como? > > Entra como programa com registro ou sem registro? > > Obrigado. > Att, > Aureliano Guedes > *___* > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Modulos Publicados no CPAN e Lattes
Certo. Obrigado mesmo. Felipe da Veiga Leprevost escreveu: Oi Aureliano, Eu listo os módulos como software sem registro, e no tipo de software eu seleciono 'bibliotecas (libraries)'. Costumo colocar apenas os módulos relacionados à área acadêmica. -- Felipe Leprevost On Sat, Oct 25, 2014, at 10:02 AM, Aureliano Guedes wrote: > Ola, Monges > > Tenho uma dúvida simples. > > Não sei se alguém aqui é da área acadêmica ou usa o currículo na > plataforma Lattes. > > O que queria saber é se posso colocar os módulos publicados no CPAN no > Lattes? Se sim, como? > > Entra como programa com registro ou sem registro? > > Obrigado. Att, Aureliano Guedes > _ > Rio-pm mailing list Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] Modulos Publicados no CPAN e Lattes
Ola, Monges Tenho uma dúvida simples. Não sei se alguém aqui é da área acadêmica ou usa o currículo na plataforma Lattes. O que queria saber é se posso colocar os módulos publicados no CPAN no Lattes? Se sim, como? Entra como programa com registro ou sem registro? Obrigado. Att, Aureliano Guedes ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Problema com o PhantomJS
Bruno, talvez seu roteador (o firewall dele) ou o próprio firewall que você usa na sua maquina esteja bloqueando a conexão. Configure o firewall para liberar tanto da maquina quanto do roteador e refaça os testes. Minhas hipóteses já acabaram, qualquer coisa além disso já não tenho conhecimento. Se mais algum monge tiver uma ideia... Date: Thu, 23 Oct 2014 00:36:34 -0300 From: bruno.macab...@gmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] Problema com o PhantomJS Algumas novidades:Um colega meu testou no Windows 8 da casa dele e não funcionou. Acontece o mesmo erro. No meu notebook que funciona, testei no Linux e que consegui fazer funcionar o PhantomJS. Apenas precisei instalar o PhantomJS pelo "apt-get" e o módulo no Perl (WWW::Mechanize::PhantomJS). Tanto a versão 0.10 como a 0.11 do módulo Perl do PhantomJS funcionam perfeitamente.No meu notebook que não funcionou estava com a versão 0.10 do módulo, quando fui atualizar para a 0.11 deu erro nos testes que são feitos durante a instalação:t/00-load.t ... okt/49-mech-get-file.t .. # Testing with C:\bin\phantomjs\phantomjs.exeSelenium server did not return proper status at (eval 58) line 61.# Looks like your test exited with 9 before it could output anything.t/49-mech-get-file.t .. Dubious, test returned 9 (wstat 2304, 0x900)Failed 12/12 subtestst/49-mech-nav.t ... # Testing with C:\bin\phantomjs\phantomjs.exeSelenium server did not return proper status at (eval 59) line 61. É o mesmo erro que acontece ao executar aquele código que citei no meu primeiro e-mail: #!usr/bin/env perl use common::sense;use WWW::Mechanize::PhantomJS; my $phantom = WWW::Mechanize::PhantomJS->new(); __END__ Quando fui instalar o módulo pela primeira vez, havia usado "fforce notest".Ambos notebooks (o que funciona o código e o que não funciona) estão conectados ao mesmo roteador. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Problema com o PhantomJS
Bom, acho estranho, nao vejo porque estar relacionado ao SO ou a arquitetura do sistema. Deixo pros mais experientes da lista. Bruno Macabeus escreveu: Aureliano, não estou com acesso agora nos outros computadores que testei. Tenho certeza que eram Windows 7, e, se não me engano, eram 32b. Sim, neles retornavam o mesmo erro. Deixando o PhantomJS na mesma pasta do PL faz aparecer novamente a mensagem do firewall do Windows, perguntando se desejo permitir que o PhantomJS possa acessar a rede. Porém, após isso, continua igual: aparece novamente a mensagem de erro. Em 20 de outubro de 2014 12:45, Aureliano Guedes escreveu: > Bruno, eu testei esse script em uma maquina rodando Windows 8.1 x64 usando > a ultima versão estável do WWW::Mechanize::PhantomJS (versão 0.11). > Não me retornou erro algum. > Mas você me falou que já foi testado em varias máquinas e retornou esse > erro, certo? > > Esse erro parece erro de comunicação com o servidor. > > Faz o seguinte, coloca o PhantomJS no mesmo diretório onde encontra-se seu > script, execute-o e veja se retorna algo. > > -- > Date: Mon, 20 Oct 2014 12:40:23 -0300 > From: bruno.macab...@gmail.com > To: rio-pm@pm.org > Subject: Re: [Rio-pm] Problema com o PhantomJS > > > Aureliano, o erro completo é: > Selenium server did not return proper status at (eval 48) line 61. > > Em 20 de outubro de 2014 12:28, Aureliano Guedes > escreveu: > > Bruno, qual exatamente o erro que retorna ao executar esse script? > > -- > Date: Mon, 20 Oct 2014 12:07:13 -0300 > From: bruno.macab...@gmail.com > To: rio-pm@pm.org > Subject: [Rio-pm] Problema com o PhantomJS > > > Boa tarde, > > sou Bruno, conhecido do Aureliano e ele me sugeriu pedir suporte aqui. > > O problema que estou tendo no Perl é durante a construção do PhantomJS > <https://metacpan.org/pod/WWW::Mechanize::PhantomJS>. > Considere o seguinte código (uma versão bem resumida do que estou de fato > desenvolvendo <http://pastebin.com/DNVZswQ3>): > #!usr/bin/env perl use common::sense; use WWW::Mechanize::PhantomJS; my > $phantom = WWW::Mechanize::PhantomJS->new(); __END__ > > Baixando o PhantomJS <http://phantomjs.org/download.html> e colocando o > caminho dele na variável de ambiente Path, eu consigo executa-lo com > sucesso em um determinado computador de casa. Porém, fazendo o mesmo em > outro computador, não funciona. Recebo a mensagem "selenium server did not > return proper status" na linha do construtor. > A versão do módulo PhantomJS que estou usando é a 0.10, em ambos > computadores. Estou usando o interpretador Strawberry. > Não sei se é relevante, mas o computador que funciona é Windows 8. No que > não funciona é Windows 7. > > > Também estou pedindo suporte no PerlMonks > <http://perlmonks.org/index.pl?node_id=1104241>. > > ___ Rio-pm mailing list > Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > > ___ Rio-pm mailing list > Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Problema com o PhantomJS
Bruno, eu testei esse script em uma maquina rodando Windows 8.1 x64 usando a ultima versão estável do WWW::Mechanize::PhantomJS (versão 0.11).Não me retornou erro algum.Mas você me falou que já foi testado em varias máquinas e retornou esse erro, certo? Esse erro parece erro de comunicação com o servidor. Faz o seguinte, coloca o PhantomJS no mesmo diretório onde encontra-se seu script, execute-o e veja se retorna algo. Date: Mon, 20 Oct 2014 12:40:23 -0300 From: bruno.macab...@gmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] Problema com o PhantomJS Aureliano, o erro completo é:Selenium server did not return proper status at (eval 48) line 61. Em 20 de outubro de 2014 12:28, Aureliano Guedes escreveu: Bruno, qual exatamente o erro que retorna ao executar esse script? Date: Mon, 20 Oct 2014 12:07:13 -0300 From: bruno.macab...@gmail.com To: rio-pm@pm.org Subject: [Rio-pm] Problema com o PhantomJS Boa tarde, sou Bruno, conhecido do Aureliano e ele me sugeriu pedir suporte aqui. O problema que estou tendo no Perl é durante a construção do PhantomJS.Considere o seguinte código (uma versão bem resumida do que estou de fato desenvolvendo):#!usr/bin/env perl use common::sense; use WWW::Mechanize::PhantomJS; my $phantom = WWW::Mechanize::PhantomJS->new(); __END__ Baixando o PhantomJS e colocando o caminho dele na variável de ambiente Path, eu consigo executa-lo com sucesso em um determinado computador de casa. Porém, fazendo o mesmo em outro computador, não funciona. Recebo a mensagem "selenium server did not return proper status" na linha do construtor.A versão do módulo PhantomJS que estou usando é a 0.10, em ambos computadores. Estou usando o interpretador Strawberry.Não sei se é relevante, mas o computador que funciona é Windows 8. No que não funciona é Windows 7. Também estou pedindo suporte no PerlMonks. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Problema com o PhantomJS
Bruno, qual exatamente o erro que retorna ao executar esse script? Date: Mon, 20 Oct 2014 12:07:13 -0300 From: bruno.macab...@gmail.com To: rio-pm@pm.org Subject: [Rio-pm] Problema com o PhantomJS Boa tarde, sou Bruno, conhecido do Aureliano e ele me sugeriu pedir suporte aqui. O problema que estou tendo no Perl é durante a construção do PhantomJS.Considere o seguinte código (uma versão bem resumida do que estou de fato desenvolvendo):#!usr/bin/env perl use common::sense; use WWW::Mechanize::PhantomJS; my $phantom = WWW::Mechanize::PhantomJS->new(); __END__ Baixando o PhantomJS e colocando o caminho dele na variável de ambiente Path, eu consigo executa-lo com sucesso em um determinado computador de casa. Porém, fazendo o mesmo em outro computador, não funciona. Recebo a mensagem "selenium server did not return proper status" na linha do construtor.A versão do módulo PhantomJS que estou usando é a 0.10, em ambos computadores. Estou usando o interpretador Strawberry.Não sei se é relevante, mas o computador que funciona é Windows 8. No que não funciona é Windows 7. Também estou pedindo suporte no PerlMonks. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Problema entre versões
Monges, Muito obrigado. Resolvi a questão de usar a versão 0.10 pela forma que o Blablos indicou, depois com esse ultimo email do Breno, achei mais simples a forma que ele passou. Irei torrar a paciência do autor reportando o bug, mas por hora farei como o Breno falou. De qualquer forma todas as dicas me ensinaram algo. Obrigado. breno escreveu: Aureliano, todas as dicas até agora foram muito boas: * A do Enrique te diz como instalar apenas a versão que vc quer do módulo, ou fazer downgrade se necessário. * A do Blabos mostra uma forma testada pela indústria de como fazer instalações de aplicações forçando não só a versão de um módulo, mas de todo o ambiente. * A do Erik, apesar de na forma de pergunta, aponta para uma questão importante: analisar o problema melhor, confirmar se é um problema do módulo mesmo (ainda mais em um sistema tão heterogêneo com Perl, Selenium & PhantomJS), perturbar o autor, e tentar trabalhar sempre com a versão (estável) mais recente de todos esses componentes. A minha é essa: se vc **realmente** precisa forçar uma versão específica, pode fazer isso em runtime procurando pela variável $VERSION do módulo. Por exemplo: BEGIN { use WWW::Mechanize::PhantomJS; die "por favor instale a versão 0.10 do WWW::Mechanize::PhantomJS" unless $WWW::Mechanize::PhantomJS::VERSION == 0.10; }; Boa sorte! []s -b 2014-10-17 7:41 GMT-03:00 Blabos de Blebe : > https://metacpan.org/pod/Carton > > 2014-10-16 23:10 GMT-03:00 Enrique Pessoa : > > fix na segunda linha cpan: >> >> cpan> install CORION/WWW-Mechanize-PhantomJS-0.10.tar.gz >> >> Enrique Pessôa >> >> *Enrique Pessôa | Technology Products Manager, Brazil | RR Donnelley | >> Global Capital Markets* >> +55 21 2103.0508 | enrique.pes...@rrd.com | +55 21 9.8127.0077 >> >> * <http://www.infoinvest.com.br/> | 15 anos de tecnologia para >> RI | Clique para conferir >> <https://www.youtube.com/watch?v=gkxxbshF4Ic&feature=youtu.be>* >> >> >> Em 16 de outubro de 2014 23:10, Enrique Pessoa >> escreveu: >> >> Boa noite, Aureliano. >>> >>> Quanto a instalar uma versão que não é a mais recente. Eu nunca precisei >>> disso, mas parece que dá para fazer usando o cpan shell. >>> >>> cpan> o conf urllist push http://backpan.perl.org/ >>> cpan> install CORION/WWW-Mechanize-PhantomJS-0.10 >>> >>> >>> Agora... experimente verificar se a interface dessa biblioteca não mudou >>> de uma versão para a outra. Pode ser esse o motivo de não conectar. >>> >>> Abraços, >>> Enrique >>> >>> >>> >>> Enrique Pessôa >>> >>> *Enrique Pessôa | Technology Products Manager, Brazil | RR Donnelley | >>> Global Capital Markets* >>> +55 21 2103.0508 | enrique.pes...@rrd.com | +55 21 9.8127.0077 >>> >>> * <http://www.infoinvest.com.br/> | 15 anos de tecnologia para >>> RI | Clique para conferir >>> <https://www.youtube.com/watch?v=gkxxbshF4Ic&feature=youtu.be>* >>> >>> >>> Em 16 de outubro de 2014 21:53, Aureliano Guedes < >>> guedes_1...@hotmail.com> escreveu: >>> >>> Na verdade, eu acredito que a versão mais nova do módulo esta bugada, >>>> esta gerando erro de conecção com o servidor, da versão 0.10 para a 0.11 a >>>> diferença são de 8 dias, e é muito recente, mandei um e-mail para o autor >>>> mas ele ainda não respondeu. >>>> Depois reporto o bug mais formalmente. >>>> >>>> -- >>>> Date: Thu, 16 Oct 2014 21:16:39 -0300 >>>> From: cont...@erikhenrique.com.br >>>> To: rio-pm@pm.org >>>> Subject: Re: [Rio-pm] Problema entre versões >>>> >>>> >>>> Vc não pode migrar esse script para usar a versão mais nova? >>>> >>>> Conexão* >>>> >>>> Abs >>>> Em 16/10/2014 20:51, "Aureliano Guedes" >>>> escreveu: >>>> >>>> Ola Monges, >>>> >>>> Fiz um pequeno script que usa o WWW::Mechanize::PhantomJS >>>> <http://search.cpan.org/~corion/WWW-Mechanize-PhantomJS-0.11/lib/WWW/Mechanize/PhantomJS.pm> >>>> . >>>> Tudo funciona corretamente, so que funciona quando a versão do >>>> PhantomJS é a 0.10 que foi publicada dia 01/10/2014. >>>> A ultima versão, a 0.1
Re: [Rio-pm] Problema entre versões
Na verdade, eu acredito que a versão mais nova do módulo esta bugada, esta gerando erro de conecção com o servidor, da versão 0.10 para a 0.11 a diferença são de 8 dias, e é muito recente, mandei um e-mail para o autor mas ele ainda não respondeu. Depois reporto o bug mais formalmente. Date: Thu, 16 Oct 2014 21:16:39 -0300 From: cont...@erikhenrique.com.br To: rio-pm@pm.org Subject: Re: [Rio-pm] Problema entre versões Vc não pode migrar esse script para usar a versão mais nova? Conexão* Abs Em 16/10/2014 20:51, "Aureliano Guedes" escreveu: Ola Monges, Fiz um pequeno script que usa o WWW::Mechanize::PhantomJS. Tudo funciona corretamente, so que funciona quando a versão do PhantomJS é a 0.10 que foi publicada dia 01/10/2014. A ultima versão, a 0.11, é do dia 09/10/2014, e quando tento executar o mesmo script com essa versão da erro de conecção com servidor. Acontece quem um dos computadores esta a versão OK a 0.10, no outro dei a bobeira de atualizar para a 0.11 e portanto começou a dar o bug. Queria saber como faço para forçar o script só executar com a versão 0.10. É alguma coisa no 'use'? Tipo? use WWW::Mechanize::PhantomJS::0.10; ou use WWW::Mechanize::PhantomJS 'version 0.10'; como faço isso? Além disso, tem como remover a versão 0.11 do pc e instalar a 0.10? Desde já grato. Att, Aureliano Guedes ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] Problema entre versões
Ola Monges, Fiz um pequeno script que usa o WWW::Mechanize::PhantomJS. Tudo funciona corretamente, so que funciona quando a versão do PhantomJS é a 0.10 que foi publicada dia 01/10/2014. A ultima versão, a 0.11, é do dia 09/10/2014, e quando tento executar o mesmo script com essa versão da erro de conecção com servidor. Acontece quem um dos computadores esta a versão OK a 0.10, no outro dei a bobeira de atualizar para a 0.11 e portanto começou a dar o bug. Queria saber como faço para forçar o script só executar com a versão 0.10. É alguma coisa no 'use'? Tipo? use WWW::Mechanize::PhantomJS::0.10; ou use WWW::Mechanize::PhantomJS 'version 0.10'; como faço isso? Além disso, tem como remover a versão 0.11 do pc e instalar a 0.10? Desde já grato. Att, Aureliano Guedes ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] Ajuda: download de imagem
Gente, Estou muito enferrujado quanto a programação. Tem uma biblioteca virtual que tenho acesso e queria criar um script para baixar imagem por imagem de um livro qualquer. Mas aparentemente é tudo feito em JS e acho que o método para passar as paginas seria por jQuery. Não tenho certeza. Alguém poderia me indicar um caminho? Algum material. Qualquer ajuda vale, ate R$ 0,50. Site: http://bvu.ifce.edu.br/login.php login: 20131014020101 ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Problema com "PP" (PAR) e Variable::Magic
Cara. Sempre tive problema com o PP. Manoel Domingues Junior escreveu: Samir, Esses dias, quando enfrentava problemas semelhantes de portabilidade, conheci o carton que me ajudou muito. Da uma olhada, ele é capaz de gerar uma pasta bundle com todas as dependências e basta ir no servidor remoto e executar um: carton install --cached --deployment E depois um: carton exec script.pl Outra dica legal que encontrei foi usar o plenv para cuidar das versões de perl... Abraços, Em 30/09/2014 15:51, "Samir Cury" escreveu: > Galera, > > Escrevi um codigo basico para uma tarefa trivial. Problema : Usei o CPAN > demais e tenho muitas dependencias. Vou rodar o codigo em sistemas remotos > onde so e garantido existir o Perl + core modules. > > Pensei em usar o PAR, que ja me cria um executavel com "todos os modulo" > (-B). Perfeito. > > Nem tanto. Uma vez que consigo o executavel, ele reclama de nao achar o > Variable::Magic [1]. > > Porem o .pl original roda tranquilo no mesmo sistema : > > -bash-4.1$ ./report-fjr-couch.pl --fjr=FrameworkJobReport.xml --couchurl= > http://a.cloudant.com --db=tr-benchmarks > CouchDB::Client::Doc=HASH(0x1286d60) > > O erro ate fez sentido uma vez que percebi que o sistema que usei para > gerar o executavel nao tinha o Variable::Magic instalado. Imaginei que > instalando e rodando de novo com -B iria incluir o modulo. Nada. > > Sendo mais concreto, aqui estao os "pp s" que tentei : > > pp -B -o report-fjr-couch report-fjr-couch.pl > pp -B -P -o report-fjr-couch report-fjr-couch.pl > pp -B -p -o report-fjr-couch report-fjr-couch.pl > > Mesmo problema em todos. > > Descricao das opcoes : > > http://search.cpan.org/~rschupp/PAR-Packer-1.022/lib/pp.pm > > Caso queiram ver o codigo, aqui esta, mas fiquem tranquilos, admito e sei > que nao foi feito para ser bonito, mas funciona : > > > https://github.com/samircury/CMSSW-benchmarks/blob/master/condor/report-fjr-couch.pl > > Alguem ja passou por uma situacao parecida ou teria dicas de como resolver? > > Valeu! > > [1] : > > -bash-4.1$ ./report-fjr-couch --fjr=FrameworkJobReport.xml --couchurl= > http://a.cloudant.com --db=tr-benchmarks > Could not find a suitable B::Hooks::EndOfScope implementation: Can't > locate Variable/Magic.pm in @INC (@INC contains: CODE(0x1e1aca0) > /tmp/par-6e697374657374/cache-9f11098dccd910be2e44325e17711ef504029e65/inc/lib > /tmp/par-6e697374657374/cache-9f11098dccd910be2e44325e17711ef504029e65/inc > CODE(0x1aea050) CODE(0x1aea4d0)) at Module/Runtime.pm line 317. > BEGIN failed--compilation aborted at B/Hooks/EndOfScope/XS.pm line 17. > Compilation failed in require at Module/Runtime.pm line 317. > Can't locate B/Hooks/EndOfScope/PP/FieldHash.pm in @INC (@INC contains: > CODE(0x1e1aca0) > /tmp/par-6e697374657374/cache-9f11098dccd910be2e44325e17711ef504029e65/inc/lib > /tmp/par-6e697374657374/cache-9f11098dccd910be2e44325e17711ef504029e65/inc > CODE(0x1aea050) CODE(0x1aea4d0)) at Module/Runtime.pm line 317. > BEGIN failed--compilation aborted at B/Hooks/EndOfScope/PP.pm line 29. > Compilation failed in require at Module/Runtime.pm line 317. > at B/Hooks/EndOfScope.pm line 22 > BEGIN failed--compilation aborted at B/Hooks/EndOfScope.pm line 26. > Compilation failed in require at namespace/clean.pm line 11. > BEGIN failed--compilation aborted at namespace/clean.pm line 11. > Compilation failed in require at JSON/Any.pm line 11. > BEGIN failed--compilation aborted at JSON/Any.pm line 11. > Compilation failed in require at CouchDB/Client.pm line 9. > BEGIN failed--compilation aborted at CouchDB/Client.pm line 9. > Compilation failed in require at script/report-fjr-couch.pl line 6. > BEGIN failed--compilation aborted at script/report-fjr-couch.pl line 6. > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Obter resultado de pesquisa
Já tentei Mas acho que devo esta preenchendo o JSON errado: sub envio_facil{my ($o, $d, $c, $a, $l) = @_; my $url = new WWW::Mechanize; $url->get('https://pagseguro.uol.com.br/para_seu_negocio/envio-facil.jhtml'); $url->post( 'http://www.pagseguro.uol.com.br/para_seu_negocio/howItWorksCalculator.jhtml', { originCep => $c, destinyCep => $d, Largura => $l, Altura => $a, Comprimento => $c }); my $preco = $url->decoded_content; return $preco;} Deveria preencher seguindo isso?? //VALIDAÇÕES DOS CAMPOS DA SIMULAÇÃO { cepOrigem: { name: "originCep", selector: $("#cepOrigem"), required: true, requiredMessage: ["O campo CEP de origem deve ser preenchido."] }, cepDestino: { name: "destinyCep", selector: $("#cepDestino"), required: true, requiredMessage: ["O campo CEP de destino deve ser preenchido."]}, largura: { name: "Largura",selector: $("#largura"), required: true, requiredMessage : "A largura deve ser preenchida.", validations: [ function (f) { return PagSeguro.Helper.isInteger(f.selector.val())}, function (f) { if (parseInt(f.selector.val()) < 11) {return false;} else {return true}},function (f) { if (parseInt(f.selector.val()) > 105) {return false;} else {return true}} ], messages: ["Largura inválida","A largura mínima é de 11cm.","A largura máxima é de 105cm."] }, altura: { name: "Altura", selector: $("#altura"), required: true, requiredMessage : "A altura deve ser preenchida.", validations: [ function (f) { return PagSeguro.Helper.isInteger(f.selector.val())},function (f) { if (parseInt(f.selector.val()) < 2) {return false;} else {return true}}, function (f) { if (parseInt(f.selector.val()) > 105) {return false;} else {return true}}], messages: ["Altura inválida","A altura mínima é de 2cm.","A altura máxima é de 105cm."] }, comprimento: { name: "Comprimento", selector: $("#comprimento"),required: true, requiredMessage : "O comprimento deve ser preenchido.", validations: [ function (f) { return PagSeguro.Helper.isInteger(f.selector.val())},function (f) { if (parseInt(f.selector.val()) < 16) {return false;} else {return true}}, function (f) { if (parseInt(f.selector.val()) > 105) {return false;} else {return true}}], messages: ["Comprimento inválido","O comprimento mínimo é de 16cm.","O comprimento máximo é de 105cm."] } } From: gabriel.vie...@gmail.com Date: Wed, 9 Jul 2014 17:28:03 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Obter resultado de pesquisa Faça um POST para /para_seu_negocio/howItWorksCalculator.jhtml 2014-07-09 16:45 GMT-03:00 Aureliano Guedes : Não sei, acho que estou meio inferrujado, mas tentei fazer pelo metodo post, mas não deu certo. a rotina ficou assim: sub envio_facil{ my ($o, $d, $c, $a, $l) = @_; my $url = WWW::Mechanize->new();#$url->use_plugin('Ajax'); $url->post( 'http://www.pagseguro.uol.com.br/para_seu_negocio/envio-facil.jhtml', { originCep => $c, destinyCep => $d, Largura => $l, Altura => $a, Comprimento => $c, }, ); my $preco = $url->decoded_content; return $preco; } Ainda estou tentando outras formas, mas não faço ideia do que eu to tentando fazer pra dar certo. From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Wed, 9 Jul 2014 17:47:15 + Subject: Re: [Rio-pm] [DUVIDA] Obter resultado de pesquisa Paciência... Quando acho que to no caminho certo, descubro que estou navegand
Re: [Rio-pm] [DUVIDA] Obter resultado de pesquisa
Não sei, acho que estou meio inferrujado, mas tentei fazer pelo metodo post, mas não deu certo. a rotina ficou assim: sub envio_facil{ my ($o, $d, $c, $a, $l) = @_; my $url = WWW::Mechanize->new();#$url->use_plugin('Ajax'); $url->post( 'http://www.pagseguro.uol.com.br/para_seu_negocio/envio-facil.jhtml', { originCep => $c, destinyCep => $d, Largura => $l, Altura => $a, Comprimento => $c, }, ); my $preco = $url->decoded_content; return $preco;} Ainda estou tentando outras formas, mas não faço ideia do que eu to tentando fazer pra dar certo. From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Wed, 9 Jul 2014 17:47:15 + Subject: Re: [Rio-pm] [DUVIDA] Obter resultado de pesquisa Paciência... Quando acho que to no caminho certo, descubro que estou navegando em aguas desconhecidas. From: bla...@gmail.com Date: Wed, 9 Jul 2014 14:32:11 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Obter resultado de pesquisa Simples meu caro gafanhoto! Você seguiu o be-a-bá tradicional de forma correta. Acessa a página do formulário, preenche os dados e submit. Só que esse form na realidade não faz o tradicional. Se você inspecionar a página com o Inspect ou o firebug no Firefox, vai ver que o form não declara um "method" o que implica "GET". Entretanto, para acessar os dados, a página faz um "POST", provavelmente via AJAX e não um submit tradicional. Quando vc faz o submit, o Mechanize tenta enviar os dados pela URL usando o método GET e o sevidor te responde com um 404 Not Found. É isso que o Mechanize está te avisando. Dá uma olhada nisso aqui: https://github.com/blabos/Docs/wiki/Protocolo-HTTP []'s 2014-07-09 14:15 GMT-03:00 Aureliano Guedes : Ola monges, Estou desenvolvendo um scriptzinho teste que se der tudo certo transformo em modulo e faço o upload para o CPAN. O script trabalha com calculo de frete, semelhante ao WWW::Correios::PrecoPrazo do Garu. A diferença é que ele calcula o frete com o desconto oferecido pelo PagSeguro para Envio Fácil (e-sedex) quando o pagamento é efetuado via PagSeguro. Estou usando o WWW::Mechanize, mas algo da errado. Quando preencho os fields e submito retorna o seguinte erro:'Error GETing https://pagseguro.uol.com.br/para_seu_negocio/howItWorksCalculator. jhtml?originCep=74491626&destinyCep=36072130&width=30&height=6&length=40&weight=0.300: Not Found at C:\Users\Aureliano\Desktop\CEP\CEP.pl line 29.' Mas não sei exato qual o problema, mas parece que ta tentando puxar essa uri, ou sei la o que ta acontecendo. Alguem tem alguma ideia? link do script completo: http://pastebin.com/Cg7XWBgB Rotina onde acredito estar o problema:sub envio_facil{ my ($o, $d, $c, $a, $l) = @_; my $url = WWW::Mechanize->new(); $url->get('http://www.pagseguro.uol.com.br/para_seu_negocio/envio-facil.jhtml'); $url->submit_form( form_id => 'simulateCep', fields => {originCep => $c, destinyCep => $d, width => $l, height => $a, length => $c, , }, ); my $preco = $url->decoded_content; return $preco;} ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Obter resultado de pesquisa
Paciência... Quando acho que to no caminho certo, descubro que estou navegando em aguas desconhecidas. From: bla...@gmail.com Date: Wed, 9 Jul 2014 14:32:11 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Obter resultado de pesquisa Simples meu caro gafanhoto! Você seguiu o be-a-bá tradicional de forma correta. Acessa a página do formulário, preenche os dados e submit. Só que esse form na realidade não faz o tradicional. Se você inspecionar a página com o Inspect ou o firebug no Firefox, vai ver que o form não declara um "method" o que implica "GET". Entretanto, para acessar os dados, a página faz um "POST", provavelmente via AJAX e não um submit tradicional. Quando vc faz o submit, o Mechanize tenta enviar os dados pela URL usando o método GET e o sevidor te responde com um 404 Not Found. É isso que o Mechanize está te avisando. Dá uma olhada nisso aqui: https://github.com/blabos/Docs/wiki/Protocolo-HTTP []'s 2014-07-09 14:15 GMT-03:00 Aureliano Guedes : Ola monges, Estou desenvolvendo um scriptzinho teste que se der tudo certo transformo em modulo e faço o upload para o CPAN. O script trabalha com calculo de frete, semelhante ao WWW::Correios::PrecoPrazo do Garu. A diferença é que ele calcula o frete com o desconto oferecido pelo PagSeguro para Envio Fácil (e-sedex) quando o pagamento é efetuado via PagSeguro. Estou usando o WWW::Mechanize, mas algo da errado. Quando preencho os fields e submito retorna o seguinte erro:'Error GETing https://pagseguro.uol.com.br/para_seu_negocio/howItWorksCalculator. jhtml?originCep=74491626&destinyCep=36072130&width=30&height=6&length=40&weight=0.300: Not Found at C:\Users\Aureliano\Desktop\CEP\CEP.pl line 29.' Mas não sei exato qual o problema, mas parece que ta tentando puxar essa uri, ou sei la o que ta acontecendo. Alguem tem alguma ideia? link do script completo: http://pastebin.com/Cg7XWBgB Rotina onde acredito estar o problema:sub envio_facil{ my ($o, $d, $c, $a, $l) = @_; my $url = WWW::Mechanize->new(); $url->get('http://www.pagseguro.uol.com.br/para_seu_negocio/envio-facil.jhtml'); $url->submit_form( form_id => 'simulateCep', fields => {originCep => $c, destinyCep => $d, width => $l, height => $a, length => $c, , }, ); my $preco = $url->decoded_content; return $preco;} ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] [DUVIDA] Obter resultado de pesquisa
Ola monges, Estou desenvolvendo um scriptzinho teste que se der tudo certo transformo em modulo e faço o upload para o CPAN. O script trabalha com calculo de frete, semelhante ao WWW::Correios::PrecoPrazo do Garu. A diferença é que ele calcula o frete com o desconto oferecido pelo PagSeguro para Envio Fácil (e-sedex) quando o pagamento é efetuado via PagSeguro. Estou usando o WWW::Mechanize, mas algo da errado. Quando preencho os fields e submito retorna o seguinte erro:'Error GETing https://pagseguro.uol.com.br/para_seu_negocio/howItWorksCalculator.jhtml?originCep=74491626&destinyCep=36072130&width=30&height=6&length=40&weight=0.300: Not Found at C:\Users\Aureliano\Desktop\CEP\CEP.pl line 29.' Mas não sei exato qual o problema, mas parece que ta tentando puxar essa uri, ou sei la o que ta acontecendo. Alguem tem alguma ideia? link do script completo: http://pastebin.com/Cg7XWBgB Rotina onde acredito estar o problema:sub envio_facil{ my ($o, $d, $c, $a, $l) = @_; my $url = WWW::Mechanize->new(); $url->get('http://www.pagseguro.uol.com.br/para_seu_negocio/envio-facil.jhtml'); $url->submit_form( form_id => 'simulateCep', fields => {originCep => $c, destinyCep => $d, width => $l, height => $a, length => $c, , }, ); my $preco = $url->decoded_content; return $preco;} ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Release de modulo Beta no CPAN
t; >> https://metacpan.org/pod/ExtUtils::MakeMaker > >> https://metacpan.org/pod/Module::Build > >> https://metacpan.org/pod/Module::Install > >> > >> Esses builders baseiam-se em arquivos perl (Makefile.PL, Build.PL, etc) > >> para a partir de apontamentos que você faz, verificar as dependências, > criar > >> o Makefile e seus alvos,gerar o .tar.gz entre outras coisas necessárias > para > >> tornar o seu módulo instalável. > >> > >> Quando vc instala um módulo manualmente, normalmente o processo é: > >> > >> a) Baixar e descompactar o .tar.gz > >> b) perl Makefile.PL (ou perl Build.PL). Isso vai criar um arquivo > Makefile > >> adaptado pra sua máquina. > >> c) make. Isso vai fazer o build do seu módulo, eventualmente compilando > >> XS, se for o caso, etc > >> d) make test. Lê o Makefile para executar os testes do seu módulo. > >> e) make install > >> > >> Quando você cria um módulo, para montar o .tar.gz normalmente você faz: > >> > >> a) perl Makefile.PL (ou perl Build.PL). Isso vai criar um arquivo > Makefile > >> adaptado pra sua máquina. > >> b) make manifest. Isso vai criar uma lista com todos os arquivos que > >> precisam ser distribuídos dentro do seu .tar.gz > >> c) make dist. Isso vai criar um .tar.gz do seu módulo, dentro do qual, > >> haverá um Makefile.PL (ou Build.PL), e *não* um Makefile. > >> > >> Os arquivos *.PL precisam ser executados no momento da instalação para > que > >> o Makefile seja montado de acordo com a máquina onde ele está sendo > >> instalado e não de acordo com a máquina onde o módulo foi criado. > >> > >> > >> 4) Release. > >> > >> Consiste em enviar o seu módulo para o CPAN. > >> > >> *** > >> > >> O Module::Make eu vou desconsiderar, porque ele só tem uma versão antiga > >> lançada e nenhum outro módulo do cpan o utiliza > >> (https://metacpan.org/requires/distribution/Module-Make?sort=[[2,1]]). > >> > >> *** > >> > >> Com o dzil você tem uma ferramenta, que em conjunto com plugins cobre > >> todas as etapas listadas acima e mais algumas outras, como integração > com o > >> seu sistema de controle de versão e simplificação da criação de POD, por > >> exemplo. > >> > >> Já se você preferir fazer sem ele, você pode fazer tudo manualmente, ou > >> usar qualquer dessas ferramentas citadas acima pra cobrir uma fase ou > outra, > >> ou ainda combiná-las entre si. > >> > >> Eu particularmente tenho módulos que usam o dzil > >> (https://github.com/blabos/Dancer2-Plugin-Paginator) e módulos que não > usam > >> (https://github.com/blabos/Paginator-Lite). > >> > >> E quando não uso, tenho preferência por criar o módulo com o > >> Module::Starter (não confundir com > https://metacpan.org/pod/Module::Start) > >> usando como builder o Module::Install. > >> > >> *** > >> > >> Finalizando, só preste atenção no que você deseja fazer e escolha a > >> ferramenta que achar mais adequada, tendo em mente que embora seja > >> relativamente simples criar um módulo e botar no CPAN, há várias etapas > >> envolvidas, que na maioria das vezes já são até instintivas, mas que se > você > >> misturar as coisas, pode dar a maior confusão. > >> > >> []'s > >> > >> > >> > >> > >> > >> > >> 2014-05-20 16:12 GMT-03:00 Aureliano Guedes : > >> > >>> >Sim, passei o olho nisso, mas meio que ignorei pois o mesmo usa > >>> > Dist::Zilla e lembro que os 2 metodos mais recomendados eram > >Module::Build > >>> > e Module::Make. > >>> > >>> Posso estar enganado, mas esses 'eram' os mais recomendados. O > >>> Dist::Zilla é mais recente porem creio que seja o melhor e atualmente o > >>> 'mais recomendado'. > >>> > >>> > >>> Date: Tue, 20 May 2014 11:52:43 -0700 > >>> From: samircu...@gmail.com > >>> To: rio-pm@pm.org > >>> Subject: Re: [Rio-pm] Release de modulo Beta no CPAN > >>> > >>> > >>> Sim, passei o olho nisso, mas meio que ignorei pois o mesmo usa > >>> Dist::Zilla e lembro que os 2 metodos mais recomendados eram > Module::Build e > >>> Module::Make. > >>> > >>> Lendo mel
Re: [Rio-pm] Release de modulo Beta no CPAN
>Sim, passei o olho nisso, mas meio que ignorei pois o mesmo usa Dist::Zilla e >lembro que os 2 metodos mais recomendados eram >Module::Build e Module::Make. Posso estar enganado, mas esses 'eram' os mais recomendados. O Dist::Zilla é mais recente porem creio que seja o melhor e atualmente o 'mais recomendado'. Date: Tue, 20 May 2014 11:52:43 -0700 From: samircu...@gmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] Release de modulo Beta no CPAN Sim, passei o olho nisso, mas meio que ignorei pois o mesmo usa Dist::Zilla e lembro que os 2 metodos mais recomendados eram Module::Build e Module::Make. Lendo melhor, parece que rola uma discussao entre usar as flags oficiais do CPAN ou _ na versao. Hum. Meio tosco que as flags oficiais do CPAN sao mais inuteis do que um _ na versao. Mas o argumento da confusao no metacpan faz sentido. De qualquer jeito quando visito a pagina um modulo nao vejo a flag la : http://search.cpan.org/~ingy/Module-Make-0.01/lib/Module/Make.pm Entao de repente o melhor e fazer como o "ingy" e colocar uma nota no POD. Abs 2014-05-20 11:39 GMT-07:00 Renato Santos : * http://blogs.perl.org/users/oliver_gorwits/2011/10/releasing-trialdevbeta-versions-with-distzilla.html #fastreply 2014-05-20 15:35 GMT-03:00 Samir Cury : Pessoal, Outro dia na lista, li alguem dizendo : manda pro CPAN logo como "beta" Como estou no passo intermediario para o meu primeiro modulo "decente", com testes e tudo mais, talvez nao tenha visto essa opcao ainda. Pesquisando um pouco esbarrei com todas essas definicoes : http://search.cpan.org/dlsip?bpmOp Ja que o modulo funciona, esta documentado e passa no "prove", achei interessante subir como beta, e lancar novas releases quando fizer mais refatoracoes. Enfim. Queria confirmar com a galera que ja trilhou este caminho, que quando eu for realmente subir o modulo vou ter a opcao de marcar como beta. Pra quem estiver curioso este e o modulo : https://github.com/samircury/HTCondor--Queue--Parser Abs,Samir ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRONhttp://www.renatocron.com/blog/ @renato_cron ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] nota de falecimento
-- Daniel Vinciguerra escreveu: :-( *Daniel Vinciguerra (@dvinciguerra)* Web solution architect, perl dev, vegetarian, geek and co-founder at *Bivee* bivee.com.br - github.com/Bivee 2014-05-10 21:25 GMT-03:00 Blabos de Blebe : > :( > > > 2014-05-10 21:07 GMT-03:00 Renato Santos : > > Vish vei, que bad >> >> :-\ >> >> Pã >> On May 10, 2014 8:32 PM, "Thiago Rondon" wrote: >> >>> Tristeza... Como pode >>> Em 10/05/2014 19:18, "breno" escreveu: >>> Oi pessoal, é com muita tristeza e saudade que venho comunicar o falecimento de nossa querida amiga Diana Rosa. Diana começou a frequentar a comunidade nos encontros sociais da Rio Perl Mongers há alguns anos e aos poucos foi se engajando, aprendendo e ensinando. Tímida mas sempre animada, ela gostava de contar como, na época em que trabalhava com Java, implementou rapidamente um one-liner em Perl para corrigir um bug enquanto seus colegas ainda estavam desenhando 19 quadrinhos de UML para representar o problema. Atualmente, trabalhava como desenvolvedora Perl na Estante Virtual. A "di", como era conhecida pelos amigos, também adorava canto lírico e era uma excelente pintora. Uma de suas obras, feita para homenagear um amigo que faceleu recentemente, hoje enfeita o muro na esquina da Rua Alice, em frente ao local onde fizemos tantos encontros sociais da comunidade (e onde provavelmente faremos o próximo). Ainda não temos muitas informações, mas ao que parece ela não estava se sentindo bem ontem à noite, deitou para descansar e, infelizmente, não acordou. Ela nos deixa aos 27 anos. Aos que quiserem prestar sua homenagem, o velório será hoje (10/05) a partir das 22:00 na Capela 7 do Cemitério São João Batista. O enterro será amanhã (11/05) às 11:00. Nossos sentimentos hoje vão para toda a família e amigos. breno ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm >>> >>> ___ >>> Rio-pm mailing list >>> Rio-pm@pm.org >>> http://mail.pm.org/mailman/listinfo/rio-pm >>> >> >> ___ >> Rio-pm mailing list >> Rio-pm@pm.org >> http://mail.pm.org/mailman/listinfo/rio-pm >> > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Bio::Filter
O projeto nao e paralelo ao BioPerl, e dentro do BioPerl. Eu observei que ele e muito rico em ferramentas complexas para diversas áreas da bioinfo mas carece um pouco de ferramentas para filtrar os dados obtidos. Ou quando se tem um ferramenta para isso pesquisar ela e difícil também. Então eu vou montar um grupo de ferramentas para filtrar dados. Já eu subo pro CPAN um primeiro para tirar como exemplo. Andre Carneiro escreveu: Não sei exatamente o que você quer fazer. Só queria dizer que existe o Bioperl. Não sei se você conhece. http://www.bioperl.org/wiki/Main_Page 2014-05-06 16:22 GMT-03:00 Felipe da Veiga Leprevost < fel...@leprevost.com.br>: > Olá Aureliano, > > Desculpa mas eu não entendi a proposta do seu módulo, pode explicar um > pouco melhor dando exemplos? > abraços > > > 2014-05-06 15:25 GMT-03:00 Tiago Peczenyj : > > Bota logo no cpan. Como versão beta >> Em 06/05/2014 15:20, "Aureliano Guedes" >> escreveu: >> >>> Ola monges, >>> >>> Quero convidar todos nossos amigos que trabalham com bioinformática >>> aderentes da filosofia open source a se juntar a mim para o desenvolvimento >>> de um conjunto de módulos direcionados para filtra as longas listas de >>> informações que temos que lidar na bioinformática. >>> >>> A ideia é ter fácil acesso por meio de pesquisa simples e direcionada a >>> ferramentas para filtrar dados na bioinformática. >>> >>> Iniciei o projeto, e já tenho algumas ferramentas que vou revisar e >>> fazer testes para incluir no projeto para enviar em breve para nosso >>> querido CPAN. >>> >>> Quem quiser e puder colaborar, ficarei grato. >>> >>> GitHub: https://github.com/acpguedes/Bio--Filter.git >>> contato: guedes.aureli...@gmail.com >>> >>> Estou aberto a critica, sugestões, colaborações, etc. >>> >>> Abraços, >>> >>> Aureliano Guedes >>> >>> ___ >>> Rio-pm mailing list >>> Rio-pm@pm.org >>> http://mail.pm.org/mailman/listinfo/rio-pm >>> >> >> ___ >> Rio-pm mailing list >> Rio-pm@pm.org >> http://mail.pm.org/mailman/listinfo/rio-pm >> > > > > -- > Felipe da Veiga Leprevost, PhD > www.leprevost.com.br > Laboratory for Proteomics and Protein Engineering. > Fiocruz, Brazil. > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > -- André Garcia Carneiro Software Engineer (11)982907780 ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] Bio::Filter
Ola monges, Quero convidar todos nossos amigos que trabalham com bioinformática aderentes da filosofia open source a se juntar a mim para o desenvolvimento de um conjunto de módulos direcionados para filtra as longas listas de informações que temos que lidar na bioinformática. A ideia é ter fácil acesso por meio de pesquisa simples e direcionada a ferramentas para filtrar dados na bioinformática. Iniciei o projeto, e já tenho algumas ferramentas que vou revisar e fazer testes para incluir no projeto para enviar em breve para nosso querido CPAN. Quem quiser e puder colaborar, ficarei grato. GitHub: https://github.com/acpguedes/Bio--Filter.gitcontato: guedes.aureli...@gmail.com Estou aberto a critica, sugestões, colaborações, etc. Abraços, Aureliano Guedes ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] empregos perl no rio (ou brasil)
Leo++; Que pena, eu nao seria capaz de me classificar nem mesmo como estagiário nem na minha área que e bioinformática. Mas tenho muita vontade de pegar experiencia trabalhando com dev Perl5. Leo Balter escreveu: Junior: aquele que tem o mesmo nome do pai Pleno: aquele que não é gordo Sênior: maiores de 65 anos Brincadeiras a parte, as três são categorias de profissionais que não estão mais em nível estagiário e as três representam etapas de experiência profissional de cada. Do Junior que tem menos experiência ao sênior com mais. O pleno seria uma etapa intermediária. Isso é bem comum em várias empresas. Em 06/05/2014 11:54, "Aureliano Guedes" escreveu: > Breno, por curiosidade. O que define um desenvolvedor Perl5 junior, pleno > ou sênior? > > breno escreveu: > > Falando em vagas no Rio de Janeiro, pra quem não sabe, a Estante > Virtual está contratando desenvolvedores Perl 5 de todos os níveis > (júnior/pleno/sênior) pra trabalhar com desenvolvimento Web! > > A Estante é um e-commerce consagrado de livros novos, seminovos e > usados que agrega o acervo de sebos de todo o país. O sistema é todo > em Perl 5 e usa módulos como Moo/Moose, Template Toolkit, > DBIx::Connector, CHI, JSON, Try::Tiny, entre tantos outros (não temos > medo de usar o CPAN, nosso cpanfile tem mais de 90 módulos!). O banco > é em MySQL (com full-text em Sphinx e interface memcached), > trabalhamos com git, testes e code reviews. > > O requisito principal das nossas vagas realmente não é Perl; é saber > trabalhar bem em equipe (somos 9 devs Perl e contando!), analisar > problemas e ser proativo nas soluções ;-) > > Enviem currículos pra r...@estantevirtual.com.br > > > []s > > -b > > > 2014-05-05 16:24 GMT-03:00 Andre Carneiro : > > O que mais eu vejo é vaga para suporte de infra/rede e sys admin(por > aqui, > > sinônimo para 'faz-tudo'). Quando não é isso, é para cuidar de código > legado > > e/ou novo de back-end, o que eu considero bem divertido. Mas a principal > > observação é que, normalmente, o requisito principal para as vagas não é > > Perl, mas shellscript, Java, PHP(argh!) e coisas assim. Perl aparece > quase > > sempre como requisito 'desejável', ao invés de 'básico' ou > imprescindível. E > > isso é um tanto perturbador pra mim, pelo menos. > > > > Quanto a salário não sei dizer ao certo. Normalmente vale a pena > investir em > > certificação LPI, no caso de trabalhos com suporte/infra. Os certificados > > ajudam você a ganhar um pouco mais. Mestrado, doutorado e afins parecem > ter > > mais importância para cargos de liderança/executivos. Mas nada supera o > > networking... ;-) > > > > Tudo isso que eu falei é baseado no que tenho observado do mercado > através > > de anúncios, e de colegas. Como eu não confio em pesquisas publicadas por > > consultorias de RH, prefiro acreditar no que vejo, do escuto de colegas, > de > > quem me procura oferecendo emprego, e informações das listas de > discussão. > > > > > > Espero ter ajudado > > > > > > Atenciosamente > > > > > > > > 2014-05-05 15:38 GMT-03:00 Diego Tostes : > >> > >> Pessoal, > >> > >> Como andam as vagas de perl no rio ou no brasil? > >> > >> Quais empresas ou nichos que mais contratam? > >> > >> Abs > >> > >> Diego > >> > >> ___ > >> Rio-pm mailing list > >> Rio-pm@pm.org > >> http://mail.pm.org/mailman/listinfo/rio-pm > > > > > > > > > > -- > > André Garcia Carneiro > > Software Engineer > > (11)982907780 > > > > ___ > > Rio-pm mailing list > > Rio-pm@pm.org > > http://mail.pm.org/mailman/listinfo/rio-pm > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] empregos perl no rio (ou brasil)
Breno, por curiosidade. O que define um desenvolvedor Perl5 junior, pleno ou sênior? breno escreveu: Falando em vagas no Rio de Janeiro, pra quem não sabe, a Estante Virtual está contratando desenvolvedores Perl 5 de todos os níveis (júnior/pleno/sênior) pra trabalhar com desenvolvimento Web! A Estante é um e-commerce consagrado de livros novos, seminovos e usados que agrega o acervo de sebos de todo o país. O sistema é todo em Perl 5 e usa módulos como Moo/Moose, Template Toolkit, DBIx::Connector, CHI, JSON, Try::Tiny, entre tantos outros (não temos medo de usar o CPAN, nosso cpanfile tem mais de 90 módulos!). O banco é em MySQL (com full-text em Sphinx e interface memcached), trabalhamos com git, testes e code reviews. O requisito principal das nossas vagas realmente não é Perl; é saber trabalhar bem em equipe (somos 9 devs Perl e contando!), analisar problemas e ser proativo nas soluções ;-) Enviem currículos pra r...@estantevirtual.com.br []s -b 2014-05-05 16:24 GMT-03:00 Andre Carneiro : > O que mais eu vejo é vaga para suporte de infra/rede e sys admin(por aqui, > sinônimo para 'faz-tudo'). Quando não é isso, é para cuidar de código legado > e/ou novo de back-end, o que eu considero bem divertido. Mas a principal > observação é que, normalmente, o requisito principal para as vagas não é > Perl, mas shellscript, Java, PHP(argh!) e coisas assim. Perl aparece quase > sempre como requisito 'desejável', ao invés de 'básico' ou imprescindível. E > isso é um tanto perturbador pra mim, pelo menos. > > Quanto a salário não sei dizer ao certo. Normalmente vale a pena investir em > certificação LPI, no caso de trabalhos com suporte/infra. Os certificados > ajudam você a ganhar um pouco mais. Mestrado, doutorado e afins parecem ter > mais importância para cargos de liderança/executivos. Mas nada supera o > networking... ;-) > > Tudo isso que eu falei é baseado no que tenho observado do mercado através > de anúncios, e de colegas. Como eu não confio em pesquisas publicadas por > consultorias de RH, prefiro acreditar no que vejo, do escuto de colegas, de > quem me procura oferecendo emprego, e informações das listas de discussão. > > > Espero ter ajudado > > > Atenciosamente > > > > 2014-05-05 15:38 GMT-03:00 Diego Tostes : >> >> Pessoal, >> >> Como andam as vagas de perl no rio ou no brasil? >> >> Quais empresas ou nichos que mais contratam? >> >> Abs >> >> Diego >> >> ___ >> Rio-pm mailing list >> Rio-pm@pm.org >> http://mail.pm.org/mailman/listinfo/rio-pm > > > > > -- > André Garcia Carneiro > Software Engineer > (11)982907780 > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
Entao vou colocar no github mesmo porque nao to sabendo fazer os testes. Bruno Buss escreveu: O seu teste 001_load.t ainda falha, basicamente porque ele tenta utilizar seu módulo como se fosse um objeto, tentando fazer um Math::Palindrome->new(). Assim, esse teste é criado automaticamente para você... e se seu módulo não for utilizado como um objeto, você pode remove-lo :-) Yay, moar tests! \o/ Algumas sugestões sobre os testes: * Quebre seus testes em arquivos diferentes, cada um testando uma função ou uma funcionalidade específica do seu módulo. * Talvez seja interessante fazer testes muito grandes, como o que seu que loopa nos 1os 100k palindromos, sejam marcados como testes para rodar somente no seu ambiente (de autor)... pois eles parecem mais smoke tests do que testes unitários de fato. Além disso, sobre esse seu teste do loop... ele está testando que o next_palindrome() de fato gera um palindromo, mas não testa se ele de fato gera o *proximo* palíndromo para todos aqueles casos. Como você faria para testar isso? :-) Mais duas sugestões sobre o processo de desenvolvimento at all: * Considere colocar o seu código num repositório onde outras pessoas podem contribuir, tanto na parte de código quanto de documentação, tipo o Github. * Experimente gerenciar seus modulos/dists com o Dist::Zilla... sua vida provavelmente será bem mais feliz :P https://metacpan.org/pod/Dist::Zilla Nice job! :-) [ ]'s 2014-05-04 21:48 GMT-03:00 Aureliano Guedes : > Acabei de subir para o CPAN a versão 0.02 daquele módulo. > https://metacpan.org/pod/Math::Palindrome > > Mas agora que acabei de ver seu e-mail. > > Algumas modificações já irei fazer para subir a versão 0.03. > > Se você tentar instalar depois me fala se deu certo? > > > -- > From: bruno.b...@gmail.com > Date: Sat, 3 May 2014 18:57:58 -0300 > > To: rio-pm@pm.org > Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo > > Sobre o lance do next_palindrome antes do loop: > > Mas com isso você quebrou o caso onde o valor inicial já é um palindromo > primo... ou seja, não ta certo :P > > Você não consegue fazer uma condição do loop melhor, tal que ela verifique > as duas condições e só pare quando o número for um primo palindromo sempre, > desde a 1a verificação? ;) > > Sobre a explicação do modulo: > > Opa, muito bom! Seems good to me :-) > Só acho que você precisa tratar todos os casos onde $n =~ m/^9+$/, porque > só o 99 e 999 não bastam (mas foi legal que você já tinha percebido o > problema deles :-) > > Tratar eles é bem fácil eu acho: > if($n =~ m/^9+$/){ > $r = '1' . (0 x ((length $n) - 1)) . '1'; > } > > Seems legit? > > Por fim, seria legal voce escrever tudo isso na documentação do seu > módulo, pois provavelmente vai ajudar quem estiver escolhendo um para usar > :-) > > Acho que já estou convencido que sua next_palindrome está ok (tirando esse > problema aí de cima dos números com todos os dígitos 9). Agora só > precisamos melhorar o loop principal do seu programa. Lembre-se do que você > quer (um primo palindromo) e do que você realmente precisa dentro desse seu > loop. Tente construir uma invariante das iterações do loop, o que você pode > garantir a cada passada do loop? > > > > 2014-05-03 11:27 GMT-03:00 Aureliano Guedes : > > Então, esse problema já é do loop principal e não do módulo. > Porque eu faço: > >1. $time = next_palindrome($time); > > Antes do loop principal. > acho que pode ser corrigido fazendo: > >1. $time = next_palindrome($time) if (!is_palindrome($time)); > > > Fiz isso para evitar que um time() primo finalize o loop mesmo sem ele > começar, já que o loop inicia assim: > while(!is_prime($time)) > > Agora quanto ao módulo em sí, a logica usada é a seguinte: > - Um número palíndromo é obrigatoriamente igual a ele mesmo se lido de > traz para frente, então > - Se dividirmos pela metade os dígitos de um numero palíndromo de número > de dígitos maior ou igual a 2 então a primeira metade é obrigatoriamente > igual a segunda lida de traz para frente. Isso me leva as seguintes > conclusões: > > 1- Se o reverso da segunda parte é menor que a primeira parte > # 8652 -> 86 > 25 > logo o próximo palíndromo é obrigatoriamente a primeira parte concatenada > com o reverso dela mesma > # 86 . (reverse 86) > Isso se torna verdadeiro porque no caso usado para exemplo '8668' a > segunda parte é o '68' que tem seu reverso '86' que é igual a primeira > parte. > > 2- Se se o reverso da segunda parte é maior ou igual a primeira parte > # 8668 -> 86 == 86 # ou # 8669 -> 86 < 96 > logo o próximo palíndromo é obrigatoriamente a primeira parte incre
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
Acabei de subir para o CPAN a versão 0.02 daquele módulo.https://metacpan.org/pod/Math::Palindrome Mas agora que acabei de ver seu e-mail. Algumas modificações já irei fazer para subir a versão 0.03. Se você tentar instalar depois me fala se deu certo? From: bruno.b...@gmail.com Date: Sat, 3 May 2014 18:57:58 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Sobre o lance do next_palindrome antes do loop: Mas com isso você quebrou o caso onde o valor inicial já é um palindromo primo... ou seja, não ta certo :P Você não consegue fazer uma condição do loop melhor, tal que ela verifique as duas condições e só pare quando o número for um primo palindromo sempre, desde a 1a verificação? ;) Sobre a explicação do modulo: Opa, muito bom! Seems good to me :-)Só acho que você precisa tratar todos os casos onde $n =~ m/^9+$/, porque só o 99 e 999 não bastam (mas foi legal que você já tinha percebido o problema deles :-) Tratar eles é bem fácil eu acho:if($n =~ m/^9+$/){ $r = '1' . (0 x ((length $n) - 1)) . '1';} Seems legit? Por fim, seria legal voce escrever tudo isso na documentação do seu módulo, pois provavelmente vai ajudar quem estiver escolhendo um para usar :-) Acho que já estou convencido que sua next_palindrome está ok (tirando esse problema aí de cima dos números com todos os dígitos 9). Agora só precisamos melhorar o loop principal do seu programa. Lembre-se do que você quer (um primo palindromo) e do que você realmente precisa dentro desse seu loop. Tente construir uma invariante das iterações do loop, o que você pode garantir a cada passada do loop? 2014-05-03 11:27 GMT-03:00 Aureliano Guedes : Então, esse problema já é do loop principal e não do módulo. Porque eu faço: $time = next_palindrome($time); Antes do loop principal.acho que pode ser corrigido fazendo: $time = next_palindrome($time) if (!is_palindrome($time)); Fiz isso para evitar que um time() primo finalize o loop mesmo sem ele começar, já que o loop inicia assim:while(!is_prime($time)) Agora quanto ao módulo em sí, a logica usada é a seguinte:- Um número palíndromo é obrigatoriamente igual a ele mesmo se lido de traz para frente, então- Se dividirmos pela metade os dígitos de um numero palíndromo de número de dígitos maior ou igual a 2 então a primeira metade é obrigatoriamente igual a segunda lida de traz para frente. Isso me leva as seguintes conclusões: 1- Se o reverso da segunda parte é menor que a primeira parte # 8652 -> 86 > 25logo o próximo palíndromo é obrigatoriamente a primeira parte concatenada com o reverso dela mesma # 86 . (reverse 86)Isso se torna verdadeiro porque no caso usado para exemplo '8668' a segunda parte é o '68' que tem seu reverso '86' que é igual a primeira parte. 2- Se se o reverso da segunda parte é maior ou igual a primeira parte# 8668 -> 86 == 86 # ou # 8669 -> 86 < 96logo o próximo palíndromo é obrigatoriamente a primeira parte incrementada concatenada com seu reverso # 8668 -> 86 +1 -> 87 . 78 -> 8778 Então minha heurística foi aplicada em cima de uma lógica matemática, o que apesar do módulo não vir com os testes, em meus testes ao final do desenvolvimento ele fez corretamente todas as respostas. Inclusive estou fazendo algumas correções para subir estas correções.Eu não sei fazer direito aqueles testes, mas enviarei com os testes na próxima. Quanto ao Math::NumSeq::Palindromes, acho que poderia ser melhor de usar, mais direto, no meu você pode imprimir o próximo palindromo fazendo apenas 'say next_palindrome($n);'. From: bruno.b...@gmail.com Date: Sat, 3 May 2014 10:01:11 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Então, eu não consigo instalar seu modulo no meu sistema, mas supondo que ele esteja correto, principalmente que a função "next_palindrome" retorne exatamente o próximo palindromo maior ou igual ao número... Para esse seu programa:(1) Entrada: 9. Saída esperada: 9. Saída atual: 11. (2) Entrada: 191. Saída esperada: 191. Saída atual: Alguma coisa que não é 191 e fiquei com preguiça de terminar o chinês. (3) Entrada: 666. Saída esperada: 727. Saída atual: Alguma coisa que não é 727 e fiquei com preguiça de terminar o chinês. Mas logo depois da 1a iteração do while... o $time foi bumpado para 796 - por causa do if((reverse $time) % 2 == 0) - e já passou do 727 e nunca vai voltar para ele japa++ pela consideração entre as duas versões do reverse reverse $time. Eu ainda acho que esse trecho ta errado destrói qualquer tentativa de construir uma invariante no algoritmo. 2014-05-01 22:27 GMT-03:00 Aureliano Guedes : E pronto minha solução sem os bugs que falou: http://pastebin.com/PQQyg5BK Engraçado: teve o melhor desempenho. Um simples detalhe reduziu o tempo de execução pela metade. Fazer: $ti
Re: [Rio-pm] Número no final do package
'Warning! The consumption of alcohol may cause you to think you have mystical kung-fu powers.' Date: Sun, 4 May 2014 20:08:49 +0200 From: creakt...@gmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] Número no final do package (0x2B or not 0x2B) воскресенье, 4 мая 2014 г. пользователь Adriano Ferreira написал: 2014-05-04 12:12 GMT-03:00 breno : Só de curiosidade: http://returnvalues.useperl.at (especificamente, http://returnvalues.useperl.at/values.html) Eu costumo botar "1" em trabalhos profissionais, e "42" em projetos open-source. Em alguns módulos do SDL a gente botou "all your base are belong to us", e o Dancer exporta a DSL "true" e recomenda seu uso nas apps feitas com ele. Qual o seu valor de retorno favorito? :D "0 but true" =) []s -b 2014-05-03 18:30 GMT-03:00 Bruno Buss : > Os dois 1os resultados do Google... > > http://stackoverflow.com/questions/5293246/why-the-1-at-the-end-of-each-perl-package > http://stackoverflow.com/questions/3606528/why-do-you-have-to-put-a-1-at-the-end-of-a-perl-5-module > > 2014-05-03 18:03 GMT-03:00 Aureliano Guedes : >> >> Ola monges, >> >> tenho uma dúvida meio idiota: >> "O que é aquele número no final do módulo??" >> >> exemplo: >> >> package Meu::Modulo; >> >> ... >> >> 1; >> >> No módulo do Garu mesmo: >> >> package Acme::BOPE; >> >> . >> >> 42; >> >> Eu sempre coloquei de forma automática o '1;', mas não faço ideia do que >> é, alguns módulos tem números diferentes. >> Mas o que é esse numero? Pra que serve? Como seu qual número devo colocar? >> >> Abraços, >> >> ___ >> Rio-pm mailing list >> Rio-pm@pm.org >> http://mail.pm.org/mailman/listinfo/rio-pm > > > > > -- > Bruno C. Buss > http://www.brunobuss.net > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] Número no final do package
Ola monges, tenho uma dúvida meio idiota:"O que é aquele número no final do módulo??" exemplo: package Meu::Modulo; ... 1; No módulo do Garu mesmo: package Acme::BOPE; . 42; Eu sempre coloquei de forma automática o '1;', mas não faço ideia do que é, alguns módulos tem números diferentes.Mas o que é esse numero? Pra que serve? Como seu qual número devo colocar? Abraços, ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
Bom, so completando. Quando a entrada é 9 a saída esperada e 11, por que 9 nao e primo, e no programa ele verifica se é primo antes de imprimir. Agora se fizer um is_palindrome(9); vai retornar true. Bruno Buss escreveu: Então, eu não consigo instalar seu modulo no meu sistema, mas supondo que ele esteja correto, principalmente que a função "next_palindrome" retorne exatamente o próximo palindromo maior ou igual ao número... Para esse seu programa: (1) Entrada: 9. Saída esperada: 9. Saída atual: 11. (2) Entrada: 191. Saída esperada: 191. Saída atual: Alguma coisa que não é 191 e fiquei com preguiça de terminar o chinês. (3) Entrada: 666. Saída esperada: 727. Saída atual: Alguma coisa que não é 727 e fiquei com preguiça de terminar o chinês. Mas logo depois da 1a iteração do while... o $time foi bumpado para 796 - por causa do if((reverse $time) % 2 == 0) - e já passou do 727 e nunca vai voltar para ele japa++ pela consideração entre as duas versões do reverse reverse $time. Eu ainda acho que esse trecho ta errado destrói qualquer tentativa de construir uma invariante no algoritmo. 2014-05-01 22:27 GMT-03:00 Aureliano Guedes : > E pronto minha solução sem os bugs que falou: http://pastebin.com/PQQyg5BK > > Engraçado: teve o melhor desempenho. > Um simples detalhe reduziu o tempo de execução pela metade. > > Fazer: > $time = reverse $time; > $time++; > $time = reverse $time; > > gera um desempenho melhor que fazer: > > $time = reverse (reverse $time++); > -- > From: guedes_1...@hotmail.com > To: rio-pm@pm.org > Date: Fri, 2 May 2014 00:04:04 + > > Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo > > Bruno, resolvi o problema e segui a sua dica: > http://cpansearch.perl.org/src/ACPGUEDES/Math-Palindrome-undef/lib/Math/Palindrome.pm > > O > http://search.cpan.org/~kryde/Math-NumSeq-70/lib/Math/NumSeq/Palindromes.pm > era > muito incompleto! > > -- > From: bruno.b...@gmail.com > Date: Mon, 28 Apr 2014 21:24:50 -0300 > To: rio-pm@pm.org > Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo > > O problema é que quando time() está entre 89 e 96, next_prime($time) > retorna 97... e a palindrome(97) retorna 107 - se não errei o chines mental > que acabei de fazer - ou seja, pulando um palíndromo primo, que seria a > resposta correta. O mesmo problema de antes, sua heurística para tentar > pular números na sequencia de primos/palíndromos ainda não está muito boa. > > Mais uma dica: Ao invés de usar aquela formula toda para pegar a 1a/2a > metade dos dígitos do numero, porque você não usa a substr()? :-) > > > 2014-04-27 20:49 GMT-03:00 Aureliano Guedes : > > Bruno, > > Tratei a maioria dos erros e ainda ganhei em desempenho. > O problema é que tem um bug que não consegui tratar. > > Quando 89 <= time() <= 96 sempre retorna 131 e não 101, mas quando >89 ou > <96 retorna corretamente 101. > > http://pastebin.com/3QVnbjbP > > -- > Date: Sun, 27 Apr 2014 14:00:02 -0300 > > From: guedes_1...@hotmail.com > To: rio-pm@pm.org > Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo > > Buss, > Obrigado por analisar o código. > Realmente eu fiz apenas alguns teste mas nao o suficiente para perceber > esses bugs que me falou. > Essa heurística foi apenas experimental. > E ainda pode ser otimizada. > Nao sou muito habilidoso quando se trata de achar esses tipos de erros. > Por exemplo, se na rotina de geração de palíndromo eu verificasse se o > palíndromo gerado e par já ganharia no desempenho mas nao resolveria os > problemas que citou. > Vou ver o que posso fazer para resolver esses bugs. > Obrigado pela análise. > > > Bruno Buss escreveu: > > Olá Aureliano, > > Muito bom seu esforço... mas eu acho que você deveria elaborar e rodar > alguns testes unitários para o seu código. :-) > > > Por exemplo, o seu código anterior (com as subs _par e _impar), imprimia > "101" se o time() fosse "102". A resposta correta seria "131". A sua > "heurística geradora de palindromos" andou para trás nesse caso... me > parece um erro de design do algoritmo. > > > Essa sua nova versão: > * Imprime "13" se o time() for "13"... e 13 nem é palindromo! O resultado > correto nesse caso é "101". Mas isso é só um erro no seu loop principal, > que se for primo direto no começo ele nem verifica se é palindromo mas já > imprime direto. > > * Imprime "1003001" se o time() for 96... o que me parece meio longe do > resultado esperado, "101". Nesse caso, emho, o problema é a sua "heurística > ge
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
Então, esse problema já é do loop principal e não do módulo. Porque eu faço: $time = next_palindrome($time);Antes do loop principal.acho que pode ser corrigido fazendo:$time = next_palindrome($time) if (!is_palindrome($time)); Fiz isso para evitar que um time() primo finalize o loop mesmo sem ele começar, já que o loop inicia assim:while(!is_prime($time)) Agora quanto ao módulo em sí, a logica usada é a seguinte:- Um número palíndromo é obrigatoriamente igual a ele mesmo se lido de traz para frente, então- Se dividirmos pela metade os dígitos de um numero palíndromo de número de dígitos maior ou igual a 2 então a primeira metade é obrigatoriamente igual a segunda lida de traz para frente. Isso me leva as seguintes conclusões: 1- Se o reverso da segunda parte é menor que a primeira parte # 8652 -> 86 > 25logo o próximo palíndromo é obrigatoriamente a primeira parte concatenada com o reverso dela mesma# 86 . (reverse 86)Isso se torna verdadeiro porque no caso usado para exemplo '8668' a segunda parte é o '68' que tem seu reverso '86' que é igual a primeira parte. 2- Se se o reverso da segunda parte é maior ou igual a primeira parte# 8668 -> 86 == 86 # ou # 8669 -> 86 < 96logo o próximo palíndromo é obrigatoriamente a primeira parte incrementada concatenada com seu reverso# 8668 -> 86 +1 -> 87 . 78 -> 8778 Então minha heurística foi aplicada em cima de uma lógica matemática, o que apesar do módulo não vir com os testes, em meus testes ao final do desenvolvimento ele fez corretamente todas as respostas. Inclusive estou fazendo algumas correções para subir estas correções.Eu não sei fazer direito aqueles testes, mas enviarei com os testes na próxima. Quanto ao Math::NumSeq::Palindromes, acho que poderia ser melhor de usar, mais direto, no meu você pode imprimir o próximo palindromo fazendo apenas 'say next_palindrome($n);'. From: bruno.b...@gmail.com Date: Sat, 3 May 2014 10:01:11 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Então, eu não consigo instalar seu modulo no meu sistema, mas supondo que ele esteja correto, principalmente que a função "next_palindrome" retorne exatamente o próximo palindromo maior ou igual ao número... Para esse seu programa:(1) Entrada: 9. Saída esperada: 9. Saída atual: 11. (2) Entrada: 191. Saída esperada: 191. Saída atual: Alguma coisa que não é 191 e fiquei com preguiça de terminar o chinês. (3) Entrada: 666. Saída esperada: 727. Saída atual: Alguma coisa que não é 727 e fiquei com preguiça de terminar o chinês. Mas logo depois da 1a iteração do while... o $time foi bumpado para 796 - por causa do if((reverse $time) % 2 == 0) - e já passou do 727 e nunca vai voltar para ele japa++ pela consideração entre as duas versões do reverse reverse $time. Eu ainda acho que esse trecho ta errado destrói qualquer tentativa de construir uma invariante no algoritmo. 2014-05-01 22:27 GMT-03:00 Aureliano Guedes : E pronto minha solução sem os bugs que falou: http://pastebin.com/PQQyg5BK Engraçado: teve o melhor desempenho. Um simples detalhe reduziu o tempo de execução pela metade. Fazer: $time = reverse $time; $time++; $time = reverse $time; gera um desempenho melhor que fazer: $time = reverse (reverse $time++); From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Fri, 2 May 2014 00:04:04 + Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Bruno, resolvi o problema e segui a sua dica: http://cpansearch.perl.org/src/ACPGUEDES/Math-Palindrome-undef/lib/Math/Palindrome.pm O http://search.cpan.org/~kryde/Math-NumSeq-70/lib/Math/NumSeq/Palindromes.pm era muito incompleto! From: bruno.b...@gmail.com Date: Mon, 28 Apr 2014 21:24:50 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo O problema é que quando time() está entre 89 e 96, next_prime($time) retorna 97... e a palindrome(97) retorna 107 - se não errei o chines mental que acabei de fazer - ou seja, pulando um palíndromo primo, que seria a resposta correta. O mesmo problema de antes, sua heurística para tentar pular números na sequencia de primos/palíndromos ainda não está muito boa. Mais uma dica: Ao invés de usar aquela formula toda para pegar a 1a/2a metade dos dígitos do numero, porque você não usa a substr()? :-) 2014-04-27 20:49 GMT-03:00 Aureliano Guedes : Bruno, Tratei a maioria dos erros e ainda ganhei em desempenho.O problema é que tem um bug que não consegui tratar. Quando 89 <= time() <= 96 sempre retorna 131 e não 101, mas quando >89 ou <96 retorna corretamente 101. http://pastebin.com/3QVnbjbP Date: Sun, 27 Apr 2014 14:00:02 -0300 From: guedes_1...@hotmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo B
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
E pronto minha solução sem os bugs que falou: http://pastebin.com/PQQyg5BK Engraçado: teve o melhor desempenho.Um simples detalhe reduziu o tempo de execução pela metade. Fazer: $time = reverse $time; $time++; $time = reverse $time; gera um desempenho melhor que fazer: $time = reverse (reverse $time++);From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Fri, 2 May 2014 00:04:04 + Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Bruno, resolvi o problema e segui a sua dica: http://cpansearch.perl.org/src/ACPGUEDES/Math-Palindrome-undef/lib/Math/Palindrome.pm O http://search.cpan.org/~kryde/Math-NumSeq-70/lib/Math/NumSeq/Palindromes.pm era muito incompleto! From: bruno.b...@gmail.com Date: Mon, 28 Apr 2014 21:24:50 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo O problema é que quando time() está entre 89 e 96, next_prime($time) retorna 97... e a palindrome(97) retorna 107 - se não errei o chines mental que acabei de fazer - ou seja, pulando um palíndromo primo, que seria a resposta correta. O mesmo problema de antes, sua heurística para tentar pular números na sequencia de primos/palíndromos ainda não está muito boa. Mais uma dica: Ao invés de usar aquela formula toda para pegar a 1a/2a metade dos dígitos do numero, porque você não usa a substr()? :-) 2014-04-27 20:49 GMT-03:00 Aureliano Guedes : Bruno, Tratei a maioria dos erros e ainda ganhei em desempenho.O problema é que tem um bug que não consegui tratar. Quando 89 <= time() <= 96 sempre retorna 131 e não 101, mas quando >89 ou <96 retorna corretamente 101. http://pastebin.com/3QVnbjbP Date: Sun, 27 Apr 2014 14:00:02 -0300 From: guedes_1...@hotmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Buss, Obrigado por analisar o código. Realmente eu fiz apenas alguns teste mas nao o suficiente para perceber esses bugs que me falou. Essa heurística foi apenas experimental. E ainda pode ser otimizada. Nao sou muito habilidoso quando se trata de achar esses tipos de erros. Por exemplo, se na rotina de geração de palíndromo eu verificasse se o palíndromo gerado e par já ganharia no desempenho mas nao resolveria os problemas que citou. Vou ver o que posso fazer para resolver esses bugs. Obrigado pela análise. Bruno Buss escreveu: Olá Aureliano, Muito bom seu esforço... mas eu acho que você deveria elaborar e rodar alguns testes unitários para o seu código. :-) Por exemplo, o seu código anterior (com as subs _par e _impar), imprimia "101" se o time() fosse "102". A resposta correta seria "131". A sua "heurística geradora de palindromos" andou para trás nesse caso... me parece um erro de design do algoritmo. Essa sua nova versão: * Imprime "13" se o time() for "13"... e 13 nem é palindromo! O resultado correto nesse caso é "101". Mas isso é só um erro no seu loop principal, que se for primo direto no começo ele nem verifica se é palindromo mas já imprime direto. * Imprime "1003001" se o time() for 96... o que me parece meio longe do resultado esperado, "101". Nesse caso, emho, o problema é a sua "heurística geradora de palindromos". Ou seja, a eficiência do algoritmo é muito importante... mas sua corretude deve vir antes. (A menos é claro que estejamos falando de algoritmos aproximativos ou heurísticas para problemas intratáveis :-) Nesse caso em específico, parece que essa sua função geradora de palindromos é de fato uma heurística para dar bumps na sequência e economizar verificações... mas como observado você corre o risco de pular algo que não deveria. Só como dúvida, essa sua heurística é fundamentada em algum resultado matemático de fato ou apenas experimental? [ ]'s Buss 2014-04-27 3:06 GMT-03:00 Aureliano Guedes : Esquece a ultima versão. Divisão é pesado para o processador. Fiz uma versão menor com menos divisões que parece ter uma melhor performance. http://pastebin.com/jrjEv3eh From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Sun, 27 Apr 2014 02:44:57 + Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Então tenho essa versão que executou em 1s. http://pastebin.com/DLdPwAkp From: bla...@gmail.com Date: Sat, 26 Apr 2014 18:39:15 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Vamos dar um desconto por causa do "primo". 2014-04-25 23:26 GMT-03:00 Junior Moraes : Hi. Se for válido usar módulos externos, dá pra implementar com o Math::Prime::XS para ficar mais performático. :-) []'s Em 25 de abril de 2014 23:21, Aureliano Guedes escreveu: Não fiz em poucas linhas, mas fis em po
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
Bruno, resolvi o problema e segui a sua dica: http://cpansearch.perl.org/src/ACPGUEDES/Math-Palindrome-undef/lib/Math/Palindrome.pm O http://search.cpan.org/~kryde/Math-NumSeq-70/lib/Math/NumSeq/Palindromes.pm era muito incompleto! From: bruno.b...@gmail.com Date: Mon, 28 Apr 2014 21:24:50 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo O problema é que quando time() está entre 89 e 96, next_prime($time) retorna 97... e a palindrome(97) retorna 107 - se não errei o chines mental que acabei de fazer - ou seja, pulando um palíndromo primo, que seria a resposta correta. O mesmo problema de antes, sua heurística para tentar pular números na sequencia de primos/palíndromos ainda não está muito boa. Mais uma dica: Ao invés de usar aquela formula toda para pegar a 1a/2a metade dos dígitos do numero, porque você não usa a substr()? :-) 2014-04-27 20:49 GMT-03:00 Aureliano Guedes : Bruno, Tratei a maioria dos erros e ainda ganhei em desempenho.O problema é que tem um bug que não consegui tratar. Quando 89 <= time() <= 96 sempre retorna 131 e não 101, mas quando >89 ou <96 retorna corretamente 101. http://pastebin.com/3QVnbjbP Date: Sun, 27 Apr 2014 14:00:02 -0300 From: guedes_1...@hotmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Buss, Obrigado por analisar o código. Realmente eu fiz apenas alguns teste mas nao o suficiente para perceber esses bugs que me falou. Essa heurística foi apenas experimental. E ainda pode ser otimizada. Nao sou muito habilidoso quando se trata de achar esses tipos de erros. Por exemplo, se na rotina de geração de palíndromo eu verificasse se o palíndromo gerado e par já ganharia no desempenho mas nao resolveria os problemas que citou. Vou ver o que posso fazer para resolver esses bugs. Obrigado pela análise. Bruno Buss escreveu: Olá Aureliano, Muito bom seu esforço... mas eu acho que você deveria elaborar e rodar alguns testes unitários para o seu código. :-) Por exemplo, o seu código anterior (com as subs _par e _impar), imprimia "101" se o time() fosse "102". A resposta correta seria "131". A sua "heurística geradora de palindromos" andou para trás nesse caso... me parece um erro de design do algoritmo. Essa sua nova versão: * Imprime "13" se o time() for "13"... e 13 nem é palindromo! O resultado correto nesse caso é "101". Mas isso é só um erro no seu loop principal, que se for primo direto no começo ele nem verifica se é palindromo mas já imprime direto. * Imprime "1003001" se o time() for 96... o que me parece meio longe do resultado esperado, "101". Nesse caso, emho, o problema é a sua "heurística geradora de palindromos". Ou seja, a eficiência do algoritmo é muito importante... mas sua corretude deve vir antes. (A menos é claro que estejamos falando de algoritmos aproximativos ou heurísticas para problemas intratáveis :-) Nesse caso em específico, parece que essa sua função geradora de palindromos é de fato uma heurística para dar bumps na sequência e economizar verificações... mas como observado você corre o risco de pular algo que não deveria. Só como dúvida, essa sua heurística é fundamentada em algum resultado matemático de fato ou apenas experimental? [ ]'s Buss 2014-04-27 3:06 GMT-03:00 Aureliano Guedes : Esquece a ultima versão. Divisão é pesado para o processador. Fiz uma versão menor com menos divisões que parece ter uma melhor performance. http://pastebin.com/jrjEv3eh From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Sun, 27 Apr 2014 02:44:57 + Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Então tenho essa versão que executou em 1s. http://pastebin.com/DLdPwAkp From: bla...@gmail.com Date: Sat, 26 Apr 2014 18:39:15 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Vamos dar um desconto por causa do "primo". 2014-04-25 23:26 GMT-03:00 Junior Moraes : Hi. Se for válido usar módulos externos, dá pra implementar com o Math::Prime::XS para ficar mais performático. :-) []'s Em 25 de abril de 2014 23:21, Aureliano Guedes escreveu: Não fiz em poucas linhas, mas fis em poucos segundos: http://pastebin.com/DLdPwAkp Date: Tue, 22 Apr 2014 15:09:22 -0300 From: guedes_1...@hotmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Claro que esta. Mas nao consegui fazer o que o que o Bablos sugeriu em uma única linha. Vinícius Miasato escreveu: Opa, parabéns por aceitar o desafio e levá-lo até o fim! Não sei se o código funciona, mas o jogo de GOLF ainda está de pé? atenciosamente, Vinícius Miasato Em 22 de abril de 2014 13:13, Aureli
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Ainda sim mataria o dragão com perl. http://www.programacaoprogressiva.net/2012/12/Como-programadores-matariam-um-dragao-e-salvariam-a-princesa.html?m=1 Renato Santos escreveu: http://i.imgur.com/8iUZEZt.png só pela zuera! 2014-04-29 20:25 GMT-03:00 Daniel Vinciguerra : > Boas praticas com Delphi é ruim heim hahaha > > > *Daniel Vinciguerra (@dvinciguerra)* > Web solution architect, perl dev, vegetarian, geek and founder at *Bivee* > bivee.com.br - github.com/Bivee > > > 2014-04-29 20:11 GMT-03:00 Renato Santos : > > ** FLAME WARR*** >> C++ e Delphi ? >> >> linus torvalds discorda disso! >> >> http://article.gmane.org/gmane.comp.version-control.git/57918 >> >> >> >> >> 2014-04-29 20:02 GMT-03:00 Aureliano Guedes : >> >> >ter Perl como primeira linguagem >>> Esse foi meu feliz erro. >>> Sofro com alguns problemas de boas praticas mas em questão de logica >>> pura eu m dou bem. >>> Eu diria que quem quer aprender logica deveria aprender Perl. >>> Agora aprendi C VB.net e mais recentemente C++ e Delphi pra tentar >>> aprender boas praticas. >>> >>> >>> >>> Blabos de Blebe escreveu: >>> >>> Mas ok, não é uma boa prática... >>> >>> >>> 2014-04-29 19:15 GMT-03:00 Blabos de Blebe : >>> >>> > café deve ser 'duro' >>> >>> TimToady!!! >>> >>> >>> 2014-04-29 19:12 GMT-03:00 Renato Santos : >>> >>> Cara, café não se pode ferver! seu café deve ser 'duro' >>> >>> >>> 2014-04-29 19:01 GMT-03:00 Blabos de Blebe : >>> >>> Enquanto meu café ferve, aqui vale uma reflexão: >>> >>> "Boas práticas" é um conceito flutuante. >>> >>> Perl é uma linguagem extremamente rica e se desenvolvimento bastante >>> dinâmico. O que era boa prática quando eu aprendi, já não é boa prática >>> hoje. As coisas mudam. >>> >>> http://perldoc.perl.org/perlhist.html >>> >>> Embora muita gente fale que Perl é pré-histórico, a versão mais atual >>> foi lançada em janeiro. Se você bobear, você que fica pré-histórico. >>> >>> []'s >>> >>> >>> >>> >>> 2014-04-29 18:52 GMT-03:00 Blabos de Blebe : >>> >>> Pacman, copião :) >>> >>> >>> 2014-04-29 18:50 GMT-03:00 Blabos de Blebe : >>> >>> > que Modulo::funcao dispensa declarar o construtor. >>> >>> Não dispensa. Não tem nada a ver. Não misture as coisas. >>> >>> Construtor é um conceito associado a um método especial utilizado para >>> inicializar objetos, ou seja, quando você está utilizando uma interface >>> orientada a objetos. >>> >>> Em C++, o Construtor tem que ser um método cujo nome é o nome da >>> classe. >>> >>> Em Python é outro padrão. >>> >>> Em Perl isso é livre, um construtor, ou seja um inicializador de >>> objetos pode ser qualquer método que eventualmente invoque a sub bless(). >>> >>> http://perldoc.perl.org/functions/bless.html >>> >>> Em Perl convencionamos, pra ninguém ficar louco, que o construtor >>> chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. >>> >>> Modulo::funcao() é uma chamada 'procedural' aplicando o namespace >>> completo FQN. Não tem nada a ver com objetos, ou construtores. >>> >>> *** >>> >>> No seu caso, como bem observado pelo Junior, o que você quer é não ter >>> que passar o namespace completo, por isso o uso do Exporter, que nada mais >>> faz do que tornar a sua função conhecida no namespace atual. >>> >>> Exporter também não tem nada a ver com objetos. >>> >>> A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por >>> default. Nesse caso, ao usar o seu módulo você precisa fazer: >>> >>> use Modulo qw{ funcao }; >>> >>> Aqui, "boa prática" significa basicamente, "vou tormar o cuidado de >>> exportar apenas o necessário pra não correr risco de dar conflito com outra >>> função de mesmo nome de outro módulo". >>> >>> Mas é só uma politica de boa vizinhança, não quer dizer, >>> necessariamente, errado. Depende do seu contexto. >>> >>> *** >>> >>> Como em Perl as coisas são mais livres, você vai ver casos de um >>>
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Ainda sim mataria o dragão com perl. http://www.programacaoprogressiva.net/2012/12/Como-programadores-matariam-um-dragao-e-salvariam-a-princesa.html?m=1 Renato Santos escreveu: http://i.imgur.com/8iUZEZt.png só pela zuera! 2014-04-29 20:25 GMT-03:00 Daniel Vinciguerra : > Boas praticas com Delphi é ruim heim hahaha > > > *Daniel Vinciguerra (@dvinciguerra)* > Web solution architect, perl dev, vegetarian, geek and founder at *Bivee* > bivee.com.br - github.com/Bivee > > > 2014-04-29 20:11 GMT-03:00 Renato Santos : > > ** FLAME WARR*** >> C++ e Delphi ? >> >> linus torvalds discorda disso! >> >> http://article.gmane.org/gmane.comp.version-control.git/57918 >> >> >> >> >> 2014-04-29 20:02 GMT-03:00 Aureliano Guedes : >> >> >ter Perl como primeira linguagem >>> Esse foi meu feliz erro. >>> Sofro com alguns problemas de boas praticas mas em questão de logica >>> pura eu m dou bem. >>> Eu diria que quem quer aprender logica deveria aprender Perl. >>> Agora aprendi C VB.net e mais recentemente C++ e Delphi pra tentar >>> aprender boas praticas. >>> >>> >>> >>> Blabos de Blebe escreveu: >>> >>> Mas ok, não é uma boa prática... >>> >>> >>> 2014-04-29 19:15 GMT-03:00 Blabos de Blebe : >>> >>> > café deve ser 'duro' >>> >>> TimToady!!! >>> >>> >>> 2014-04-29 19:12 GMT-03:00 Renato Santos : >>> >>> Cara, café não se pode ferver! seu café deve ser 'duro' >>> >>> >>> 2014-04-29 19:01 GMT-03:00 Blabos de Blebe : >>> >>> Enquanto meu café ferve, aqui vale uma reflexão: >>> >>> "Boas práticas" é um conceito flutuante. >>> >>> Perl é uma linguagem extremamente rica e se desenvolvimento bastante >>> dinâmico. O que era boa prática quando eu aprendi, já não é boa prática >>> hoje. As coisas mudam. >>> >>> http://perldoc.perl.org/perlhist.html >>> >>> Embora muita gente fale que Perl é pré-histórico, a versão mais atual >>> foi lançada em janeiro. Se você bobear, você que fica pré-histórico. >>> >>> []'s >>> >>> >>> >>> >>> 2014-04-29 18:52 GMT-03:00 Blabos de Blebe : >>> >>> Pacman, copião :) >>> >>> >>> 2014-04-29 18:50 GMT-03:00 Blabos de Blebe : >>> >>> > que Modulo::funcao dispensa declarar o construtor. >>> >>> Não dispensa. Não tem nada a ver. Não misture as coisas. >>> >>> Construtor é um conceito associado a um método especial utilizado para >>> inicializar objetos, ou seja, quando você está utilizando uma interface >>> orientada a objetos. >>> >>> Em C++, o Construtor tem que ser um método cujo nome é o nome da >>> classe. >>> >>> Em Python é outro padrão. >>> >>> Em Perl isso é livre, um construtor, ou seja um inicializador de >>> objetos pode ser qualquer método que eventualmente invoque a sub bless(). >>> >>> http://perldoc.perl.org/functions/bless.html >>> >>> Em Perl convencionamos, pra ninguém ficar louco, que o construtor >>> chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. >>> >>> Modulo::funcao() é uma chamada 'procedural' aplicando o namespace >>> completo FQN. Não tem nada a ver com objetos, ou construtores. >>> >>> *** >>> >>> No seu caso, como bem observado pelo Junior, o que você quer é não ter >>> que passar o namespace completo, por isso o uso do Exporter, que nada mais >>> faz do que tornar a sua função conhecida no namespace atual. >>> >>> Exporter também não tem nada a ver com objetos. >>> >>> A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por >>> default. Nesse caso, ao usar o seu módulo você precisa fazer: >>> >>> use Modulo qw{ funcao }; >>> >>> Aqui, "boa prática" significa basicamente, "vou tormar o cuidado de >>> exportar apenas o necessário pra não correr risco de dar conflito com outra >>> função de mesmo nome de outro módulo". >>> >>> Mas é só uma politica de boa vizinhança, não quer dizer, >>> necessariamente, errado. Depende do seu contexto. >>> >>> *** >>> >>> Como em Perl as coisas são mais livres, você vai ver casos de um >>>
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Eu sei. Mas fui fazer um programa pra minha empresa em perl, ai minha esposa diz quero interface e pra windows, ai eu usei TK, ai ela disse quero algo bunitinho, ai aprendi delphi, ai começo da bug pra tudo que e lado, ai usei VB.net, ai fico pior, ai disse:"vamos comprar um pronto". E viveram infelizes para sempre. Renato Santos escreveu: ** FLAME WARR*** C++ e Delphi ? linus torvalds discorda disso! http://article.gmane.org/gmane.comp.version-control.git/57918 2014-04-29 20:02 GMT-03:00 Aureliano Guedes : > >ter Perl como primeira linguagem > Esse foi meu feliz erro. > Sofro com alguns problemas de boas praticas mas em questão de logica pura > eu m dou bem. > Eu diria que quem quer aprender logica deveria aprender Perl. > Agora aprendi C VB.net e mais recentemente C++ e Delphi pra tentar > aprender boas praticas. > > > > Blabos de Blebe escreveu: > > Mas ok, não é uma boa prática... > > > 2014-04-29 19:15 GMT-03:00 Blabos de Blebe : > > > café deve ser 'duro' > > TimToady!!! > > > 2014-04-29 19:12 GMT-03:00 Renato Santos : > > Cara, café não se pode ferver! seu café deve ser 'duro' > > > 2014-04-29 19:01 GMT-03:00 Blabos de Blebe : > > Enquanto meu café ferve, aqui vale uma reflexão: > > "Boas práticas" é um conceito flutuante. > > Perl é uma linguagem extremamente rica e se desenvolvimento bastante > dinâmico. O que era boa prática quando eu aprendi, já não é boa prática > hoje. As coisas mudam. > > http://perldoc.perl.org/perlhist.html > > Embora muita gente fale que Perl é pré-histórico, a versão mais atual > foi lançada em janeiro. Se você bobear, você que fica pré-histórico. > > []'s > > > > > 2014-04-29 18:52 GMT-03:00 Blabos de Blebe : > > Pacman, copião :) > > > 2014-04-29 18:50 GMT-03:00 Blabos de Blebe : > > > que Modulo::funcao dispensa declarar o construtor. > > Não dispensa. Não tem nada a ver. Não misture as coisas. > > Construtor é um conceito associado a um método especial utilizado para > inicializar objetos, ou seja, quando você está utilizando uma interface > orientada a objetos. > > Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. > > Em Python é outro padrão. > > Em Perl isso é livre, um construtor, ou seja um inicializador de objetos > pode ser qualquer método que eventualmente invoque a sub bless(). > > http://perldoc.perl.org/functions/bless.html > > Em Perl convencionamos, pra ninguém ficar louco, que o construtor > chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. > > Modulo::funcao() é uma chamada 'procedural' aplicando o namespace > completo FQN. Não tem nada a ver com objetos, ou construtores. > > *** > > No seu caso, como bem observado pelo Junior, o que você quer é não ter > que passar o namespace completo, por isso o uso do Exporter, que nada mais > faz do que tornar a sua função conhecida no namespace atual. > > Exporter também não tem nada a ver com objetos. > > A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por > default. Nesse caso, ao usar o seu módulo você precisa fazer: > > use Modulo qw{ funcao }; > > Aqui, "boa prática" significa basicamente, "vou tormar o cuidado de > exportar apenas o necessário pra não correr risco de dar conflito com outra > função de mesmo nome de outro módulo". > > Mas é só uma politica de boa vizinhança, não quer dizer, > necessariamente, errado. Depende do seu contexto. > > *** > > Como em Perl as coisas são mais livres, você vai ver casos de um package > que tem construtor, métodos *E* funções comuns, ou seja, tanto uma > interface OO quanto procedural. Exemplo: > https://metacpan.org/pod/String::Trigram > > Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma > interface OO *E* uma interface procedural, pra ficar ao gosto do cliente > escolher. Outro exemplo: https://metacpan.org/pod/CGI > > Por essas e outras, *EU*, acho meio confuso ter Perl como primeira > linguagem, pois ela te dar liberdades que em não tendo todos os conceitos > bem sedimentados, *pode* confundir. > > O importante é, em estar estudando, não parar no estágio "ah consegui > fazer" mas sim prosseguir pelo menos até o "ah, entendi como funciona". > > []'s > > > > > 2014-04-29 18:32 GMT-03:00 Aureliano Guedes : > > Funcionou da forma que o Junior passou. > > Obrigado. > > Experimentei fazer o dumper como o Bablos falou. Realmente são formas > diferentes, sendo que Modulo::funcao dispensa declarar o construtor. > > ---
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
>ter Perl como primeira linguagem Esse foi meu feliz erro. Sofro com alguns problemas de boas praticas mas em questão de logica pura eu m dou bem. Eu diria que quem quer aprender logica deveria aprender Perl. Agora aprendi C VB.net e mais recentemente C++ e Delphi pra tentar aprender boas praticas. Blabos de Blebe escreveu: Mas ok, não é uma boa prática... 2014-04-29 19:15 GMT-03:00 Blabos de Blebe : > > café deve ser 'duro' > > TimToady!!! > > > 2014-04-29 19:12 GMT-03:00 Renato Santos : > > Cara, café não se pode ferver! seu café deve ser 'duro' >> >> >> 2014-04-29 19:01 GMT-03:00 Blabos de Blebe : >> >> Enquanto meu café ferve, aqui vale uma reflexão: >>> >>> "Boas práticas" é um conceito flutuante. >>> >>> Perl é uma linguagem extremamente rica e se desenvolvimento bastante >>> dinâmico. O que era boa prática quando eu aprendi, já não é boa prática >>> hoje. As coisas mudam. >>> >>> http://perldoc.perl.org/perlhist.html >>> >>> Embora muita gente fale que Perl é pré-histórico, a versão mais atual >>> foi lançada em janeiro. Se você bobear, você que fica pré-histórico. >>> >>> []'s >>> >>> >>> >>> >>> 2014-04-29 18:52 GMT-03:00 Blabos de Blebe : >>> >>> Pacman, copião :) >>>> >>>> >>>> 2014-04-29 18:50 GMT-03:00 Blabos de Blebe : >>>> >>>> > que Modulo::funcao dispensa declarar o construtor. >>>>> >>>>> Não dispensa. Não tem nada a ver. Não misture as coisas. >>>>> >>>>> Construtor é um conceito associado a um método especial utilizado para >>>>> inicializar objetos, ou seja, quando você está utilizando uma interface >>>>> orientada a objetos. >>>>> >>>>> Em C++, o Construtor tem que ser um método cujo nome é o nome da >>>>> classe. >>>>> >>>>> Em Python é outro padrão. >>>>> >>>>> Em Perl isso é livre, um construtor, ou seja um inicializador de >>>>> objetos pode ser qualquer método que eventualmente invoque a sub bless(). >>>>> >>>>> http://perldoc.perl.org/functions/bless.html >>>>> >>>>> Em Perl convencionamos, pra ninguém ficar louco, que o construtor >>>>> chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. >>>>> >>>>> Modulo::funcao() é uma chamada 'procedural' aplicando o namespace >>>>> completo FQN. Não tem nada a ver com objetos, ou construtores. >>>>> >>>>> *** >>>>> >>>>> No seu caso, como bem observado pelo Junior, o que você quer é não ter >>>>> que passar o namespace completo, por isso o uso do Exporter, que nada mais >>>>> faz do que tornar a sua função conhecida no namespace atual. >>>>> >>>>> Exporter também não tem nada a ver com objetos. >>>>> >>>>> A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por >>>>> default. Nesse caso, ao usar o seu módulo você precisa fazer: >>>>> >>>>> use Modulo qw{ funcao }; >>>>> >>>>> Aqui, "boa prática" significa basicamente, "vou tormar o cuidado de >>>>> exportar apenas o necessário pra não correr risco de dar conflito com >>>>> outra >>>>> função de mesmo nome de outro módulo". >>>>> >>>>> Mas é só uma politica de boa vizinhança, não quer dizer, >>>>> necessariamente, errado. Depende do seu contexto. >>>>> >>>>> *** >>>>> >>>>> Como em Perl as coisas são mais livres, você vai ver casos de um >>>>> package que tem construtor, métodos *E* funções comuns, ou seja, tanto uma >>>>> interface OO quanto procedural. Exemplo: >>>>> https://metacpan.org/pod/String::Trigram >>>>> >>>>> Antigamente, quando OO era 'novidade', o pessoal costumava publicar >>>>> uma interface OO *E* uma interface procedural, pra ficar ao gosto do >>>>> cliente escolher. Outro exemplo: https://metacpan.org/pod/CGI >>>>> >>>>> Por essas e outras, *EU*, acho meio confuso ter Perl como primeira >>>>> linguagem, pois ela te dar liberdades que em não tendo todos os conceitos >>>&
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe escreveu: Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la possível ser chamada à partir de outro script bastando dar um use no módulo, e não como invocar um método estaticamente como eu pensei. Creio que o jeito mais roots seria: package Modulo::Modulo; use vars qw(@ISA @EXPORT); @ISA= (qw(Exporter)); @EXPORT = qw(acp); sub acp { ... } 1; Deste modo, Aureliano, bastará dar um use em Modulo::Modulo e a função acp() estará acessível, assim como no Math::Prime::Util. []'s ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Errei nesse exemplo, seria my $p = algumacoisa(); Mas ok, o Junior falou do 'Exporter', então o que eu to tentando fazer é:package Palindrome;use strict;use Exporter 'import';@EXPORT_OK = qw(is_palindrome);sub is_palindrome {return 1 if ($_[0] == reverse $_[0]);}1; mas quando tento use Palindrome 'all';print "ok" if (is_palindrome($ARGV[0])); e executo na shell 'perl exemplo.pl 111' ou qualquer outro número palíndromo ou não, não imprime "ok", apesar de não gerar nenhuma mensagem de erro. From: tiago.pecze...@gmail.com Date: Tue, 29 Apr 2014 17:43:22 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor isto é uma subrotina exportada onde vc viu my $p; $p->algumacoisa; ? 2014-04-29 17:40 GMT-03:00 Aureliano Guedes : #!/usr/bin/perl use strict;use warnings;use Math::Prime::Util ':all'; print "ok" if (is_prime($ARGV[0])); From: tiago.pecze...@gmail.com Date: Tue, 29 Apr 2014 17:36:23 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor de exemplos. 2014-04-29 17:34 GMT-03:00 Aureliano Guedes : Ola monges, Tenho uma pequena dúvida.Quando vamos usar uma função(sub-rotina) de um módulo fazemos na maioria das vezes o seguinte: use Modulo::Modulo; my $p = Modulo::Modulo->new();$p->funcao(); isso porque no modulo tem um contrutor ou foi gerado de presente ao autor quando usado o Moose ou semelhante. A questão é que alguns poucos módulos permitem que seja feito diretamente use Modulo::Modulo; my $p;$p->funcao(); A dúvida é: como o autor do módulo faz para que permita fazer a chamada das funções sem precisar disso:my $p = Modulo::Modulo->new(); ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
#!/usr/bin/perl use strict;use warnings;use Math::Prime::Util ':all'; print "ok" if (is_prime($ARGV[0])); From: tiago.pecze...@gmail.com Date: Tue, 29 Apr 2014 17:36:23 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor de exemplos. 2014-04-29 17:34 GMT-03:00 Aureliano Guedes : Ola monges, Tenho uma pequena dúvida.Quando vamos usar uma função(sub-rotina) de um módulo fazemos na maioria das vezes o seguinte: use Modulo::Modulo; my $p = Modulo::Modulo->new();$p->funcao(); isso porque no modulo tem um contrutor ou foi gerado de presente ao autor quando usado o Moose ou semelhante. A questão é que alguns poucos módulos permitem que seja feito diretamente use Modulo::Modulo; my $p;$p->funcao(); A dúvida é: como o autor do módulo faz para que permita fazer a chamada das funções sem precisar disso:my $p = Modulo::Modulo->new(); ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Ola monges, Tenho uma pequena dúvida.Quando vamos usar uma função(sub-rotina) de um módulo fazemos na maioria das vezes o seguinte: use Modulo::Modulo; my $p = Modulo::Modulo->new();$p->funcao(); isso porque no modulo tem um contrutor ou foi gerado de presente ao autor quando usado o Moose ou semelhante. A questão é que alguns poucos módulos permitem que seja feito diretamente use Modulo::Modulo; my $p;$p->funcao(); A dúvida é: como o autor do módulo faz para que permita fazer a chamada das funções sem precisar disso:my $p = Modulo::Modulo->new(); ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
Bruno, Tratei a maioria dos erros e ainda ganhei em desempenho.O problema é que tem um bug que não consegui tratar. Quando 89 <= time() <= 96 sempre retorna 131 e não 101, mas quando >89 ou <96 retorna corretamente 101. http://pastebin.com/3QVnbjbP Date: Sun, 27 Apr 2014 14:00:02 -0300 From: guedes_1...@hotmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Buss, Obrigado por analisar o código. Realmente eu fiz apenas alguns teste mas nao o suficiente para perceber esses bugs que me falou. Essa heurística foi apenas experimental. E ainda pode ser otimizada. Nao sou muito habilidoso quando se trata de achar esses tipos de erros. Por exemplo, se na rotina de geração de palíndromo eu verificasse se o palíndromo gerado e par já ganharia no desempenho mas nao resolveria os problemas que citou. Vou ver o que posso fazer para resolver esses bugs. Obrigado pela análise. Bruno Buss escreveu: Olá Aureliano, Muito bom seu esforço... mas eu acho que você deveria elaborar e rodar alguns testes unitários para o seu código. :-) Por exemplo, o seu código anterior (com as subs _par e _impar), imprimia "101" se o time() fosse "102". A resposta correta seria "131". A sua "heurística geradora de palindromos" andou para trás nesse caso... me parece um erro de design do algoritmo. Essa sua nova versão: * Imprime "13" se o time() for "13"... e 13 nem é palindromo! O resultado correto nesse caso é "101". Mas isso é só um erro no seu loop principal, que se for primo direto no começo ele nem verifica se é palindromo mas já imprime direto. * Imprime "1003001" se o time() for 96... o que me parece meio longe do resultado esperado, "101". Nesse caso, emho, o problema é a sua "heurística geradora de palindromos". Ou seja, a eficiência do algoritmo é muito importante... mas sua corretude deve vir antes. (A menos é claro que estejamos falando de algoritmos aproximativos ou heurísticas para problemas intratáveis :-) Nesse caso em específico, parece que essa sua função geradora de palindromos é de fato uma heurística para dar bumps na sequência e economizar verificações... mas como observado você corre o risco de pular algo que não deveria. Só como dúvida, essa sua heurística é fundamentada em algum resultado matemático de fato ou apenas experimental? [ ]'s Buss 2014-04-27 3:06 GMT-03:00 Aureliano Guedes : Esquece a ultima versão. Divisão é pesado para o processador. Fiz uma versão menor com menos divisões que parece ter uma melhor performance. http://pastebin.com/jrjEv3eh From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Sun, 27 Apr 2014 02:44:57 + Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Então tenho essa versão que executou em 1s. http://pastebin.com/DLdPwAkp From: bla...@gmail.com Date: Sat, 26 Apr 2014 18:39:15 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Vamos dar um desconto por causa do "primo". 2014-04-25 23:26 GMT-03:00 Junior Moraes : Hi. Se for válido usar módulos externos, dá pra implementar com o Math::Prime::XS para ficar mais performático. :-) []'s Em 25 de abril de 2014 23:21, Aureliano Guedes escreveu: Não fiz em poucas linhas, mas fis em poucos segundos: http://pastebin.com/DLdPwAkp Date: Tue, 22 Apr 2014 15:09:22 -0300 From: guedes_1...@hotmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Claro que esta. Mas nao consegui fazer o que o que o Bablos sugeriu em uma única linha. Vinícius Miasato escreveu: Opa, parabéns por aceitar o desafio e levá-lo até o fim! Não sei se o código funciona, mas o jogo de GOLF ainda está de pé? atenciosamente, Vinícius Miasato Em 22 de abril de 2014 13:13, Aureliano Guedes escreveu: http://ideone.com/LjvMRz 4:30 rodando no dinossauro (AMD Athlon 1.6GHz, 2GB Ram) Date: Thu, 17 Apr 2014 22:25:48 -0300 From: guedes_1...@hotmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Boa ideia. Vou tentar. Blabos de Blebe escreveu: Que tal o menor palíndromo primo maior que time()? 2014-04-17 22:02 GMT-03:00 Aureliano Guedes : Pode ficar menor. say '906609' Tiago Peczenyj escreveu: sub palindromo { 906609 } 2014-04-17 21:45 GMT-03:00 Aureliano Guedes : Ola monges, Nos últimos meses tenho visto nosso grupo um pouco parado. E como estamos em véspera de pascoa. Proponho uma brincadeira. Jogar golf com o Desafio do Maior Palíndromo. O desafio é simples, achar o maior número palíndromo (ou seja, quando lido de trás pra frente continua o mesmo) que seja resultado de uma multiplicação de dois números de 3 dígit
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
Buss, Obrigado por analisar o código. Realmente eu fiz apenas alguns teste mas nao o suficiente para perceber esses bugs que me falou. Essa heurística foi apenas experimental. E ainda pode ser otimizada. Nao sou muito habilidoso quando se trata de achar esses tipos de erros. Por exemplo, se na rotina de geração de palíndromo eu verificasse se o palíndromo gerado e par já ganharia no desempenho mas nao resolveria os problemas que citou. Vou ver o que posso fazer para resolver esses bugs. Obrigado pela análise. Bruno Buss escreveu: Olá Aureliano, Muito bom seu esforço... mas eu acho que você deveria elaborar e rodar alguns testes unitários para o seu código. :-) Por exemplo, o seu código anterior (com as subs _par e _impar), imprimia "101" se o time() fosse "102". A resposta correta seria "131". A sua "heurística geradora de palindromos" andou para trás nesse caso... me parece um erro de design do algoritmo. Essa sua nova versão: * Imprime "13" se o time() for "13"... e 13 nem é palindromo! O resultado correto nesse caso é "101". Mas isso é só um erro no seu loop principal, que se for primo direto no começo ele nem verifica se é palindromo mas já imprime direto. * Imprime "1003001" se o time() for 96... o que me parece meio longe do resultado esperado, "101". Nesse caso, emho, o problema é a sua "heurística geradora de palindromos". Ou seja, a eficiência do algoritmo é muito importante... mas sua corretude deve vir antes. (A menos é claro que estejamos falando de algoritmos aproximativos ou heurísticas para problemas intratáveis :-) Nesse caso em específico, parece que essa sua função geradora de palindromos é de fato uma heurística para dar bumps na sequência e economizar verificações... mas como observado você corre o risco de pular algo que não deveria. Só como dúvida, essa sua heurística é fundamentada em algum resultado matemático de fato ou apenas experimental? [ ]'s Buss 2014-04-27 3:06 GMT-03:00 Aureliano Guedes : > Esquece a ultima versão. > Divisão é pesado para o processador. > > Fiz uma versão menor com menos divisões que parece ter uma melhor > performance. > > http://pastebin.com/jrjEv3eh > > -- > From: guedes_1...@hotmail.com > To: rio-pm@pm.org > Date: Sun, 27 Apr 2014 02:44:57 + > > Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo > > Então tenho essa versão que executou em 1s. > > http://pastebin.com/DLdPwAkp > > -- > From: bla...@gmail.com > Date: Sat, 26 Apr 2014 18:39:15 -0300 > To: rio-pm@pm.org > Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo > > Vamos dar um desconto por causa do "primo". > > > 2014-04-25 23:26 GMT-03:00 Junior Moraes : > > Hi. > > Se for válido usar módulos externos, dá pra implementar com o > Math::Prime::XS para ficar mais performático. :-) > > []'s > > > Em 25 de abril de 2014 23:21, Aureliano Guedes > escreveu: > > Não fiz em poucas linhas, mas fis em poucos segundos: > http://pastebin.com/DLdPwAkp > > -- > Date: Tue, 22 Apr 2014 15:09:22 -0300 > > From: guedes_1...@hotmail.com > To: rio-pm@pm.org > Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo > > Claro que esta. Mas nao consegui fazer o que o que o Bablos sugeriu em uma > única linha. > > Vinícius Miasato escreveu: > > Opa, > > parabéns por aceitar o desafio e levá-lo até o fim! Não sei se o código > funciona, mas o jogo de GOLF ainda está de pé? > > atenciosamente, > Vinícius Miasato > > > Em 22 de abril de 2014 13:13, Aureliano Guedes > escreveu: > > http://ideone.com/LjvMRz > > 4:30 rodando no dinossauro (AMD Athlon 1.6GHz, 2GB Ram) > > ------ > Date: Thu, 17 Apr 2014 22:25:48 -0300 > From: guedes_1...@hotmail.com > To: rio-pm@pm.org > Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo > > > Boa ideia. Vou tentar. > > Blabos de Blebe escreveu: > > Que tal o menor palíndromo primo maior que time()? > > > 2014-04-17 22:02 GMT-03:00 Aureliano Guedes : > > Pode ficar menor. > say '906609' > > Tiago Peczenyj escreveu: > > sub palindromo { 906609 } > > > 2014-04-17 21:45 GMT-03:00 Aureliano Guedes : > > Ola monges, > > Nos últimos meses tenho visto nosso grupo um pouco parado. > E como estamos em véspera de pascoa. > Proponho uma brincadeira. > Jogar golf com o Desafio do Maior Palíndromo. > > O desafio é simples, achar o maior número palíndromo (ou seja, quando > lido de trás pra frente continua o mesmo) que seja resul
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
Esquece a ultima versão.Divisão é pesado para o processador. Fiz uma versão menor com menos divisões que parece ter uma melhor performance. http://pastebin.com/jrjEv3eh From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Sun, 27 Apr 2014 02:44:57 + Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Então tenho essa versão que executou em 1s. http://pastebin.com/DLdPwAkp From: bla...@gmail.com Date: Sat, 26 Apr 2014 18:39:15 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Vamos dar um desconto por causa do "primo". 2014-04-25 23:26 GMT-03:00 Junior Moraes : Hi. Se for válido usar módulos externos, dá pra implementar com o Math::Prime::XS para ficar mais performático. :-) []'s Em 25 de abril de 2014 23:21, Aureliano Guedes escreveu: Não fiz em poucas linhas, mas fis em poucos segundos: http://pastebin.com/DLdPwAkp Date: Tue, 22 Apr 2014 15:09:22 -0300 From: guedes_1...@hotmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Claro que esta. Mas nao consegui fazer o que o que o Bablos sugeriu em uma única linha. Vinícius Miasato escreveu: Opa, parabéns por aceitar o desafio e levá-lo até o fim! Não sei se o código funciona, mas o jogo de GOLF ainda está de pé? atenciosamente, Vinícius Miasato Em 22 de abril de 2014 13:13, Aureliano Guedes escreveu: http://ideone.com/LjvMRz 4:30 rodando no dinossauro (AMD Athlon 1.6GHz, 2GB Ram) Date: Thu, 17 Apr 2014 22:25:48 -0300 From: guedes_1...@hotmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Boa ideia. Vou tentar. Blabos de Blebe escreveu: Que tal o menor palíndromo primo maior que time()? 2014-04-17 22:02 GMT-03:00 Aureliano Guedes : Pode ficar menor. say '906609' Tiago Peczenyj escreveu: sub palindromo { 906609 } 2014-04-17 21:45 GMT-03:00 Aureliano Guedes : Ola monges, Nos últimos meses tenho visto nosso grupo um pouco parado. E como estamos em véspera de pascoa. Proponho uma brincadeira. Jogar golf com o Desafio do Maior Palíndromo. O desafio é simples, achar o maior número palíndromo (ou seja, quando lido de trás pra frente continua o mesmo) que seja resultado de uma multiplicação de dois números de 3 dígitos. O resultado deverá ser: 906609 Eis a minha tacada: for(my$i=100;$i<1000;$i++){for(100..999){$_[0]=$_*$i if(($_*$i==reverse($_*$i))&&($_*$i>=$_[0]))}}say$_[0] ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
Então tenho essa versão que executou em 1s. http://pastebin.com/DLdPwAkp From: bla...@gmail.com Date: Sat, 26 Apr 2014 18:39:15 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Vamos dar um desconto por causa do "primo". 2014-04-25 23:26 GMT-03:00 Junior Moraes : Hi. Se for válido usar módulos externos, dá pra implementar com o Math::Prime::XS para ficar mais performático. :-) []'s Em 25 de abril de 2014 23:21, Aureliano Guedes escreveu: Não fiz em poucas linhas, mas fis em poucos segundos: http://pastebin.com/DLdPwAkp Date: Tue, 22 Apr 2014 15:09:22 -0300 From: guedes_1...@hotmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Claro que esta. Mas nao consegui fazer o que o que o Bablos sugeriu em uma única linha. Vinícius Miasato escreveu: Opa, parabéns por aceitar o desafio e levá-lo até o fim! Não sei se o código funciona, mas o jogo de GOLF ainda está de pé? atenciosamente, Vinícius Miasato Em 22 de abril de 2014 13:13, Aureliano Guedes escreveu: http://ideone.com/LjvMRz 4:30 rodando no dinossauro (AMD Athlon 1.6GHz, 2GB Ram) Date: Thu, 17 Apr 2014 22:25:48 -0300 From: guedes_1...@hotmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Boa ideia. Vou tentar. Blabos de Blebe escreveu: Que tal o menor palíndromo primo maior que time()? 2014-04-17 22:02 GMT-03:00 Aureliano Guedes : Pode ficar menor. say '906609' Tiago Peczenyj escreveu: sub palindromo { 906609 } 2014-04-17 21:45 GMT-03:00 Aureliano Guedes : Ola monges, Nos últimos meses tenho visto nosso grupo um pouco parado. E como estamos em véspera de pascoa. Proponho uma brincadeira. Jogar golf com o Desafio do Maior Palíndromo. O desafio é simples, achar o maior número palíndromo (ou seja, quando lido de trás pra frente continua o mesmo) que seja resultado de uma multiplicação de dois números de 3 dígitos. O resultado deverá ser: 906609 Eis a minha tacada: for(my$i=100;$i<1000;$i++){for(100..999){$_[0]=$_*$i if(($_*$i==reverse($_*$i))&&($_*$i>=$_[0]))}}say$_[0] ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
Não fiz em poucas linhas, mas fis em poucos segundos: http://pastebin.com/DLdPwAkp Date: Tue, 22 Apr 2014 15:09:22 -0300 From: guedes_1...@hotmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Claro que esta. Mas nao consegui fazer o que o que o Bablos sugeriu em uma única linha. Vinícius Miasato escreveu: Opa, parabéns por aceitar o desafio e levá-lo até o fim! Não sei se o código funciona, mas o jogo de GOLF ainda está de pé? atenciosamente, Vinícius Miasato Em 22 de abril de 2014 13:13, Aureliano Guedes escreveu: http://ideone.com/LjvMRz 4:30 rodando no dinossauro (AMD Athlon 1.6GHz, 2GB Ram) Date: Thu, 17 Apr 2014 22:25:48 -0300 From: guedes_1...@hotmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Boa ideia. Vou tentar. Blabos de Blebe escreveu: Que tal o menor palíndromo primo maior que time()? 2014-04-17 22:02 GMT-03:00 Aureliano Guedes : Pode ficar menor. say '906609' Tiago Peczenyj escreveu: sub palindromo { 906609 } 2014-04-17 21:45 GMT-03:00 Aureliano Guedes : Ola monges, Nos últimos meses tenho visto nosso grupo um pouco parado. E como estamos em véspera de pascoa. Proponho uma brincadeira. Jogar golf com o Desafio do Maior Palíndromo. O desafio é simples, achar o maior número palíndromo (ou seja, quando lido de trás pra frente continua o mesmo) que seja resultado de uma multiplicação de dois números de 3 dígitos. O resultado deverá ser: 906609 Eis a minha tacada: for(my$i=100;$i<1000;$i++){for(100..999){$_[0]=$_*$i if(($_*$i==reverse($_*$i))&&($_*$i>=$_[0]))}}say$_[0] ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
Claro que esta. Mas nao consegui fazer o que o que o Bablos sugeriu em uma única linha. Vinícius Miasato escreveu: Opa, parabéns por aceitar o desafio e levá-lo até o fim! Não sei se o código funciona, mas o jogo de GOLF ainda está de pé? atenciosamente, Vinícius Miasato Em 22 de abril de 2014 13:13, Aureliano Guedes escreveu: > http://ideone.com/LjvMRz > > 4:30 rodando no dinossauro (AMD Athlon 1.6GHz, 2GB Ram) > > -- > Date: Thu, 17 Apr 2014 22:25:48 -0300 > From: guedes_1...@hotmail.com > To: rio-pm@pm.org > Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo > > > Boa ideia. Vou tentar. > > Blabos de Blebe escreveu: > > Que tal o menor palíndromo primo maior que time()? > > > 2014-04-17 22:02 GMT-03:00 Aureliano Guedes : > > Pode ficar menor. > say '906609' > > Tiago Peczenyj escreveu: > > sub palindromo { 906609 } > > > 2014-04-17 21:45 GMT-03:00 Aureliano Guedes : > > Ola monges, > > Nos últimos meses tenho visto nosso grupo um pouco parado. > E como estamos em véspera de pascoa. > Proponho uma brincadeira. > Jogar golf com o Desafio do Maior Palíndromo. > > O desafio é simples, achar o maior número palíndromo (ou seja, quando > lido de trás pra frente continua o mesmo) que seja resultado de uma > multiplicação de dois números de 3 dígitos. > > O resultado deverá ser: 906609 > > Eis a minha tacada: > > for(my$i=100;$i<1000;$i++){for(100..999){$_[0]=$_*$i > if(($_*$i==reverse($_*$i))&&($_*$i>=$_[0]))}}say$_[0] > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > -- > Tiago B. Peczenyj > Linux User #405772 > > http://about.me/peczenyj > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > > ___ Rio-pm mailing list > Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list > Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
http://ideone.com/LjvMRz 4:30 rodando no dinossauro (AMD Athlon 1.6GHz, 2GB Ram) Date: Thu, 17 Apr 2014 22:25:48 -0300 From: guedes_1...@hotmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo Boa ideia. Vou tentar. Blabos de Blebe escreveu: Que tal o menor palíndromo primo maior que time()? 2014-04-17 22:02 GMT-03:00 Aureliano Guedes : Pode ficar menor. say '906609' Tiago Peczenyj escreveu: sub palindromo { 906609 } 2014-04-17 21:45 GMT-03:00 Aureliano Guedes : Ola monges, Nos últimos meses tenho visto nosso grupo um pouco parado. E como estamos em véspera de pascoa. Proponho uma brincadeira. Jogar golf com o Desafio do Maior Palíndromo. O desafio é simples, achar o maior número palíndromo (ou seja, quando lido de trás pra frente continua o mesmo) que seja resultado de uma multiplicação de dois números de 3 dígitos. O resultado deverá ser: 906609 Eis a minha tacada: for(my$i=100;$i<1000;$i++){for(100..999){$_[0]=$_*$i if(($_*$i==reverse($_*$i))&&($_*$i>=$_[0]))}}say$_[0] ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
Boa ideia. Vou tentar. Blabos de Blebe escreveu: Que tal o menor palíndromo primo maior que time()? 2014-04-17 22:02 GMT-03:00 Aureliano Guedes : > Pode ficar menor. > say '906609' > > Tiago Peczenyj escreveu: > > sub palindromo { 906609 } > > > 2014-04-17 21:45 GMT-03:00 Aureliano Guedes : > > Ola monges, > > Nos últimos meses tenho visto nosso grupo um pouco parado. > E como estamos em véspera de pascoa. > Proponho uma brincadeira. > Jogar golf com o Desafio do Maior Palíndromo. > > O desafio é simples, achar o maior número palíndromo (ou seja, quando > lido de trás pra frente continua o mesmo) que seja resultado de uma > multiplicação de dois números de 3 dígitos. > > O resultado deverá ser: 906609 > > Eis a minha tacada: > > for(my$i=100;$i<1000;$i++){for(100..999){$_[0]=$_*$i > if(($_*$i==reverse($_*$i))&&($_*$i>=$_[0]))}}say$_[0] > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > -- > Tiago B. Peczenyj > Linux User #405772 > > http://about.me/peczenyj > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
Pode ficar menor. say '906609' Tiago Peczenyj escreveu: sub palindromo { 906609 } 2014-04-17 21:45 GMT-03:00 Aureliano Guedes : > Ola monges, > > Nos últimos meses tenho visto nosso grupo um pouco parado. > E como estamos em véspera de pascoa. > Proponho uma brincadeira. > Jogar golf com o Desafio do Maior Palíndromo. > > O desafio é simples, achar o maior número palíndromo (ou seja, quando lido > de trás pra frente continua o mesmo) que seja resultado de uma > multiplicação de dois números de 3 dígitos. > > O resultado deverá ser: 906609 > > Eis a minha tacada: > > for(my$i=100;$i<1000;$i++){for(100..999){$_[0]=$_*$i > if(($_*$i==reverse($_*$i))&&($_*$i>=$_[0]))}}say$_[0] > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] [GOLF] Descanso de Pascoa: Maior palindromo
Ola monges, Nos últimos meses tenho visto nosso grupo um pouco parado.E como estamos em véspera de pascoa.Proponho uma brincadeira.Jogar golf com o Desafio do Maior Palíndromo. O desafio é simples, achar o maior número palíndromo (ou seja, quando lido de trás pra frente continua o mesmo) que seja resultado de uma multiplicação de dois números de 3 dígitos. O resultado deverá ser: 906609 Eis a minha tacada: for(my$i=100;$i<1000;$i++){for(100..999){$_[0]=$_*$i if(($_*$i==reverse($_*$i))&&($_*$i>=$_[0]))}}say$_[0] ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Array muito longo
Tentei. Mas o pc que tava usando era um AMD Athon 1.6GHz 2gb RAM de 2007 forcadamente estrupado por um Windows 8.1 (Deus sabe porque fizeram isso). Depois tentei nesse servidor http://www.compileonline.com/execute_perl_online.php Tiago Peczenyj escreveu: vc testou ao menos: https://gist.github.com/peczenyj/10749501 aqui rodou de boa e consumiu quase nada 2014-04-15 14:03 GMT-03:00 Aureliano Guedes : > Entendi. Obrigado. > > Tiago Peczenyj escreveu: > > Sim, mas ai você passa o Devel::NYTProf e estuda os gargalos, reduzido o > IO ao máximo SE vc precisar. > Em 15/04/2014 13:59, "Aureliano Guedes" > escreveu: > > Então. Eu queria evitar IO para nao perder em performance. > Se eu usar um banco de dados ou cache nao sera um tipo de IO? > > Tiago Peczenyj escreveu: > > RAM não necessariamente é RAM física. Conta SWAP e isso degrada > performance pq é IO em disco. > Em 15/04/2014 13:46, "Stanislaw Pusep" escreveu: > > Memória RAM é o limite. > Vc pode usar o DBM::Deep, aí o seu storage será o limite. Mas cuidado: > https://metacpan.org/pod/distribution/DBM-Deep/lib/DBM/Deep.pod#Large-Arrays > > > 2014-04-15 18:33 GMT+02:00 Aureliano Guedes : > > Ola, monges. > > Gostaria de saber quais opções eu tenho para gravar um numero muito > grande de informações em um array. > > Exemplo, imagine que eu tenha uma rotina tosca como essa: > > sub multiplicador{ > my @ini = (100..999); > my $fim = 999; > my @memo > while ($fim != 100){ > foreach (@ini){ > my $m = $_ * $fim; > push (@memo, $m); > } > $fim--; > } > } > > Essa rotina multiplica 100 * 100 ... 100 * 999, depois 101 * 100 ... 101 > * 999 ate 999*999. > Os resultados de cada multiplicação são jogados para um array. Ou seja, um > array grande pra caramba. > > Como faria para que @memo fosse capaz de guardar todos os valores? > > Qual é o limite de dados que posso normalmente guardar em um array? > > Obrigado, > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Array muito longo
Entendi. Obrigado. Tiago Peczenyj escreveu: Sim, mas ai você passa o Devel::NYTProf e estuda os gargalos, reduzido o IO ao máximo SE vc precisar. Em 15/04/2014 13:59, "Aureliano Guedes" escreveu: > Então. Eu queria evitar IO para nao perder em performance. > Se eu usar um banco de dados ou cache nao sera um tipo de IO? > > Tiago Peczenyj escreveu: > > RAM não necessariamente é RAM física. Conta SWAP e isso degrada > performance pq é IO em disco. > Em 15/04/2014 13:46, "Stanislaw Pusep" escreveu: > > Memória RAM é o limite. > Vc pode usar o DBM::Deep, aí o seu storage será o limite. Mas cuidado: > https://metacpan.org/pod/distribution/DBM-Deep/lib/DBM/Deep.pod#Large-Arrays > > > 2014-04-15 18:33 GMT+02:00 Aureliano Guedes : > > Ola, monges. > > Gostaria de saber quais opções eu tenho para gravar um numero muito > grande de informações em um array. > > Exemplo, imagine que eu tenha uma rotina tosca como essa: > > sub multiplicador{ > my @ini = (100..999); > my $fim = 999; > my @memo > while ($fim != 100){ > foreach (@ini){ > my $m = $_ * $fim; > push (@memo, $m); > } > $fim--; > } > } > > Essa rotina multiplica 100 * 100 ... 100 * 999, depois 101 * 100 ... 101 > * 999 ate 999*999. > Os resultados de cada multiplicação são jogados para um array. Ou seja, um > array grande pra caramba. > > Como faria para que @memo fosse capaz de guardar todos os valores? > > Qual é o limite de dados que posso normalmente guardar em um array? > > Obrigado, > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Array muito longo
Então. Eu queria evitar IO para nao perder em performance. Se eu usar um banco de dados ou cache nao sera um tipo de IO? Tiago Peczenyj escreveu: RAM não necessariamente é RAM física. Conta SWAP e isso degrada performance pq é IO em disco. Em 15/04/2014 13:46, "Stanislaw Pusep" escreveu: > Memória RAM é o limite. > Vc pode usar o DBM::Deep, aí o seu storage será o limite. Mas cuidado: > https://metacpan.org/pod/distribution/DBM-Deep/lib/DBM/Deep.pod#Large-Arrays > > > 2014-04-15 18:33 GMT+02:00 Aureliano Guedes : > >> Ola, monges. >> >> Gostaria de saber quais opções eu tenho para gravar um numero muito >> grande de informações em um array. >> >> Exemplo, imagine que eu tenha uma rotina tosca como essa: >> >> sub multiplicador{ >> my @ini = (100..999); >> my $fim = 999; >> my @memo >> while ($fim != 100){ >> foreach (@ini){ >> my $m = $_ * $fim; >> push (@memo, $m); >> } >> $fim--; >> } >> } >> >> Essa rotina multiplica 100 * 100 ... 100 * 999, depois 101 * 100 ... 101 >> * 999 ate 999*999. >> Os resultados de cada multiplicação são jogados para um array. Ou seja, >> um array grande pra caramba. >> >> Como faria para que @memo fosse capaz de guardar todos os valores? >> >> Qual é o limite de dados que posso normalmente guardar em um array? >> >> Obrigado, >> >> ___ >> Rio-pm mailing list >> Rio-pm@pm.org >> http://mail.pm.org/mailman/listinfo/rio-pm >> > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] [DUVIDA] Array muito longo
Ola, monges. Gostaria de saber quais opções eu tenho para gravar um numero muito grande de informações em um array. Exemplo, imagine que eu tenha uma rotina tosca como essa: sub multiplicador{ my @ini = (100..999);my $fim = 999;my @memo while ($fim != 100){foreach (@ini){my $m = $_ * $fim; push (@memo, $m);}$fim--;}} Essa rotina multiplica 100 * 100 ... 100 * 999, depois 101 * 100 ... 101 * 999 ate 999*999.Os resultados de cada multiplicação são jogados para um array. Ou seja, um array grande pra caramba. Como faria para que @memo fosse capaz de guardar todos os valores? Qual é o limite de dados que posso normalmente guardar em um array? Obrigado, ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] alguma diferença
So consegui corrigir o erro fazendo isso: use base 'Class::Accessor'; Class::Accessor->mk_accessors (qw(altura largura)); From: tiago.pecze...@gmail.com Date: Sat, 12 Apr 2014 14:25:14 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] alguma diferença veja este exemplo: my $mp = Foo->new({ name => "Marty", role => "JAPH" }); vc esqueceu os { } -- que são exigidos pelo Class::Accessor 2014-04-12 14:09 GMT-03:00 Aureliano Guedes : Estou tentando testar esse módulo.Devo estar cometendo algum erro que eu não esteja vendo retangulo.pm teste.pl Erro:Can't use string ("altura") as a HASH ref while "strict refs" in use at C:/Perl6 4/lib/Class/Accessor.pm line 13. From: renato.c...@gmail.com Date: Fri, 11 Apr 2014 17:10:18 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] alguma diferença http://blogs.perl.org/users/michael_g_schwern/2011/03/and-the-fastest-oo-accessor-is.html 2014-04-11 17:00 GMT-03:00 Aureliano Guedes : De fato, percebi isso. Mas então o Class::Accessor não traz nada de novo?Como já uso o Moose não vi vantagem nenhuma no Class::Accessor. From: tiago.pecze...@gmail.com Date: Fri, 11 Apr 2014 16:37:59 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] alguma diferença Moose tem muito mais features (lazy, delegators, roles) e plugins ( procure por MooseX:: ) do que o Class::Accessor, fora os hooks after / before / around. Moo é um subset do Moose que também tem muito mais features que o Class::Accessor. 2014-04-11 16:33 GMT-03:00 Aureliano Guedes : Monges, riam o quanto quiserem mas conheci hoje o Class::Accessor.Minha dúvida é: "Qual a diferença dele e do Moose?" Ao primeiro ver me parece a mesma coisa. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRONhttp://www.renatocron.com/blog/ @renato_cron ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] alguma diferença
Estou tentando testar esse módulo.Devo estar cometendo algum erro que eu não esteja vendo retangulo.pmteste.pl Erro:Can't use string ("altura") as a HASH ref while "strict refs" in use at C:/Perl64/lib/Class/Accessor.pm line 13. From: renato.c...@gmail.com Date: Fri, 11 Apr 2014 17:10:18 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] alguma diferença http://blogs.perl.org/users/michael_g_schwern/2011/03/and-the-fastest-oo-accessor-is.html 2014-04-11 17:00 GMT-03:00 Aureliano Guedes : De fato, percebi isso. Mas então o Class::Accessor não traz nada de novo?Como já uso o Moose não vi vantagem nenhuma no Class::Accessor. From: tiago.pecze...@gmail.com Date: Fri, 11 Apr 2014 16:37:59 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] alguma diferença Moose tem muito mais features (lazy, delegators, roles) e plugins ( procure por MooseX:: ) do que o Class::Accessor, fora os hooks after / before / around. Moo é um subset do Moose que também tem muito mais features que o Class::Accessor. 2014-04-11 16:33 GMT-03:00 Aureliano Guedes : Monges, riam o quanto quiserem mas conheci hoje o Class::Accessor.Minha dúvida é: "Qual a diferença dele e do Moose?" Ao primeiro ver me parece a mesma coisa. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRONhttp://www.renatocron.com/blog/ @renato_cron ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] alguma diferença
Estou tentando testar esse módulo.Devo estar cometendo algum erro que eu não esteja vendo From: renato.c...@gmail.com Date: Fri, 11 Apr 2014 17:10:18 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] alguma diferença http://blogs.perl.org/users/michael_g_schwern/2011/03/and-the-fastest-oo-accessor-is.html 2014-04-11 17:00 GMT-03:00 Aureliano Guedes : De fato, percebi isso. Mas então o Class::Accessor não traz nada de novo?Como já uso o Moose não vi vantagem nenhuma no Class::Accessor. From: tiago.pecze...@gmail.com Date: Fri, 11 Apr 2014 16:37:59 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] alguma diferença Moose tem muito mais features (lazy, delegators, roles) e plugins ( procure por MooseX:: ) do que o Class::Accessor, fora os hooks after / before / around. Moo é um subset do Moose que também tem muito mais features que o Class::Accessor. 2014-04-11 16:33 GMT-03:00 Aureliano Guedes : Monges, riam o quanto quiserem mas conheci hoje o Class::Accessor.Minha dúvida é: "Qual a diferença dele e do Moose?" Ao primeiro ver me parece a mesma coisa. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRONhttp://www.renatocron.com/blog/ @renato_cron ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] alguma diferença
De fato, percebi isso. Mas então o Class::Accessor não traz nada de novo?Como já uso o Moose não vi vantagem nenhuma no Class::Accessor. From: tiago.pecze...@gmail.com Date: Fri, 11 Apr 2014 16:37:59 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] alguma diferença Moose tem muito mais features (lazy, delegators, roles) e plugins ( procure por MooseX:: ) do que o Class::Accessor, fora os hooks after / before / around. Moo é um subset do Moose que também tem muito mais features que o Class::Accessor. 2014-04-11 16:33 GMT-03:00 Aureliano Guedes : Monges, riam o quanto quiserem mas conheci hoje o Class::Accessor.Minha dúvida é: "Qual a diferença dele e do Moose?" Ao primeiro ver me parece a mesma coisa. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] alguma diferença
Monges, riam o quanto quiserem mas conheci hoje o Class::Accessor.Minha dúvida é: "Qual a diferença dele e do Moose?" Ao primeiro ver me parece a mesma coisa. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] CPAN x Pacotes Ou CPAN + Pacotes
Nunca aconselhei atualizar o Perl do sistema, e para garantir minha integridade, continuo não aconselhando, mas... Minhas aplicações não exigem uma 'versão específica' do Perl para serem executadas, então uma vez por teste, peguei um pc parado aqui e desci um Debian nele, depois atualizei o Perl (do sistema), e 'PA' nada aconteceu (digo nada de ruim).Não sei quanto a módulos usados pelo sistema, posso fazer esse teste depois. Mas não deu problema nenhum. From: bruno.b...@gmail.com Date: Fri, 4 Apr 2014 16:35:39 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] CPAN x Pacotes Ou CPAN + Pacotes Você poderia manter um setup do local::lib/perlbrew que fosse compartilhado pelos usuários do seu servidor... não e' porque estamos usado algum desses, que precisa ser per-user a instalação de cada um :-) Talvez seja necessário configurar algumas variáveis de ambiente pros usuários, mas isso não me parece ser um problema muito difícil, certo? ;) [ ]'s Buss 2014-04-04 16:14 GMT-03:00 Samir Cury : Interessante. Agora, se olharmos de um ponto de vista "mais sysadmin" -- voce *quer* que os modulos estejam disponiveis system-wide (todos usuarios/ambientes) e nao se importa tanto com as versoes especificas dos modulos -- porque a principio a maioria das aplicacoes serao compativeis com uma faixa grande de versoes de cada modulo. (acredito que da menos trabalho pensar assim e consertar individualmente o que quebrar, do que fazer um bootstrap pra cada aplicacao pra ter certeza que "funcionou, nao respira") Seria o CPAN puro como root ainda sim a melhor opcao neste caso? Valeu pela dica dos modulos dos pacotes sobre-escritos. Realmente e para se considerar. No entanto, nao vejo tanto mal de ter o mesmo modulo presente, outra versao. Concordo que e tosco ter "rpm -qa | grep Modulo" dizendo uma coisa e quando voce carrega o modulo ser outra. Quando o RPM for desisntalado deve remover o arquivo, dai o CPAN provavelmente vai se perder. Mas enquanto nao remover nada deve ser ~tranquilo. O que estou tentando entender e - qual a melhor maneira de configurar um sistema padrao com ferramentas padrao (cpan, rpm, apt). Pelo visto o preco de eventuais gambiarras como a que descrevi nao causaria mais problemas do que o tempo gasto debugando o teste que nao passou no CPAN. Indesejavel, mas nao fatal. Pelo que entendi no melhor dos mundos -- da instalacao padrao, voce escolhe entre 2 caminhos : * usa CPAN como root - se um teste quebrar, vai perder um tempo * usa RPMs para tudo - se nao existir um pacote para o modulo, vai ter que comecar a "sujar" o sistema com modulos instalados pelo CPAN E tenta nao misturar. Abs 2014-04-04 11:48 GMT-07:00 Blabos de Blebe : Olá, Normalmente eu evito mexer no Perl do sistema. O fedora, inclusive, é historicamente bastante hostil ao lidar com o Perl, diga-se de passagem. Nos meus projetos, eu procedo da seguinte forma: 1) Instalar perlbrew*2) Instalar a versão do Perl que eu vou usar**3) Instalar o cpanm (App::cpanminus)4) se máquina de desenvolvimento então instalar Carton e Dist::Zillaend-se Daí, para os meus módulos ou aplicações, faço o gerenciamento de pacotes com Carton, que me deixa travar a versão exata*** de cada módulo. Para os módulos não é necessário, mas para as aplicações, o carton permite que você empacote todas as dependências em um diretório vendor/, que você pode fazer um tar e subir para aquele servidor de produção que não sai pra internet, e então instalar normalmente, de forma que mesmo pacotes com XS funcionem. O carton se empacotes junto, inclusive, para o caso da máquina destino não ter carton instalado. Assim eu tenho o controle exato de cada versão de cada pacote. O CPAN é fantástico, sempre foi, mas eu diria que dá pra dividi-lo em duas eras: antes e depois do Carton. * Curiosamente hoje, a instalação do Perlbrew falhou num debian 6 que eu to configurando e eu precisei instalar o pacote Devel::PatchPerl diretamente no sistema com o cpan tradicional (root). ** O drawback é que eu preciso de acesso ao compilador. *** Sim, raramente acontece, mas eu já precisei achar uma combinação X de versões pra funcionar redondo, mas nada além de editar o cpanfile e rodar carton install denovo. []'s 2014-04-04 15:24 GMT-03:00 Samir Cury : E ai pessoal, Acabei de passar por um pequeno problema com o CPAN e achei uma solucao interessante. Tambem gostaria de perguntar ao pessoal que e mais fa do CPAN, o que acham de modulos que sao distribuidos como pacotes. Se e bom/ruim para o ecossistema. Entao, o problema foi quando tentei cpan install CouchDB::Client. Que funcionou em outras maquinas mas nao no Fedora 19 que tenho aqui. Quebrou em algum modulo referente a testes, que dependia do Module::Build que tambem falhou. Nao querendo gastar muito tempo com isso, fui para o plano B : Pacotes de modulos. O motivo dos pacotes serem meu plano B e que cada distribuicao gos
[Rio-pm] [Curiosidade] Perl no smartphone
Ola monges, So uma curiosidade. Alguem conhece ou ja viu algum metodo, projeto ou mesmo algum grupo que tenha apenas a vontade de rodar perl em smartphone, seja android windows phone ou iOS? T+ ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Configuração de usuário não root no cpan & Perl Roll em Rocks Cluster
Caraca. Complexo. O melhor, foi ver a pela primeira vez uma mulher na bioinformatica. Hello colega bioinformata. Stanislaw Pusep escreveu: Olá Nicole! Já passei por situação semelhante à sua, quando não podia atualizar o Perl default do sistema e a opção foi instalar um Perl mais atualizado avulso no /usr/local. Para sempre usar o Perl do /usr/local, 3 medidas foram tomadas: 1. export PATH=/usr/local/bin:$PATH 2. Os shebangs de todos os scripts executáveis do projeto foram modificados de: #!/usr/bin/perl para: #!/usr/bin/env perl 3. local::lib foi utilizado para CPAN "desovar" no $HOME. O local::lib requer uma intervenção do .profile do sistema, para inicializar o environment apropriadamente. Seguem os passos para instalar o local::lib dessa forma. 3.1. Download do local::lib: $ wget http://cpan.metacpan.org/authors/id/H/HA/HAARG/local-lib-2.04.tar.gz $ tar xzvf local-lib-2.04.tar.gz $ cd local-lib-2.04/ 3.2. Instalação do local::lib: $ perl Makefile.PL --bootstrap=$HOME/perl5 $ make $ make test $ make install 3.3. Ativando local::lib na inicialização da shell (Bash): $ cat << PROFILE >> $HOME/.profile eval \$(perl -I\$HOME/perl5/lib/perl5/ -Mlocal::lib) PROFILE $ A idéia aqui é que rodar "perl -I$HOME/perl5/lib/perl5/ -Mlocal::lib" retorna para STDOUT as tais das variáveis de ambiente que fazem o Perl buscar instalação dos módulos em um lugar específico ($HOME). Pode simplesmente colar essas variáveis direto no .profile, ou (como demonstrado acima) rodar eval do output do Perl. 3.4. Carregar a configuração: . $HOME/.profile 3.5. Prosseguindo com a configuração/teste do CPAN e do cpanm (essa configuração faz as dependências serem instaladas automaticamente): $ cpan cpan[1]> o conf prerequisites_policy follow cpan[2]> o conf commit cpan[3]> install App::cpanminus cpan[4]> quit Boa sorte! 2014-01-29 Nicole Scherer > Boa tarde, queridos Mongers, > > eu não queria importuná-los com problemas simples, mas após três dias > batendo a cabeça e vasculhando fóruns na internet sem solução para algumas > das perguntas, recorro a vocês. Vou tentar explicar a novela. > > Montamos um cluster HPC para pesquisa usando o Rocks 6.1 ( > http://www.rocksclusters.org/) -- um tipo de linux que instala outro > linux em todos os nós do cluster e gerencia tudo isso. Novidade pra mim, > mas funciona. Esse Rocks instala os chamados Rolls, entre eles o próprio SO > (neste caso o RHEL6) e outros Rolls úteis, como SGE, Ganglia, Web-Server, > Bio, Perl (4.14.2) entre outros. Estes Rolls são instalados em /opt/ e as > vezes coexistem com os binários do SO. Desta forma, tenho duas versões de > Perl: > > - a do sistema (RHEL6): > $ /usr/bin/perl -v > This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi > > - e a do Rocks: > $ /opt/perl/bin/perl -v > This is perl 5, version 14, subversion 2 (v5.14.2) built for > x86_64-linux-thread-multi > > Cada qual com as suas bibliotecas. > > @INC: > /usr/local/lib64/perl5 > /usr/local/share/perl5 > /usr/lib64/perl5/vendor_perl > /usr/share/perl5/vendor_perl > /usr/lib64/perl5 > /usr/share/perl5 > . > @INC: > /opt/perl/lib/site_perl/5.14.2/x86_64-linux-thread-multi > /opt/perl/lib/site_perl/5.14.2 > /opt/perl/lib/5.14.2/x86_64-linux-thread-multi > /opt/perl/lib/5.14.2 > . > > > Agora é que começam meus problemas... > > Primeiro: Alguém já teve experiência com duas instalações coexistentes de > Perl? Posso ter problemas de funcionamento no SO se eu mover o > /usr/bin/perl e criar um link do /opt/perl/bin/perl para /usr/bin/perl > (uma vez que as shebang dos scripts costuma ter este endereço). Colocar > simplesmente /opt/perl/bin no início do $PATH pode não ser a solução. > > > O CPAN só está instalado na versão do Rocks, o que me motiva mais a > deixá-lo como default. > Como a maioria dos usuários não terão privilégios de root e além disso, > qualquer instalação no sistema operacional tem que ser espelhada para todos > os nós, a melhor opção para instalar pacotes é na home dos usuários, > concordam? Então eu quero deixar tudo o mais fácil possível para que os > usuários instalem os pacotes desejados. Como não teremos acesso direto à > internet usei o minicpan para criar um mirror em uma pasta compartilhada > com minha máquina local. Configurei o urllist do cpan pra ela e ficou tudo > ok. > Agora esbarrei em um problema que não estou achando resposta fácil. > > Quando executo o cpan pela primeira vez como usuário comum, da forma mais > automática possível, ele cria, como esperado o arquivo MyConfig.pm e toda a > estrutura de diretórios no home do usuário. Ele executa quase tudo com > perfeição, substituindo o endereço default pelo do usuário em QUASE todos > os itens, menos em prefs_dir. > > [hpcst06@crab ~]$ grep cpan .cpan/CPAN/MyConfig.pm > 'build_dir' => q[/home/hpcst06/.cpan/build], > 'cpan_home' => q[/home/hpcst06/.cpan], > 'histfile' => q[/home/hpcst06/.cpan/histfile], > 'keep_source_where' =
Re: [Rio-pm] Perl e Facebook
Vei... to sem palavras. Bruno Buss escreveu: Sim, inclusive tem pelo menos um vídeo do grupo Facebook Engineering[1] onde eles falam sobre os deploys deles e coisa do tipo e a parada é bem mindfuck para quem não está acostumado com a escala desse tipo ;P [1] https://www.facebook.com/Engineering PS: Vale a pena ler/ver a maioria dos textos/vídeos deste grupo ;) On Fri, Jan 10, 2014 at 3:55 PM, Blabos de Blebe wrote: > Hly Shit > > > On Fri, Jan 10, 2014 at 3:33 PM, Tiago Peczenyj > wrote: > >> >> http://arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/ >> >> "Because Facebook's entire code base is compiled down to a single binary >> executable, the company's deployment process is quite different from what >> you'd normally expect in a PHP environment. Rossi told me that the binary, >> which represents the entire Facebook application, is approximately 1.5GB in >> size. When Facebook updates its code and generates a new build, the new >> binary has to be pushed to all of the company's servers. >> >> Moving a 1.5GB binary blob to countless servers is a non-trivial >> technical challenge. After exploring several solutions, Facebook came up >> with the idea of using BitTorrent, the popular peer-to-peer filesharing >> protocol. BitTorrent is very good at propagating large files over a large >> number of different servers." >> >> >> 2014/1/10 Blabos de Blebe >> >>> > e o facebook todo é um binario com mais de 1 GB >>> > >>> > o deploy é via bit-torrent. >>> >>> Você, claro, tá tirando um sarro, né!? >>> >>> >>> 2014/1/10 Tiago Peczenyj >>> >>>> basicamente eles convertem PHP em C++ usando o HipHop >>>> >>>> e o facebook todo é um binario com mais de 1 GB >>>> >>>> o deploy é via bit-torrent. >>>> >>>> >>>> 2014/1/10 Aureliano Guedes >>>> >>>>> Posso ta errado, mas acredito que aquele chat do face usa Perl. >>>>> >>>>> Mas que trem e esse de hiphop "sei la o que" e esse de PHP com >>>>> performance de C++? >>>>> >>>>> >>>>> Renato Santos escreveu: >>>>> >>>>> Isso é só um mirror, geralmente de "contribuição" por utilizar Perl >>>>> em alguns pedaços (e no começo era um Perl script cgi) aí como pra eles um >>>>> servidor não é nada, eles fazem o mirror. Assim como globo . com, etc >>>>> On Jan 10, 2014 9:26 AM, "Andre Luis" wrote: >>>>> >>>>> Bom dia lista, >>>>> >>>>> >>>>> Hoje configurando o CPAN na minha maquina notei uma coisa curiosa >>>>> >>>>> >>>>> (32) http://cpan.mirror.facebook.net/ >>>>> >>>>> >>>>> Alguém sabe se o facebook está trabalhando com perl? Eu achava que o >>>>> facebook usava PHP >>>>> >>>>> >>>>> Abs >>>>> >>>>> >>>>> ___ >>>>> Rio-pm mailing list >>>>> Rio-pm@pm.org >>>>> http://mail.pm.org/mailman/listinfo/rio-pm >>>>> >>>>> >>>>> ___ >>>>> Rio-pm mailing list >>>>> Rio-pm@pm.org >>>>> http://mail.pm.org/mailman/listinfo/rio-pm >>>>> >>>> >>>> >>>> >>>> -- >>>> Tiago B. Peczenyj >>>> Linux User #405772 >>>> >>>> http://about.me/peczenyj >>>> >>>> ___ >>>> Rio-pm mailing list >>>> Rio-pm@pm.org >>>> http://mail.pm.org/mailman/listinfo/rio-pm >>>> >>> >>> >>> ___ >>> Rio-pm mailing list >>> Rio-pm@pm.org >>> http://mail.pm.org/mailman/listinfo/rio-pm >>> >> >> >> >> -- >> Tiago B. Peczenyj >> Linux User #405772 >> >> http://about.me/peczenyj >> >> ___ >> Rio-pm mailing list >> Rio-pm@pm.org >> http://mail.pm.org/mailman/listinfo/rio-pm >> > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > -- Bruno C. Buss http://www.brunobuss.net ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Perl e Facebook
Posso ta errado, mas acredito que aquele chat do face usa Perl. Mas que trem e esse de hiphop "sei la o que" e esse de PHP com performance de C++? Renato Santos escreveu: Isso é só um mirror, geralmente de "contribuição" por utilizar Perl em alguns pedaços (e no começo era um Perl script cgi) aí como pra eles um servidor não é nada, eles fazem o mirror. Assim como globo . com, etc On Jan 10, 2014 9:26 AM, "Andre Luis" wrote: > Bom dia lista, > > > Hoje configurando o CPAN na minha maquina notei uma coisa curiosa > > > (32) http://cpan.mirror.facebook.net/ > > > Alguém sabe se o facebook está trabalhando com perl? Eu achava que o > facebook usava PHP > > > Abs > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA-DISCUSSÃO] Perl6: o que há de novo?
Serio mesmo??Perl6 vai virar Java??Pelo menos esse formato de declarar classes é identico. From: leprevos...@gmail.com To: rio-pm@pm.org Date: Mon, 2 Dec 2013 13:47:02 -0200 Subject: Re: [Rio-pm] [DUVIDA-DISCUSSÃO] Perl6: o que há de novo? Você pode acompanhar o Advent Calendar do Perl 6 para ver as novidades, aproveita que começou ontem com um post sobre o estado da linguagem. http://perl6advent.wordpress.com/ On Mon, Dec 2, 2013, at 12:44 PM, Aureliano Guedes wrote: Após 10 anos da proposta, se não me engano, o que há de novo quanto ao seu lançamento??É uma versão desenvolvida pela comunidade, certo? Então será que não falta pulso firme e/ou uma empresa que invista nisso? Será que vai ficar só na ideia, e se tornar um mito da programação ou virá ser real? O que sabem sobre? Valeu! ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Felipe da Veiga Leprevost www.leprevost.com.br Laboratory for Proteomics and Protein Engineering. Fiocruz, Brazil. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] [DUVIDA-DISCUSSÃO] Perl6: o que há de novo?
Após 10 anos da proposta, se não me engano, o que há de novo quanto ao seu lançamento??É uma versão desenvolvida pela comunidade, certo? Então será que não falta pulso firme e/ou uma empresa que invista nisso?Será que vai ficar só na ideia, e se tornar um mito da programação ou virá ser real?O que sabem sobre? Valeu!___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] RPerl - Austin.pm
200 vezes mais rapido que Puro Perl???Parece ilusão Date: Wed, 27 Nov 2013 05:39:02 -0200 From: j...@joaocoutinho.com.br To: rio-pm@pm.org Subject: [Rio-pm] RPerl - Austin.pm Repassando, da fan page do FB. [ ]'s, João -- Forwarded message -- From: "Will Braswell" Date: Nov 26, 2013 9:50 PM Subject: [Rio de Janeiro Perl Mongers] Hello Perl friends, I'm the President of... To: "Rio de Janeiro Perl Mongers" <20431022...@groups.facebook.com> Will Braswell a publié dans Rio de Janeiro Perl Mongers Will Braswell 26 novembre 21:50 Hello Perl friends, I'm the President of http://Austin.pm/, we're working to finish RPerl v1.0, will you please consider making a pledge to support the project? Thanks so much! Perl 5 Optimizing Compiler, RPerl v1.0 RPerl can help your low-magic Perl 5 code run up to 200 times faster than pure Perl, with full backw... Voir la publication sur Facebook · Modifier les paramètres de courrier électronique · Vous pouvez répondre à ce message pour commenter. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [HELP] Controlando comandos do sistema
André Luiz, vou fazer da sua forma, obrigado.Agora fiquei sem entender porque $SIG{qw (INT TERM HUP)}... Renato, tentei fazer assim:my $c = 0; $SIG{INT} = sub { $c <= 2 ? $c++ : die }; while (1) {print "TESTE\n";sleep 1;} Deu certo, mas deu errado, por algum motivo tenho que apertar ctrl + c umas 4 vezes ou mais para dar certo From: renato.c...@gmail.com Date: Mon, 25 Nov 2013 16:22:07 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [HELP] Controlando comandos do sistema SIGINT2 TermInterrupt from keyboard Esse é o CTRL+C, $SIG{INT} = 'IGNORE'; não consegui fazer assim: my $c = 0; $SIG{INT} = sub { return 'IGNORE' if $c++ < 3 }; não sei porque, alguem sabe? 2013/11/25 Andre Luis nesse caso só iria ignorar ele nao irira tratar ... pelo que eu entendi ele quer tratar $SIG{KILL} = sub { do_something() }; Em 25 de novembro de 2013 16:06, Renato Santos escreveu: você tem que ignorar o sinal de KILL do sistema. para saber mais sobre os sinais, http://perldoc.perl.org/perlipc.html algo para ignorar pra sempre,$SIG{KILL} = 'IGNORE'; 2013/11/25 Aureliano Guedes Boa tarde,Monges. Gostaria de saber se existe a possibilidade de eu controlar comandos do sistema? Bom, quando estamos executando algum script, se eu quiser encerra-lo a qualquer momento basta que eu tecle Ctrl + C. Mas e se eu quisesse, especificamente em um script, determinar que seu encerramento fosse após apertar 3 vezes consecutivas Ctrl + C, ou então ao apertar Ctrl + shift + C, ou sei lá, qualquer outro comando que eu queira, como deveria fazer? Desde já grato. Att,Aureliano Guedes ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRONhttp://www.renatocron.com/blog/ @renato_cron ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- "technology does not drive change - it enables change" ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRONhttp://www.renatocron.com/blog/ @renato_cron ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [HELP] Controlando comandos do sistema
André Luiz, vou fazer da sua forma, obrigado.Agora fiquei sem entender porque $SIG{qw (INT TERM HUP)}... Renato, tentei fazer assim:my $c = 0; $SIG{INT} = sub { $c <= 2 ? $c++ : die }; while (1) {print "TESTE\n";sleep 1;} Deu certo, mas deu errado, por algum motivo tenho que apertar ctrl + c umas 4 vezes ou mais para dar certo From: renato.c...@gmail.com Date: Mon, 25 Nov 2013 16:22:07 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [HELP] Controlando comandos do sistema SIGINT2 TermInterrupt from keyboard Esse é o CTRL+C, $SIG{INT} = 'IGNORE'; não consegui fazer assim: my $c = 0; $SIG{INT} = sub { return 'IGNORE' if $c++ < 3 }; não sei porque, alguem sabe? 2013/11/25 Andre Luis nesse caso só iria ignorar ele nao irira tratar ... pelo que eu entendi ele quer tratar $SIG{KILL} = sub { do_something() }; Em 25 de novembro de 2013 16:06, Renato Santos escreveu: você tem que ignorar o sinal de KILL do sistema. para saber mais sobre os sinais, http://perldoc.perl.org/perlipc.html algo para ignorar pra sempre,$SIG{KILL} = 'IGNORE'; 2013/11/25 Aureliano Guedes Boa tarde,Monges. Gostaria de saber se existe a possibilidade de eu controlar comandos do sistema? Bom, quando estamos executando algum script, se eu quiser encerra-lo a qualquer momento basta que eu tecle Ctrl + C. Mas e se eu quisesse, especificamente em um script, determinar que seu encerramento fosse após apertar 3 vezes consecutivas Ctrl + C, ou então ao apertar Ctrl + shift + C, ou sei lá, qualquer outro comando que eu queira, como deveria fazer? Desde já grato. Att,Aureliano Guedes ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRONhttp://www.renatocron.com/blog/ @renato_cron ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- "technology does not drive change - it enables change" ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRONhttp://www.renatocron.com/blog/ @renato_cron ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [HELP] Controlando comandos do sistema
Opa, respostas rápidas, obrigado.Já deu uma luz, vou ver aqui, se eu descobrir eu falo aqui. Date: Mon, 25 Nov 2013 16:07:25 -0200 From: osca...@gmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] [HELP] Controlando comandos do sistema Boa pergunta, no perl eu nao sei.No shell é ~ $ traptrap -- '' SIGTSTPtrap -- '' SIGTTINtrap -- '' SIGTTOUAcho que já um caminho pra voce pesquisar. Em 25 de novembro de 2013 16:04, Aureliano Guedes escreveu: Boa tarde,Monges. Gostaria de saber se existe a possibilidade de eu controlar comandos do sistema? Bom, quando estamos executando algum script, se eu quiser encerra-lo a qualquer momento basta que eu tecle Ctrl + C. Mas e se eu quisesse, especificamente em um script, determinar que seu encerramento fosse após apertar 3 vezes consecutivas Ctrl + C, ou então ao apertar Ctrl + shift + C, ou sei lá, qualquer outro comando que eu queira, como deveria fazer? Desde já grato. Att,Aureliano Guedes ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Oscar Marques osca...@gmail.com http://www.dunkelheit.com.br @f117usbr +55 21 9293-9343 ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
[Rio-pm] [HELP] Controlando comandos do sistema
Boa tarde,Monges. Gostaria de saber se existe a possibilidade de eu controlar comandos do sistema? Bom, quando estamos executando algum script, se eu quiser encerra-lo a qualquer momento basta que eu tecle Ctrl + C.Mas e se eu quisesse, especificamente em um script, determinar que seu encerramento fosse após apertar 3 vezes consecutivas Ctrl + C, ou então ao apertar Ctrl + shift + C, ou sei lá, qualquer outro comando que eu queira, como deveria fazer? Desde já grato. Att,Aureliano Guedes ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère
Tava tentando achar um jeito de remover esse laço 'for'.E talvez reduzir para 1 linha de código.se ja reduziu de 30 linhas para 5, talvez seja possível. From: tiago.pecze...@gmail.com Date: Mon, 11 Nov 2013 20:10:26 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère my @word = $ARGV[0]->uc->split('')->map( sub{ $_->ord} ); ou my @word map { ord $_ } split '', uc $ARGV[0]; vc decide :) 2013/11/11 Aureliano Guedes Tiago, o máximo que consegui ate agora usando o autobox::Core foi #!usr/bin/env perluse common::sense;use autobox::Core; my @word; my @key;@word->push($_->ord) foreach $ARGV[0]->uc->split('');@key->push($_->ord) foreach $ARGV[1]->uc->split('');for (my $a = 0; $a <= $#key; $a++){ ((($word[$_] + $key[$_])%26)+65)->chr->print if ($ARGV[2] eq 'e'); ((($word[$_] - $key[$_])%26)+65)->chr->print if ($ARGV[2] eq 'd');} From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Mon, 11 Nov 2013 17:49:23 + Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Achei esse módulo muito interessante mesmo, mas ainda estou conhecendo o território. Vou tentar aplicar ele. From: tiago.pecze...@gmail.com Date: Mon, 11 Nov 2013 15:32:21 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère só falta vc usar o autobox::Core 2013/11/11 Aureliano Guedes Corrigi, mudando o código todohttp://pastebin.com/dqzZXXzM Agora vou tentar em só uma linha. LOL From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Mon, 11 Nov 2013 14:01:16 + Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Eu não entendi quanto a ler o parâmetro a partir do atributo e receber dois parâmetros, mas eu fiz um teste. Eu criei um método BUILD da seguinte forma sub BUILD{ my $self = shift; my (@w, @k);@w = split (//, $self->word); @k = split (//, $self->key);croak "'key' and 'word' are diferent lenght\n" if($#w != $#k); foreach (@w and @k){croak "'key' and 'word' need to be letter\n"unless($w[$_] =~ /[a-zA-Z]/ || $k[$_] =~ /[a-zA-Z]/); } } Então é conferido se 'word' e 'key' tem o mesmo tamanho (você me aconselhou fazer isso no BUILD), aproveitei e retirei a rotina 'isalpha' que conferia se o caractere eram letras e coloquei para conferir isso no BUILD também (não sei se é muita POG). sub isalpha{(chr shift) =~ /[a-zA-Z]/} #<-line 22 Use of uninitialized value $_[0] in chr at Vigenere.pm line 22. Antes de fazer isso o erro que retornava apontava para a linha do 'isalpha', agora está apontando para a linha do 'toupper', que é uma função que traduz o hex ASCII para caracter, passa para upcase e retorna como hex denovo (logo 97 vira 65, assim por diante). sub toupper{ord(uc chr $_[0])} #<- line 25Use of uninitialized value $_[0] in chr at Vigenere.pm line 25. Tentei debugar mas não entendi nada, mas de qualquer forma eu acho que o problema é eu tentar tratar usando essa string "$_[0]", não sei se estou falando besteira, mas como o script teste.pl herda a classe, parece que a rotina tenta receber a string do script e não do módulo. From: tiago.pecze...@gmail.com Date: Mon, 11 Nov 2013 09:57:14 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère vejamos anteriormente as suas funcoes recebiam 2 parametros agora elas leem os parametros a partir dos atributos e eu acho isso... esquisito. veja só, não ha muita razão para armazenar estes dois atributos nessa classe. vc tem que pensar em termos de Objetos. vc tem um objeto que SABE fazer encode / decode. no maximo vc poderia armazenar a chave como atributo e assim reusar o objeto para encodar um texto a ser recebido. AGORA, vc tem o erro por que deve estar fazendo algo de muito creativo aqui (ai envolve explicação sobre list context e atribuição): my (@word, @key) = (tochar($self->word), tochar($self->key)); tente fazer my @key = tochar($self->key); my @word = tochar($self->word); 2013/11/11 Aureliano Guedes Bom, parece que to enferrujado mesmo, fazia um tempinho que não programava em Perl. Tem um outro probleminha ocorrendo. Aqui -> http://pastebin.com/XJ512YYx na classe, esta retornando o seguinte erro Use of uninitialized value $_[0] in chr at Vigenere.pm line 22. A linha 22 ésub isalpha{chr ($_[0]) =~ /[a-zA-Z]/} Mas, eu criei esse package a partir desse script aqui -> http://pastebin.com/svEkjFJj Que tem a mesma rotina escrita da mesma forma. Por algum motivo funciona em um e em outro não. Por que será?? É o $_[0]?? From: bruno.b...@gma
Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère
Tiago, o máximo que consegui ate agora usando o autobox::Core foi #!usr/bin/env perluse common::sense;use autobox::Core; my @word;my @key;@word->push($_->ord) foreach $ARGV[0]->uc->split('');@key->push($_->ord) foreach $ARGV[1]->uc->split('');for (my $a = 0; $a <= $#key; $a++){ ((($word[$_] + $key[$_])%26)+65)->chr->print if ($ARGV[2] eq 'e'); ((($word[$_] - $key[$_])%26)+65)->chr->print if ($ARGV[2] eq 'd');} From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Mon, 11 Nov 2013 17:49:23 + Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Achei esse módulo muito interessante mesmo, mas ainda estou conhecendo o território. Vou tentar aplicar ele. From: tiago.pecze...@gmail.com Date: Mon, 11 Nov 2013 15:32:21 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère só falta vc usar o autobox::Core 2013/11/11 Aureliano Guedes Corrigi, mudando o código todohttp://pastebin.com/dqzZXXzM Agora vou tentar em só uma linha. LOL From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Mon, 11 Nov 2013 14:01:16 + Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Eu não entendi quanto a ler o parâmetro a partir do atributo e receber dois parâmetros, mas eu fiz um teste. Eu criei um método BUILD da seguinte forma sub BUILD{ my $self = shift; my (@w, @k);@w = split (//, $self->word); @k = split (//, $self->key);croak "'key' and 'word' are diferent lenght\n" if($#w != $#k); foreach (@w and @k){croak "'key' and 'word' need to be letter\n"unless($w[$_] =~ /[a-zA-Z]/ || $k[$_] =~ /[a-zA-Z]/); } } Então é conferido se 'word' e 'key' tem o mesmo tamanho (você me aconselhou fazer isso no BUILD), aproveitei e retirei a rotina 'isalpha' que conferia se o caractere eram letras e coloquei para conferir isso no BUILD também (não sei se é muita POG). sub isalpha{(chr shift) =~ /[a-zA-Z]/} #<-line 22 Use of uninitialized value $_[0] in chr at Vigenere.pm line 22. Antes de fazer isso o erro que retornava apontava para a linha do 'isalpha', agora está apontando para a linha do 'toupper', que é uma função que traduz o hex ASCII para caracter, passa para upcase e retorna como hex denovo (logo 97 vira 65, assim por diante). sub toupper{ord(uc chr $_[0])} #<- line 25Use of uninitialized value $_[0] in chr at Vigenere.pm line 25. Tentei debugar mas não entendi nada, mas de qualquer forma eu acho que o problema é eu tentar tratar usando essa string "$_[0]", não sei se estou falando besteira, mas como o script teste.pl herda a classe, parece que a rotina tenta receber a string do script e não do módulo. From: tiago.pecze...@gmail.com Date: Mon, 11 Nov 2013 09:57:14 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère vejamos anteriormente as suas funcoes recebiam 2 parametros agora elas leem os parametros a partir dos atributos e eu acho isso... esquisito. veja só, não ha muita razão para armazenar estes dois atributos nessa classe. vc tem que pensar em termos de Objetos. vc tem um objeto que SABE fazer encode / decode. no maximo vc poderia armazenar a chave como atributo e assim reusar o objeto para encodar um texto a ser recebido. AGORA, vc tem o erro por que deve estar fazendo algo de muito creativo aqui (ai envolve explicação sobre list context e atribuição): my (@word, @key) = (tochar($self->word), tochar($self->key)); tente fazer my @key = tochar($self->key); my @word = tochar($self->word); 2013/11/11 Aureliano Guedes Bom, parece que to enferrujado mesmo, fazia um tempinho que não programava em Perl. Tem um outro probleminha ocorrendo. Aqui -> http://pastebin.com/XJ512YYx na classe, esta retornando o seguinte erro Use of uninitialized value $_[0] in chr at Vigenere.pm line 22. A linha 22 ésub isalpha{chr ($_[0]) =~ /[a-zA-Z]/} Mas, eu criei esse package a partir desse script aqui -> http://pastebin.com/svEkjFJj Que tem a mesma rotina escrita da mesma forma. Por algum motivo funciona em um e em outro não. Por que será?? É o $_[0]?? From: bruno.b...@gmail.com Date: Sun, 10 Nov 2013 23:39:42 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Oi Aureliano, Quando você define um atributo como required no Moose, você precisa passa-lo pelo construtor do seu objeto (new()). No caso, seu código ficaria assim: [...]my $a = Vigenere->new( key => 'cinco', word => 'teste' );say "Resultado: " . $a->encode(); 2013/11/10 Aureliano Guedes #!usr/env/bin perl use feature 'say';use common::sense;use Vigenere; my $a = V
Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère
Achei esse módulo muito interessante mesmo, mas ainda estou conhecendo o território. Vou tentar aplicar ele. From: tiago.pecze...@gmail.com Date: Mon, 11 Nov 2013 15:32:21 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère só falta vc usar o autobox::Core 2013/11/11 Aureliano Guedes Corrigi, mudando o código todohttp://pastebin.com/dqzZXXzM Agora vou tentar em só uma linha. LOL From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Mon, 11 Nov 2013 14:01:16 + Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Eu não entendi quanto a ler o parâmetro a partir do atributo e receber dois parâmetros, mas eu fiz um teste. Eu criei um método BUILD da seguinte forma sub BUILD{ my $self = shift; my (@w, @k);@w = split (//, $self->word); @k = split (//, $self->key);croak "'key' and 'word' are diferent lenght\n" if($#w != $#k); foreach (@w and @k){croak "'key' and 'word' need to be letter\n"unless($w[$_] =~ /[a-zA-Z]/ || $k[$_] =~ /[a-zA-Z]/); } } Então é conferido se 'word' e 'key' tem o mesmo tamanho (você me aconselhou fazer isso no BUILD), aproveitei e retirei a rotina 'isalpha' que conferia se o caractere eram letras e coloquei para conferir isso no BUILD também (não sei se é muita POG). sub isalpha{(chr shift) =~ /[a-zA-Z]/} #<-line 22 Use of uninitialized value $_[0] in chr at Vigenere.pm line 22. Antes de fazer isso o erro que retornava apontava para a linha do 'isalpha', agora está apontando para a linha do 'toupper', que é uma função que traduz o hex ASCII para caracter, passa para upcase e retorna como hex denovo (logo 97 vira 65, assim por diante). sub toupper{ord(uc chr $_[0])} #<- line 25Use of uninitialized value $_[0] in chr at Vigenere.pm line 25. Tentei debugar mas não entendi nada, mas de qualquer forma eu acho que o problema é eu tentar tratar usando essa string "$_[0]", não sei se estou falando besteira, mas como o script teste.pl herda a classe, parece que a rotina tenta receber a string do script e não do módulo. From: tiago.pecze...@gmail.com Date: Mon, 11 Nov 2013 09:57:14 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère vejamos anteriormente as suas funcoes recebiam 2 parametros agora elas leem os parametros a partir dos atributos e eu acho isso... esquisito. veja só, não ha muita razão para armazenar estes dois atributos nessa classe. vc tem que pensar em termos de Objetos. vc tem um objeto que SABE fazer encode / decode. no maximo vc poderia armazenar a chave como atributo e assim reusar o objeto para encodar um texto a ser recebido. AGORA, vc tem o erro por que deve estar fazendo algo de muito creativo aqui (ai envolve explicação sobre list context e atribuição): my (@word, @key) = (tochar($self->word), tochar($self->key)); tente fazer my @key = tochar($self->key); my @word = tochar($self->word); 2013/11/11 Aureliano Guedes Bom, parece que to enferrujado mesmo, fazia um tempinho que não programava em Perl. Tem um outro probleminha ocorrendo. Aqui -> http://pastebin.com/XJ512YYx na classe, esta retornando o seguinte erro Use of uninitialized value $_[0] in chr at Vigenere.pm line 22. A linha 22 ésub isalpha{chr ($_[0]) =~ /[a-zA-Z]/} Mas, eu criei esse package a partir desse script aqui -> http://pastebin.com/svEkjFJj Que tem a mesma rotina escrita da mesma forma. Por algum motivo funciona em um e em outro não. Por que será?? É o $_[0]?? From: bruno.b...@gmail.com Date: Sun, 10 Nov 2013 23:39:42 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Oi Aureliano, Quando você define um atributo como required no Moose, você precisa passa-lo pelo construtor do seu objeto (new()). No caso, seu código ficaria assim: [...]my $a = Vigenere->new( key => 'cinco', word => 'teste' );say "Resultado: " . $a->encode(); 2013/11/10 Aureliano Guedes #!usr/env/bin perl use feature 'say';use common::sense;use Vigenere; my $a = Vigenere->new();$a->key('cinco'); $a->word('teste'); say "Resultado: " . $a->encode(); From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 22:42:46 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère mostra o codigo 2013/11/10 Aureliano Guedes Certo, mas eu estou preenchendo os atributos, a não ser que eu esteja preenchendo de forma errada. From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 22:22:14 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère sim pq este erro vem do fato que este atributo é
Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère
Corrigi, mudando o código todohttp://pastebin.com/dqzZXXzM Agora vou tentar em só uma linha. LOL From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Mon, 11 Nov 2013 14:01:16 + Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Eu não entendi quanto a ler o parâmetro a partir do atributo e receber dois parâmetros, mas eu fiz um teste. Eu criei um método BUILD da seguinte forma sub BUILD{ my $self = shift; my (@w, @k);@w = split (//, $self->word); @k = split (//, $self->key);croak "'key' and 'word' are diferent lenght\n" if($#w != $#k); foreach (@w and @k){ croak "'key' and 'word' need to be letter\n"unless($w[$_] =~ /[a-zA-Z]/ || $k[$_] =~ /[a-zA-Z]/); } } Então é conferido se 'word' e 'key' tem o mesmo tamanho (você me aconselhou fazer isso no BUILD),aproveitei e retirei a rotina 'isalpha' que conferia se o caractere eram letras e coloquei para conferir isso no BUILD também (não sei se é muita POG). sub isalpha{(chr shift) =~ /[a-zA-Z]/} #<-line 22Use of uninitialized value $_[0] in chr at Vigenere.pm line 22. Antes de fazer isso o erro que retornava apontava para a linha do 'isalpha', agora está apontando para a linha do 'toupper', que é uma função que traduz o hex ASCII para caracter, passa para upcase e retorna como hex denovo (logo 97 vira 65, assim por diante). sub toupper{ord(uc chr $_[0])} #<- line 25Use of uninitialized value $_[0] in chr at Vigenere.pm line 25. Tentei debugar mas não entendi nada, mas de qualquer forma eu acho que o problema é eu tentar tratar usando essa string "$_[0]",não sei se estou falando besteira, mas como o script teste.pl herda a classe, parece que a rotina tenta receber a string do script e não do módulo. From: tiago.pecze...@gmail.com Date: Mon, 11 Nov 2013 09:57:14 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère vejamos anteriormente as suas funcoes recebiam 2 parametros agora elas leem os parametros a partir dos atributos e eu acho isso... esquisito. veja só, não ha muita razão para armazenar estes dois atributos nessa classe. vc tem que pensar em termos de Objetos. vc tem um objeto que SABE fazer encode / decode. no maximo vc poderia armazenar a chave como atributo e assim reusar o objeto para encodar um texto a ser recebido. AGORA, vc tem o erro por que deve estar fazendo algo de muito creativo aqui (ai envolve explicação sobre list context e atribuição): my (@word, @key) = (tochar($self->word), tochar($self->key)); tente fazer my @key = tochar($self->key); my @word = tochar($self->word); 2013/11/11 Aureliano Guedes Bom, parece que to enferrujado mesmo, fazia um tempinho que não programava em Perl. Tem um outro probleminha ocorrendo. Aqui -> http://pastebin.com/XJ512YYx na classe, esta retornando o seguinte erro Use of uninitialized value $_[0] in chr at Vigenere.pm line 22. A linha 22 ésub isalpha{chr ($_[0]) =~ /[a-zA-Z]/} Mas, eu criei esse package a partir desse script aqui -> http://pastebin.com/svEkjFJj Que tem a mesma rotina escrita da mesma forma. Por algum motivo funciona em um e em outro não. Por que será?? É o $_[0]?? From: bruno.b...@gmail.com Date: Sun, 10 Nov 2013 23:39:42 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Oi Aureliano, Quando você define um atributo como required no Moose, você precisa passa-lo pelo construtor do seu objeto (new()). No caso, seu código ficaria assim: [...]my $a = Vigenere->new( key => 'cinco', word => 'teste' );say "Resultado: " . $a->encode(); 2013/11/10 Aureliano Guedes #!usr/env/bin perl use feature 'say';use common::sense;use Vigenere; my $a = Vigenere->new();$a->key('cinco'); $a->word('teste'); say "Resultado: " . $a->encode(); From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 22:42:46 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère mostra o codigo 2013/11/10 Aureliano Guedes Certo, mas eu estou preenchendo os atributos, a não ser que eu esteja preenchendo de forma errada. From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 22:22:14 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère sim pq este erro vem do fato que este atributo é requerido se vc quer dar uma mensagem mais bonitinha pro usuario, valide os imputs no seu script antes de instanciar a classe. assim vc separa as coisas :) 2013/11/10 Aureliano Guedes Bom, usei o Moose como recomendou, mais pratico.Quanto ao if, realmente foi falta de atenção, deveria ser um && no lugar da virgula. Mas o erro que retorna é Attribute (key) is requ
Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère
Eu não entendi quanto a ler o parâmetro a partir do atributo e receber dois parâmetros, mas eu fiz um teste. Eu criei um método BUILD da seguinte forma sub BUILD{ my $self = shift; my (@w, @k);@w = split (//, $self->word); @k = split (//, $self->key);croak "'key' and 'word' are diferent lenght\n" if($#w != $#k); foreach (@w and @k){ croak "'key' and 'word' need to be letter\n"unless($w[$_] =~ /[a-zA-Z]/ || $k[$_] =~ /[a-zA-Z]/); } } Então é conferido se 'word' e 'key' tem o mesmo tamanho (você me aconselhou fazer isso no BUILD),aproveitei e retirei a rotina 'isalpha' que conferia se o caractere eram letras e coloquei para conferir isso no BUILD também (não sei se é muita POG). sub isalpha{(chr shift) =~ /[a-zA-Z]/} #<-line 22Use of uninitialized value $_[0] in chr at Vigenere.pm line 22. Antes de fazer isso o erro que retornava apontava para a linha do 'isalpha', agora está apontando para a linha do 'toupper', que é uma função que traduz o hex ASCII para caracter, passa para upcase e retorna como hex denovo (logo 97 vira 65, assim por diante). sub toupper{ord(uc chr $_[0])} #<- line 25Use of uninitialized value $_[0] in chr at Vigenere.pm line 25. Tentei debugar mas não entendi nada, mas de qualquer forma eu acho que o problema é eu tentar tratar usando essa string "$_[0]",não sei se estou falando besteira, mas como o script teste.pl herda a classe, parece que a rotina tenta receber a string do script e não do módulo. From: tiago.pecze...@gmail.com Date: Mon, 11 Nov 2013 09:57:14 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère vejamos anteriormente as suas funcoes recebiam 2 parametros agora elas leem os parametros a partir dos atributos e eu acho isso... esquisito. veja só, não ha muita razão para armazenar estes dois atributos nessa classe. vc tem que pensar em termos de Objetos. vc tem um objeto que SABE fazer encode / decode. no maximo vc poderia armazenar a chave como atributo e assim reusar o objeto para encodar um texto a ser recebido. AGORA, vc tem o erro por que deve estar fazendo algo de muito creativo aqui (ai envolve explicação sobre list context e atribuição): my (@word, @key) = (tochar($self->word), tochar($self->key)); tente fazer my @key = tochar($self->key); my @word = tochar($self->word); 2013/11/11 Aureliano Guedes Bom, parece que to enferrujado mesmo, fazia um tempinho que não programava em Perl. Tem um outro probleminha ocorrendo. Aqui -> http://pastebin.com/XJ512YYx na classe, esta retornando o seguinte erro Use of uninitialized value $_[0] in chr at Vigenere.pm line 22. A linha 22 ésub isalpha{chr ($_[0]) =~ /[a-zA-Z]/} Mas, eu criei esse package a partir desse script aqui -> http://pastebin.com/svEkjFJj Que tem a mesma rotina escrita da mesma forma. Por algum motivo funciona em um e em outro não. Por que será?? É o $_[0]?? From: bruno.b...@gmail.com Date: Sun, 10 Nov 2013 23:39:42 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Oi Aureliano, Quando você define um atributo como required no Moose, você precisa passa-lo pelo construtor do seu objeto (new()). No caso, seu código ficaria assim: [...]my $a = Vigenere->new( key => 'cinco', word => 'teste' );say "Resultado: " . $a->encode(); 2013/11/10 Aureliano Guedes #!usr/env/bin perl use feature 'say';use common::sense;use Vigenere; my $a = Vigenere->new();$a->key('cinco'); $a->word('teste'); say "Resultado: " . $a->encode(); From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 22:42:46 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère mostra o codigo 2013/11/10 Aureliano Guedes Certo, mas eu estou preenchendo os atributos, a não ser que eu esteja preenchendo de forma errada. From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 22:22:14 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère sim pq este erro vem do fato que este atributo é requerido se vc quer dar uma mensagem mais bonitinha pro usuario, valide os imputs no seu script antes de instanciar a classe. assim vc separa as coisas :) 2013/11/10 Aureliano Guedes Bom, usei o Moose como recomendou, mais pratico.Quanto ao if, realmente foi falta de atenção, deveria ser um && no lugar da virgula. Mas o erro que retorna é Attribute (key) is required at C:/Perl/site/lib/Moose/Meta/Attribute.pm line 519 Por algum motivo, é como se não fosse atribuido valor algum a key. Quanto ao metodo BUILD é que como ja tinha o codigo quase pronto fiquei com preguissa de usar para validar, mas vou mudar pa
Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère
Bom, parece que to enferrujado mesmo, fazia um tempinho que não programava em Perl. Tem um outro probleminha ocorrendo. Aqui -> http://pastebin.com/XJ512YYx na classe, esta retornando o seguinte erroUse of uninitialized value $_[0] in chr at Vigenere.pm line 22. A linha 22 ésub isalpha{chr ($_[0]) =~ /[a-zA-Z]/} Mas, eu criei esse package a partir desse script aqui -> http://pastebin.com/svEkjFJj Que tem a mesma rotina escrita da mesma forma. Por algum motivo funciona em um e em outro não. Por que será?? É o $_[0]?? From: bruno.b...@gmail.com Date: Sun, 10 Nov 2013 23:39:42 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Oi Aureliano, Quando você define um atributo como required no Moose, você precisa passa-lo pelo construtor do seu objeto (new()). No caso, seu código ficaria assim: [...]my $a = Vigenere->new( key => 'cinco', word => 'teste' );say "Resultado: " . $a->encode(); 2013/11/10 Aureliano Guedes #!usr/env/bin perl use feature 'say';use common::sense;use Vigenere; my $a = Vigenere->new();$a->key('cinco'); $a->word('teste'); say "Resultado: " . $a->encode(); From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 22:42:46 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère mostra o codigo 2013/11/10 Aureliano Guedes Certo, mas eu estou preenchendo os atributos, a não ser que eu esteja preenchendo de forma errada. From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 22:22:14 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère sim pq este erro vem do fato que este atributo é requerido se vc quer dar uma mensagem mais bonitinha pro usuario, valide os imputs no seu script antes de instanciar a classe. assim vc separa as coisas :) 2013/11/10 Aureliano Guedes Bom, usei o Moose como recomendou, mais pratico.Quanto ao if, realmente foi falta de atenção, deveria ser um && no lugar da virgula. Mas o erro que retorna é Attribute (key) is required at C:/Perl/site/lib/Moose/Meta/Attribute.pm line 519 Por algum motivo, é como se não fosse atribuido valor algum a key. Quanto ao metodo BUILD é que como ja tinha o codigo quase pronto fiquei com preguissa de usar para validar, mas vou mudar para que word e key tenham o mesmo tamanho sempre. From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 21:00:04 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Aureliano com Moose vc pode marcar um atributo como required. assim se alguem esquecer ele na hora de inicializar a classe haverá uma mensagem de erro. has 'word' =>( is => 'rw',isa => 'Str', required => 1,); melhor do que utilizar 'default' para validação. eu uso MUITO o default mas justamente para inicializar o que eu preciso. alias se vc precisa validar o tamanho da chave e do texto, vc poderia utilizar BUILD para isso. http://search.cpan.org/dist/Moose/lib/Moose/Manual/Construction.pod agora o que vc quer dizer com isso? if (isalpha($word[$a]), isalpha($key[$a])){ o que é um if com virgula? 2013/11/10 Aureliano Guedes Bom, fiz as mudanças aconselhadas e mais outras,ainda transformei em uma classe. Vigenere.pm-> http://pastebin.com/aL4brPZx Script teste -> http://pastebin.com/nbuqPqUr Ou-> https://www.dropbox.com/sh/4diypsz4y2puvxq/t0HuRZLvZW/Vigenere_Perl Por algum motivo tem alguma coisa dando errado com o Moose, ainda não identifiquei, alguém ai sabe o que poderia ser?? From: n...@fastmail.fm To: rio-pm@pm.org Date: Sun, 10 Nov 2013 04:16:56 -0200 Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère On Sun, Nov 10, 2013, at 01:13 AM, Tiago Peczenyj wrote: 3- use map :) ao inves de my @b = split (//, $c); for (my $i = 0; $i < @b; $i++){ $b[$i] = ord $b[$i]; } podes fazer return map { ord } split //, $c; quer enxugar mais uma gota? faz map ord, split //, $c; :) -- Nuba R. Princigalli n...@pauleira.com http://pauleira.com @nprincigalli Discipline is not an end in itself, just a means to an end. - King Crimson ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm __
Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère
#!usr/env/bin perl use feature 'say';use common::sense;use Vigenere; my $a = Vigenere->new();$a->key('cinco');$a->word('teste'); say "Resultado: " . $a->encode(); From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 22:42:46 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère mostra o codigo 2013/11/10 Aureliano Guedes Certo, mas eu estou preenchendo os atributos, a não ser que eu esteja preenchendo de forma errada. From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 22:22:14 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère sim pq este erro vem do fato que este atributo é requerido se vc quer dar uma mensagem mais bonitinha pro usuario, valide os imputs no seu script antes de instanciar a classe. assim vc separa as coisas :) 2013/11/10 Aureliano Guedes Bom, usei o Moose como recomendou, mais pratico.Quanto ao if, realmente foi falta de atenção, deveria ser um && no lugar da virgula. Mas o erro que retorna é Attribute (key) is required at C:/Perl/site/lib/Moose/Meta/Attribute.pm line 519 Por algum motivo, é como se não fosse atribuido valor algum a key. Quanto ao metodo BUILD é que como ja tinha o codigo quase pronto fiquei com preguissa de usar para validar, mas vou mudar para que word e key tenham o mesmo tamanho sempre. From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 21:00:04 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Aureliano com Moose vc pode marcar um atributo como required. assim se alguem esquecer ele na hora de inicializar a classe haverá uma mensagem de erro. has 'word' =>( is => 'rw',isa => 'Str', required => 1,); melhor do que utilizar 'default' para validação. eu uso MUITO o default mas justamente para inicializar o que eu preciso. alias se vc precisa validar o tamanho da chave e do texto, vc poderia utilizar BUILD para isso. http://search.cpan.org/dist/Moose/lib/Moose/Manual/Construction.pod agora o que vc quer dizer com isso? if (isalpha($word[$a]), isalpha($key[$a])){ o que é um if com virgula? 2013/11/10 Aureliano Guedes Bom, fiz as mudanças aconselhadas e mais outras,ainda transformei em uma classe. Vigenere.pm-> http://pastebin.com/aL4brPZx Script teste -> http://pastebin.com/nbuqPqUr Ou-> https://www.dropbox.com/sh/4diypsz4y2puvxq/t0HuRZLvZW/Vigenere_Perl Por algum motivo tem alguma coisa dando errado com o Moose, ainda não identifiquei, alguém ai sabe o que poderia ser?? From: n...@fastmail.fm To: rio-pm@pm.org Date: Sun, 10 Nov 2013 04:16:56 -0200 Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère On Sun, Nov 10, 2013, at 01:13 AM, Tiago Peczenyj wrote: 3- use map :) ao inves de my @b = split (//, $c); for (my $i = 0; $i < @b; $i++){ $b[$i] = ord $b[$i]; } podes fazer return map { ord } split //, $c; quer enxugar mais uma gota? faz map ord, split //, $c; :) -- Nuba R. Princigalli n...@pauleira.com http://pauleira.com @nprincigalli Discipline is not an end in itself, just a means to an end. - King Crimson ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère
Certo, mas eu estou preenchendo os atributos, a não ser que eu esteja preenchendo de forma errada. From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 22:22:14 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère sim pq este erro vem do fato que este atributo é requerido se vc quer dar uma mensagem mais bonitinha pro usuario, valide os imputs no seu script antes de instanciar a classe. assim vc separa as coisas :) 2013/11/10 Aureliano Guedes Bom, usei o Moose como recomendou, mais pratico.Quanto ao if, realmente foi falta de atenção, deveria ser um && no lugar da virgula. Mas o erro que retorna é Attribute (key) is required at C:/Perl/site/lib/Moose/Meta/Attribute.pm line 519 Por algum motivo, é como se não fosse atribuido valor algum a key. Quanto ao metodo BUILD é que como ja tinha o codigo quase pronto fiquei com preguissa de usar para validar, mas vou mudar para que word e key tenham o mesmo tamanho sempre. From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 21:00:04 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Aureliano com Moose vc pode marcar um atributo como required. assim se alguem esquecer ele na hora de inicializar a classe haverá uma mensagem de erro. has 'word' =>( is => 'rw',isa => 'Str', required => 1,); melhor do que utilizar 'default' para validação. eu uso MUITO o default mas justamente para inicializar o que eu preciso. alias se vc precisa validar o tamanho da chave e do texto, vc poderia utilizar BUILD para isso. http://search.cpan.org/dist/Moose/lib/Moose/Manual/Construction.pod agora o que vc quer dizer com isso? if (isalpha($word[$a]), isalpha($key[$a])){ o que é um if com virgula? 2013/11/10 Aureliano Guedes Bom, fiz as mudanças aconselhadas e mais outras,ainda transformei em uma classe. Vigenere.pm-> http://pastebin.com/aL4brPZx Script teste -> http://pastebin.com/nbuqPqUr Ou-> https://www.dropbox.com/sh/4diypsz4y2puvxq/t0HuRZLvZW/Vigenere_Perl Por algum motivo tem alguma coisa dando errado com o Moose, ainda não identifiquei, alguém ai sabe o que poderia ser?? From: n...@fastmail.fm To: rio-pm@pm.org Date: Sun, 10 Nov 2013 04:16:56 -0200 Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère On Sun, Nov 10, 2013, at 01:13 AM, Tiago Peczenyj wrote: 3- use map :) ao inves de my @b = split (//, $c); for (my $i = 0; $i < @b; $i++){ $b[$i] = ord $b[$i]; } podes fazer return map { ord } split //, $c; quer enxugar mais uma gota? faz map ord, split //, $c; :) -- Nuba R. Princigalli n...@pauleira.com http://pauleira.com @nprincigalli Discipline is not an end in itself, just a means to an end. - King Crimson ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère
Bom, usei o Moose como recomendou, mais pratico.Quanto ao if, realmente foi falta de atenção, deveria ser um && no lugar da virgula. Mas o erro que retorna éAttribute (key) is required at C:/Perl/site/lib/Moose/Meta/Attribute.pm line 519 Por algum motivo, é como se não fosse atribuido valor algum a key. Quanto ao metodo BUILD é que como ja tinha o codigo quase pronto fiquei com preguissa de usar para validar, mas vou mudar para que word e key tenham o mesmo tamanho sempre. From: tiago.pecze...@gmail.com Date: Sun, 10 Nov 2013 21:00:04 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère Aureliano com Moose vc pode marcar um atributo como required. assim se alguem esquecer ele na hora de inicializar a classe haverá uma mensagem de erro. has 'word' =>( is => 'rw',isa => 'Str', required => 1,); melhor do que utilizar 'default' para validação. eu uso MUITO o default mas justamente para inicializar o que eu preciso. alias se vc precisa validar o tamanho da chave e do texto, vc poderia utilizar BUILD para isso. http://search.cpan.org/dist/Moose/lib/Moose/Manual/Construction.pod agora o que vc quer dizer com isso? if (isalpha($word[$a]), isalpha($key[$a])){ o que é um if com virgula? 2013/11/10 Aureliano Guedes Bom, fiz as mudanças aconselhadas e mais outras,ainda transformei em uma classe. Vigenere.pm-> http://pastebin.com/aL4brPZx Script teste -> http://pastebin.com/nbuqPqUr Ou-> https://www.dropbox.com/sh/4diypsz4y2puvxq/t0HuRZLvZW/Vigenere_Perl Por algum motivo tem alguma coisa dando errado com o Moose, ainda não identifiquei, alguém ai sabe o que poderia ser?? From: n...@fastmail.fm To: rio-pm@pm.org Date: Sun, 10 Nov 2013 04:16:56 -0200 Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère On Sun, Nov 10, 2013, at 01:13 AM, Tiago Peczenyj wrote: 3- use map :) ao inves de my @b = split (//, $c); for (my $i = 0; $i < @b; $i++){ $b[$i] = ord $b[$i]; } podes fazer return map { ord } split //, $c; quer enxugar mais uma gota? faz map ord, split //, $c; :) -- Nuba R. Princigalli n...@pauleira.com http://pauleira.com @nprincigalli Discipline is not an end in itself, just a means to an end. - King Crimson ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère
Bom, fiz as mudanças aconselhadas e mais outras,ainda transformei em uma classe. Vigenere.pm-> http://pastebin.com/aL4brPZxScript teste -> http://pastebin.com/nbuqPqUr Ou-> https://www.dropbox.com/sh/4diypsz4y2puvxq/t0HuRZLvZW/Vigenere_Perl Por algum motivo tem alguma coisa dando errado com o Moose, ainda não identifiquei, alguém ai sabe o que poderia ser?? From: n...@fastmail.fm To: rio-pm@pm.org Date: Sun, 10 Nov 2013 04:16:56 -0200 Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère On Sun, Nov 10, 2013, at 01:13 AM, Tiago Peczenyj wrote: 3- use map :) ao inves de my @b = split (//, $c); for (my $i = 0; $i < @b; $i++){ $b[$i] = ord $b[$i]; } podes fazer return map { ord } split //, $c; quer enxugar mais uma gota? faz map ord, split //, $c; :) -- Nuba R. Princigalli n...@pauleira.com http://pauleira.com @nprincigalli Discipline is not an end in itself, just a means to an end. - King Crimson ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm