From arnau a emergetux.net Wed Apr 1 02:48:43 2009 From: arnau a emergetux.net (Arnau Bria) Date: Wed, 1 Apr 2009 11:48:43 +0200 Subject: [bcn-pm] Sys::AlarmCall In-Reply-To: <20090331235359.7bcd4ece@amparo> References: <20090331235359.7bcd4ece@amparo> Message-ID: <20090401114843.48e66eaf@lx-arnau.pic.es> Hola, no havia vist que m'havies respost. > El modul munta un handler per sigalarm que fa un die. > desperes fa un programa que prepara l'alarma, executa el codi i per > ultim desactiva l'alarma. > > fa un eval del programa i mira $@ per veure si l'alarma ha sigut > disparada. si hi an exits eval no els captura i surts pel block END > (al monoply es la tarja "valla a la Carcel") gràcies, entenc com implementa la funció (bàsicament). > perl -e 'print "1\n";my $test= "exit 2;";my $result = eval > $test;print "salida $@ - $result\n";exit $@'||echo "fallo" > > si sustituim exit per die el codi continua suposo que m'hauràs contestat a la meva pregunta inicial, però no se si l'he entès :-) m'estàs dient que eval ignora els meus exits, no? que realment ell surt per block END independentment de com jo vulgui sortir... és això? Aleshores, si jo vull: 1.-) executar una funció i fer un exit 2 en cas d'error 2.-) controlar l'execució d'aquesta funció amb timeout ho puc fer amb alarm_call? com haig d'atrapar els errors dintre de la funció? gràcies per la resposta, salut, Arnau -- Arnau Bria http://blog.emergetux.net Bombing for peace is like fucking for virginity From jluis a escomposlinux.org Wed Apr 1 04:55:12 2009 From: jluis a escomposlinux.org (Jose Luis Perez Diez) Date: Wed, 1 Apr 2009 12:55:12 +0100 Subject: [bcn-pm] Sys::AlarmCall In-Reply-To: <20090401114843.48e66eaf@lx-arnau.pic.es> References: <20090331235359.7bcd4ece@amparo> <20090401114843.48e66eaf@lx-arnau.pic.es> Message-ID: <200904011355.12442.jluis@escomposlinux.org> El Wednesday, 1 de April de 2009 11:48:43 Arnau Bria va escriure: > suposo que m'hauràs contestat a la meva pregunta inicial, però no se si > l'he entès :-) m'estàs dient que eval ignora els meus exits, no? No el eval fa cas als teus exits i per tant surt crida executa els blocks END que toquin i acaba el process > realment ell surt per block END independentment de com jo vulgui > sortir... és això? Si vols controlar la sortida fes sevir die() i tindràs oportunitat de que el programa sobrevisquifile:///tmp/kde-jpddb/kontactjVeR8g//test.pl > Aleshores, si jo vull: > > 1.-) executar una funció i fer un exit 2 en cas d'error si vols treballar amb el error al codi que crida la funció no pots fer exit has de sortir amb return, o amb die i tractar l'excepció , o fer fork i comprovar el valor de retorn del fill. > 2.-) controlar l'execució d'aquesta funció amb timeout > > ho puc fer amb alarm_call? > com haig d'atrapar els errors dintre de la funció? Canviant els exit 2 per die 2 hauria de funcionar mira aquest codi: #!/usr/bin/perl use strict; use warnings; use Sys::AlarmCall; $Sys::AlarmCall::TIMEOUT = -1; sub tempusfugit { my $temps = rand; print"return "; sleep($temps+.5); return ($temps*100 % 2) ?2:0; } sub tempsmort{ my $temps = rand; print"Mortis "; sleep($temps+.5); die 2 if ($temps*100 % 2); return 0; } sub que { return "error\n" if ($_ == 2); return "timeout\n" if ($_ == -1); return "$_\n"; } print que (alarm_call(1, sub { tempusfugit })) for (1..10); print que (alarm_call(1, sub { tempsmort })) for (1..10); From jluis a escomposlinux.org Wed Apr 1 05:21:32 2009 From: jluis a escomposlinux.org (Jose Luis Perez Diez) Date: Wed, 1 Apr 2009 13:21:32 +0100 Subject: [bcn-pm] Sys::AlarmCall In-Reply-To: <200904011355.12442.jluis@escomposlinux.org> References: <20090331235359.7bcd4ece@amparo> <20090401114843.48e66eaf@lx-arnau.pic.es> <200904011355.12442.jluis@escomposlinux.org> Message-ID: <200904011421.32940.jluis@escomposlinux.org> El Wednesday, 1 de April de 2009 13:55:12 Jose Luis Perez Diez va escriure: > sub que { > return "error\n" if ($_ == 2); > return "timeout\n" if ($_ == -1); > return "$_\n"; > } Opss sub que { my $valor= shift; return "error\n" if ($valor == 2); return "timeout\n" if ($valor == -1); return "$valor\n"; } From arnau a emergetux.net Wed Apr 1 06:20:54 2009 From: arnau a emergetux.net (Arnau Bria) Date: Wed, 1 Apr 2009 15:20:54 +0200 Subject: [bcn-pm] Sys::AlarmCall In-Reply-To: <200904011355.12442.jluis@escomposlinux.org> References: <20090331235359.7bcd4ece@amparo> <20090401114843.48e66eaf@lx-arnau.pic.es> <200904011355.12442.jluis@escomposlinux.org> Message-ID: <20090401152054.447db4e6@lx-arnau.pic.es> On Wed, 1 Apr 2009 12:55:12 +0100 Jose Luis Perez Diez wrote: > El Wednesday, 1 de April de 2009 11:48:43 Arnau Bria va escriure: > > suposo que m'hauràs contestat a la meva pregunta inicial, però no > > se si l'he entès :-) m'estàs dient que eval ignora els meus exits, > > no? > > No el eval fa cas als teus exits i per tant surt crida executa els > blocks END que toquin i acaba el process si, si... m'he expressat malament. ja he entès que no es qeuda amb el valor de retorn. > > realment ell surt per block END independentment de com jo vulgui > > sortir... és això? > > Si vols controlar la sortida fes sevir die() i tindràs oportunitat de > que el programa > sobrevisquifile:///tmp/kde-jpddb/kontactjVeR8g//test.pl Si, això és el qeu havia entès en el mail anterior. Si faig un die o un return puc mirar que ha passat, i és el que m'esteu aconsellant... > > Aleshores, si jo vull: > > > > 1.-) executar una funció i fer un exit 2 en cas d'error > > si vols treballar amb el error al codi que crida la funció no pots > fer exit has de sortir amb return, o amb die i tractar l'excepció , > o fer fork i comprovar el valor de retorn del fill. val, em sembla que m'estic liant i/o us estic liant. La cosa es qeu jo no volia tractar el valor de retorn en cas d'error (en cas d'èxit de la funció, em retorna un 0 i el progrma continua) però si alguna funció falla, jo no vull continuar l'execució, vull que el programa aborti i em dongui un valor de sortida 2. Per això feia exits i no returns, perque no volia continuar amb l'execució. El problema que tinc ve quan he volgut posar timeouts a certes funcions (i.e tinc un cehck d'nfs que es pot quedar penjat per molt temps). Quan afegeixo el timeout faig això: [...] funció 1 funció 2 my $nfs_result = alarm_call($nfs_timeout,'&nfs_mount');; funció 4 [...] si qualsevol de les funcions 1 2 i 4 fallés, sortiria amb un exit 2, i el programa no continuaria. Però quan crido el timeout, dintre de les funcions també tinc exits, i això no ho puc tractar, haig de posar returns i evaluar després les variables nfs_result... _Crec_ que ja me queda clar... Moltes gràcies a tots per els exemples i les respostes. salut! Arnau From alexm a alexm.org Wed Apr 1 14:07:22 2009 From: alexm a alexm.org (Alex Muntada) Date: Wed, 1 Apr 2009 23:07:22 +0200 Subject: [bcn-pm] Larry Wall en directe ara mateix Message-ID: <35064d940904011407h36a9e2eesc8af60e66416a8e3@mail.gmail.com> vlc rtsp://ten-streaming.mit.edu:554/2009/04/wall.sdp totem rtsp://ten-streaming.mit.edu:554/2009/04/wall.sdp -- Alex Muntada http://alexm.org/ From jluis a escomposlinux.org Thu Apr 2 00:51:13 2009 From: jluis a escomposlinux.org (Jose Luis Perez Diez) Date: Thu, 2 Apr 2009 08:51:13 +0100 Subject: [bcn-pm] Sys::AlarmCall In-Reply-To: <20090401152054.447db4e6@lx-arnau.pic.es> References: <20090331235359.7bcd4ece@amparo> <200904011355.12442.jluis@escomposlinux.org> <20090401152054.447db4e6@lx-arnau.pic.es> Message-ID: <200904020951.13308.jluis@escomposlinux.org> El Wednesday, 1 de April de 2009 15:20:54 Arnau Bria va escriure: > si qualsevol de les funcions 1 2 i 4 fallés, sortiria amb un exit 2, i > el programa no continuaria. > Però quan crido el timeout, dintre de les funcions també tinc exits, i > això no ho puc tractar, haig de posar returns i evaluar després les > variables nfs_result... allarm_call et retorna: $Sys::AlarmCall::Timeout si esta trigant molt. els valors de die () el valor de sortida del eval La solució que tens mes senzilla es s/\bexit\b/die/g (usar retorns pot forçar la refactorialització del codi). use strict; use warnings; use Sys::AlarmCall; my @Results = ( alarm_call(1,"{sleep 2}"), alarm_call(1,"{die(0)}"), alarm_call(1,"{die(1)}"), alarm_call(1,"{die(2)}"), alarm_call(1,"{return 3}") ); print "$_\tnumeric".-(-$_)."\n " for @Results; Sortida (perl 5.10) TIMEOUT numeric+TIMEOUT ERROR numeric+ERROR Argument "0 at (eval 2) line 3.\n" isn't numeric in negation (-) at arnau.pl line 10. 0 at (eval 2) line 3. numeric0 ERROR numeric+ERROR Argument "1 at (eval 3) line 3.\n" isn't numeric in negation (-) at arnau.pl line 10. 1 at (eval 3) line 3. numeric1 ERROR numeric+ERROR Argument "2 at (eval 4) line 3.\n" isn't numeric in negation (-) at arnau.pl line 10. 2 at (eval 4) line 3. numeric2 3 numeric3 From arnau a emergetux.net Thu Apr 2 02:04:33 2009 From: arnau a emergetux.net (Arnau Bria) Date: Thu, 2 Apr 2009 11:04:33 +0200 Subject: [bcn-pm] Sys::AlarmCall In-Reply-To: <200904020951.13308.jluis@escomposlinux.org> References: <20090331235359.7bcd4ece@amparo> <200904011355.12442.jluis@escomposlinux.org> <20090401152054.447db4e6@lx-arnau.pic.es> <200904020951.13308.jluis@escomposlinux.org> Message-ID: <20090402110433.18c0cd1d@lx-arnau.pic.es> On Thu, 2 Apr 2009 08:51:13 +0100 Jose Luis Perez Diez wrote: [...] > La solució que tens mes senzilla es s/\bexit\b/die/g (usar retorns > pot forçar la refactorialització del codi). [...] podries fer 2 linees sobre la refactorialització del codi? moltes gràcies pels exemples i les explicaions. salut! Arnau From jluis a escomposlinux.org Thu Apr 2 02:09:12 2009 From: jluis a escomposlinux.org (Jose Luis Perez Diez) Date: Thu, 2 Apr 2009 10:09:12 +0100 Subject: [bcn-pm] April fools Message-ID: <200904021109.12403.jluis@escomposlinux.org> http://lwn.net/Articles/326670/ From blas.gordon a gmail.com Thu Apr 2 02:50:22 2009 From: blas.gordon a gmail.com (Enrique Nell) Date: Thu, 2 Apr 2009 11:50:22 +0200 Subject: [bcn-pm] Perl and the Amazon cloud Message-ID: http://www.ibm.com/developerworks/opensource/library/l-amazon-perl-1/index.html?ca=drs- From arnau a emergetux.net Thu Apr 2 02:58:21 2009 From: arnau a emergetux.net (Arnau Bria) Date: Thu, 2 Apr 2009 11:58:21 +0200 Subject: [bcn-pm] Sys::AlarmCall In-Reply-To: <200904020951.13308.jluis@escomposlinux.org> References: <20090331235359.7bcd4ece@amparo> <200904011355.12442.jluis@escomposlinux.org> <20090401152054.447db4e6@lx-arnau.pic.es> <200904020951.13308.jluis@escomposlinux.org> Message-ID: <20090402115821.6dbe69a2@lx-arnau.pic.es> On Thu, 2 Apr 2009 08:51:13 +0100 Jose Luis Perez Diez wrote: > El Wednesday, 1 de April de 2009 15:20:54 Arnau Bria va escriure: > > si qualsevol de les funcions 1 2 i 4 fallés, sortiria amb un exit > > 2, i el programa no continuaria. > > Però quan crido el timeout, dintre de les funcions també tinc > > exits, i això no ho puc tractar, haig de posar returns i evaluar > > després les variables nfs_result... > > > allarm_call et retorna: > $Sys::AlarmCall::Timeout si esta trigant molt. > els valors de die () > el valor de sortida del eval Ara que die em retorna un valor no numeric, he posat varis dies amb diferents missatges i un "switch" per evaluar el retorn: my $result = alarm_call($ssh_timeout,'&llaves_SSH'); for ($result) { /error1/ and do { print "error1"; exit 2; }; } sub llaves_SSH (){ die ("error1"); } Això és correcte ara, no? I em surgeix uan nova pregunta ara ara que em parleu tant de die. L'"exit 2" del switch ara és correcte? O també podria/hauria fer servir die? Es que he vist que die només retorna LIST, i en els exemples que trobo, el valor de retorn és el que li dona `command`... moltes gràcies a tots! Arnau From jluis a escomposlinux.org Thu Apr 2 04:49:44 2009 From: jluis a escomposlinux.org (Jose Luis Perez Diez) Date: Thu, 2 Apr 2009 12:49:44 +0100 Subject: [bcn-pm] Sys::AlarmCall In-Reply-To: <20090402115821.6dbe69a2@lx-arnau.pic.es> References: <20090331235359.7bcd4ece@amparo> <200904020951.13308.jluis@escomposlinux.org> <20090402115821.6dbe69a2@lx-arnau.pic.es> Message-ID: <200904021349.44354.jluis@escomposlinux.org> El Thursday, 2 de April de 2009 11:58:21 Arnau Bria va escriure: > I em surgeix uan nova pregunta ara ara que em parleu tant de die. > L'"exit 2" del switch ara és correcte? O també podria/hauria fer servir > die? Es que he vist que die només retorna LIST, i en els > exemples que trobo, el valor de retorn és el que li dona > `command`... sub myExit{local $!=shift;die } es equivalent a exit. diferencies: escriu un missatge a stderr genera una excepció si es executada dins de un eval perl -e'sub myExit{local $!=shift;die };myExit 2;'||echo $? Died at -e line 1. 2 jpddb a debian:~$ perl -e'sub myExit{local $!=shift;die };exit 2;'||echo $? 2 Respecte a la refactoritzacio de codi el deia per les rutinas que cridan a les rutines que cridan l'exit From fxn a hashref.com Tue Apr 7 00:41:16 2009 From: fxn a hashref.com (Xavier Noria) Date: Tue, 7 Apr 2009 09:41:16 +0200 Subject: [bcn-pm] Xing busca gent Message-ID: <31a130740904070041k48e6d3c6q7afe9b9fc8edee16@mail.gmail.com> Iep mongers! Escolteu la gent de Xing te un equip de Perl i vol contractar gent a Barcelona per a que s'hi sumi. Busquen gent competent. Si us interesses si us plau escriviu a en Kim Altintop (kim.altintop a xing.com). From jmerelo a geneura.ugr.es Mon Apr 13 00:56:36 2009 From: jmerelo a geneura.ugr.es (Juan Julian Merelo Guervos) Date: Mon, 13 Apr 2009 09:56:36 +0200 Subject: [bcn-pm] =?iso-8859-1?q?YAPC=3A=3AEU_2010_en_Gran=E1?= Message-ID: <49E2F034.6040009@geneura.ugr.es> Hola, He visto el "call for venues" de YAPC::EU, y se me ha ocurrido que podría presentar Granada como candidata. ¿Qué opináis? ¿Podría contar con alguna ayuda (siendo desde fuera, imagino que comité de programa, selección de trabajos y cosas así; también compartir coste de conferenciantes si hacen paradinha en Barcelona) Decidme en cualquier caso qué opináis y si sería mejor la opción "barata" o la "cara". Taluego! JJ -------------- part següent -------------- An embedded and charset-unspecified text was scrubbed... Name: candidatura-yapc-eu-2010.yaml URL: From alexm a alexm.org Wed Apr 15 01:24:07 2009 From: alexm a alexm.org (Alex Muntada) Date: Wed, 15 Apr 2009 10:24:07 +0200 Subject: [bcn-pm] =?utf-8?q?YAPC=3A=3AEU_2010_en_Gran=C3=A1?= In-Reply-To: <49E2F034.6040009@geneura.ugr.es> References: <49E2F034.6040009@geneura.ugr.es> Message-ID: <35064d940904150124g6a08bc3ax1f6b9d833752574d@mail.gmail.com> * Juan Julian Merelo Guervos : > He visto el "call for venues" de YAPC::EU, y se me ha ocurrido > que podría presentar Granada como candidata.  ¿Qué opináis? Em sembla una bona idea. Segur que tu tens més recursos i experiència que jo per organitzar un esdeveniment com aquest. A més a més, fa molt de temps que no passo per Granada i és una excusa perfecta :-) > ¿Podría contar con alguna ayuda (siendo desde fuera, imagino > que comité de programa, selección de trabajos y cosas así; > también compartir coste de conferenciantes si hacen paradinha > en Barcelona) Pots comptar amb mi pel que calgui. > Decidme en cualquier caso qué opináis y si sería mejor la opción > "barata" o la "cara". Segurament serà més fàcil la barata, però si hi ha prou diners i ganes segur que la cara també molaria. A veure si hi ha sort... Per cert, a banda de l'Enrique i en Diego, algú més s'anima a anar a Lisboa aquest agost al YAPC::EU? Jo m'ho estic pensant però depèn de com quadrem els torns de vacances a la feina. -- Alex Muntada http://alexm.org/ From pancake a youterm.com Thu Apr 16 02:12:04 2009 From: pancake a youterm.com (pancake) Date: Thu, 16 Apr 2009 11:12:04 +0200 Subject: [bcn-pm] cpan ratings Message-ID: <49E6F664.2090502@youterm.com> Ho he descobert avui a traves del identica i m'ha semblat molt bona idea :) http://cpanratings.perl.org/ From alexm a alexm.org Thu Apr 16 08:47:29 2009 From: alexm a alexm.org (Alex Muntada) Date: Thu, 16 Apr 2009 17:47:29 +0200 Subject: [bcn-pm] cpan ratings In-Reply-To: <49E6F664.2090502@youterm.com> References: <49E6F664.2090502@youterm.com> Message-ID: <35064d940904160847t1d4ca53x4e8622f2fe0b9fc2@mail.gmail.com> * pancake : > Ho he descobert avui a traves del identica i > m'ha semblat molt bona idea :) De fet, ja fa temps que al CPAN hi ha enllaços a cada mòdul cap als seus ratings. Per exemple, si trieu un mòdul que ha estat avaluat recentment... http://search.cpan.org/dist/Spreadsheet-WriteExcel/ Hi ha el camp Rating indicat amb 4.5/5 estrelles, 21 reviews i l'enllaç per fer-ne un. La veritat és que quan he de triar entre diversos mòduls per fer una feina, acostumo a mirar-me els ratings i de vegades els reviews i tot. -- Alex Muntada http://alexm.org/ From jdelgado a lsi.upc.edu Thu Apr 16 15:43:34 2009 From: jdelgado a lsi.upc.edu (Jordi Delgado) Date: Fri, 17 Apr 2009 00:43:34 +0200 Subject: [bcn-pm] oferta de feina Perl-Catalyst :-) Message-ID: <20090416224333.GA8248@entropia.lsi.upc.edu> Ei, heu vist aixo? http://jobs.perl.org/job/10462 aqui estan els comentaris de Hacker News http://news.ycombinator.com/item?id=565152 alguns et fan pensar una mica... Per cert, aquest dimecres passat vaig estar 6 hores (si, si, 6 hores!) vigilant dos torns del parcial de Programacio 1, i com m'avorria molt (pero molt!) vaig fer els problemes en Perl (tres dels quatre). Si a algu l'interessa els podria mostrar, ja que voldria saber l'opinio dels experts. Basicament el meu Perl es el d'un principiant i voldria saber si es podria fer millor i/o mes idiomatic (que segur que si). Resumint, si algu li interessa, us passo els enunciats i les meves solucions, aixi rieu una mica :-) Salut! Jordi From jluis a escomposlinux.org Thu Apr 16 23:45:06 2009 From: jluis a escomposlinux.org (Jose Luis Perez Diez) Date: Fri, 17 Apr 2009 08:45:06 +0200 Subject: [bcn-pm] oferta de feina Perl-Catalyst :-) In-Reply-To: <20090416224333.GA8248@entropia.lsi.upc.edu> References: <20090416224333.GA8248@entropia.lsi.upc.edu> Message-ID: <200904170845.06245.jluis@escomposlinux.org> El Friday, 17 de April de 2009 00:43:34 Jordi Delgado va escriure: > Si a algu l'interessa els podria mostrar, ja que > voldria saber l'opinio dels experts. Basicament > el meu Perl es el d'un principiant i voldria saber > si es podria fer millor i/o mes idiomatic (que segur > que si). + 1 From toomany a toomany.net Thu Apr 16 23:46:15 2009 From: toomany a toomany.net (TooMany Secrets) Date: Fri, 17 Apr 2009 08:46:15 +0200 Subject: [bcn-pm] oferta de feina Perl-Catalyst :-) In-Reply-To: <20090416224333.GA8248@entropia.lsi.upc.edu> References: <20090416224333.GA8248@entropia.lsi.upc.edu> Message-ID: 2009/4/17 Jordi Delgado : > Ei, > > heu vist aixo? > http://jobs.perl.org/job/10462 > > aqui estan els comentaris de Hacker News > http://news.ycombinator.com/item?id=565152 > Resumint, si algu li interessa, us passo els enunciats > i les meves solucions, aixi rieu una mica :-) Por mí adelante Jordi! Gracias! -- --------------------------------------------------------------------------------------- Have a nice day ;-) TooManySecrets /"\ ASCII Ribbon Campaign | FreeBSD Since 4.x \ / - NO HTML/RTF in e-mail | GNU/Linux Since 1994. X - NO Word docs in e-mail | / \ - http://www.toomany.net --------------------------------------------------------------------------------------- From jdelgado a lsi.upc.edu Fri Apr 17 03:00:09 2009 From: jdelgado a lsi.upc.edu (Jordi Delgado) Date: Fri, 17 Apr 2009 12:00:09 +0200 Subject: [bcn-pm] =?iso-8859-1?q?b=E9=2C_aqu=ED_van_els_programets=2E=2E?= =?iso-8859-1?q?=2E?= Message-ID: <20090417100009.GA9370@entropia.lsi.upc.edu> Hola, Els enunciats els teniu a: http://www.lsi.upc.edu/~jdelgado/enunciats.tar.gz Es diuen P0021.ps, P0022.ps i P0023.ps Ho dic perque les solucions van anomenades de la mateixa manera. Les (meves) solucions son les que trobareu mes avall. Alguns comentaris sobre els programes: 1) els enunciats estan pensats per a que les dades es llegeixin des de teclat, sense que hi hagi cap format especific (mes enlla del que demana l'enunciat). Vull dir que poden estar separades per espai, salt de linia, etc. La idea es que es llegeixin amb 'cin >> ...' i aquest ja fa aquesta feina. Com que jo no conec l'equivalent en Perl, he fet aixo: local $/=undef; $entrada = ; @entrada = split /\s+/,$entrada; que et deixa a @entrada les dades que un vol. Segur que es pot fer millor, pero un "nivell Llama" arriba on arriba ;-) 2) L'examen es un parcial, per tant nomes poden fer servir coneixements que els hem ensenyat fins ara. Aixo exclou qualsevol estructura de dades no elemental (excepte strings). Fixeu-vos que els meus programes nomes utilitzen llistes pel tema de l'entrada de dades. A la resta, nombres i strings (escalars, a Perl). 3) El parcial tenia dos torns. Uns feien el P0021 i el P0022, i el segon torn feia el P0023 i el P0024. No us poso el P0024 perque no vaig tenir temps de fer-lo. Malgrat aixo, demanava llegir l'entrada caracter a caracter. Aixo a Perl com es faria? Aixo funciona: chomp($line = ); @chars = ($line =~ /[\+-\d]/ig); foreach (@chars) { print "$_\n"; }; ja que els caracters que podiem trobar a l'entrada podien ser nomes '-', '+' o qualsevol digit numeric. Estic segur, pero, que es pot fer millor. 4) Finalment, despres dels programes, trobareu uns fitxers de dades com a jocs de proves. Els programes funcionen be amb aquests fitxers (cada un amb el seu corresponent). I res mes. Lamento marejar-vos amb cosetes tan trivials. Si em deixen, ja us comentare com va anar el parcial. Vull dir quins van ser els resultats. Salut! Jordi ################################### #p0021.perl sub pinta_rusc { my ($f, $c) = @_; print ' _ ' x ($c - 1) , " _\n"; $s = (('/ \_' x ($c - 1)) . '/ \\' . "\n" . ('\_/ ' x ($c - 1)) . '\_/' . "\n") x $f; print "$s"; } local $/=undef; $entrada = ; @entrada = split /\s+/,$entrada; for($i=0; $i < @entrada; $i+=2) { print "\n" if $i > 0; &pinta_rusc($entrada[$i], $entrada[$i+1]); } ################################### #p0022.perl sub modifica { my $n = shift; return 0 if $n==0; return 1 if $n==1; return 8 if $n==8; return 6 if $n==9; return 9 if $n==6; return -1; } sub es_estrobogramatic { my $n = shift; my $ntmp = $n; my $nreves = 0; while (1 <= $ntmp) { my $v = &modifica($ntmp % 10); return 0 if $v < 0; $nreves = 10 * $nreves + $v; $ntmp /= 10; } return ($nreves == $n); } local $/=undef; $entrada = ; @entrada = split /\s+/,$entrada; $senar = 0; foreach (@entrada) { chomp; $ho_es = 'no'; if (&es_estrobogramatic($_)) { $senar += 1 if ($_ % 2); $ho_es = 'si'; } print "$_ ", $ho_es , " es estrobogramatic\n"; }; print "\nestrobogramatics senars: $senar\n"; ################################### #p0023.perl sub escriu_triangle { my $n = shift; foreach (1..$n) { my $espais = " " x (2*($n - $_)); my $s = $espais . " " . ('/\ ' x ($_-1)) . '/\\' . "\n"; $s .= $espais . ('/__\\' x $_) . "\n"; print "$s"; } } local $/=undef; $entrada = ; @entrada = split /\s+/,$entrada; $primer = 1; foreach (@entrada) { if ($primer) { $primer = 0; } else { print "\n" if $_ > 0; }; &escriu_triangle($_); }; ################################### # Fitxer de dades dat0021.dat 3 4 1 1 2 1 1 2 5 5 1 11 ################################### # Fitxer de dades dat0022.dat 1 2 8 11 101 111 1110 0 38 18 1881 44 69 96 99 123456789 969689696 ################################### # Fitxer de dades dat0023.dat 4 1 -5 3 2 11 7 -5 From alexm a alexm.org Fri Apr 17 04:19:46 2009 From: alexm a alexm.org (Alex Muntada) Date: Fri, 17 Apr 2009 13:19:46 +0200 Subject: [bcn-pm] oferta de feina Perl-Catalyst :-) In-Reply-To: <20090416224333.GA8248@entropia.lsi.upc.edu> References: <20090416224333.GA8248@entropia.lsi.upc.edu> Message-ID: <35064d940904170419x45025688jc3860e543a4662b3@mail.gmail.com> * Jordi Delgado : > Si a algu l'interessa els podria mostrar, ja que > voldria saber l'opinio dels experts. Basicament > el meu Perl es el d'un principiant i voldria saber > si es podria fer millor i/o mes idiomatic (que segur > que si). ++ Envia'ls a la llista si no et fa res, així tots aprenem i ens animem alhora, que darrerament estem molt callats ;-) -- Alex Muntada http://alexm.org/ From raimonster a gmail.com Fri Apr 17 05:04:05 2009 From: raimonster a gmail.com (Raimon Grau) Date: Fri, 17 Apr 2009 14:04:05 +0200 Subject: [bcn-pm] =?iso-8859-1?q?b=E9=2C_aqu=ED_van_els_programets=2E=2E?= =?iso-8859-1?q?=2E?= In-Reply-To: <20090417100009.GA9370@entropia.lsi.upc.edu> References: <20090417100009.GA9370@entropia.lsi.upc.edu> Message-ID: <1075ac710904170504y44cb3076v244b211e9f906335@mail.gmail.com> Hola, he fet el 21 a la meva manera (tampoc soc gaire més que un 'llama'). Intentaré explicar les diferències en el codi respecte el teu. #!/usr/bin/perl use strict; use warnings; sub printa_rusc { my ($f,$c) = @_; my $first = ' - ' x $c ; chop $first; # es carrega l'ultim caracter de la string print $first , "\n"; my $top_line = '/ \_' x $c; my $bottom_line = '\_/ ' x $c; chop $top_line; chop $bottom_line; foreach (1..$f) { print $top_line, "\n"; print $bottom_line, "\n"; } } while(){ printa_rusc($1,$2) if (/^(\d+) (\d+)$/); #comprovem que la entrada es valida } Per a rebre la entrada separada per linies, simplement utilitzant while() posa en $_ cada linia (amb el "\n" final inclos) a cada iteracio. Despres faig una comprovació per asegurar que a cada linia només hi han 2 numeros separats per 1 espai. Salut, Rai 2009/4/17 Jordi Delgado : > Hola, > > Els enunciats els teniu a: > http://www.lsi.upc.edu/~jdelgado/enunciats.tar.gz > > Es diuen P0021.ps, P0022.ps i P0023.ps > Ho dic perque les solucions van anomenades de la > mateixa manera. > > Les (meves) solucions son les que trobareu mes avall. > > Alguns comentaris sobre els programes: > > 1) els enunciats estan pensats per a que les dades es > llegeixin des de teclat, sense que hi hagi cap format > especific (mes enlla del que demana l'enunciat). Vull > dir que poden estar separades per espai, salt de linia, > etc. La idea es que es llegeixin amb 'cin >> ...' i > aquest ja fa aquesta feina. Com que jo no conec l'equivalent > en Perl, he fet aixo: >        local $/=undef; >        $entrada = ; >        @entrada = split /\s+/,$entrada; > que et deixa a @entrada les dades que un vol. Segur que es > pot fer millor, pero un "nivell Llama" arriba on arriba ;-) > > 2) L'examen es un parcial, per tant nomes poden fer > servir coneixements que els hem ensenyat fins ara. > Aixo exclou qualsevol estructura de dades no elemental > (excepte strings). > Fixeu-vos que els meus programes nomes utilitzen llistes > pel tema de l'entrada de dades. A la resta, nombres i > strings (escalars, a Perl). > > 3) El parcial tenia dos torns. Uns feien el P0021 i el P0022, > i el segon torn feia el P0023 i el P0024. No us poso el > P0024 perque no vaig tenir temps de fer-lo. Malgrat aixo, > demanava llegir l'entrada caracter a caracter. Aixo a Perl > com es faria? Aixo funciona: >        chomp($line = ); >        @chars = ($line =~ /[\+-\d]/ig); >        foreach (@chars) { >                print "$_\n"; >        }; > ja que els caracters que podiem trobar a l'entrada podien > ser nomes '-', '+' o qualsevol digit numeric. > Estic segur, pero, que es pot fer millor. > > 4) Finalment, despres dels programes, trobareu uns > fitxers de dades com a jocs de proves. Els programes > funcionen be amb aquests fitxers (cada un amb el seu > corresponent). > > I res mes. Lamento marejar-vos amb cosetes tan trivials. > Si em deixen, ja us comentare com va anar el parcial. Vull > dir quins van ser els resultats. > > Salut! > > Jordi > > > > ################################### > #p0021.perl > > sub pinta_rusc { >   my ($f, $c) = @_; >   print ' _  '  x ($c - 1) , " _\n"; >   $s = (('/ \_'  x ($c - 1)) . '/ \\' . "\n" . ('\_/ '  x ($c - 1)) > . '\_/' . "\n") x $f; >   print "$s"; > } > > local $/=undef; > $entrada = ; > @entrada = split /\s+/,$entrada; > for($i=0; $i < @entrada; $i+=2) { >   print "\n" if $i > 0; >   &pinta_rusc($entrada[$i], $entrada[$i+1]); > } > > > ################################### > #p0022.perl > > sub modifica { >   my $n = shift; >   return 0 if $n==0; >   return 1 if $n==1; >   return 8 if $n==8; >   return 6 if $n==9; >   return 9 if $n==6; >   return -1; > } > > sub es_estrobogramatic { >   my $n = shift; >   my $ntmp = $n; >   my $nreves = 0; >   while (1 <= $ntmp) { >       my $v = &modifica($ntmp % 10); >       return 0 if  $v < 0; >       $nreves = 10 * $nreves + $v; >       $ntmp /= 10; >   } >   return ($nreves == $n); > } > > local $/=undef; > $entrada = ; > @entrada = split /\s+/,$entrada; > $senar = 0; > foreach (@entrada) { >   chomp; >   $ho_es = 'no'; >   if (&es_estrobogramatic($_)) { >       $senar += 1  if ($_ % 2); >       $ho_es = 'si'; >   } >   print "$_ ", $ho_es , " es estrobogramatic\n"; > }; > print "\nestrobogramatics senars: $senar\n"; > > ################################### > #p0023.perl > > sub escriu_triangle { >   my $n = shift; >   foreach (1..$n) { >       my $espais = " " x (2*($n - $_)); >       my $s = $espais . " " . ('/\  ' x ($_-1)) . '/\\' . "\n"; >       $s .= $espais . ('/__\\' x $_) . "\n"; >       print "$s"; >   } > } > > local $/=undef; > $entrada = ; > @entrada = split /\s+/,$entrada; > $primer = 1; > foreach (@entrada) { >   if ($primer) { $primer = 0; } >   else { print "\n" if $_ > 0; }; >   &escriu_triangle($_); > }; > > ################################### > # Fitxer de dades dat0021.dat > 3 4 > 1 1 > 2 1 1 2 5 5 > 1 11 > > ################################### > # Fitxer de dades dat0022.dat > 1 2 8 > 11 > > 101 > 111 1110             0 > 38 18 > 1881 > 44 > 69 > 96 > 99 > 123456789   969689696 > > ################################### > # Fitxer de dades dat0023.dat > 4 > 1 -5 3 2 > 11 7 > -5 > _______________________________________________ > llista dels Barcelona-pm > Barcelona-pm a pm.org > http://mail.pm.org/mailman/listinfo/barcelona-pm > BCN Perl Mongers: http://barcelona.pm.org From jdelgado a lsi.upc.edu Fri Apr 17 06:11:37 2009 From: jdelgado a lsi.upc.edu (Jordi Delgado) Date: Fri, 17 Apr 2009 15:11:37 +0200 Subject: [bcn-pm] =?iso-8859-1?q?b=E9=2C_aqu=ED_van_els_programets=2E=2E?= =?iso-8859-1?q?=2E?= In-Reply-To: <1075ac710904170504y44cb3076v244b211e9f906335@mail.gmail.com> References: <20090417100009.GA9370@entropia.lsi.upc.edu> <1075ac710904170504y44cb3076v244b211e9f906335@mail.gmail.com> Message-ID: <20090417131136.GA10108@entropia.lsi.upc.edu> Hola, Gracies Rai. L'unic inconvenient es que, malgrat a l'enunciat et mostrin exemples d'entrades amb dos enters separats amb espais, en lloc et diuen que hagi de ser aixi. Per tant, has de tenir en compte totes les possibilitats (per aixo els fitxers de prova tenen la pinta que tenen). Salut! Jordi > Per a rebre la entrada separada per linies, simplement utilitzant > while() posa en $_ cada linia (amb el "\n" final inclos) a > cada iteracio. > Despres faig una comprovació per asegurar que a cada linia només hi > han 2 numeros separats per 1 espai. From raimonster a gmail.com Fri Apr 17 09:05:08 2009 From: raimonster a gmail.com (Raimon Grau) Date: Fri, 17 Apr 2009 18:05:08 +0200 Subject: [bcn-pm] =?iso-8859-1?q?b=E9=2C_aqu=ED_van_els_programets=2E=2E?= =?iso-8859-1?q?=2E?= In-Reply-To: <20090417131136.GA10108@entropia.lsi.upc.edu> References: <20090417100009.GA9370@entropia.lsi.upc.edu> <1075ac710904170504y44cb3076v244b211e9f906335@mail.gmail.com> <20090417131136.GA10108@entropia.lsi.upc.edu> Message-ID: <1075ac710904170905h321014fan77a8153e46ad5e89@mail.gmail.com> Osti, això de passar olímpicament dels enunciats és un clàssic en mi. :) La lectura en diagonal no serveix pels examens.... Per a llegir els elements vinguin com vinguin, jo no conec cap altre manera de fer-ho que no sigui fent un slurp de tot plegat... No sé si existeix l'equivalent al cin de c++. Esperarem a veure que diuen els experts. Rai 2009/4/17 Jordi Delgado : > Hola, > > Gracies Rai. L'unic inconvenient es que, malgrat a l'enunciat > et mostrin exemples d'entrades amb dos enters separats amb espais, > en lloc et diuen que hagi de ser aixi. Per tant, has de tenir > en compte totes les possibilitats (per aixo els fitxers de prova > tenen la pinta que tenen). > > Salut! > > Jordi > >> Per a rebre la entrada separada per linies, simplement utilitzant >> while()  posa en $_ cada linia (amb el "\n" final inclos) a >> cada iteracio. >> Despres faig una comprovació per asegurar que a cada linia només hi >> han 2 numeros separats per 1 espai. > _______________________________________________ > llista dels Barcelona-pm > Barcelona-pm a pm.org > http://mail.pm.org/mailman/listinfo/barcelona-pm > BCN Perl Mongers: http://barcelona.pm.org From alexm a alexm.org Fri Apr 17 09:16:51 2009 From: alexm a alexm.org (Alex Muntada) Date: Fri, 17 Apr 2009 18:16:51 +0200 Subject: [bcn-pm] =?utf-8?b?YsOpLCBhcXXDrSB2YW4gZWxzIHByb2dyYW1ldHMuLi4=?= In-Reply-To: <20090417100009.GA9370@entropia.lsi.upc.edu> References: <20090417100009.GA9370@entropia.lsi.upc.edu> Message-ID: <35064d940904170916y369f290bh1dccacaf2924dd47@mail.gmail.com> * Jordi Delgado : > en Perl, he fet aixo: >        local $/=undef; >        $entrada = ; >        @entrada = split /\s+/,$entrada; A mi tampoc se m'acut res millor que un slurp, potser amb Perl6::Slurp, si voleu, enlloc de fer-ho tocant $/ però mireu el que diu el perldoc perlvar: Remember: the value of $/ is a string, not a regex. awk has to be better for something. :-) > demanava llegir l'entrada caracter a caracter. Aixo a Perl > com es faria? perldoc -f getc > I res mes. Lamento marejar-vos amb cosetes tan trivials. Jo trobo que està bé aquest tipus de missatges per animar una mica l'ambient. Segueixo mirant el teu codi... ;-) -- Alex Muntada http://alexm.org/ From raimonster a gmail.com Fri Apr 17 13:02:41 2009 From: raimonster a gmail.com (Raimon Grau) Date: Fri, 17 Apr 2009 22:02:41 +0200 Subject: [bcn-pm] =?iso-8859-1?q?b=E9=2C_aqu=ED_van_els_programets=2E=2E?= =?iso-8859-1?q?=2E?= In-Reply-To: <35064d940904170916y369f290bh1dccacaf2924dd47@mail.gmail.com> References: <20090417100009.GA9370@entropia.lsi.upc.edu> <35064d940904170916y369f290bh1dccacaf2924dd47@mail.gmail.com> Message-ID: <1075ac710904171302s66dd71am525b11ce3a3d144d@mail.gmail.com> He refet el 21 en perl6. rakudo encara no té manera de fer un slurp de la STDIN, o sigui que la entrada ha de ser de 2 numeros per linia. #-----------8<----------------- #!/tmp/rakudo/perl6 sub printa_rusc($f, $c){ my $first = ' - ' x $c ; $first.chop.say; #chop no es 'destructiva' my $top_line = '/ \_' x $c; my $bottom_line = '\_/ ' x $c; for 1..$f { $top_line.chop.say; $bottom_line.chop.say; } } while my $lin = =$*IN { #WTF?! my @arr=$lin.split(/\s+/); @arr.perl.say; #.perl es l'equivalent a Data::Dumper::Dumper if 2==@arr.elems { printa_rusc(@arr[0], @arr[1]); #no pas $arr[0] } else { "A cagar".say; } } # vim: set tabstop=4 shiftwidth=4 foldmethod=marker ft=perl: ## #------------------8<-------------------------- Salut, 2009/4/17 Alex Muntada : > * Jordi Delgado : > >> en Perl, he fet aixo: >>        local $/=undef; >>        $entrada = ; >>        @entrada = split /\s+/,$entrada; > > A mi tampoc se m'acut res millor que un slurp, > potser amb Perl6::Slurp, si voleu, enlloc de fer-ho > tocant $/ però mireu el que diu el perldoc perlvar: > > Remember: the value of $/ is a string, not a regex. > awk has to be better for something. :-) > >> demanava llegir l'entrada caracter a caracter. Aixo a Perl >> com es faria? > > perldoc -f getc > >> I res mes. Lamento marejar-vos amb cosetes tan trivials. > > Jo trobo que està bé aquest tipus de missatges per > animar una mica l'ambient. > > Segueixo mirant el teu codi... ;-) > > -- > Alex Muntada > http://alexm.org/ > _______________________________________________ > llista dels Barcelona-pm > Barcelona-pm a pm.org > http://mail.pm.org/mailman/listinfo/barcelona-pm > BCN Perl Mongers: http://barcelona.pm.org -- Rai From jdelgado a lsi.upc.edu Fri Apr 17 16:43:21 2009 From: jdelgado a lsi.upc.edu (Jordi Delgado) Date: Sat, 18 Apr 2009 01:43:21 +0200 Subject: [bcn-pm] =?iso-8859-1?q?b=E9=2C_aqu=ED_van_els_programets=2E=2E?= =?iso-8859-1?q?=2E?= In-Reply-To: <35064d940904170916y369f290bh1dccacaf2924dd47@mail.gmail.com> References: <20090417100009.GA9370@entropia.lsi.upc.edu> <35064d940904170916y369f290bh1dccacaf2924dd47@mail.gmail.com> Message-ID: <20090417234320.GA18745@entropia.lsi.upc.edu> Ei, > > demanava llegir l'entrada caracter a caracter. Aixo a Perl > > com es faria? > > perldoc -f getc oops! un no hauria d'oblidar les arrels tan aviat, que el C va haver una epoca que va ser la meva llengua materna :-) Salut! Jordi From jluis a escomposlinux.org Thu Apr 30 07:17:38 2009 From: jluis a escomposlinux.org (Jose Luis Perez Diez) Date: Thu, 30 Apr 2009 16:17:38 +0200 Subject: [bcn-pm] hoy toca Reunion Message-ID: <200904301617.39580.jluis@escomposlinux.org> Comentar que me pareció raro que el problema de P0022.ps nadie usase la representacion grafica del numero ya que el enunciado no nos comenta en que base estan escritos. Aviso para Gemologos Estoy leiendo un articulo donde comentan que para usar rails con apache lo mejorcito es passenger (de phusion 2008) que ademas se integra bastante bien con Capistrano. From fxn a hashref.com Thu Apr 30 07:21:45 2009 From: fxn a hashref.com (Xavier Noria) Date: Thu, 30 Apr 2009 16:21:45 +0200 Subject: [bcn-pm] hoy toca Reunion In-Reply-To: <200904301617.39580.jluis@escomposlinux.org> References: <200904301617.39580.jluis@escomposlinux.org> Message-ID: <31a130740904300721jaaa7c15vacc896f64a1ca4e1@mail.gmail.com> 2009/4/30 Jose Luis Perez Diez : Jo vindre, potser un xic tard pero em passare. > Aviso para Gemologos > > Estoy leiendo un articulo donde comentan que para usar rails con apache lo > mejorcito es passenger (de phusion 2008) que ademas se integra bastante bien > con Capistrano. Es correcte, REE+ Apache + Passenger es la plataforma de produccio de facto avui en dia. From alexm a alexm.org Thu Apr 30 08:32:02 2009 From: alexm a alexm.org (Alex Muntada) Date: Thu, 30 Apr 2009 17:32:02 +0200 Subject: [bcn-pm] hoy toca Reunion In-Reply-To: <31a130740904300721jaaa7c15vacc896f64a1ca4e1@mail.gmail.com> References: <200904301617.39580.jluis@escomposlinux.org> <31a130740904300721jaaa7c15vacc896f64a1ca4e1@mail.gmail.com> Message-ID: <35064d940904300832w7e0ceb0ciaf7b55de585edc29@mail.gmail.com> * Xavier Noria : > Jo vindre, potser un xic tard pero em passare. Doncs jo aquest cop no vindré, ens veiem a la propera. Records a tots! -- Alex Muntada http://alexm.org/ From jdelgado a lsi.upc.edu Thu Apr 30 14:22:53 2009 From: jdelgado a lsi.upc.edu (Jordi Delgado) Date: Thu, 30 Apr 2009 23:22:53 +0200 Subject: [bcn-pm] Reunio d'avui In-Reply-To: <35064d940904300832w7e0ceb0ciaf7b55de585edc29@mail.gmail.com> References: <200904301617.39580.jluis@escomposlinux.org> <31a130740904300721jaaa7c15vacc896f64a1ca4e1@mail.gmail.com> <35064d940904300832w7e0ceb0ciaf7b55de585edc29@mail.gmail.com> Message-ID: <20090430212252.GA25373@entropia.lsi.upc.edu> Hola, Links que han sortit avui a la conversa: Els llibres: Dealers of Lightning: Xerox PARC and the Dawn of the Computer Age Michael A. Hiltzik http://www.amazon.com/Dealers-Lightning-Xerox-PARC-Computer/dp/0887309895/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1229600634&sr=8-1 The Dream Machine: J.C.R. Licklider and the Revolution That Made Computing Personal Mitchell Waldrop http://www.amazon.com/Dream-Machine-Licklider-Revolution-Computing/dp/014200135X/ref=sr_1_1?ie=UTF8&s=books&qid=1229600848&sr=1-1 Els esdeveniments del Citilab: Dia d'Scratch: http://citilab.eu/scratch-day Programa'09: http://citilab.eu/programa09 I el lloc web del que fem al Citilab: http://smalltalk.cat Comunitat Smalltalk del Citilab http://smalltalk.cat/gts (si, si, aquell es en Sergio Arias, vell monger... :-)) I finalment, ara no recordo si ho vaig posar aqui, pero aqui va, Live coding! Hacking Perl in Nightclubs http://www.perl.com/pub/a/2004/08/31/livecode.html Impromptu: http://impromptu.moso.com.au/ aquest lloc te unes demos impressionants. Aneu a http://impromptu.moso.com.au/gallery.html i veieu qualsevol de les coses que fa el A. Sorensen Tambe podeu buscar live coding al youtube. Crec que aixo es tot! Salut! Jordi