From e9427749 at stud4.tuwien.ac.at Sat May 3 14:43:48 2008 From: e9427749 at stud4.tuwien.ac.at (Josef Schmid) Date: Sat, 03 May 2008 23:43:48 +0200 Subject: [Vienna-pm] Escapen von Shellparametern In-Reply-To: <200804300835.58663.daxim@cpan.org> References: <4815D266.5010004@foo.at> <48161510.6080903@stud4.tuwien.ac.at> <48175686.20201@stud4.tuwien.ac.at> <200804300835.58663.daxim@cpan.org> Message-ID: <481CDC94.8050004@stud4.tuwien.ac.at> Hi, ?! Lars D?????? ??? ?: > Josef Schmid ?: >> IO::Plumbing scheint auch recht nett zu sein. >> Und IPC::Run > Und String::ShellQuote. Psssst!! Man erz?hlt doch den Leuten ? das wonach sie fragen, sondern - wenn man nett ist - das was sie brauchen! ? Und Proc::SafePipe vom selben Autor ist doch viel passender. Achja, eins meiner Lieblingsmodule kann das eigentlich auch, und ich habe es glatt vergessen zu erw?hnen: ? P?e?r?l?6?:?:?S?l?u?r?p? z.B.: use Perl6::Slurp; my $content = slurp '-|', 'tail', -20, $filename; ?, Josef From gg at urxn.at Sat May 3 16:09:39 2008 From: gg at urxn.at (Gerhard Gonter) Date: Sun, 04 May 2008 01:09:39 +0200 Subject: [Vienna-pm] TechSocialMeet am 5.5.2008 In-Reply-To: <20080419071415.GA9200@d610.chello.at> References: <20080419071415.GA9200@d610.chello.at> Message-ID: <481CF0B3.5030404@urxn.at> Thomas Klausner wrote: > Das naechste monatliche Meeting findet am 5.5., 19:00 statt. > (Gerhard, kannst du den Raum bitte wieder reservieren?) Der Raum ist reserviert. mfg, GG From michael.kroell at uibk.ac.at Sun May 4 13:45:45 2008 From: michael.kroell at uibk.ac.at (=?ISO-8859-1?Q?Michael_Kr=F6ll?=) Date: Sun, 04 May 2008 22:45:45 +0200 Subject: [Vienna-pm] TechSocialMeet am 5.5.2008 In-Reply-To: <481CF0B3.5030404@urxn.at> References: <20080419071415.GA9200@d610.chello.at> <481CF0B3.5030404@urxn.at> Message-ID: <481E2079.6020706@uibk.ac.at> Gerhard Gonter wrote: > Thomas Klausner wrote: > >> Das naechste monatliche Meeting findet am 5.5., 19:00 statt. >> (Gerhard, kannst du den Raum bitte wieder reservieren?) > > Der Raum ist reserviert. F?r 20:30 ist im Tin-Tan, Florianigasse (1 oder 2) auf vienna.pm reserviert. lg, michael -- 063A F25E B064 A98F A479 1690 78CD D023 5E2A 6688 http://zis.uibk.ac.at/.m/uibk.ac.at_pgp_pubkey.asc From jozef at kutej.net Mon May 5 00:36:04 2008 From: jozef at kutej.net (Jozef Kutej) Date: Mon, 05 May 2008 09:36:04 +0200 Subject: [Vienna-pm] TechSocialMeet am 5.5.2008 In-Reply-To: <4816E889.1090802@uibk.ac.at> References: <20080419071415.GA9200@d610.chello.at> <4816E889.1090802@uibk.ac.at> Message-ID: <481EB8E4.4010701@kutej.net> Michael Kr?ll wrote: > F?r eine potentielle Reservierung dort - wer kommt denn aller? > Ich komme auch. Jozef. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 252 bytes Desc: OpenPGP digital signature Url : http://mail.pm.org/pipermail/vienna-pm/attachments/20080505/400b1e05/attachment.bin From gooly at gmx.at Mon May 5 04:34:30 2008 From: gooly at gmx.at (Calli) Date: Mon, 5 May 2008 13:34:30 +0200 Subject: [Vienna-pm] Nachtrag zu Escapen von Shellparametern: Fehler oder Feature? In-Reply-To: <48161510.6080903@stud4.tuwien.ac.at> References: <4815D266.5010004@foo.at> <48160841.1070607@foo.at> <48161510.6080903@stud4.tuwien.ac.at> Message-ID: <200805051334.30779.gooly@gmx.at> Am Montag, 28. April 2008 schrieb Josef Schmid: > Stefan Weiss schrieb: > ich glaub ab 5.6 (oder ab 5.8?) > my $result=do { > open(my $fh,'-|','faxjob','--from',$from,'--faxnum',$num,...) or > die; local $/; <$fh> > }; > hab das mal versucht mit `curl -I` - hmm: also aus der Schleife 1 (s.u) liefert die Zeile open(my $fh,'-|','curl', '-I',$u ) auf der Konsole einen unerw?nschten overhead: % Total % Received % Xferd Average Speed .. ... 0 20891 0 0 ... Die Gleiche kommt bei Schleife 2 (s.u.) mit Zeile: my $size = $1 if ( `curl -I $u` =~ /.+?Length:\D*?(\d+)\D*/g ); Mit einem 2>/dev/null kann ich den verhindern, aber nur bei version 2 bzw. Schleife 3: my $size = $1 if ( `curl -I $u 2>/dev/null` =~ /.+?Length:\D*?(\d+)\D*/ ); Hier open(my $fh,'-|','curl', '-I',$u,'2>/dev/null/' ) or die "uups"; klappt das nicht - warum? # die Schleife 1 foreach my $u ( @urls ) { my $size = do {# , '|','grep','Length' open(my $fh,'-|','curl', '-I',$u ) or die "uups"; local $/; local $_ = <$fh>; /.+?Length:\D*?(\d+)\D*/; $1; }; print "$u => $size b\n"; last; } else { print "\n$u => " } } # Schleife 2 foreach my $u ( @urls ) { my $size = $1 if ( `curl -I $u` =~ /.+?Length:\D*?(\d+)\D*/g ); print "$u => $size b\n"; } # Schleife 3 foreach my $u ( @urls ) { my $size = $1 if ( `curl -I $u 2>/dev/null` =~ /.+?Length:\D*?(\d+)\D*/ ); print "$u => $size b\n"; } From lt at toetsch.at Mon May 5 04:51:31 2008 From: lt at toetsch.at (Leopold Toetsch) Date: Mon, 5 May 2008 13:51:31 +0200 Subject: [Vienna-pm] Nachtrag zu Escapen von Shellparametern: Fehler oder Feature? In-Reply-To: <200805051334.30779.gooly@gmx.at> References: <4815D266.5010004@foo.at> <48161510.6080903@stud4.tuwien.ac.at> <200805051334.30779.gooly@gmx.at> Message-ID: <200805051351.31110.lt@toetsch.at> Am Montag, 5. Mai 2008 13:34 schrieb Calli: [ stderr output ] > Mit einem 2>/dev/null kann ich den verhindern, aber nur bei version 2 > bzw. Schleife 3: > ?my $size = $1 > ? ? ? ? ? ? ? if ( `curl -I $u 2>/dev/null` > ? ? ? ? ? ? ? ? ? ? ?=~ /.+?Length:\D*?(\d+)\D*/ ); > > Hier > ? ? ?open(my $fh,'-|','curl', '-I',$u,'2>/dev/null/' ) or die "uups"; > klappt das nicht - warum? In der ersten Variante wird eine Subshell erzeugt, in der 2. nicht. S. auch: $ perldoc perlipc /Safe Pipe Opens leo From e9427749 at stud4.tuwien.ac.at Mon May 5 05:30:24 2008 From: e9427749 at stud4.tuwien.ac.at (Josef Schmid) Date: Mon, 05 May 2008 14:30:24 +0200 Subject: [Vienna-pm] =?utf-8?q?Zus=C3=A4tzlicher_Nachtrag_zu_Escapen_von_S?= =?utf-8?q?hellparametern=3A_Fehler_oder_Feature=3F?= In-Reply-To: <200805051351.31110.lt@toetsch.at> References: <4815D266.5010004@foo.at> <48161510.6080903@stud4.tuwien.ac.at> <200805051334.30779.gooly@gmx.at> <200805051351.31110.lt@toetsch.at> Message-ID: <481EFDE0.8010106@stud4.tuwien.ac.at> Leopold Toetsch schrieb: > Am Montag, 5. Mai 2008 13:34 schrieb Calli: > > [ stderr output ] > >> Mit einem 2>/dev/null kann ich den verhindern, aber nur bei version 2 >> bzw. Schleife 3: >> my $size = $1 >> if ( `curl -I $u 2>/dev/null` >> =~ /.+?Length:\D*?(\d+)\D*/ ); >> >> Hier >> open(my $fh,'-|','curl', '-I',$u,'2>/dev/null/' ) or die "uups"; >> klappt das nicht - warum? > > In der ersten Variante wird eine Subshell erzeugt, in der 2. nicht. S. auch: > > $ perldoc perlipc > > /Safe Pipe Opens 1.) Es gibt eine Menge von CPAN-Modulen f?r das saugen von Webseiten. Ich glaub sogar einiges in den Core-Modulen. Also ohne curl. 2.) n?chster L?sungsansatz: curl kennt die Option --silent 3.) Die Standard-Dateideskriptoren werden an den Kindprozess vererbt. also nach dem "do {" ein "local *STDERR=IO::File('>','/dev/null');" einf?gen, sollte auch helfen. pfiateng, Josef From gooly at gmx.at Mon May 5 06:55:16 2008 From: gooly at gmx.at (Calli) Date: Mon, 5 May 2008 15:55:16 +0200 Subject: [Vienna-pm] =?utf-8?q?Zus=C3=A4tzlicher_Nachtrag_zu_Escapen_von_S?= =?utf-8?q?hellparametern=3A_Fehler_oder_Feature=3F?= In-Reply-To: <481EFDE0.8010106@stud4.tuwien.ac.at> References: <4815D266.5010004@foo.at> <200805051351.31110.lt@toetsch.at> <481EFDE0.8010106@stud4.tuwien.ac.at> Message-ID: <200805051555.16938.gooly@gmx.at> Am Montag, 5. Mai 2008 schrieb Josef Schmid: > Leopold Toetsch schrieb: > > Am Montag, 5. Mai 2008 13:34 schrieb Calli: > > > > [ stderr output ] > > > >> Mit einem 2>/dev/null kann ich den verhindern, aber nur bei > >> version 2 bzw. Schleife 3: > >> my $size = $1 > >> if ( `curl -I $u 2>/dev/null` > >> =~ /.+?Length:\D*?(\d+)\D*/ ); > >> > >> Hier > >> open(my $fh,'-|','curl', '-I',$u,'2>/dev/null/' ) or die > >> "uups"; klappt das nicht - warum? > > > > In der ersten Variante wird eine Subshell erzeugt, in der 2. nicht. > > S. auch: > > > > $ perldoc perlipc > > > > /Safe Pipe Opens > > 1.) Es gibt eine Menge von CPAN-Modulen f?r das saugen von Webseiten. > Ich glaub sogar einiges in den Core-Modulen. > Also ohne curl. ja aber auch nach (ein bi?chen) cpan-eln, hab ich in den abgefragten headers keine File-Size gefunden - und curl ist ganz einfach :) > 2.) n?chster L?sungsansatz: curl kennt die Option --silent ok, das hatt ich in man ?berlesen, das geht. > 3.) Die Standard-Dateideskriptoren werden an den Kindprozess vererbt. > also nach dem "do {" ein "local > *STDERR=IO::File('>','/dev/null');" einf?gen, sollte auch helfen. das wird dann immer umst?dlicher.. Frage zu den backticks, bzw system und exec: welches 'schl?sseloch' f?r Unerw?nschte mit Unerw?nschtem ?ffen die auf welche Weise eigentlich? Oder anders gefragt, wann und wo w?rde es damit gef?hrlich werden? Danke Calli From hjp-vienna-pm-list at hjp.at Mon May 5 07:31:37 2008 From: hjp-vienna-pm-list at hjp.at (Peter J. Holzer) Date: Mon, 5 May 2008 16:31:37 +0200 Subject: [Vienna-pm] =?iso-8859-1?q?Zus=E4tzlicher_Nachtrag_zu_Escapen_von?= =?iso-8859-1?q?_Shellparametern=3A_Fehler_oder_Feature=3F?= In-Reply-To: <200805051555.16938.gooly@gmx.at> References: <4815D266.5010004@foo.at> <200805051351.31110.lt@toetsch.at> <481EFDE0.8010106@stud4.tuwien.ac.at> <200805051555.16938.gooly@gmx.at> Message-ID: <20080505143137.GC5922@hjp.at> On 2008-05-05 15:55:16 +0200, Calli wrote: > Frage zu den backticks, bzw system und exec: welches 'schl?sseloch' f?r > Unerw?nschte mit Unerw?nschtem ?ffen die auf welche Weise eigentlich? > Oder anders gefragt, wann und wo w?rde es damit gef?hrlich werden? Stell Dir vor, das Script, das den URL checkt, ist ein CGI-Script (oder mod_perl, oder suid, oder ...) und fragt den Benutzer nach dem URL. Der Benutzer gibt ein: http://www.example.net; rm -rf / hp -- _ | Peter J. Holzer | It took a genius to create [TeX], |_|_) | Sysadmin WSR | and it takes a genius to maintain it. | | | hjp at hjp.at | That's not engineering, that's art. __/ | http://www.hjp.at/ | -- David Kastrup in comp.text.tex -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: Digital signature Url : http://mail.pm.org/pipermail/vienna-pm/attachments/20080505/4c3f46c8/attachment.bin From rgiersig at cpan.org Mon May 5 07:41:46 2008 From: rgiersig at cpan.org (Roland Giersig) Date: Mon, 05 May 2008 16:41:46 +0200 Subject: [Vienna-pm] Hausbackene Syntaxerweiterung mit Perl5? In-Reply-To: <20080430153148.GB5315@mama.devc.at> References: <20080429171104.GB16597@mama.devc.at> <20080429202713.GB24242@d610.chello.at> <20080430035004.GA28390@mama.devc.at> <20080430062023.GD24242@d610.chello.at> <20080430052513.GA3526@mama.devc.at> <481843CC.30607@cpan.org> <20080430100558.GA13029@mama.devc.at> <4818818B.7000708@cpan.org> <20080430152133.GA5315@mama.devc.at> <20080430153148.GB5315@mama.devc.at> Message-ID: <481F1CAA.7080003@cpan.org> Mein Beileid, wenn das dein Job ist, f?r .NET eine Umsetzung zu finden... Das gr??te Problem scheint zu sein, dass die Listen-Operatoren in Perl rechts-nach-links funktionieren und .NET OO-m??ig links-nach-rechts, also verkettete Methodenaufrufe. Aber das kann man nachbilden: @cleverlies = from(@ListOfObjects) ->where({$_->score() > 85}) ->select({$_->matrikelnr()}); from() baut ein Objekt aus den Argumenten und die Methoden f?hren dann die Operationen durch, wobei sie Code-Refs als Parameter nehmen. Damit l?sst sich alles nachbilden, da .NET eine normale OO-Syntax hat. Leider gibts noch kein Object::DotNet::Query auf CPAN... Falls es nicht so strikt sein muss, kommt man wie gesagt mit dem Umdrehen der Reihenfolge und Aliasen f?r grep und map wahrscheinlich recht weit, insbesonders wenn man List::Utils einbezieht. LG, Roland Robert Barta wrote: > On Wed, Apr 30, 2008 at 05:21:33PM +0200, Robert Barta wrote: >> On Wed, Apr 30, 2008 at 04:26:19PM +0200, Roland Giersig wrote: >>> und wie schaut das aus? >>> >>> @cleverlies = select {$_->{matrikelnr}} where {$_->{marks} > 85} from >>> @students; >>> >>> extra bonuspunkte f?r diejenigen, die jetzt lachend am boden liegen, >>> weil sie die implementation von select, where und from schon vor augen >>> haben... ;o) >> Ja. Lustig. ;-/ > > Fuer alle, die lustig aus der Huefte schiessen: Es geht um diese > Liste von Operatoren: > > http://download.microsoft.com/download/5/8/6/5868081c-68aa-40de-9a45-a3803d8134b8/standard_query_operators.doc > > \rho > >>> Robert Barta wrote: >>>> On Wed, Apr 30, 2008 at 12:02:52PM +0200, Roland Giersig wrote: >>>>> Oder das alles nur per SQL abhandeln, mit DBI und einer in-memory SQLite >>>>> DB im Hintergrund. >>>> Um SQL geht's eigentlich nicht... >>>> >>>>> Der Punkt ist: f?r wen sind diese Syntax-?berlegungen? F?r einen >>>>> Maintainer, der mehr SQL als Perl versteht? >>>> ... sondern um einen Weg (persistente) Collections ueber _ein und >>>> denselben_ Mechanismus anzusprechen. D.h. bei >>>> >>>> @collection = from $s in @students ..... >>>> >>>> ist es fuer den Programmierer egal, ob die Studis aus einer SQL >>>> Datenkrank, aus dem memory oder einem XML Dokument, oder einem RDF >>>> Graphen geholt werden. >>>> >>>>> Dem tust du keinen Gefallen, >>>>> wenn du ihm SQL-ishe Perl-Syntax bietest, die dann doch nicht genau SQL >>>>> ist. Da bist du besser dran, wenn du ihm einen Vereinfachungs-Wrapper um >>>>> DBI schreibst, sodass die Operationen echtes SQL sind. >>>> Right. Aber fuer das gibt's ja schon nen Haufen. >>>> >>>> \rho >>>> >>>>> Robert Barta wrote: >>>>>> On Wed, Apr 30, 2008 at 08:20:23AM +0200, Thomas Klausner wrote: >>>>>>>> auf in-memory Objekte, relational DBs, XML structures, und - das >>>>>>>> interessiert mich hier hauptsaechlich - auf Topic Map und RDF KBs >>>>>>>> zugreifen kann. LINQ ist nun Teil von C# (das langsam Perl6 immer >>>>>>>> aehnlicher wird, naja langsam). >>>>>>> Naja, in Perl ist dieser Zugriffsmechanismus halt map, grep, each, etc, >>>>>>> mit dem man auf in-memory Objekte, DBs, XML, ... zugreift. >>>>>> D.h., ich koennte das 1) einmal sehr Perl-ish angehen und etwas an >>>>>> >>>>>> Tie::Array >>>>>> >>>>>> binden. Oder ... >>>>>> >>>>>>> In deinem konkreten Fall: >>>>>>> >>>>>>>> my @students = ....; >>>>>>>> my @cleverlies = from $s in @students >>>>>>>> where $s->{marks} > 85 >>>>>>>> select $s->{matrikelnr}; >>>>>>> koenntest du schon eine sub from { } machen, die die Parameterliste >>>>>>> durchgeht, andere "keywords" wie 'where' und 'select' identifziert, >>>>>> .... 2) 'from' in the namespace laden, oder .... >>>>>> >>>>>>> From: Stefan Weiss >>>>>>> Um deinen Sourcecode so umzuschreiben, dass nachher Perl rauskommt, >>>>>>> schau dir mal die Source Filter in "perldoc perlfilter" an, oder das >>>>>>> Modul Filter::Simple. >>>>>> .... 3) ein Praeprozessor einschieben. >>>>>> >>>>>> Klingt alles gangbar. Ich haette auch nicht notfalls vor >>>>>> >>>>>> @collection = new LINQ::TM ('from ...'); >>>>>> >>>>>> zurueckgeschreckt. >>>>>> >>>>>> >>>>>> 3) Bei preprocessors habe ich immer das Problem, dass sie nicht >>>>>> leicht immer miteinander kombinierbar sind. >>>>>> >>>>>> 2) mit dem 'from' als Routine muss man analysieren, ob die Parameterliste >>>>>> mit der Syntax, die ich erreichen will, halbwegs kompatibel ist. Bei >>>>>> >>>>>> $s->{marks} > 85 >>>>>> >>>>>> hab ich schon das Problem, dass Perl das fuer mich auswerten will, bevor >>>>>> 'from' zum Zug kommt. >>>>>> >>>>>> 1) Tie::Array ist halt SEHR perl-ish. Not bad per se, aber nicht Sinn der >>>>>> Uebung hier. >>>>>> >>>>>> >>>>>> >>>>>> \rho >>>>>> >>>>>> _______________________________________________ >>>>>> Vienna-pm mailing list >>>>>> Vienna-pm at pm.org >>>>>> http://mail.pm.org/mailman/listinfo/vienna-pm >>>>>> >>>>> _______________________________________________ >>>>> Vienna-pm mailing list >>>>> Vienna-pm at pm.org >>>>> http://mail.pm.org/mailman/listinfo/vienna-pm >>>>> >>> _______________________________________________ >>> Vienna-pm mailing list >>> Vienna-pm at pm.org >>> http://mail.pm.org/mailman/listinfo/vienna-pm >>> >> _______________________________________________ >> Vienna-pm mailing list >> Vienna-pm at pm.org >> http://mail.pm.org/mailman/listinfo/vienna-pm >> > From e9427749 at stud4.tuwien.ac.at Mon May 5 07:55:54 2008 From: e9427749 at stud4.tuwien.ac.at (Josef Schmid) Date: Mon, 05 May 2008 16:55:54 +0200 Subject: [Vienna-pm] =?utf-8?q?Zus=C3=A4tzlicher_Nachtrag_zu_Escapen_von_S?= =?utf-8?q?hellparametern=3A_Fehler_oder_Feature=3F?= In-Reply-To: <200805051555.16938.gooly@gmx.at> References: <4815D266.5010004@foo.at> <200805051351.31110.lt@toetsch.at> <481EFDE0.8010106@stud4.tuwien.ac.at> <200805051555.16938.gooly@gmx.at> Message-ID: <481F1FFA.9020700@stud4.tuwien.ac.at> Nochmals hi! Calli schrieb: > Am Montag, 5. Mai 2008 schrieb Josef Schmid: >> Leopold Toetsch schrieb: [...] >>> S. auch: >>> $ perldoc perlipc >>> /Safe Pipe Opens >> 1.) Es gibt eine Menge von CPAN-Modulen f?r das saugen von Webseiten. >> Ich glaub sogar einiges in den Core-Modulen. >> Also ohne curl. > ja aber auch nach (ein bi?chen) cpan-eln, hab ich in den abgefragten > headers keine File-Size gefunden - und curl ist ganz einfach :) Falls nur Webseiten, reicht z.B.: use LWP::UserAgent; my $ua=new LWP::UserAgent; my $size=$ua->head($url)->headers->content_length; >> 2.) n?chster L?sungsansatz: curl kennt die Option --silent > ok, das hatt ich in man ?berlesen, das geht. Mal ehrlich, es w?re doch seltsam das ein Kommandozeilenprogramm aus dem Unixumfeld, nicht die M?glichkeit bieten w?rde sich auch an die Unixphilosophie "Nur eine nicht vorhandene Meldung ist eine gute Meldung" zu halten, oder? ;-) >> 3.) Die Standard-Dateideskriptoren werden an den Kindprozess vererbt. >> also nach dem "do {" ein "local >> *STDERR=IO::File('>','/dev/null');" einf?gen, sollte auch helfen. > das wird dann immer umst?dlicher.. Hmm, eine Zeile mehr! Sprich es ist ideal und es in eine eigene Funktion auszulagern ;-)! Bzw. 4.) Es gibt diverses Zeugs in CPAN&Core-Modules unter IPC::* > Frage zu den backticks, bzw system und exec: welches 'schl?sseloch' f?r > Unerw?nschte mit Unerw?nschtem ?ffen die auf welche Weise eigentlich? > Oder anders gefragt, wann und wo w?rde es damit gef?hrlich werden? Ein Bsp. hast Du ja schon bekommen: Peter J. Holzer schrieb: > Stell Dir vor, das Script, das den URL checkt, ist ein CGI-Script (oder > mod_perl, oder suid, oder ...) und fragt den Benutzer nach dem URL. Der > Benutzer gibt ein: http://www.example.net; rm -rf / Ein anderes hatte ich zuvor schon mal erw?hnt (Unicode). Der eigentliche Punkt ist, es kann Dir keiner eine abgeschlossene, taxative Liste davon geben. Sprich man kann sich _nie_ sicher sein, alle Probleme erfasst zu haben. W?hrend jedoch im Gegenzug etwas was gar nicht vorhanden ist (weil Du es ja eigentlich eh gar nicht brauchst), ?blicherweise auch keine Probleme (zumindest dieser Art) macht. pfiateng, Josef From e9427749 at stud4.tuwien.ac.at Mon May 5 08:09:33 2008 From: e9427749 at stud4.tuwien.ac.at (Josef Schmid) Date: Mon, 05 May 2008 17:09:33 +0200 Subject: [Vienna-pm] =?iso-8859-15?q?Zus=E4tzlicher_Nachtrag_zu_Escapen_vo?= =?iso-8859-15?q?n_Shellparametern=3A_Fehler_oder_Feature=3F?= In-Reply-To: <20080505143137.GC5922@hjp.at> References: <4815D266.5010004@foo.at> <200805051351.31110.lt@toetsch.at> <481EFDE0.8010106@stud4.tuwien.ac.at> <200805051555.16938.gooly@gmx.at> <20080505143137.GC5922@hjp.at> Message-ID: <481F232D.6010309@stud4.tuwien.ac.at> Nochmals hallo! Wichtig! Peter J. Holzer schrieb: > On 2008-05-05 15:55:16 +0200, Calli wrote: >> Frage zu den backticks, bzw system und exec: welches 'schl?sseloch' f?r >> Unerw?nschte mit Unerw?nschtem ?ffen die auf welche Weise eigentlich? >> Oder anders gefragt, wann und wo w?rde es damit gef?hrlich werden? > > Stell Dir vor, das Script, das den URL checkt, ist ein CGI-Script (oder > mod_perl, oder suid, oder ...) und fragt den Benutzer nach dem URL. Der > Benutzer gibt ein: > > http://www.example.net; rm -rf / Falls Du jetzt nicht verstehst was hjp meint, NICHT AUSPROBIEREN. scnr, Josef From jozef at kutej.net Mon May 5 08:45:14 2008 From: jozef at kutej.net (Jozef Kutej) Date: Mon, 05 May 2008 17:45:14 +0200 Subject: [Vienna-pm] Bratislava.pm Social Meeting - 15 May Message-ID: <481F2B8A.1080706@kutej.net> Hi, if anyone interested on 15 May (Thursday next week) Bratislava.pm will have a Social Meeting at Justin pub - http://www.kamnapivo.sk/pivodb/ruzinov/317/ GPS coordinates: N48.15457/E17.13287/136m ;-) Jonathan Worthington is coming to Bratislava and will join us there. I'll be going by train from Vienna to Bratislava on that day afternoon. Just drop me an email if anyone is planning to come, we can go together. Just for an information return train ticket is 14E including Bratislava public transport. Have a nice day, Jozef. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 252 bytes Desc: OpenPGP digital signature Url : http://mail.pm.org/pipermail/vienna-pm/attachments/20080505/52a235da/attachment.bin From rho at devc.at Tue May 6 00:23:43 2008 From: rho at devc.at (Robert Barta) Date: Tue, 6 May 2008 09:23:43 +0200 Subject: [Vienna-pm] Hausbackene Syntaxerweiterung mit Perl5? In-Reply-To: <481F1CAA.7080003@cpan.org> References: <20080429202713.GB24242@d610.chello.at> <20080430035004.GA28390@mama.devc.at> <20080430062023.GD24242@d610.chello.at> <20080430052513.GA3526@mama.devc.at> <481843CC.30607@cpan.org> <20080430100558.GA13029@mama.devc.at> <4818818B.7000708@cpan.org> <20080430152133.GA5315@mama.devc.at> <20080430153148.GB5315@mama.devc.at> <481F1CAA.7080003@cpan.org> Message-ID: <20080506072343.GA15024@odman.int.devc.at> On Mon, May 05, 2008 at 04:41:46PM +0200, Roland Giersig wrote: > Mein Beileid, wenn das dein Job ist, f?r .NET eine Umsetzung zu finden... Was sagt das ueber mich, wenn ich das freiwillig tu! :-) Nein, es geht darum Teile der LINQ Funktionalitaet, d.h. selber access Mechanismus fuer in-memory collections, DBI backends, XML backends und Topic Maps backends zu implementieren. Und dafuer moechte ich auch ... > Das gr??te Problem scheint zu sein, dass die Listen-Operatoren in Perl > rechts-nach-links funktionieren und .NET OO-m??ig links-nach-rechts, > also verkettete Methodenaufrufe. ... die Syntax erweiteren. Ich verwende map/grep exzessiv, aber das verkehrt von hinten nach vorn lesen/schreiben ueberless ich lieber den Chinesen. > Aber das kann man nachbilden: > > @cleverlies = from(@ListOfObjects) > ->where({$_->score() > 85}) > ->select({$_->matrikelnr()}); > > from() baut ein Objekt aus den Argumenten und die Methoden f?hren dann > die Operationen durch, wobei sie Code-Refs als Parameter nehmen. Damit > l?sst sich alles nachbilden, da .NET eine normale OO-Syntax hat. Leider > gibts noch kein Object::DotNet::Query auf CPAN... Tja. Nicht alles, was M$ da erfunden hat, ist Klumpert. Aber das meiste.... \rho > Robert Barta wrote: > >On Wed, Apr 30, 2008 at 05:21:33PM +0200, Robert Barta wrote: > >>On Wed, Apr 30, 2008 at 04:26:19PM +0200, Roland Giersig wrote: > >>>und wie schaut das aus? > >>> > >>>@cleverlies = select {$_->{matrikelnr}} where {$_->{marks} > 85} from > >>>@students; > >>> > >>>extra bonuspunkte f?r diejenigen, die jetzt lachend am boden liegen, > >>>weil sie die implementation von select, where und from schon vor augen > >>>haben... ;o) > >>Ja. Lustig. ;-/ > > > >Fuer alle, die lustig aus der Huefte schiessen: Es geht um diese > >Liste von Operatoren: > > > > http://download.microsoft.com/download/5/8/6/5868081c-68aa-40de-9a45-a3803d8134b8/standard_query_operators.doc > > > >\rho > > > >>>Robert Barta wrote: > >>>>On Wed, Apr 30, 2008 at 12:02:52PM +0200, Roland Giersig wrote: > >>>>>Oder das alles nur per SQL abhandeln, mit DBI und einer in-memory > >>>>>SQLite DB im Hintergrund. > >>>>Um SQL geht's eigentlich nicht... > >>>> > >>>>>Der Punkt ist: f?r wen sind diese Syntax-?berlegungen? F?r einen > >>>>>Maintainer, der mehr SQL als Perl versteht? > >>>>... sondern um einen Weg (persistente) Collections ueber _ein und > >>>>denselben_ Mechanismus anzusprechen. D.h. bei > >>>> > >>>> @collection = from $s in @students ..... > >>>> > >>>>ist es fuer den Programmierer egal, ob die Studis aus einer SQL > >>>>Datenkrank, aus dem memory oder einem XML Dokument, oder einem RDF > >>>>Graphen geholt werden. > >>>> > >>>>>Dem tust du keinen Gefallen, > >>>>>wenn du ihm SQL-ishe Perl-Syntax bietest, die dann doch nicht genau > >>>>>SQL ist. Da bist du besser dran, wenn du ihm einen > >>>>>Vereinfachungs-Wrapper um DBI schreibst, sodass die Operationen echtes > >>>>>SQL sind. > >>>>Right. Aber fuer das gibt's ja schon nen Haufen. > >>>> > >>>>\rho > >>>> > >>>>>Robert Barta wrote: > >>>>>>On Wed, Apr 30, 2008 at 08:20:23AM +0200, Thomas Klausner wrote: > >>>>>>>>auf in-memory Objekte, relational DBs, XML structures, und - das > >>>>>>>>interessiert mich hier hauptsaechlich - auf Topic Map und RDF KBs > >>>>>>>>zugreifen kann. LINQ ist nun Teil von C# (das langsam Perl6 immer > >>>>>>>>aehnlicher wird, naja langsam). > >>>>>>>Naja, in Perl ist dieser Zugriffsmechanismus halt map, grep, each, > >>>>>>>etc, mit dem man auf in-memory Objekte, DBs, XML, ... zugreift. > >>>>>>D.h., ich koennte das 1) einmal sehr Perl-ish angehen und etwas an > >>>>>> > >>>>>> Tie::Array > >>>>>> > >>>>>>binden. Oder ... > >>>>>> > >>>>>>>In deinem konkreten Fall: > >>>>>>> > >>>>>>>> my @students = ....; > >>>>>>>> my @cleverlies = from $s in @students > >>>>>>>> where $s->{marks} > 85 > >>>>>>>> select $s->{matrikelnr}; > >>>>>>>koenntest du schon eine sub from { } machen, die die Parameterliste > >>>>>>>durchgeht, andere "keywords" wie 'where' und 'select' identifziert, > >>>>>>.... 2) 'from' in the namespace laden, oder .... > >>>>>> > >>>>>>>From: Stefan Weiss > >>>>>>>Um deinen Sourcecode so umzuschreiben, dass nachher Perl rauskommt, > >>>>>>>schau dir mal die Source Filter in "perldoc perlfilter" an, oder das > >>>>>>>Modul Filter::Simple. > >>>>>>.... 3) ein Praeprozessor einschieben. > >>>>>> > >>>>>>Klingt alles gangbar. Ich haette auch nicht notfalls vor > >>>>>> > >>>>>> @collection = new LINQ::TM ('from ...'); > >>>>>> > >>>>>>zurueckgeschreckt. > >>>>>> > >>>>>> > >>>>>>3) Bei preprocessors habe ich immer das Problem, dass sie nicht > >>>>>> leicht immer miteinander kombinierbar sind. > >>>>>> > >>>>>>2) mit dem 'from' als Routine muss man analysieren, ob die > >>>>>>Parameterliste > >>>>>> mit der Syntax, die ich erreichen will, halbwegs kompatibel ist. > >>>>>> Bei > >>>>>> > >>>>>> $s->{marks} > 85 > >>>>>> > >>>>>> hab ich schon das Problem, dass Perl das fuer mich auswerten will, > >>>>>> bevor > >>>>>> 'from' zum Zug kommt. > >>>>>> > >>>>>>1) Tie::Array ist halt SEHR perl-ish. Not bad per se, aber nicht Sinn > >>>>>>der > >>>>>> Uebung hier. > >>>>>> > >>>>>> > >>>>>> > >>>>>>\rho > >>>>>> > >>>>>>_______________________________________________ > >>>>>>Vienna-pm mailing list > >>>>>>Vienna-pm at pm.org > >>>>>>http://mail.pm.org/mailman/listinfo/vienna-pm > >>>>>> > >>>>>_______________________________________________ > >>>>>Vienna-pm mailing list > >>>>>Vienna-pm at pm.org > >>>>>http://mail.pm.org/mailman/listinfo/vienna-pm > >>>>> > >>>_______________________________________________ > >>>Vienna-pm mailing list > >>>Vienna-pm at pm.org > >>>http://mail.pm.org/mailman/listinfo/vienna-pm > >>> > >>_______________________________________________ > >>Vienna-pm mailing list > >>Vienna-pm at pm.org > >>http://mail.pm.org/mailman/listinfo/vienna-pm > >> > > > From rgiersig at cpan.org Tue May 6 09:44:12 2008 From: rgiersig at cpan.org (Roland Giersig) Date: Tue, 06 May 2008 18:44:12 +0200 Subject: [Vienna-pm] Hausbackene Syntaxerweiterung mit Perl5? In-Reply-To: <20080506072343.GA15024@odman.int.devc.at> References: <20080429202713.GB24242@d610.chello.at> <20080430035004.GA28390@mama.devc.at> <20080430062023.GD24242@d610.chello.at> <20080430052513.GA3526@mama.devc.at> <481843CC.30607@cpan.org> <20080430100558.GA13029@mama.devc.at> <4818818B.7000708@cpan.org> <20080430152133.GA5315@mama.devc.at> <20080430153148.GB5315@mama.devc.at> <481F1CAA.7080003@cpan.org> <20080506072343.GA15024@odman.int.devc.at> Message-ID: <48208ADC.9010202@cpan.org> Zum Thema rechts-nach-links f?r grep/map: autobox (http://search.cpan.org/~chocolate/autobox-2.23/autobox.pod) erlaubt es, das andersrum zu schreiben, also @cleverlies = @students-> grep(sub {$_->{marks} > 85})-> map(sub {$_->{matrikelnr}}); Vielleicht hilft dir das... :-) LG, Roland Robert Barta wrote: > On Mon, May 05, 2008 at 04:41:46PM +0200, Roland Giersig wrote: >> Mein Beileid, wenn das dein Job ist, f?r .NET eine Umsetzung zu finden... > > Was sagt das ueber mich, wenn ich das freiwillig tu! :-) > > Nein, es geht darum Teile der LINQ Funktionalitaet, d.h. selber access > Mechanismus fuer in-memory collections, DBI backends, XML backends und > Topic Maps backends zu implementieren. > > Und dafuer moechte ich auch ... > >> Das gr??te Problem scheint zu sein, dass die Listen-Operatoren in Perl >> rechts-nach-links funktionieren und .NET OO-m??ig links-nach-rechts, >> also verkettete Methodenaufrufe. > > ... die Syntax erweiteren. Ich verwende map/grep exzessiv, aber das > verkehrt von hinten nach vorn lesen/schreiben ueberless ich lieber den > Chinesen. > >> Aber das kann man nachbilden: >> >> @cleverlies = from(@ListOfObjects) >> ->where({$_->score() > 85}) >> ->select({$_->matrikelnr()}); >> >> from() baut ein Objekt aus den Argumenten und die Methoden f?hren dann >> die Operationen durch, wobei sie Code-Refs als Parameter nehmen. Damit >> l?sst sich alles nachbilden, da .NET eine normale OO-Syntax hat. Leider >> gibts noch kein Object::DotNet::Query auf CPAN... > > Tja. Nicht alles, was M$ da erfunden hat, ist Klumpert. Aber das > meiste.... > > \rho > >> Robert Barta wrote: >>> On Wed, Apr 30, 2008 at 05:21:33PM +0200, Robert Barta wrote: >>>> On Wed, Apr 30, 2008 at 04:26:19PM +0200, Roland Giersig wrote: >>>>> und wie schaut das aus? >>>>> >>>>> @cleverlies = select {$_->{matrikelnr}} where {$_->{marks} > 85} from >>>>> @students; >>>>> >>>>> extra bonuspunkte f?r diejenigen, die jetzt lachend am boden liegen, >>>>> weil sie die implementation von select, where und from schon vor augen >>>>> haben... ;o) >>>> Ja. Lustig. ;-/ >>> Fuer alle, die lustig aus der Huefte schiessen: Es geht um diese >>> Liste von Operatoren: >>> >>> http://download.microsoft.com/download/5/8/6/5868081c-68aa-40de-9a45-a3803d8134b8/standard_query_operators.doc >>> >>> \rho >>> >>>>> Robert Barta wrote: >>>>>> On Wed, Apr 30, 2008 at 12:02:52PM +0200, Roland Giersig wrote: >>>>>>> Oder das alles nur per SQL abhandeln, mit DBI und einer in-memory >>>>>>> SQLite DB im Hintergrund. >>>>>> Um SQL geht's eigentlich nicht... >>>>>> >>>>>>> Der Punkt ist: f?r wen sind diese Syntax-?berlegungen? F?r einen >>>>>>> Maintainer, der mehr SQL als Perl versteht? >>>>>> ... sondern um einen Weg (persistente) Collections ueber _ein und >>>>>> denselben_ Mechanismus anzusprechen. D.h. bei >>>>>> >>>>>> @collection = from $s in @students ..... >>>>>> >>>>>> ist es fuer den Programmierer egal, ob die Studis aus einer SQL >>>>>> Datenkrank, aus dem memory oder einem XML Dokument, oder einem RDF >>>>>> Graphen geholt werden. >>>>>> >>>>>>> Dem tust du keinen Gefallen, >>>>>>> wenn du ihm SQL-ishe Perl-Syntax bietest, die dann doch nicht genau >>>>>>> SQL ist. Da bist du besser dran, wenn du ihm einen >>>>>>> Vereinfachungs-Wrapper um DBI schreibst, sodass die Operationen echtes >>>>>>> SQL sind. >>>>>> Right. Aber fuer das gibt's ja schon nen Haufen. >>>>>> >>>>>> \rho >>>>>> >>>>>>> Robert Barta wrote: >>>>>>>> On Wed, Apr 30, 2008 at 08:20:23AM +0200, Thomas Klausner wrote: >>>>>>>>>> auf in-memory Objekte, relational DBs, XML structures, und - das >>>>>>>>>> interessiert mich hier hauptsaechlich - auf Topic Map und RDF KBs >>>>>>>>>> zugreifen kann. LINQ ist nun Teil von C# (das langsam Perl6 immer >>>>>>>>>> aehnlicher wird, naja langsam). >>>>>>>>> Naja, in Perl ist dieser Zugriffsmechanismus halt map, grep, each, >>>>>>>>> etc, mit dem man auf in-memory Objekte, DBs, XML, ... zugreift. >>>>>>>> D.h., ich koennte das 1) einmal sehr Perl-ish angehen und etwas an >>>>>>>> >>>>>>>> Tie::Array >>>>>>>> >>>>>>>> binden. Oder ... >>>>>>>> >>>>>>>>> In deinem konkreten Fall: >>>>>>>>> >>>>>>>>>> my @students = ....; >>>>>>>>>> my @cleverlies = from $s in @students >>>>>>>>>> where $s->{marks} > 85 >>>>>>>>>> select $s->{matrikelnr}; >>>>>>>>> koenntest du schon eine sub from { } machen, die die Parameterliste >>>>>>>>> durchgeht, andere "keywords" wie 'where' und 'select' identifziert, >>>>>>>> .... 2) 'from' in the namespace laden, oder .... >>>>>>>> >>>>>>>>> From: Stefan Weiss >>>>>>>>> Um deinen Sourcecode so umzuschreiben, dass nachher Perl rauskommt, >>>>>>>>> schau dir mal die Source Filter in "perldoc perlfilter" an, oder das >>>>>>>>> Modul Filter::Simple. >>>>>>>> .... 3) ein Praeprozessor einschieben. >>>>>>>> >>>>>>>> Klingt alles gangbar. Ich haette auch nicht notfalls vor >>>>>>>> >>>>>>>> @collection = new LINQ::TM ('from ...'); >>>>>>>> >>>>>>>> zurueckgeschreckt. >>>>>>>> >>>>>>>> >>>>>>>> 3) Bei preprocessors habe ich immer das Problem, dass sie nicht >>>>>>>> leicht immer miteinander kombinierbar sind. >>>>>>>> >>>>>>>> 2) mit dem 'from' als Routine muss man analysieren, ob die >>>>>>>> Parameterliste >>>>>>>> mit der Syntax, die ich erreichen will, halbwegs kompatibel ist. >>>>>>>> Bei >>>>>>>> >>>>>>>> $s->{marks} > 85 >>>>>>>> >>>>>>>> hab ich schon das Problem, dass Perl das fuer mich auswerten will, >>>>>>>> bevor >>>>>>>> 'from' zum Zug kommt. >>>>>>>> >>>>>>>> 1) Tie::Array ist halt SEHR perl-ish. Not bad per se, aber nicht Sinn >>>>>>>> der >>>>>>>> Uebung hier. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> \rho >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Vienna-pm mailing list >>>>>>>> Vienna-pm at pm.org >>>>>>>> http://mail.pm.org/mailman/listinfo/vienna-pm >>>>>>>> >>>>>>> _______________________________________________ >>>>>>> Vienna-pm mailing list >>>>>>> Vienna-pm at pm.org >>>>>>> http://mail.pm.org/mailman/listinfo/vienna-pm >>>>>>> >>>>> _______________________________________________ >>>>> Vienna-pm mailing list >>>>> Vienna-pm at pm.org >>>>> http://mail.pm.org/mailman/listinfo/vienna-pm >>>>> >>>> _______________________________________________ >>>> Vienna-pm mailing list >>>> Vienna-pm at pm.org >>>> http://mail.pm.org/mailman/listinfo/vienna-pm >>>> > From e9427749 at stud4.tuwien.ac.at Tue May 6 10:07:32 2008 From: e9427749 at stud4.tuwien.ac.at (Josef Schmid) Date: Tue, 06 May 2008 19:07:32 +0200 Subject: [Vienna-pm] =?iso-8859-1?q?F=FCr_L2R-Fetischisten_=28was=3A_Hausb?= =?iso-8859-1?q?ackene_Syntaxerweiterung_mit_Perl5=3F=29?= In-Reply-To: <48208ADC.9010202@cpan.org> References: <20080429202713.GB24242@d610.chello.at> <20080430035004.GA28390@mama.devc.at> <20080430062023.GD24242@d610.chello.at> <20080430052513.GA3526@mama.devc.at> <481843CC.30607@cpan.org> <20080430100558.GA13029@mama.devc.at> <4818818B.7000708@cpan.org> <20080430152133.GA5315@mama.devc.at> <20080430153148.GB5315@mama.devc.at> <481F1CAA.7080003@cpan.org> <20080506072343.GA15024@odman.int.devc.at> <48208ADC.9010202@cpan.org> Message-ID: <48209054.8000702@stud4.tuwien.ac.at> Roland Giersig schrieb: > Robert Barta wrote: [...] >> ... die Syntax erweiteren. Ich verwende map/grep exzessiv, aber das >> verkehrt von hinten nach vorn lesen/schreiben ueberless ich lieber den >> Chinesen. [...] > Zum Thema rechts-nach-links f?r grep/map: > > autobox (http://search.cpan.org/~chocolate/autobox-2.23/autobox.pod) > erlaubt es, das andersrum zu schreiben, also > > @cleverlies = @students-> > grep(sub {$_->{marks} > 85})-> > map(sub {$_->{matrikelnr}}); > > Vielleicht hilft dir das... :-) Oder alternativ: use English::Reference qw(deref); sub _asiaphop { my $last=pop; my $peek=$_[$#_]; ref $peek eq'CODE'?$last->(_asiaphop(@_)):$last->(deref $peek); } sub asiaphop (\[@$%];&&&&&&&&&&&&&&&&&&&&&&&&&&&&&) {_asiaphop(@_)} # test: -> (b)(c)(d)(e) my @a=qw(a b c d e); print asiaphop @a,sub{ grep{$_ ne 'a'}@_ },sub{ map{"($_)"}@_ }; obwohl ? so h?bsch, Jo "von Affen gebissen" sef From Wolfgang.Laun at thalesgroup.com Wed May 7 00:25:21 2008 From: Wolfgang.Laun at thalesgroup.com (Wolfgang Laun) Date: Wed, 07 May 2008 09:25:21 +0200 Subject: [Vienna-pm] =?iso-8859-1?q?F=FCr_L2R-Fetischisten_=28was=3A_Hausb?= =?iso-8859-1?q?ackene_Syntaxerweiterung_mit_Perl5=3F=29?= In-Reply-To: <48209054.8000702@stud4.tuwien.ac.at> References: <20080429202713.GB24242@d610.chello.at> <20080430035004.GA28390@mama.devc.at> <20080430062023.GD24242@d610.chello.at> <20080430052513.GA3526@mama.devc.at> <481843CC.30607@cpan.org> <20080430100558.GA13029@mama.devc.at> <4818818B.7000708@cpan.org> <20080430152133.GA5315@mama.devc.at> <20080430153148.GB5315@mama.devc.at> <481F1CAA.7080003@cpan.org> <20080506072343.GA15024@odman.int.devc.at> <48208ADC.9010202@cpan.org> <48209054.8000702@stud4.tuwien.ac.at> Message-ID: <48215961.3060900@thalesgroup.com> Nicht ganz die richtige Liste (Pardon!), aber zum Thema passend und (hoffentlich) ausreichend obfuscated ;-) main(int c,char**v){return *v?c=main(c,++v),printf(c?"%s ":"\n",(-1)[v]):0,c-1;} -WL Josef Schmid wrote: >Roland Giersig schrieb: > > > >>Robert Barta wrote: >> >> >[...] > > >>>... die Syntax erweiteren. Ich verwende map/grep exzessiv, aber das >>>verkehrt von hinten nach vorn lesen/schreiben ueberless ich lieber den >>>Chinesen. >>> >>> >[...] > > >>Zum Thema rechts-nach-links f?r grep/map: >> >>autobox (http://search.cpan.org/~chocolate/autobox-2.23/autobox.pod) >>erlaubt es, das andersrum zu schreiben, also >> >>@cleverlies = @students-> >> grep(sub {$_->{marks} > 85})-> >> map(sub {$_->{matrikelnr}}); >> >>Vielleicht hilft dir das... :-) >> >> > >Oder alternativ: >use English::Reference qw(deref); >sub _asiaphop >{ my $last=pop; my $peek=$_[$#_]; > ref $peek eq'CODE'?$last->(_asiaphop(@_)):$last->(deref $peek); >} >sub asiaphop (\[@$%];&&&&&&&&&&&&&&&&&&&&&&&&&&&&&) {_asiaphop(@_)} > ># test: -> (b)(c)(d)(e) >my @a=qw(a b c d e); >print asiaphop @a,sub{ grep{$_ ne 'a'}@_ },sub{ map{"($_)"}@_ }; > >obwohl ? so h?bsch, > Jo "von Affen gebissen" sef > > >_______________________________________________ >Vienna-pm mailing list >Vienna-pm at pm.org >http://mail.pm.org/mailman/listinfo/vienna-pm > > From e9427749 at stud4.tuwien.ac.at Wed May 7 06:30:34 2008 From: e9427749 at stud4.tuwien.ac.at (Josef Schmid) Date: Wed, 07 May 2008 15:30:34 +0200 Subject: [Vienna-pm] =?iso-8859-1?q?F=FCr_L2R-Fetischisten_=26_SQL-Gepeini?= =?iso-8859-1?q?gte?= In-Reply-To: <48209054.8000702@stud4.tuwien.ac.at> References: <20080429202713.GB24242@d610.chello.at> <20080430035004.GA28390@mama.devc.at> <20080430062023.GD24242@d610.chello.at> <20080430052513.GA3526@mama.devc.at> <481843CC.30607@cpan.org> <20080430100558.GA13029@mama.devc.at> <4818818B.7000708@cpan.org> <20080430152133.GA5315@mama.devc.at> <20080430153148.GB5315@mama.devc.at> <481F1CAA.7080003@cpan.org> <20080506072343.GA15024@odman.int.devc.at> <48208ADC.9010202@cpan.org> <48209054.8000702@stud4.tuwien.ac.at> Message-ID: <4821AEFA.2060309@stud4.tuwien.ac.at> Josef Schmid schrieb: > Roland Giersig schrieb: >> Robert Barta wrote: > [...] >>> ... die Syntax erweiteren. Ich verwende map/grep exzessiv, aber das >>> verkehrt von hinten nach vorn lesen/schreiben ueberless ich lieber den >>> Chinesen. > [...] > Oder alternativ: > use English::Reference qw(deref); > sub _asiaphop > { my $last=pop; my $peek=$_[$#_]; > ref $peek eq'CODE'?$last->(_asiaphop(@_)):$last->(deref $peek); > } > sub asiaphop (\[@$%];&&&&&&&&&&&&&&&&&&&&&&&&&&&&&) {_asiaphop(@_)} > > # test: -> (b)(c)(d)(e) > my @a=qw(a b c d e); > print asiaphop @a,sub{ grep{$_ ne 'a'}@_ },sub{ map{"($_)"}@_ }; > > obwohl ? so h?bsch, > Jo "von Affen gebissen" sef Es ginge allerdings etwas h?bscher, ala: from @students, where { $_->matnr ne 'u007' } select { $_->name }; Ansonsten h?tte ich so ein paar Ideen f?r die weniger xenophoben unter den pm'lers: N?mlich mittels ?berladungen von grep, map und join eine ?bersetzung nach SQL-Statements zu erzeugen. Also my @r=map { [$_->s->name,$_->c->name] } grep { $_->s->matnr eq '...' } join '=', # equal join ;-) from s => @students, c => @courses; Was haltet ihr von der Idee? (Sieht nach O(n?) aus schafft aber was immer die DB hergibt.) pfiateng, Josef From rho at devc.at Wed May 7 08:43:21 2008 From: rho at devc.at (Robert Barta) Date: Wed, 7 May 2008 17:43:21 +0200 Subject: [Vienna-pm] Hausbackene Syntaxerweiterung mit Perl5? In-Reply-To: <48208ADC.9010202@cpan.org> References: <20080430062023.GD24242@d610.chello.at> <20080430052513.GA3526@mama.devc.at> <481843CC.30607@cpan.org> <20080430100558.GA13029@mama.devc.at> <4818818B.7000708@cpan.org> <20080430152133.GA5315@mama.devc.at> <20080430153148.GB5315@mama.devc.at> <481F1CAA.7080003@cpan.org> <20080506072343.GA15024@odman.int.devc.at> <48208ADC.9010202@cpan.org> Message-ID: <20080507154321.GD10210@odman.int.devc.at> On Tue, May 06, 2008 at 06:44:12PM +0200, Roland Giersig wrote: > Zum Thema rechts-nach-links f?r grep/map: > > autobox (http://search.cpan.org/~chocolate/autobox-2.23/autobox.pod) > erlaubt es, das andersrum zu schreiben, also > > @cleverlies = @students-> > grep(sub {$_->{marks} > 85})-> > map(sub {$_->{matrikelnr}}); > > Vielleicht hilft dir das... :-) Das kommt schon in die Richtung, ja. Wie gesagt, ich moechte den syntactic noise moeglichst gering halten (deswegen auch eigene Syntax) und vom backend moeglichst unabhaengig sein. Uebrigens vielen Dank fuer die vielen Hinweise. \rho > Robert Barta wrote: > >On Mon, May 05, 2008 at 04:41:46PM +0200, Roland Giersig wrote: > >>Mein Beileid, wenn das dein Job ist, f?r .NET eine Umsetzung zu finden... > > > >Was sagt das ueber mich, wenn ich das freiwillig tu! :-) > > > >Nein, es geht darum Teile der LINQ Funktionalitaet, d.h. selber access > >Mechanismus fuer in-memory collections, DBI backends, XML backends und > >Topic Maps backends zu implementieren. > > > >Und dafuer moechte ich auch ... > > > >>Das gr??te Problem scheint zu sein, dass die Listen-Operatoren in Perl > >>rechts-nach-links funktionieren und .NET OO-m??ig links-nach-rechts, > >>also verkettete Methodenaufrufe. > > > >... die Syntax erweiteren. Ich verwende map/grep exzessiv, aber das > >verkehrt von hinten nach vorn lesen/schreiben ueberless ich lieber den > >Chinesen. > > > >>Aber das kann man nachbilden: > >> > >>@cleverlies = from(@ListOfObjects) > >> ->where({$_->score() > 85}) > >> ->select({$_->matrikelnr()}); > >> > >>from() baut ein Objekt aus den Argumenten und die Methoden f?hren dann > >>die Operationen durch, wobei sie Code-Refs als Parameter nehmen. Damit > >>l?sst sich alles nachbilden, da .NET eine normale OO-Syntax hat. Leider > >>gibts noch kein Object::DotNet::Query auf CPAN... > > > >Tja. Nicht alles, was M$ da erfunden hat, ist Klumpert. Aber das > >meiste.... > > > >\rho > > > >>Robert Barta wrote: > >>>On Wed, Apr 30, 2008 at 05:21:33PM +0200, Robert Barta wrote: > >>>>On Wed, Apr 30, 2008 at 04:26:19PM +0200, Roland Giersig wrote: > >>>>>und wie schaut das aus? > >>>>> > >>>>>@cleverlies = select {$_->{matrikelnr}} where {$_->{marks} > 85} from > >>>>>@students; > >>>>> > >>>>>extra bonuspunkte f?r diejenigen, die jetzt lachend am boden liegen, > >>>>>weil sie die implementation von select, where und from schon vor augen > >>>>>haben... ;o) > >>>>Ja. Lustig. ;-/ > >>>Fuer alle, die lustig aus der Huefte schiessen: Es geht um diese > >>>Liste von Operatoren: > >>> > >>> http://download.microsoft.com/download/5/8/6/5868081c-68aa-40de-9a45-a3803d8134b8/standard_query_operators.doc > >>> > >>>\rho > >>> > >>>>>Robert Barta wrote: > >>>>>>On Wed, Apr 30, 2008 at 12:02:52PM +0200, Roland Giersig wrote: > >>>>>>>Oder das alles nur per SQL abhandeln, mit DBI und einer in-memory > >>>>>>>SQLite DB im Hintergrund. > >>>>>>Um SQL geht's eigentlich nicht... > >>>>>> > >>>>>>>Der Punkt ist: f?r wen sind diese Syntax-?berlegungen? F?r einen > >>>>>>>Maintainer, der mehr SQL als Perl versteht? > >>>>>>... sondern um einen Weg (persistente) Collections ueber _ein und > >>>>>>denselben_ Mechanismus anzusprechen. D.h. bei > >>>>>> > >>>>>> @collection = from $s in @students ..... > >>>>>> > >>>>>>ist es fuer den Programmierer egal, ob die Studis aus einer SQL > >>>>>>Datenkrank, aus dem memory oder einem XML Dokument, oder einem RDF > >>>>>>Graphen geholt werden. > >>>>>> > >>>>>>>Dem tust du keinen Gefallen, > >>>>>>>wenn du ihm SQL-ishe Perl-Syntax bietest, die dann doch nicht genau > >>>>>>>SQL ist. Da bist du besser dran, wenn du ihm einen > >>>>>>>Vereinfachungs-Wrapper um DBI schreibst, sodass die Operationen > >>>>>>>echtes SQL sind. > >>>>>>Right. Aber fuer das gibt's ja schon nen Haufen. > >>>>>> > >>>>>>\rho > >>>>>> > >>>>>>>Robert Barta wrote: > >>>>>>>>On Wed, Apr 30, 2008 at 08:20:23AM +0200, Thomas Klausner wrote: > >>>>>>>>>>auf in-memory Objekte, relational DBs, XML structures, und - das > >>>>>>>>>>interessiert mich hier hauptsaechlich - auf Topic Map und RDF KBs > >>>>>>>>>>zugreifen kann. LINQ ist nun Teil von C# (das langsam Perl6 immer > >>>>>>>>>>aehnlicher wird, naja langsam). > >>>>>>>>>Naja, in Perl ist dieser Zugriffsmechanismus halt map, grep, each, > >>>>>>>>>etc, mit dem man auf in-memory Objekte, DBs, XML, ... zugreift. > >>>>>>>>D.h., ich koennte das 1) einmal sehr Perl-ish angehen und etwas an > >>>>>>>> > >>>>>>>> Tie::Array > >>>>>>>> > >>>>>>>>binden. Oder ... > >>>>>>>> > >>>>>>>>>In deinem konkreten Fall: > >>>>>>>>> > >>>>>>>>>> my @students = ....; > >>>>>>>>>> my @cleverlies = from $s in @students > >>>>>>>>>> where $s->{marks} > 85 > >>>>>>>>>> select $s->{matrikelnr}; > >>>>>>>>>koenntest du schon eine sub from { } machen, die die > >>>>>>>>>Parameterliste durchgeht, andere "keywords" wie 'where' und > >>>>>>>>>'select' identifziert, > >>>>>>>>.... 2) 'from' in the namespace laden, oder .... > >>>>>>>> > >>>>>>>>>From: Stefan Weiss > >>>>>>>>>Um deinen Sourcecode so umzuschreiben, dass nachher Perl rauskommt, > >>>>>>>>>schau dir mal die Source Filter in "perldoc perlfilter" an, oder > >>>>>>>>>das > >>>>>>>>>Modul Filter::Simple. > >>>>>>>>.... 3) ein Praeprozessor einschieben. > >>>>>>>> > >>>>>>>>Klingt alles gangbar. Ich haette auch nicht notfalls vor > >>>>>>>> > >>>>>>>> @collection = new LINQ::TM ('from ...'); > >>>>>>>> > >>>>>>>>zurueckgeschreckt. > >>>>>>>> > >>>>>>>> > >>>>>>>>3) Bei preprocessors habe ich immer das Problem, dass sie nicht > >>>>>>>> leicht immer miteinander kombinierbar sind. > >>>>>>>> > >>>>>>>>2) mit dem 'from' als Routine muss man analysieren, ob die > >>>>>>>>Parameterliste > >>>>>>>> mit der Syntax, die ich erreichen will, halbwegs kompatibel ist. > >>>>>>>> Bei > >>>>>>>> > >>>>>>>> $s->{marks} > 85 > >>>>>>>> > >>>>>>>> hab ich schon das Problem, dass Perl das fuer mich auswerten > >>>>>>>> will, bevor > >>>>>>>> 'from' zum Zug kommt. > >>>>>>>> > >>>>>>>>1) Tie::Array ist halt SEHR perl-ish. Not bad per se, aber nicht > >>>>>>>>Sinn der > >>>>>>>> Uebung hier. > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>>\rho > >>>>>>>> > >>>>>>>>_______________________________________________ > >>>>>>>>Vienna-pm mailing list > >>>>>>>>Vienna-pm at pm.org > >>>>>>>>http://mail.pm.org/mailman/listinfo/vienna-pm > >>>>>>>> > >>>>>>>_______________________________________________ > >>>>>>>Vienna-pm mailing list > >>>>>>>Vienna-pm at pm.org > >>>>>>>http://mail.pm.org/mailman/listinfo/vienna-pm > >>>>>>> > >>>>>_______________________________________________ > >>>>>Vienna-pm mailing list > >>>>>Vienna-pm at pm.org > >>>>>http://mail.pm.org/mailman/listinfo/vienna-pm > >>>>> > >>>>_______________________________________________ > >>>>Vienna-pm mailing list > >>>>Vienna-pm at pm.org > >>>>http://mail.pm.org/mailman/listinfo/vienna-pm > >>>> > > > From domm at cpan.org Wed May 7 23:22:02 2008 From: domm at cpan.org (Thomas Klausner) Date: Thu, 8 May 2008 08:22:02 +0200 Subject: [Vienna-pm] Bratislava.pm Social Meeting - 15 May In-Reply-To: <481F2B8A.1080706@kutej.net> References: <481F2B8A.1080706@kutej.net> Message-ID: <20080508062202.GC18536@dedomm.validad.net> Hi! On Mon, May 05, 2008 at 05:45:14PM +0200, Jozef Kutej wrote: > if anyone interested on 15 May (Thursday next week) Bratislava.pm will have a > Social Meeting at Justin pub - http://www.kamnapivo.sk/pivodb/ruzinov/317/ I'm interested! But when will the meeting start? Unfortunantly I can only leave Vienna around 17:30... Is anybody else going (by train/car)? When? -- #!/usr/bin/perl http://domm.plix.at for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/} From domm at cpan.org Wed May 7 23:41:50 2008 From: domm at cpan.org (Thomas Klausner) Date: Thu, 8 May 2008 08:41:50 +0200 Subject: [Vienna-pm] YAPC::Europe 2008 Message-ID: <20080508064150.GD18536@dedomm.validad.net> Hi! Auch wenn die diesjaehrigen YAPC-Orgas ein bissl leise sind, gibt schon ein wenig Info auf der Site http://www.yapceurope2008.org/ Wie auch immer, es waere an der Zeit, Reise und Unterkunft zu organisieren. Ich selber fahr aus verschiedenen Gruenden mit dem Zug und vermute mal, dass ich da eher alleine sein werden. Ein paar Leute haben schon Fluege gebucht. Vielleicht wollen jene Personen ein "Travel Team" starten? http://www.yapceurope2008.org/ye2008/wiki?node=HowToGetThere Ich hab ausserdem in unserem Wiki eine Seite zur YAPC-Koordination angelegt: http://socialtext.useperl.at/vienna-pm/index.cgi?yapc_europe_2008 Bez Hotel (und angesichts der gesalzenen Preise) schwirrt die Idee herum, ein 4-Bett Zimmer (oder mehr (Zimmer/Betten)) in einem Hostel zu reservieren. Wer waere denn da dabei? Bitte auch im Wiki eintragen! -- #!/usr/bin/perl http://domm.plix.at for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/} From domm at cpan.org Tue May 13 11:49:45 2008 From: domm at cpan.org (Thomas Klausner) Date: Tue, 13 May 2008 20:49:45 +0200 Subject: [Vienna-pm] TechSocialMeet 2.6. Message-ID: <20080513184945.GA5493@d610.chello.at> Hi! Am 2.6., 19:00 gibts das naechste Vienna.pm TechSocialMeeting. F?r den Tech-Teil brauchen wir noch Vortragenden! Ich selber bin leider noch nicht 100%ig sicher, ob ich schon ab 19:00 kann, weil meine Freundin in Berlin ist & ich entweder einen Kindersitter brauch, oder die Kinder allein ins Bett schick... Wenn ich kann, koennte ich (endlich) den Talk "die Perl, die" (Exception Handling) halten (~30 - 40 Minuten) Hat sonst noch jemand etwas zum herzeigen/vortragen? Waere auch eine gute Moeglichkeit, einen Talk fuer die YAPC::Europe zu ueben :-) -- #!/usr/bin/perl http://domm.plix.at for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/} From domm at cpan.org Tue May 13 11:53:06 2008 From: domm at cpan.org (Thomas Klausner) Date: Tue, 13 May 2008 20:53:06 +0200 Subject: [Vienna-pm] Generalversammlung Message-ID: <20080513185306.GB5493@d610.chello.at> Hi! Irgendwann Anfang Juni sollten wir eine Vienna.pm Generalversammlung machen. Diese sollte IMO nicht in einem Lokal stattfinden, sondern in einem Besprechungszimmer o.ae. Haette da irgendjemand Platz? Bei uns passen eher nur 8 Leute ins Besprechungszimmer (oder koki?), wobei sich im worst case sicher auch mehr ausgehen. (Praterstrasse, 1020) Ich denke mal, wir sollten so gegen 19:00 anfangen, und nach 2 Stunden irgendwohin uebersuiedeln, wo's gemuetlicher ist (wenn wir's bei uns machen, zB ins Shabu) -- #!/usr/bin/perl http://domm.plix.at for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/} From domm at cpan.org Tue May 13 11:54:45 2008 From: domm at cpan.org (Thomas Klausner) Date: Tue, 13 May 2008 20:54:45 +0200 Subject: [Vienna-pm] Bratislava.pm Social Meeting - 15 May In-Reply-To: <20080508062202.GC18536@dedomm.validad.net> References: <481F2B8A.1080706@kutej.net> <20080508062202.GC18536@dedomm.validad.net> Message-ID: <20080513185445.GC5493@d610.chello.at> Hi! On Thu, May 08, 2008 at 08:22:02AM +0200, Thomas Klausner wrote: > Is anybody else going (by train/car)? When? Maros hat im IRC angeboten, mit dem Auto zu fahren, und ich werd mitfahren. Mag noch jemand mitkommen? Fahrt jemand mit dem Zug? Oder mit noch einem Auto? -- #!/usr/bin/perl http://domm.plix.at for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/} From rgiersig at cpan.org Fri May 16 08:31:45 2008 From: rgiersig at cpan.org (Roland Giersig) Date: Fri, 16 May 2008 17:31:45 +0200 Subject: [Vienna-pm] Generalversammlung In-Reply-To: <20080513185306.GB5493@d610.chello.at> References: <20080513185306.GB5493@d610.chello.at> Message-ID: <482DA8E1.100@cpan.org> warum nicht vor/nach/anstatt des techsocialmeetings am 2.6.? ein tagesordnungspunkt ist dann halt vielleicht "die, perl, die", wenn mans anstatt macht... ;-) und wer noch nicht mitglied ist, wird gleich mal kooptiert. Thomas Klausner wrote: > Hi! > > Irgendwann Anfang Juni sollten wir eine Vienna.pm Generalversammlung > machen. Diese sollte IMO nicht in einem Lokal stattfinden, sondern in > einem Besprechungszimmer o.ae. > > Haette da irgendjemand Platz? > > Bei uns passen eher nur 8 Leute ins Besprechungszimmer (oder koki?), > wobei sich im worst case sicher auch mehr ausgehen. (Praterstrasse, > 1020) > > Ich denke mal, wir sollten so gegen 19:00 anfangen, und nach 2 Stunden > irgendwohin uebersuiedeln, wo's gemuetlicher ist (wenn wir's bei uns > machen, zB ins Shabu) > > From domm at cpan.org Fri May 16 14:11:38 2008 From: domm at cpan.org (Thomas Klausner) Date: Fri, 16 May 2008 23:11:38 +0200 Subject: [Vienna-pm] Fwd: Newsletter #01 from the YAPC::Europe 2008 Organizers Message-ID: <20080516211138.GA29467@d610.chello.at> ----- Forwarded message from Jonas Br?ms? Nielsen ----- From: Jonas Br?ms? Nielsen Subject: [pm_groups] Newsletter #01 from the YAPC::Europe 2008 Organizers Date: Fri, 16 May 2008 13:11:21 +0200 To: pm_groups at pm.org Hello, The silence has been broken! We have published the first newsletter leading up to YAPC::EU 2008, throwing some light on the things that are going on behind the scenes. Read about the schedule layout, Perl training, job fair and sponsorships at http://www.yapceurope2008.org/ye2008/newsletter_01.html And remember, the talk submission deadline is drawing nearer! There is a news feed at: http://www.yapceurope2008.org/ye2008/atom/en.xml Thank you, jonasbn, on behalf of the Copenhagen Perl Mongers -- Request pm.org Technical Support via support at pm.org pm_groups mailing list pm_groups at pm.org http://mail.pm.org/mailman/listinfo/pm_groups ----- End forwarded message ----- -- #!/usr/bin/perl http://domm.plix.at for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/} From domm at cpan.org Tue May 20 23:51:53 2008 From: domm at cpan.org (Thomas Klausner) Date: Wed, 21 May 2008 08:51:53 +0200 Subject: [Vienna-pm] Einladung TechSocialMeet 2.6. Message-ID: <20080521065153.GH2373@d610.chello.at> Hi! Bald ist es wieder soweit: am MO, 2.6. gibts das naechste TechSocialMeet von Vienna.pm. Programm: * Jonathan Worthington kommt aus Bratislava r?ber und erz?hlt uns, was er mit unserem Geld so anstellt: Rakudo Update (30-40 Minuten) * ich muss jetzt endlich f?r die YAPC ?ben: die Perl, die! (30-40 Minuten) Da es in Bratislava kein/kaum indisches Essen gibt, f?hren wir Jonathan nacher in den Wiener Deewan http://www.falter.at/web/wwei/detail.php?nr=5266 (bitte um Anmeldung!) -- #!/usr/bin/perl http://domm.plix.at for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/} From domm at cpan.org Wed May 21 13:23:38 2008 From: domm at cpan.org (Thomas Klausner) Date: Wed, 21 May 2008 22:23:38 +0200 Subject: [Vienna-pm] Wieder mal: Emergency Social Meeting Message-ID: <20080521202338.GA7212@d610.chello.at> Hi! Weil wir wieder alte Gaeste haben (Nicholas (ist schon fast kein Gast mehr :-) und nothingmuch) gibts am DO, 22.5, ab 20:00 ein kleines Treffen. Und zwar in der "Sch?nen Perle": 1020, Ecke Leopold/Grosse Pfarrg. http://www.schoene-perle.at/ Bis dann! -- #!/usr/bin/perl http://domm.plix.at for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/} From prozessor13 at gmx.net Thu May 22 08:51:35 2008 From: prozessor13 at gmx.net (max demmelbauer) Date: Thu, 22 May 2008 17:51:35 +0200 Subject: [Vienna-pm] mod_perl + speicherproblem Message-ID: <02AECB4B-AECF-46F1-B2C8-94C4C71C430F@gmx.net> hallo.. unsere website, http://www.bikemap.net laeuft mit webtek (http://max.xaok.org/webtek/language?language=de , ich hab im jahr 2006 ein vortrag beim austria-perl-workshop gehalten), und wir haben in letzter zeit grosse probleme mit server- abstuerzen. es lauft alles gut, und auf einmal werden lauter neue mod_perl workers gestartet, bis dem rechner der speicher ausgeht. ich hab eh schon lang rumgesucht, aber ich komm einfach nicht auf den ausloeser des problems. weitere speicherprobleme: * 1 (prefork) mod_perl thread brauch bereits 100 - 130MB speicher (wieso so viel??) * auf der entwicklerkiste ist der speicherverbrauch deutilch weniger * perl allociert immer mehr speicher (und ich glaub nicht dass es an einem memory-leak liegt) * manche deamons (auch in perl) laufen immer brav dahin, und auf einmal geht der speicher rauf, bis ein "out of memory" kommt (fuer immer die gleichen zeilen code) darum suche ich jemanden, der sich mit dieser materie gut auskennt, und sich mit mir mal z.b. 2 nachmittage hinsetzt, und das alles aus einem neutralen standpunkt analysiert (natuerlich gegen gute bezahlung). hoffentlich meldet sich bald wer :) lg. max. From mjy at geizhals.at Thu May 22 09:06:51 2008 From: mjy at geizhals.at (Marinos Yannikos) Date: Thu, 22 May 2008 18:06:51 +0200 Subject: [Vienna-pm] mod_perl + speicherproblem In-Reply-To: <02AECB4B-AECF-46F1-B2C8-94C4C71C430F@gmx.net> References: <02AECB4B-AECF-46F1-B2C8-94C4C71C430F@gmx.net> Message-ID: <48359A1B.2030906@geizhals.at> max demmelbauer schrieb: > * 1 (prefork) mod_perl thread brauch bereits 100 - 130MB speicher > (wieso so viel??) Haha, das ist eh noch wenig. Unsere mod_perl-Threads brauchen 1gb+ (aber wir cachen da auch explizit). Der Grund ist die fehlende bzw. nur rudiment?r vorhandene garbage collection in Perl, bei jedem Request bleibt halt viel im Speicher bzw. wird der Speicher wohl auch noch fragmentiert. Ein weiteres Problem ist, da? die Apache-Prozesse kaum Speicher sharen k?nnen, da das "copy on write" bei fork & Perl kaum etwas bringt. Man kann also kaum Daten und Perl-Code vor dem fork laden und sich davon Speicherersparnis erhoffen. Siehe auch: http://perl.apache.org/docs/1.0/guide/performance.html#Sharing_Memory > * auf der entwicklerkiste ist der speicherverbrauch deutilch weniger Weniger Requests - logisch. > * perl allociert immer mehr speicher (und ich glaub nicht dass es an > einem memory-leak liegt) > * manche deamons (auch in perl) laufen immer brav dahin, und auf > einmal geht der speicher rauf, bis ein "out of memory" kommt (fuer > immer die gleichen zeilen code) > > darum suche ich jemanden, der sich mit dieser materie gut auskennt, > und sich mit mir mal z.b. 2 nachmittage hinsetzt, und das alles aus > einem neutralen standpunkt analysiert (natuerlich gegen gute bezahlung). MaxRequestsPerChild 100 (wenn du nicht extrem hohe Performance brauchst) MfG, -mjy -- Dipl.-Ing. Marinos Yannikos, CEO Preisvergleich Internet Services AG Obere Donaustrasse 63, A-1020 Wien Tel./Fax: (+431) 5811609-52/-55 Handelsgericht Wien - FN 197241K - Firmensitz Wien From prozessor13 at gmx.net Thu May 22 09:34:07 2008 From: prozessor13 at gmx.net (max demmelbauer) Date: Thu, 22 May 2008 18:34:07 +0200 Subject: [Vienna-pm] mod_perl + speicherproblem In-Reply-To: <48359A1B.2030906@geizhals.at> References: <02AECB4B-AECF-46F1-B2C8-94C4C71C430F@gmx.net> <48359A1B.2030906@geizhals.at> Message-ID: On 22.05.2008, at 18:06, Marinos Yannikos wrote: > max demmelbauer schrieb: >> * 1 (prefork) mod_perl thread brauch bereits 100 - 130MB speicher >> (wieso so viel??) > > Haha, das ist eh noch wenig. Unsere mod_perl-Threads brauchen 1gb+ > (aber wir cachen da auch explizit). Der Grund ist die fehlende bzw. > nur rudiment?r vorhandene garbage collection in Perl, bei jedem > Request bleibt halt viel im Speicher bzw. wird der Speicher wohl > auch noch fragmentiert. :) ja, aber bei uns sind die 100MB wirklich nur perl-code. weiters braucht ein ./webtek console (was einfach nur den ganzen applikation-code laedt, und eine command-zeile bereitstellt) bei mir lokal auf einem IC2D 20MB, und auf der athlon64 debiankiste 40MB. ich versteh einfach nicht: - erstens: wieso schon mal der unterschied von 20MB zwischen den systemen - zweitens: wieso braucht der apache prozess nochmal 80MB mehr fuer denselben code? - der unterschied zw test/live betrieb im speicher ist auch schon direkt nach dem starten (also unabhaengig von den requests) - mir ist es auch egal, der prozess kann soviel brauchen wie er will! aber wenn der server immer wieder crached ist es halt sch**e.. grrr... > MaxRequestsPerChild 100 (wenn du nicht extrem hohe Performance > brauchst) thx. das werd ich gleich machen aber irgendwo ist ganz sicher ein fehler bei uns im code, und der bringt mich an den rand des nervenzusammenbruchs, wenn ich am wo-ende 5x den server restarten muss ;) eine vermutung ist auch ein `cmd` aufruf im applikationscode (darf/ soll ich sowas im mod_perl env aufrufen?) thx nochmal und lg. max From mjy at geizhals.at Thu May 22 09:45:54 2008 From: mjy at geizhals.at (Marinos Yannikos) Date: Thu, 22 May 2008 18:45:54 +0200 Subject: [Vienna-pm] mod_perl + speicherproblem In-Reply-To: References: <02AECB4B-AECF-46F1-B2C8-94C4C71C430F@gmx.net> <48359A1B.2030906@geizhals.at> Message-ID: <4835A342.7050001@geizhals.at> max demmelbauer schrieb: > ./webtek console (was einfach nur den ganzen applikation-code laedt, und > eine command-zeile bereitstellt) bei mir lokal auf einem IC2D 20MB, und > auf der athlon64 debiankiste 40MB. 32bit vs. 64bit Perl wohl (8 byte pointer, alignment, ...), obwohl Faktor 2 da eher der worst case sein sollte. > ich versteh einfach nicht: > > - erstens: wieso schon mal der unterschied von 20MB zwischen den > systemen > - zweitens: wieso braucht der apache prozess nochmal 80MB mehr fuer > denselben code? > - der unterschied zw test/live betrieb im speicher ist auch schon > direkt nach dem starten (also unabhaengig von den requests) D?rfte dann wohl auch auf 32/64 bit zur?ckzuf?hren sein, evtl. auch andere Perl-Version? > - mir ist es auch egal, der prozess kann soviel brauchen wie er > will! aber wenn der server immer wieder crached ist es halt sch**e.. > grrr... Wir haben schon lange ein Setup wie in http://perl.apache.org/docs/1.0/guide/strategy.html#One_Plain_Apache_and_One_mod_perl_enabled_Apache_Servers beschrieben, damit k?nnen wir die mod_perl Apaches auf 10-15 limitieren und trotzdem einige 100 Requests parallel abarbeiten (auf statische Daten z.B.). Ansonsten kannst du wohl auch mal FastCGI anschauen, das trennt die fetten Perl-Prozesse sauberer vom Apache als mod_perl. Ich warte einstweilen auf ein Perl mit Speichermanagement, das die letzten 30 Jahre Forschung in dem Gebiet nicht verschlafen hat. ;-) (zur Not auch eine Version mit drangepfrimmeltem http://www.hpl.hp.com/personal/Hans_Boehm/gc/) > aber irgendwo ist ganz sicher ein fehler bei uns im code, und der bringt > mich an den rand des nervenzusammenbruchs, wenn ich am wo-ende 5x den > server restarten muss ;) Du kannst ja mal die Apache-PIDs mitloggen (http://httpd.apache.org/docs/1.3/mod/mod_log_config.html - %P) und dann im access.log nachschauen, welche Requests einen bestimmten Prozess so aufgeblasen haben. Vielleicht findest du ja ein sch?nes memory leak (ist bei mod_perl sehr einfach zu erzeugen, nachdem die globalen Variablen ja bleiben). > eine vermutung ist auch ein `cmd` aufruf im applikationscode (darf/soll > ich sowas im mod_perl env aufrufen?) http://perl.apache.org/docs/1.0/guide/performance.html#Forking_and_Executing_Subprocesses_from_mod_perl Gilt nat?rlich auch f?r backticks... MfG, -mjy -- Dipl.-Ing. Marinos Yannikos, CEO Preisvergleich Internet Services AG Obere Donaustrasse 63, A-1020 Wien Tel./Fax: (+431) 5811609-52/-55 Handelsgericht Wien - FN 197241K - Firmensitz Wien From mjy at geizhals.at Thu May 22 09:54:52 2008 From: mjy at geizhals.at (Marinos Yannikos) Date: Thu, 22 May 2008 18:54:52 +0200 Subject: [Vienna-pm] mod_perl + speicherproblem In-Reply-To: References: <02AECB4B-AECF-46F1-B2C8-94C4C71C430F@gmx.net> <48359A1B.2030906@geizhals.at> Message-ID: <4835A55C.4020908@geizhals.at> max demmelbauer schrieb: > aber irgendwo ist ganz sicher ein fehler bei uns im code, und der > bringt mich an den rand des nervenzusammenbruchs, wenn ich am wo-ende > 5x den server restarten muss ;) Circular references sollten eher selten sein, aber du kannst auch mal das testen: http://letsgetdugg.com/view/Finding_Circular_Reference_leaks_in_Perl Idealerweise mit einem single-threaded Apache (apache -X oder httpd -X) und den Requests aus dem zuvor erw?hnten access.log mit PID eines aufgeblasenen Prozesses (hab's selbst aber noch nicht verwendet). MfG, -mjy -- Dipl.-Ing. Marinos Yannikos, CEO Preisvergleich Internet Services AG Obere Donaustrasse 63, A-1020 Wien Tel./Fax: (+431) 5811609-52/-55 Handelsgericht Wien - FN 197241K - Firmensitz Wien From max at stro.at Thu May 22 12:56:16 2008 From: max at stro.at (maximilian attems) Date: Thu, 22 May 2008 21:56:16 +0200 Subject: [Vienna-pm] Debienna Perl 5.10 Vortrag Message-ID: <20080522195616.GA5070@stro.at> Vortragsank?ndigung: Thomas Klausner (aka domm) - Perl 5.10 Intro + Neue Features 19.06.2008 - 20h00 - (Einlass ab 19h) Museumsquartier - MQ Electric Avenue - Quintessenz Die kommende Debian Ausgabe Lenny spielt auf mit der neuerste Perl release: $ cat /etc/debian_version lenny/sid $ perl -v This is perl, v5.10.0 built for x86_64-linux-gnu-thread-multi Ein guter Moment die neuen Funktionen und Verbesserungen aus erster Hand zu erfahren. domm leitet nicht nur aktiv der Wiener Perl Community Vienna.pm, sondern ist auch CPANTS Maintainer. Kwalitee Metrik beeinflusst massgeblich CPAN. freue mich auf zahlreiches Erscheinen. happy hacking -- maks ps je suis francais et mon allemand est loin d'?tre parfait, veillez m'en excuser. From michael.kroell at uibk.ac.at Fri May 23 01:19:05 2008 From: michael.kroell at uibk.ac.at (=?ISO-8859-1?Q?Michael_Kr=F6ll?=) Date: Fri, 23 May 2008 10:19:05 +0200 Subject: [Vienna-pm] mod_perl + speicherproblem In-Reply-To: <4835A55C.4020908@geizhals.at> References: <02AECB4B-AECF-46F1-B2C8-94C4C71C430F@gmx.net> <48359A1B.2030906@geizhals.at> <4835A55C.4020908@geizhals.at> Message-ID: <48367DF9.3020403@uibk.ac.at> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Marinos Yannikos wrote: | max demmelbauer schrieb: |> aber irgendwo ist ganz sicher ein fehler bei uns im code, und der |> bringt mich an den rand des nervenzusammenbruchs, wenn ich am wo-ende |> 5x den server restarten muss ;) | | Circular references sollten eher selten sein, aber du kannst auch mal | das testen: | http://letsgetdugg.com/view/Finding_Circular_Reference_leaks_in_Perl | | Idealerweise mit einem single-threaded Apache (apache -X oder httpd -X) | und den Requests aus dem zuvor erw?hnten access.log mit PID eines | aufgeblasenen Prozesses (hab's selbst aber noch nicht verwendet). Bis das Problem gefunden ist, sollte auch etwas wie Apache::SizeLimit oder monit Dich bewahren, den Server dauernd neuzustarten. lg, michael - -- 063A F25E B064 A98F A479 1690 78CD D023 5E2A 6688 http://zis.uibk.ac.at/.m/uibk.ac.at_pgp_pubkey.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (MingW32) iD8DBQFINn35eM3QI14qZogRAshFAJwPnyHtGUyfIKk4R2X1heZGems2JwCcCK1b hN0vPjimjq4NRKWb1L3Y47U= =raZB -----END PGP SIGNATURE----- From domm at cpan.org Mon May 26 13:09:38 2008 From: domm at cpan.org (Thomas Klausner) Date: Mon, 26 May 2008 22:09:38 +0200 Subject: [Vienna-pm] Einladung zur ordentlichen Generalversammlung 2008 der Vienna Perl Mongers Message-ID: <20080526200938.GC12154@d610.chello.at> Einladung zur ordentlichen Generalversammlung der Vienna Perl Mongers Verein zur Foerderung der Programmiersprache Perl am 9. Juni 2008, 19:00 im Revdev-B?ro, Praterstrasse 15/3/22, 1020 Wien Tagesordnung: 1. Begruessung 2. Genehmigung der Tagesordnung 3. Bestaetigung der Rechnungspruefer fuer das abgelaufene Jahr 4. Bericht des Obmannes 5. Bericht des Kassiers 6. Bericht der Rechnungspruefer 7. Entlastung des Vorstandes 8. Neuwahl des Vorstandes Wahlvorschlag: Obmann Thomas Klausner Schriftfuehrer Peter J. Holzer Kassier Roland Lammel 9. Bestellung der Rechnungspruefer fuer das kommende Jahr 10. Eingelangte Antraege Antraege koennen bis spaetestens 5. Juni bei einem der Vorstandsmitglieder (bevorzugt beim Schriftfuehrer) per E-Mail eingereicht werden. Auf ein zahlreiches Erscheinen freut sich der Vorstand der Vienna Perl Mongers -- #!/usr/bin/perl http://domm.plix.at for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/} From domm at cpan.org Mon May 26 13:48:30 2008 From: domm at cpan.org (Thomas Klausner) Date: Mon, 26 May 2008 22:48:30 +0200 Subject: [Vienna-pm] Einladung zur ordentlichen Generalversammlung 2008 der Vienna Perl Mongers Message-ID: <20080526204830.GF12154@d610.chello.at> Hi! On Mon, May 26, 2008 at 10:09:59PM +0200, Thomas Klausner wrote: > Einladung > zur ordentlichen Generalversammlung der 2 Erg?nzungen: a) Ich w?rde sagen, wir holen uns w?hrend der GV (bzw zum Beginn derselben) was zum Essen (Sushi und/oder Pizza), bitte also um kurze Meldung, wer zu kommen gedenkt. b) Nachher gehen wir noch irgendwohin sauf^wplaudern. Wohin ist noch offen, aber irgendwo in der Naehe halt: - Shabu (hat keinen Gastgarten) - Strandbar Hermann (voller Fussballfans) - irgendwo am Donaukanal? Adria Wien? - Fluc kann wenns warm ist ganz nett sein -- #!/usr/bin/perl http://domm.plix.at for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/} From prozessor13 at gmx.net Fri May 30 01:53:15 2008 From: prozessor13 at gmx.net (max demmelbauer) Date: Fri, 30 May 2008 10:53:15 +0200 Subject: [Vienna-pm] mod_perl + speicherproblem In-Reply-To: <4835A342.7050001@geizhals.at> References: <02AECB4B-AECF-46F1-B2C8-94C4C71C430F@gmx.net> <48359A1B.2030906@geizhals.at> <4835A342.7050001@geizhals.at> Message-ID: <3A8FFDD9-D638-4685-9577-223CA2E8E269@gmx.net> so.. ich hab jetzt ein wenig mehr rausgefunden: * die 120 MB kommen zustande weil am apache 3 virtualhosts definiert sind, jeweils mit PerlOptions +Parent d.h. es passt eh, weil 3 x 40MB is eben 120.. eh klar, aber hab einfach nicht dran gedacht... * ich logge jetzt alle 5 sekunden den output von ps -aux, und bin zu dem ergebnis gekommen, dass, wenn der server crached, alle apache instanzen endlos speicher produzieren. d.h. es ist nicht nur ein bestimmer call, sondern ab einem gestimmten zeitpunkt verfaengt sich jeder perl prozess irgendwo. vielleicht ist es der mysql-driver.. keine ahnung. (irgendwie koennte es auch noch JSON::XS sein.. hab ich irgendwie so im gefuehl) * weiters hat das "MaxRequestsPerChild 100" schon sehr viel gebracht. war kein absturz seit der umstellung. * zum setup, es ist eh schon so, dass wir einen perlbal vorgeschalten haben, und der apache wirklich nur die dynamischen requestes durchgereicht bekommt. vielen dank mal fuer eure hilfe, hoffenlich find ich bald (wahrscheinlich mal per zufall) das eigentliche problem. lg. max. On 22.05.2008, at 18:45, Marinos Yannikos wrote: > max demmelbauer schrieb: >> ./webtek console (was einfach nur den ganzen applikation-code >> laedt, und >> eine command-zeile bereitstellt) bei mir lokal auf einem IC2D 20MB, >> und >> auf der athlon64 debiankiste 40MB. > > 32bit vs. 64bit Perl wohl (8 byte pointer, alignment, ...), obwohl > Faktor 2 da eher der worst case sein sollte. > >> ich versteh einfach nicht: >> >> - erstens: wieso schon mal der unterschied von 20MB zwischen den >> systemen >> - zweitens: wieso braucht der apache prozess nochmal 80MB mehr >> fuer >> denselben code? >> - der unterschied zw test/live betrieb im speicher ist auch schon >> direkt nach dem starten (also unabhaengig von den requests) > > D?rfte dann wohl auch auf 32/64 bit zur?ckzuf?hren sein, evtl. auch > andere Perl-Version? > >> - mir ist es auch egal, der prozess kann soviel brauchen wie er >> will! aber wenn der server immer wieder crached ist es halt sch**e.. >> grrr... > > Wir haben schon lange ein Setup wie in > http://perl.apache.org/docs/1.0/guide/strategy.html#One_Plain_Apache_and_One_mod_perl_enabled_Apache_Servers > beschrieben, damit k?nnen wir die mod_perl Apaches auf 10-15 > limitieren > und trotzdem einige 100 Requests parallel abarbeiten (auf statische > Daten z.B.). > > Ansonsten kannst du wohl auch mal FastCGI anschauen, das trennt die > fetten Perl-Prozesse sauberer vom Apache als mod_perl. Ich warte > einstweilen auf ein Perl mit Speichermanagement, das die letzten 30 > Jahre Forschung in dem Gebiet nicht verschlafen hat. ;-) > (zur Not auch eine Version mit drangepfrimmeltem > http://www.hpl.hp.com/personal/Hans_Boehm/gc/) > >> aber irgendwo ist ganz sicher ein fehler bei uns im code, und der >> bringt >> mich an den rand des nervenzusammenbruchs, wenn ich am wo-ende 5x den >> server restarten muss ;) > > Du kannst ja mal die Apache-PIDs mitloggen > (http://httpd.apache.org/docs/1.3/mod/mod_log_config.html - %P) und > dann > im access.log nachschauen, welche Requests einen bestimmten Prozess so > aufgeblasen haben. Vielleicht findest du ja ein sch?nes memory leak > (ist > bei mod_perl sehr einfach zu erzeugen, nachdem die globalen > Variablen ja > bleiben). > >> eine vermutung ist auch ein `cmd` aufruf im applikationscode (darf/ >> soll >> ich sowas im mod_perl env aufrufen?) > > http://perl.apache.org/docs/1.0/guide/performance.html#Forking_and_Executing_Subprocesses_from_mod_perl > Gilt nat?rlich auch f?r backticks... > > MfG, > -mjy > -- > Dipl.-Ing. Marinos Yannikos, CEO > Preisvergleich Internet Services AG > Obere Donaustrasse 63, A-1020 Wien > Tel./Fax: (+431) 5811609-52/-55 > Handelsgericht Wien - FN 197241K - Firmensitz Wien > _______________________________________________ > Vienna-pm mailing list > Vienna-pm at pm.org > http://mail.pm.org/mailman/listinfo/vienna-pm