From ed at questinformation.com Wed Jan 4 11:01:25 2006 From: ed at questinformation.com (Ed Pigg) Date: Wed, 4 Jan 2006 13:01:25 -0600 Subject: [Chicago-talk] FreeBSD. Ports collection vs CPAN? Message-ID: Hi all. I'm starting to build a FreeBSD 6.0 server for development/experimentation purposes. There are quite a few perl modules in the ports collection. What are the pros and cons of using the ports collection for adding/updating modules vs CPAN. On Mac OSX I've always used CPAN. Any thoughts or advise is welcome. Ed Pigg ed at questinformation dot com From perl at cromedome.net Wed Jan 4 11:13:27 2006 From: perl at cromedome.net (Jason A. Crome) Date: Wed, 4 Jan 2006 13:13:27 -0600 Subject: [Chicago-talk] FreeBSD. Ports collection vs CPAN? In-Reply-To: References: Message-ID: <6C6D2099-1EE7-44BC-860B-F0804A9F2971@cromedome.net> Personally, for the modules I work with, I find that the ports collection either doesn't have what I am looking for, or the version that they have available always lags behind the most current in CPAN. You can't go wrong by continuing to install modules directly from CPAN. The ports are however useful when you have something else you like to install in ports that relies on something you don't have installed. The needed module just gets installed, and you don't even have to think about it. Good luck, and have a blast. FreeBSD is a great OS. -- Jason On Jan 4, 2006, at 1:01 PM, Ed Pigg wrote: > Hi all. > > I'm starting to build a FreeBSD 6.0 server for > development/experimentation purposes. There are quite a few perl > modules in the ports collection. What are the pros and cons of using > the ports collection for adding/updating modules vs CPAN. On Mac OSX > I've always used CPAN. Any thoughts or advise is welcome. > > Ed Pigg > ed at questinformation dot com > > _______________________________________________ > Chicago-talk mailing list > Chicago-talk at pm.org > http://mail.pm.org/mailman/listinfo/chicago-talk > From ijavaid at usa.net Wed Jan 4 11:41:30 2006 From: ijavaid at usa.net (Imran Javaid) Date: Wed, 04 Jan 2006 13:41:30 -0600 Subject: [Chicago-talk] FreeBSD. Ports collection vs CPAN? Message-ID: <250kaDTOU5008S01.1136403690@uwdvg001.cms.usa.net> I find the ports useful only when the target server will not have gcc or other development compilers installed. I had some production servers where I was not allowed to install gcc and the modules needed required a compile. In that case the pre-built port (or in that case RPM's) came in handy. Otherwise, CPAN should be the way to go as you will get the most recent version of the module. -imran ------ Original Message ------ Received: Wed, 04 Jan 2006 01:01:43 PM CST From: Ed Pigg To: chicago-talk at pm.org Subject: [Chicago-talk] FreeBSD. Ports collection vs CPAN? > Hi all. > > I'm starting to build a FreeBSD 6.0 server for > development/experimentation purposes. There are quite a few perl > modules in the ports collection. What are the pros and cons of using > the ports collection for adding/updating modules vs CPAN. On Mac OSX > I've always used CPAN. Any thoughts or advise is welcome. > > Ed Pigg > ed at questinformation dot com > > _______________________________________________ > Chicago-talk mailing list > Chicago-talk at pm.org > http://mail.pm.org/mailman/listinfo/chicago-talk > From ed at questinformation.com Thu Jan 5 06:40:00 2006 From: ed at questinformation.com (Ed Pigg) Date: Thu, 5 Jan 2006 08:40:00 -0600 Subject: [Chicago-talk] FreeBSD. Ports collection vs CPAN? In-Reply-To: <250kaDTOU5008S01.1136403690@uwdvg001.cms.usa.net> References: <250kaDTOU5008S01.1136403690@uwdvg001.cms.usa.net> Message-ID: <209884d255426f5b8a9e958a0a01631d@questinformation.com> Thanks Imran and Jason. Looks like I'll proceed with CPAN. Ed Pigg ed at questinformation dot com From lembark at wrkhors.com Thu Jan 5 12:11:06 2006 From: lembark at wrkhors.com (Steven Lembark) Date: Thu, 05 Jan 2006 15:11:06 -0500 Subject: [Chicago-talk] FreeBSD. Ports collection vs CPAN? In-Reply-To: References: Message-ID: > modules in the ports collection. What are the pros and cons of using > the ports collection for adding/updating modules vs CPAN. On Mac OSX > I've always used CPAN. Any thoughts or advise is welcome. If the modules you use are Purely Perly then they don't need ports. If your local compiler is having serious problems with a module (e.g., the version gcc has a bug) then the ports can be handy until you figure out the issue, solve it, and are able to get items from CPAN once again. -- Steven Lembark 85-09 90th Street Workhorse Computing Woodhaven, NY 11421 lembark at wrkhors.com 1 888 359 3508 From ng at johnwlong.com Thu Jan 5 08:25:54 2006 From: ng at johnwlong.com (John W. Long) Date: Thu, 05 Jan 2006 11:25:54 -0500 Subject: [Chicago-talk] Snakes and Rubies Video and Audio Online! Message-ID: <43BD4892.5040509@johnwlong.com> It is my pleasure to announce that the video and audio from the Snakes and Rubies event is now Online. So if you missed the event the first time, or if you would like to review what was said, head on over to the Snakes and Rubies site and download it now: http://snakesandrubies.com/ Since the whole event was around 3 hours, we've made it available in several pieces for your downloading pleasure. Enjoy! Kudos to Jacob Kaplan-Moss and the rest of the team who handled the recording and editing. -- John Long http://wiseheartdesign.com/ From beau at superiorss.com Thu Jan 5 23:45:10 2006 From: beau at superiorss.com (Beau Gould) Date: Fri, 6 Jan 2006 01:45:10 -0600 Subject: [Chicago-talk] Open Source Software Engineer, Chicago, IL Message-ID: <00fd01c61295$1efa3920$0a02a8c0@superioss.com> Open Source Software Engineer, Chicago, IL Salary is Open / D.O.E. My client is looking for highly talented software engineer to complement its development team. Candidate will be part of a team of developers building complex web based applications. He or she will be involved in architectural decisions and be responsible for implementing parts of the system. It will be important for the candidate to be able to take on a project independently and ensure its success. REQUIREMENTS: o The ideal candidate will be fluent in Ruby as well as proficient with Ruby on Rails. Given that these are new technologies, extensive experience developing web applications in Object-Oriented Perl, Python, or Java can be substituted as long as a strong desire to work in Ruby exists. o Experience in JavaScript and CSS is desirable as well as AJAX. o A deep understanding of relational databases and SQL is a must. o Experience with MySQL, PostgreSql is a big plus. o Experience with Linux/Unix is a must. o A degree in Computer Science, Engineering or relevant experience We subscribe to a notion that great programmers are 300 times more productive then average programmers. We are looking for a top-quality hacker: an expert programmer with good design sense and desire to get things accomplished. If you are bored of just a job, this may be the place for you. If you are interested in this position, please send resume and salary requirement to beau at superiorss.com This is a full time, on-site, salaried position for Illinois residents with authorization to work in the USA Open Source Jobs Yahoo Group: http://groups.yahoo.com/group/opensourcejobs Python, Zope, and Plone Jobs http://groups.yahoo.com/group/pythonzopejobs LAMP Jobs Yahoo Group: http://groups.yahoo.com/group/LAMPjobs -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.371 / Virus Database: 267.14.13/221 - Release Date: 1/4/2006 From andy at petdance.com Fri Jan 6 12:43:40 2006 From: andy at petdance.com (Andy Lester) Date: Fri, 6 Jan 2006 14:43:40 -0600 Subject: [Chicago-talk] TALK: Iterators and inside-out objects: Perl closures at work Message-ID: <20060106204340.GA13483@petdance.com> http://uniforum.chi.il.us/meetings/perliterators.html Iterators and inside-out objects: Perl closures at work Andy Lester Tuesday Jan 10th 2006 at 7:00pm Wheaton, Illinois Institute of Technology - Rice Campus, Room 103 Abstract Closures are a powerful abstraction common to modern dynamic languages. They're functions that maintain information between calls, and can in some ways be thought of as objects. In this gentle introduction to this advanced concept, you'll learn how Perl's lexical variable scoping allows closures, and how to apply them. We'll discuss: * Iterators that allow walking through a sequence of data or actions by maintaining state between calls. * "Inside-out objects", a method of creating objects in Perl that is gaining in popularity. (Later today, I'll send out official info about Mark-Jason Dominus on Feburary 6th) xoxo, Andy -- Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance From andy at petdance.com Sat Jan 7 16:28:28 2006 From: andy at petdance.com (Andy Lester) Date: Sat, 7 Jan 2006 18:28:28 -0600 Subject: [Chicago-talk] MEETING/TALK: Feb 6, 2006 with Mark Jason Dominus Message-ID: <20060108002828.GA32466@petdance.com> [Please feel free to forward to other area groups. Mark is a great speaker and well worth the trip. -- Andy] Mark Jason Dominus Red Flags: Code Review World Tour Tuesday, January 10, 2006 (7:00 PM - 9:00 PM) Doors open at 6:00: Talk with Mark before the meeting Illinois Institute Of Technology, Rice Campus Auditorium, room 166 201 East Loop Road Wheaton, IL http://www.rice.iit.edu/directions.html Chicago Perl Mongers is proud to welcome Mark Jason Dominus, author of "Higher-Order Perl," to the February meeting of Chicago.pm. Mark will be talking about the book he's currently working on, Perl Program Repair Shop and Red Flags. We'll be giving away a copy of Mark's book "Higher-Order Perl" as well as other swag. MJD is a very popular speaker, and we expect a large turnout. Please let us know you plan to attend by emailing andy at petdance.com with "MJD" in the subject. As preparation, Mark has asked Chicago PMers to read the following: I'm writing a new book, which I hope will be published in 2007. It's about code review and refactoring in Perl. (For more complete information, please see http://perl.plover.com/flagbook/.) To do this right, I need real examples of real code that other people wrote. I'll review the code and fix it up, and explain in the book what I did and why. I have about half the examples that I need. I hope that the Perl community can provide the other half. For the next year, I'll be travelling around speaking to Perl Mongers groups about this. I'd like to give about one talk each month for the rest of the year. What I hope will happen is that a group will invite me to come speak, and that some of the group members will send me some example code ahead of time. Then I'll read over the code, write up a talk about how I think it could be improved, and come visit the group and give the talk. After I go home again, I'l write up a book chapter about the code, incorporating the points that the PM group raised when I gave the talk. Guidelines for code contributions are at http://perl.plover.com/flagbook/contribute.html I need your contributions no later than January 17th. To contribute, send code to: mjd at plover.com. Questions? Send to mjd at plover.com. Thanks a lot for having me in to speak. For questions about this or any other upcoming meeting, please email Andy Lester at andy at petdance.com. -- Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance From ed at questinformation.com Sat Jan 7 18:25:53 2006 From: ed at questinformation.com (Ed Pigg) Date: Sat, 7 Jan 2006 20:25:53 -0600 Subject: [Chicago-talk] MEETING/TALK: Feb 6, 2006 with Mark Jason Dominus In-Reply-To: <20060108002828.GA32466@petdance.com> References: <20060108002828.GA32466@petdance.com> Message-ID: <75cc62de320a2d245f96a1ced9ddc700@questinformation.com> On Jan 7, 2006, at 6:28 PM, Andy Lester wrote: > [Please feel free to forward to other area groups. Mark is a great > speaker and well worth the trip. -- Andy] > > Mark Jason Dominus > Red Flags: Code Review World Tour > Tuesday, January 10, 2006 (7:00 PM - 9:00 PM) > Doors open at 6:00: Talk with Mark before the meeting I hope that I am not the only one confused with the two dates mentioned in this notice. Feb 6th 2006 in the subject line and January 10th in the message body. I'd love to attend. Which date is correct. Ed Pigg ed at questinformation dot com From andy at petdance.com Sat Jan 7 18:47:53 2006 From: andy at petdance.com (Andy Lester) Date: Sat, 7 Jan 2006 20:47:53 -0600 Subject: [Chicago-talk] CORRECTION: Feb 6, 2006 with Mark Jason Dominus Message-ID: <20060108024752.GA1513@petdance.com> I apologize! My original announcement said Feb 6 in the subject, but January 10 in the mail. January 10th is the Uniforum PerlSIG meeting, also at IIT, but in a different room. http://uniforum.chi.il.us/meetings/perliterators.html Mark Jason Dominus Red Flags: Code Review World Tour Monday, February 6, 2006 (7:00 PM - 9:00 PM) Doors open at 6:00: Talk with Mark before the meeting Illinois Institute Of Technology, Rice Campus Auditorium, room 166 201 East Loop Road Wheaton, IL http://www.rice.iit.edu/directions.html Chicago Perl Mongers is proud to welcome Mark Jason Dominus, author of "Higher-Order Perl," to the February meeting of Chicago.pm. Mark will be talking about the book he's currently working on, Perl Program Repair Shop and Red Flags. We'll be giving away a copy of Mark's book "Higher-Order Perl" as well as other swag. MJD is a very popular speaker, and we expect a large turnout. Please let us know you plan to attend by emailing andy at petdance.com with "MJD" in the subject. As preparation, Mark has asked Chicago PMers to read the following: I'm writing a new book, which I hope will be published in 2007. It's about code review and refactoring in Perl. (For more complete information, please see http://perl.plover.com/flagbook/.) To do this right, I need real examples of real code that other people wrote. I'll review the code and fix it up, and explain in the book what I did and why. I have about half the examples that I need. I hope that the Perl community can provide the other half. For the next year, I'll be travelling around speaking to Perl Mongers groups about this. I'd like to give about one talk each month for the rest of the year. What I hope will happen is that a group will invite me to come speak, and that some of the group members will send me some example code ahead of time. Then I'll read over the code, write up a talk about how I think it could be improved, and come visit the group and give the talk. After I go home again, I'l write up a book chapter about the code, incorporating the points that the PM group raised when I gave the talk. Guidelines for code contributions are at http://perl.plover.com/flagbook/contribute.html I need your contributions no later than January 17th. To contribute, send code to: mjd at plover.com. Questions? Send to mjd at plover.com. Thanks a lot for having me in to speak. For questions about this or any other upcoming meeting, please email Andy Lester at andy at petdance.com. -- Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance From perl at cromedome.net Mon Jan 9 12:43:09 2006 From: perl at cromedome.net (Jason A. Crome) Date: Mon, 9 Jan 2006 14:43:09 -0600 Subject: [Chicago-talk] Deciphering File Formats Message-ID: <290C9C33-7653-4707-8FBA-B370DC5CA524@cromedome.net> Good afternoon, A high-profile client of ours has come to us with a dilemma, which I am in turn coming to the community with. They have been working with a another company's software package for some time, and have years worth of data locked up in that company's proprietary file format. They are looking into switching away from that company's software package, but that company will neither provide them with the file format (for data conversion purposes), nor will they convert the data into a format that someone else could use. So while our client owns their data, it is entirely useless to them at this point. The sheer amount of data that they have makes re-entry impractical. (sound familiar? It's not Microsoft though) This client can't wait for the legal system to resolve the issue, and needs access to that data soon. They have come to us in search of help, but frankly, we have little experience in cracking file formats. Does anyone out there have a knack for deciphering file formats? Want to make a chunk of cash doing so? Please contact me off-list at crome at devnetinc.com if you are interested. I can provide more details and information, but would prefer to do so privately. Thanks! Jason Crome From briank at kappacs.com Mon Jan 9 16:27:59 2006 From: briank at kappacs.com (Brian Katzung) Date: Mon, 09 Jan 2006 18:27:59 -0600 Subject: [Chicago-talk] Deciphering File Formats In-Reply-To: <290C9C33-7653-4707-8FBA-B370DC5CA524@cromedome.net> References: <290C9C33-7653-4707-8FBA-B370DC5CA524@cromedome.net> Message-ID: <43C2FF8F.4020207@kappacs.com> I've done a bit of reverse engineering now and then. But before we go off-line to get into more details, have you exhausted all access through the original application? What about: - Export features - Plain text or html "printed" reports (printed to a file) - Other data access thru the interfaces as designed - Brian K Jason A. Crome wrote: > A high-profile client of ours has [...] years > worth of data locked up in that company's proprietary file format. > > They have come to us in search of > help, but frankly, we have little experience in cracking file > formats. > > Thanks! > Jason Crome From jbalint at gmail.com Tue Jan 10 12:38:42 2006 From: jbalint at gmail.com (Jess Balint) Date: Tue, 10 Jan 2006 15:38:42 -0500 Subject: [Chicago-talk] [Chicago-announce] TALK: Iterators and inside-out objects: Perlclosures at work In-Reply-To: <20060106204340.GA13483@petdance.com> Message-ID: <43c41b54.57c433d0.4e1b.779c@mx.gmail.com> Anybody going to this that wants to carpool from around downtown or near-north side ? It's kind of far so I am going to drive. If interested, mail me offline. Jess -----Original Message----- From: chicago-announce-bounces at pm.org [mailto:chicago-announce-bounces at pm.org] On Behalf Of Andy Lester Sent: Friday, January 06, 2006 3:44 PM To: chicago-talk at mail.pm.org; chicago-announce at mail.pm.org Subject: [Chicago-announce] TALK: Iterators and inside-out objects: Perlclosures at work http://uniforum.chi.il.us/meetings/perliterators.html Iterators and inside-out objects: Perl closures at work Andy Lester Tuesday Jan 10th 2006 at 7:00pm Wheaton, Illinois Institute of Technology - Rice Campus, Room 103 Abstract Closures are a powerful abstraction common to modern dynamic languages. They're functions that maintain information between calls, and can in some ways be thought of as objects. In this gentle introduction to this advanced concept, you'll learn how Perl's lexical variable scoping allows closures, and how to apply them. We'll discuss: * Iterators that allow walking through a sequence of data or actions by maintaining state between calls. * "Inside-out objects", a method of creating objects in Perl that is gaining in popularity. (Later today, I'll send out official info about Mark-Jason Dominus on Feburary 6th) xoxo, Andy -- Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance _______________________________________________ Chicago-announce mailing list Chicago-announce at pm.org http://mail.pm.org/mailman/listinfo/chicago-announce From jt at plainblack.com Wed Jan 11 08:47:26 2006 From: jt at plainblack.com (JT Smith) Date: Wed, 11 Jan 2006 10:47:26 -0600 Subject: [Chicago-talk] bad news Message-ID: I'm scheduled to give a talk on mod_perl handlers in February, but I'm pretty far behind in a project I have at work, so I won't have time to prepare the talk properly. I wanted to give you enough notice to find someone else to give a talk. Sorry for bowing out. Hopefully I can do it at some point in the future. Since we have a special guest speaker in February as it is, perhaps it won't be that big of a deal. JT ~ Plain Black ph: 703-286-2525 ext. 810 fax: 312-264-5382 http://www.plainblack.com I reject your reality, and substitute my own. ~ Adam Savage From frag at ripco.com Thu Jan 12 10:21:43 2006 From: frag at ripco.com (Mike Fragassi) Date: Thu, 12 Jan 2006 12:21:43 -0600 (CST) Subject: [Chicago-talk] makemaker hacking Message-ID: I have a script that I want to run as part of the make process; it (re)generates a file in MANIFEST. It should only run on my development/packaging host, when "make dist" is run, and not on the hosts where it will be deployed. I am using ExtUtils::MakeMaker. How can I specify this in Makefile.PL? I realize that I can just put the code in Makefile.PL itself (or use system()/backticks to call the script) but it'd be better if it was run when I type 'make dist' instead of 'perl Makefile.PL', in part because I don't see any way to force it to be skipped on deployment hosts other than by including the development IP address in Makefile.PL. That would work as a hack but is brittle compared to having the code be executed only after "make dist". (Or some other make target that is only meant to be run on the development host -- "make disttest", maybe?) Is there a way to do this with ExtUtils::MakeMaker at all, or perhaps with Module::Build? -- Mike F. P.S. I really, really, really wish there was a companion to the Perl Testing "notebook" book that covered Perl module creation, make-ing/build-ing, and distributing. These would make for a nice "Pragmatic Perl" bookshelf, along with Pro Perl Debugging, the Debugger pocket reference and Perl Best Practices. From me at heyjay.com Fri Jan 13 07:43:16 2006 From: me at heyjay.com (Jay Strauss) Date: Fri, 13 Jan 2006 09:43:16 -0600 Subject: [Chicago-talk] Specifying a minimum version in Makefile.PL Message-ID: <200601130943.16949.me@heyjay.com> Hi, How do I specify the minimum version of a prerequisite module? In my case my module needs >= Inline::Java .50_93 Also, what would I perldoc or read to learn more about the contents and options of Makefile.PL? Thanks Jay From brian.d.foy at gmail.com Fri Jan 13 07:52:22 2006 From: brian.d.foy at gmail.com (brian d foy) Date: Fri, 13 Jan 2006 09:52:22 -0600 Subject: [Chicago-talk] Specifying a minimum version in Makefile.PL In-Reply-To: <200601130943.16949.me@heyjay.com> References: <200601130943.16949.me@heyjay.com> Message-ID: <2715accf0601130752q3ce90357hb7cae90011dc3715@mail.gmail.com> On 1/13/06, Jay Strauss wrote: > Hi, > > How do I specify the minimum version of a prerequisite module? In my case my > module needs > > >= Inline::Java .50_93 Put this in your PREREQ_PM section of the call to WriteMakeFile > Also, what would I perldoc or read to learn more about the contents and > options of Makefile.PL? The Makefile.PL is just a Perl script, so you do the same things that you would do for any other Perl script. :) In mosts case, the magic usually comes from ExtUtils::MakeMaker. From me at heyjay.com Fri Jan 13 07:55:33 2006 From: me at heyjay.com (Jay Strauss) Date: Fri, 13 Jan 2006 09:55:33 -0600 Subject: [Chicago-talk] Specifying a minimum version in Makefile.PL In-Reply-To: <2715accf0601130752q3ce90357hb7cae90011dc3715@mail.gmail.com> References: <200601130943.16949.me@heyjay.com> <2715accf0601130752q3ce90357hb7cae90011dc3715@mail.gmail.com> Message-ID: <200601130955.33411.me@heyjay.com> On Friday 13 January 2006 9:52 am, brian d foy wrote: > On 1/13/06, Jay Strauss wrote: > > Hi, > > > > How do I specify the minimum version of a prerequisite module? In my > > case my module needs > > > > >= Inline::Java .50_93 > > Put this in your PREREQ_PM section of the call to WriteMakeFile > I did, but I must not be using the correct syntax. PREREQ_PM => { 'Test::More' => 0, 'version' => 0, 'Inline::Java' => '.50_93', 'Object::InsideOut' => 0, because it should error, since on this machine I don't have the prereq From mongers at bsod.net Fri Jan 13 07:58:59 2006 From: mongers at bsod.net (Pete Krawczyk) Date: Fri, 13 Jan 2006 09:58:59 -0600 (CST) Subject: [Chicago-talk] Specifying a minimum version in Makefile.PL In-Reply-To: <200601130943.16949.me@heyjay.com> Message-ID: Subject: [Chicago-talk] Specifying a minimum version in Makefile.PL From: Jay Strauss Date: Fri, 13 Jan 2006 09:43:16 -0600 }How do I specify the minimum version of a prerequisite module? In my case my }module needs } }>= Inline::Java .50_93 In your WriteMakefile call, make sure to have: PREREQ_PM => { 'Inline::Java' => .50_93 } The .50_93 means you need that version or higher. }Also, what would I perldoc or read to learn more about the contents and }options of Makefile.PL? perldoc ExtUtils::MakeMaker Also, look at other distributions' Makefile.PL files to get a better idea of how they're put together. You can also consider using Build.PL as well. For more information, look at perldoc Module::Build I've also made my module support both; you can look at http://search.cpan.org/src/PETEK/Algorithm-SixDegrees-0.03/Build.PL http://search.cpan.org/src/PETEK/Algorithm-SixDegrees-0.03/Makefile.PL to look at a simple comparison of the two file formats. -Pete K -- Pete Krawczyk mongers at bsod dot net From me at heyjay.com Fri Jan 13 07:58:41 2006 From: me at heyjay.com (Jay Strauss) Date: Fri, 13 Jan 2006 09:58:41 -0600 Subject: [Chicago-talk] Specifying a minimum version in Makefile.PL In-Reply-To: <2715accf0601130752q3ce90357hb7cae90011dc3715@mail.gmail.com> References: <200601130943.16949.me@heyjay.com> <2715accf0601130752q3ce90357hb7cae90011dc3715@mail.gmail.com> Message-ID: <200601130958.41892.me@heyjay.com> Got it, didn't know the format of specifying versions PREREQ_PM => { 'Test::More' => 0, 'version' => 0, 'Inline::Java' => .5092, 'Object::InsideOut' => 0, From me at heyjay.com Fri Jan 13 08:09:03 2006 From: me at heyjay.com (Jay Strauss) Date: Fri, 13 Jan 2006 10:09:03 -0600 Subject: [Chicago-talk] Specifying a minimum version in Makefile.PL In-Reply-To: References: Message-ID: <200601131009.03136.me@heyjay.com> On Friday 13 January 2006 9:58 am, Pete Krawczyk wrote: > Also, look at other distributions' Makefile.PL files to get a better idea > of how they're put together. > > You can also consider using Build.PL as well. ?For more information, look > at Thanks Pete Jay From me at heyjay.com Fri Jan 13 14:27:56 2006 From: me at heyjay.com (Jay Strauss) Date: Fri, 13 Jan 2006 16:27:56 -0600 Subject: [Chicago-talk] Uploading to CPAN Message-ID: Hi, I uploaded my first module to CPAN. Finance::InteractiveBrokers::TWS. But when search for it on CPAN http://search.cpan.org/search?query=interactivebrokers&mode=all it seems that somehow the directory tree got turned upside down in that, it looks like Jay Strauss > Finance-InteractiveBrokers-TWS-v0.0.1 > Finance::InteractiveBrokers::TWS and the description is under Finance-InteractiveBrokers-TWS-v0.0.1 rather than under Finance::InteractiveBrokers::TWS. I would have rather had it like: Jay Strauss > Finance::InteractiveBrokers::TWS > Finance-InteractiveBrokers-TWS-v0.0.1 and have the desc under Finance::InteractiveBrokers::TWS How would I repair this? How is the structure determined? Should I have removed the v0.0.1 from the file name created by "make dist"? Thanks Jay From mongers at bsod.net Fri Jan 13 14:40:15 2006 From: mongers at bsod.net (Pete Krawczyk) Date: Fri, 13 Jan 2006 16:40:15 -0600 (CST) Subject: [Chicago-talk] Uploading to CPAN In-Reply-To: Message-ID: Subject: [Chicago-talk] Uploading to CPAN From: Jay Strauss Date: Fri, 13 Jan 2006 16:27:56 -0600 }Jay Strauss > Finance-InteractiveBrokers-TWS-v0.0.1 > }Finance::InteractiveBrokers::TWS That's absolutely right. Under your modules, it's looking in the distribution called "Finance-InteractiveBrokers-TWS-v0.0.1" for the module "Finance::InteractiveBrokers::TWS". This is expected, since a distribution can have more than one module, and a module can be included in more than one distribution. Look at any other module on search.cpan and note that it does the exact same thing. This is not a bug. }Should I have removed the v0.0.1 from the file name created by "make dist"? The "v" is a bit superfluous; the tar file is generall of the form DIST-VER.tgz, which, for Algorithm::SixDegrees, looks like Algorithm-SixDegrees-0.03.tgz. So, to answer your question, no. -Pete K -- Pete Krawczyk mongers at bsod dot net From me at heyjay.com Fri Jan 13 15:07:44 2006 From: me at heyjay.com (Jay Strauss) Date: Fri, 13 Jan 2006 17:07:44 -0600 Subject: [Chicago-talk] Uploading to CPAN In-Reply-To: References: Message-ID: > Look at any other module on search.cpan and note that it does the exact > same thing. This is not a bug. When I look at Algorithm::SixDegrees for example, it shows Algorithm::SixDegrees, with a description. Whereas when I look at mine it shows, Finance-InteractiveBrokers-TWS-v0.0.1 with a description Jay From mongers at bsod.net Fri Jan 13 15:13:55 2006 From: mongers at bsod.net (Pete Krawczyk) Date: Fri, 13 Jan 2006 17:13:55 -0600 (CST) Subject: [Chicago-talk] Uploading to CPAN In-Reply-To: Message-ID: Subject: Re: [Chicago-talk] Uploading to CPAN From: Jay Strauss Date: Fri, 13 Jan 2006 17:07:44 -0600 }> Look at any other module on search.cpan and note that it does the exact }> same thing. This is not a bug. } }When I look at Algorithm::SixDegrees for example, it shows }Algorithm::SixDegrees, with a description. } }Whereas when I look at mine it shows, }Finance-InteractiveBrokers-TWS-v0.0.1 with a description Actually, if you look closer, you'll find my page has both Algorithm::SixDegrees and Algorithm-SixDegrees-0.03. The reason for that is that I signed up Algorithm::SixDegrees on the Registered Modules list. Look at http://www.cpan.org/modules/04pause.html#namespace for more information. -Pete K -- Pete Krawczyk perl at bsod dot net From me at heyjay.com Fri Jan 13 15:17:14 2006 From: me at heyjay.com (Jay Strauss) Date: Fri, 13 Jan 2006 17:17:14 -0600 Subject: [Chicago-talk] Uploading to CPAN In-Reply-To: References: Message-ID: > Actually, if you look closer, you'll find my page has both > Algorithm::SixDegrees and Algorithm-SixDegrees-0.03. You mean as a single entry? Because when I search only a single entry for Algorithm::SixDegrees comes up. > The reason for that > is that I signed up Algorithm::SixDegrees on the Registered Modules list. I too signed up for a Registered Modules list Jay From me at heyjay.com Fri Jan 13 15:19:35 2006 From: me at heyjay.com (Jay Strauss) Date: Fri, 13 Jan 2006 17:19:35 -0600 Subject: [Chicago-talk] Uploading to CPAN In-Reply-To: References: Message-ID: > Actually, if you look closer, you'll find my page has both > Algorithm::SixDegrees and Algorithm-SixDegrees-0.03. oops I see it, so many "Algorithm" results come back I missed in 10 pages into the list If I just search for SixDegrees I see it too From me at heyjay.com Sat Jan 14 08:54:25 2006 From: me at heyjay.com (Jay Strauss) Date: Sat, 14 Jan 2006 10:54:25 -0600 Subject: [Chicago-talk] Uploading to CPAN In-Reply-To: References: Message-ID: <200601141054.25483.me@heyjay.com> On Friday 13 January 2006 5:13 pm, Pete Krawczyk wrote: > The reason for that > is that I signed up Algorithm::SixDegrees on the Registered Modules list. Hi, So if I signed up for a namespace (see below). Will I get a chance to put the description of the module on: Finance::InteractiveBroker::TWS? How long does it normally take for an approval/denial of a namespace? Or by the fact that I see Finance::InteractiveBroker::TWS when I do a search mean it's already been accepted? Thanks Jay The following module was proposed for inclusion in the Module List: modid: Finance::InteractiveBrokers::TWS DSLIP: adhOp description: Lets you use Perl to call IB's Java TWS API userid: JSTRAUSS (Jay Strauss) chapterid: 24 (Commercial_Software_Interfaces) communities: similar: None rationale: InteractiveBrokers (IB) provides a Java application (TWS) that lets one trade stocks, bonds, futures... Additionally, IB lets one communicate with the TWS from external programs, which let's you write automated trading systems. enteredby: JSTRAUSS (Jay Strauss) enteredon: Fri Jan 13 05:19:08 2006 GMT The resulting entry would be: Finance::InteractiveBrokers:: ::TWS adhOp Lets you use Perl to call IB's Java TWS API JSTRAUSS Thanks for registering, -- The PAUSE PS: The following links are only valid for module list maintainers: Registration form with editing capabilities: https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=2ca00000_e535d7a2f77c163b&SUBMIT_pause99_add_mod_preview=1 Immediate (one click) registration: https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=2ca00000_e535d7a2f77c163b&SUBMIT_pause99_add_mod_insertit=1 From me at heyjay.com Sun Jan 15 07:50:00 2006 From: me at heyjay.com (Jay Strauss) Date: Sun, 15 Jan 2006 09:50:00 -0600 Subject: [Chicago-talk] Producing a GD::Graph Message-ID: <200601150950.01090.me@heyjay.com> Hi, I'm trying to produce a graph for stock prices. I'd very much like it to look like: http://ipo-australia.com/scgi-bin/beta/graph.cgi?graph=XAO_year_550x350 I can't seem to conjure the correct parms for the graph. Below (or attached) is my code and data. Does anyone have an idea of how you produce a graph, where the x axis just shows the month intervals? And then produce tick lines rise to meet the graph? Thanks Jay #!/usr/bin/perl use strict; use warnings; use Date::Calc qw(Delta_Days Add_Delta_Days); use GD::Graph::lines; my @data; while () { my ($date, $price) = split(/\s+/); my @date = split(/\//, $date); push @data, [\@date, $price]; } my @begin = @{$data[0][0]}; my @clean; foreach my $pt (@data) { my $index = Delta_Days(@begin, @{$pt->[0]}); $clean[$index] = $pt; } my (@dates, @prices); foreach my $index (0..$#clean) { my @date = Add_Delta_Days(@begin, $index); my $date; # if ($date[1] == 1) { $date = join("/", @date); # } push @dates, $date; push @prices, $clean[$index][1]; } my $graph = new GD::Graph::lines(600,600); $graph->set( x_label => 'Date', y_label => 'Price', # title => 'A Simple Line Graph', # y_max_value => 50, y_min_value => 900, y_max_value => 1100, # y_tick_number => 14, y_label_skip => 0, box_axis => 0, line_width => 3, # x_ticks=> 1, long_ticks =>1, transparent => 0, y_tick_number => 4, x_tick_number => 'auto', #y_label_skip => 2, #x_label_skip => 10, ); $graph->plot([\@dates, \@prices]); open(IMG, '>new_graph.png') or die $!; binmode IMG; print IMG $graph->gd->png(); __DATA__ 2003/06/23 909.09 2003/11/14 962.92 2003/11/17 963.03 2003/11/18 964.35 2003/11/19 963.11 2003/11/20 961.88 2003/11/21 961.92 2003/11/24 962.03 2003/11/25 963.34 2003/11/26 963.37 2003/11/27 963.41 2003/11/28 963.45 2003/12/01 964.78 2003/12/02 965.25 2003/12/03 966.29 2003/12/04 966.75 2003/12/05 966.34 2003/12/08 965.87 2003/12/09 967.74 2003/12/10 963.03 2003/12/11 963.1 2003/12/12 964.23 2003/12/14 964.3 2003/12/15 965.01 2003/12/16 964.41 2003/12/17 966.49 2003/12/18 965.72 2003/12/19 965.11 2003/12/21 965.18 2003/12/22 967.11 2003/12/23 967.92 2003/12/24 967.25 2003/12/25 967.29 2003/12/26 969.5 2003/12/29 970.93 2003/12/30 971.41 2003/12/31 971.19 2004/01/01 971.19 2004/01/02 971.19 2004/01/05 971.48 2004/01/06 971.96 2004/01/07 965.72 2004/01/08 965.54 2004/01/09 967.06 2004/01/12 959.61 2004/01/13 963.36 2004/01/14 957.79 2004/01/15 956 2004/01/16 955.13 2004/01/18 955.13 2004/01/19 955.13 2004/01/20 957.09 2004/01/21 962.16 2004/01/22 963.42 2004/01/23 965.4 2004/01/24 965.4 2004/01/26 960.58 2004/01/27 968.93 2004/01/28 969.13 2004/01/29 966.07 2004/01/30 967.37 2004/01/31 967.29 2004/02/02 967.89 2004/02/03 968.31 2004/02/04 970.45 2004/02/05 969.32 2004/02/06 973.72 2004/02/08 973.81 2004/02/09 974.92 2004/02/10 974.42 2004/02/11 975.65 2004/02/12 976.83 2004/02/13 976.97 2004/02/16 976.97 2004/02/17 979.22 2004/02/18 979.4 2004/02/19 979.03 2004/02/20 977.28 2004/02/21 977.28 2004/02/22 977.28 2004/02/23 978.31 2004/02/24 979.28 2004/02/25 979 2004/02/26 979.54 2004/02/27 980.53 2004/02/29 980.61 2004/03/01 982.5 2004/03/02 982.42 2004/03/03 981.3 2004/03/04 981.91 2004/03/05 983.93 2004/03/08 982.69 2004/03/09 982.58 2004/03/10 977.31 2004/03/11 975.66 2004/03/12 979.1 2004/03/14 979.1 2004/03/15 974.86 2004/03/16 974.13 2004/03/17 978.56 2004/03/18 980.58 2004/03/19 978.9 2004/03/22 974.35 2004/03/23 974.96 2004/03/24 972.86 2004/03/25 978.94 2004/03/26 982.05 2004/03/28 981.39 2004/03/29 983.34 2004/03/30 984.78 2004/03/31 984.73 2004/04/01 985.1 2004/04/02 986.92 2004/04/03 985.45 2004/04/05 985.26 2004/04/06 984.38 2004/04/07 985.5 2004/04/08 985.69 2004/04/09 986.33 2004/04/12 986.33 2004/04/13 982.58 2004/04/14 983.45 2004/04/15 983.42 2004/04/16 983.45 2004/04/19 984.94 2004/04/20 981.8 2004/04/21 980.88 2004/04/22 976.34 2004/04/23 979.97 2004/04/26 978.77 2004/04/27 979.88 2004/04/28 977.29 2004/04/29 977.23 2004/04/30 974.43 2004/05/03 978.15 2004/05/04 980.94 2004/05/05 981.34 2004/05/06 978.17 2004/05/07 977.89 2004/05/10 974.89 2004/05/11 974.9 2004/05/12 974.79 2004/05/13 974.19 2004/05/14 975.58 2004/05/17 973.29 2004/05/18 973.14 2004/05/19 978.24 2004/05/20 977.18 2004/05/21 979.02 2004/05/24 980.32 2004/05/25 983.33 2004/05/26 985.58 2004/05/27 986.53 2004/05/28 982.62 2004/05/31 982.62 2004/06/01 983.91 2004/06/02 983.24 2004/06/03 984.36 2004/06/04 983.95 2004/06/07 980.94 2004/06/08 980.26 2004/06/09 985.03 2004/06/10 986.15 2004/06/11 986.58 2004/06/14 986.53 2004/06/15 988.8 2004/06/16 989.54 2004/06/17 991.14 2004/06/18 992.64 2004/06/21 995.52 2004/06/22 996.53 2004/06/23 995.65 2004/06/24 996.81 2004/06/25 997.09 2004/06/28 997.76 2004/06/29 995.82 2004/06/30 996.8 2004/07/01 997.1 2004/07/02 997.88 2004/07/05 998.07 2004/07/06 994.84 2004/07/07 997.11 2004/07/08 996.09 2004/07/09 996.01 2004/07/12 992.72 2004/07/13 995.94 2004/07/14 993.53 2004/07/15 993.87 2004/07/16 993.45 2004/07/19 992.68 2004/07/20 996.88 2004/07/21 993.9 2004/07/22 993.06 2004/07/23 988.82 2004/07/26 986.22 2004/07/27 989.38 2004/07/28 990.94 2004/07/29 995.28 2004/07/30 995.01 2004/08/02 997.52 2004/08/03 996.9 2004/08/04 995.67 2004/08/05 989.61 2004/08/06 984.19 2004/08/09 982.31 2004/08/10 989.69 2004/08/11 986.7 2004/08/12 986.7 2004/08/13 983.36 2004/08/16 991.3 2004/08/17 993.08 2004/08/18 999.44 2004/08/19 999.9 2004/08/20 1001.25 2004/08/23 1004.29 2004/08/24 1004 2004/08/25 1005.75 2004/08/26 1006.34 2004/08/27 1005.6 2004/08/30 1006.24 2004/08/31 1006.27 2004/09/02 1007.51 2004/09/07 1007.79 2004/09/08 1008.18 2004/09/09 1008.64 2004/09/10 1009.43 2004/09/13 1012.8 2004/09/14 1012.23 2004/09/15 1010.62 2004/09/17 1011.87 2004/09/20 1012.51 2004/09/21 1013.55 2004/09/22 1014.9 2004/09/23 1015.1 2004/09/24 1014.74 2004/09/27 1013.65 2004/09/28 1016.52 2004/09/29 1016.76 2004/09/30 1016.81 2004/10/01 1019.01 2004/10/04 1019.61 2004/10/05 1020.24 2004/10/06 1020.36 2004/10/11 1019.51 2004/10/12 1018.26 2004/10/13 1016.7 2004/10/14 1017.72 2004/10/15 1018.21 2004/10/18 1016.38 2004/10/19 1016.97 2004/10/20 1017.15 2004/10/21 1017.08 2004/10/22 1017.14 2004/10/25 1017.7 2004/10/26 1017.9 2004/10/27 1017.4 2004/10/28 1016.05 2004/10/29 1014.84 2004/11/01 1014.54 2004/11/02 1013.39 2004/11/03 1013.02 2004/11/04 1015.04 2004/11/05 1014.87 2004/11/08 1013.19 2004/11/09 1015.55 2004/11/10 1015.48 2004/11/11 1013.69 2004/11/12 1014.86 2004/11/15 1008.46 2004/11/16 1010.87 2004/11/17 1001.76 2004/11/18 997.05 2004/11/19 1010.79 2004/11/22 1016.5 2004/11/23 1010.38 2004/11/24 1011.53 2004/11/29 1012.7 2004/11/30 1012.66 2004/12/01 1007.42 2004/12/02 1001.02 2004/12/03 1001.63 2004/12/06 1000.2 2004/12/07 1003.14 2004/12/08 1004.46 2004/12/09 1000.48 2004/12/10 1004.11 2004/12/13 998.93 2004/12/14 997.79 2004/12/15 997.27 2004/12/16 1002.68 2004/12/17 1005.855 2004/12/20 1009.71 2004/12/21 1008.46 2004/12/22 1007.68 2004/12/23 1006.35 2004/12/24 1006.35 2004/12/27 1006.63 2004/12/28 1006.91 2004/12/29 1005.05 2004/12/30 1005.7 2005/01/01 1005.5 2005/01/04 1012.68 2005/01/06 1014.66 2005/01/07 1014.05 2005/01/10 1016.01 2005/01/11 1017.51 2005/01/12 1017.14 2005/01/13 1016.62 2005/01/14 1018.66 2005/01/18 1018.97 2005/01/19 1018.43 2005/01/20 1019.8 2005/01/21 1021.82 2005/01/24 1022.5 2005/01/25 1022.47 2005/01/26 1022.75 2005/01/27 1022.79 2005/01/28 1022.8 2005/01/31 1022.85 2005/02/01 1023.16 2005/02/02 1022.87 2005/02/03 1020.8 2005/02/04 1020.92 2005/02/07 1020.9 2005/02/09 1020.91 2005/02/10 1020.98 2005/02/11 1021.05 2005/02/16 1024.26 2005/02/17 1024.38 2005/02/18 1024.42 2005/02/21 1024.55 2005/02/22 1024.9 2005/02/23 1024.78 2005/02/24 1024.42 2005/02/25 1024.46 2005/02/28 1025.12 2005/03/01 1024.6 2005/03/02 1025.03 2005/03/03 1025 2005/03/04 1025.37 2005/03/07 1024.93 2005/03/08 1025.68 2005/03/09 1025.53 2005/03/10 1024.96 2005/03/11 1025.03 2005/03/14 1024.94 2005/03/15 1025.01 2005/03/16 1025.15 2005/03/18 1026.31 2005/03/21 1026.45 2005/03/22 1026.7 2005/03/23 1026.47 2005/03/24 1026.47 2005/03/28 1026.54 2005/03/29 1026.49 2005/03/30 1027.21 2005/03/31 1027.99 2005/04/01 1027.89 2005/04/04 1027.83 2005/04/05 1028.71 2005/04/06 1028.87 2005/04/07 1028.84 2005/04/08 1029.28 2005/04/11 1029.03 2005/04/12 1029.48 2005/04/13 1028.62 2005/04/14 1027.76 2005/04/15 1025.33 2005/04/18 1019.56 2005/04/19 1022.55 2005/04/20 1021.03 2005/04/21 1022.9 2005/04/22 1022.99 2005/04/25 1022.93 2005/04/26 1023.81 2005/04/27 1022.29 2005/04/28 1020.15 2005/04/29 1020.42 2005/05/02 1022.5 2005/05/03 1022.22 2005/05/04 1027.76 2005/05/05 1028.29 2005/05/06 1029.33 2005/05/09 1031.1 2005/05/10 1031.39 2005/05/11 1030.41 2005/05/12 1028.97 2005/05/13 1029.01 2005/05/16 1029.01 2005/05/17 1030.04 2005/05/18 1030.45 2005/05/19 1031.61 2005/05/20 1030.9 2005/05/23 1032.84 2005/05/24 1033.59 2005/05/25 1035.43 2005/05/26 1036.01 2005/05/27 1037.2 2005/05/31 1036.55 2005/06/02 1036.83 2005/06/03 1036.58 2005/06/06 1037.83 2005/06/07 1037.67 2005/06/08 1037.7 2005/06/09 1037.78 2005/06/10 1038.07 2005/06/13 1038.27 2005/06/14 1037.91 2005/06/15 1039.08 2005/06/16 1039.07 2005/06/17 1039.08 2005/06/20 1041.49 2005/06/21 1042.75 2005/06/22 1042.43 2005/06/23 1042.91 2005/06/24 1043.01 2005/06/27 1043.03 2005/06/28 1042.82 2005/06/29 1043.46 2005/06/30 1043.45 2005/07/01 1043.49 2005/07/05 1042.31 2005/07/06 1043.04 2005/07/07 1043.44 2005/07/08 1043.73 2005/07/11 1049.47 2005/07/12 1049.87 2005/07/13 1049.91 2005/07/14 1047.91 2005/07/15 1046.4 2005/07/18 1047.95 2005/07/19 1045.84 2005/07/20 1045.9 2005/07/21 1046.63 2005/07/22 1046.63 2005/07/25 1047.33 2005/07/26 1045.85 2005/07/28 1047.17 2005/08/01 1045.53 2005/08/02 1045.73 2005/08/03 1045.32 2005/08/04 1045.25 2005/08/05 1046.3 2005/08/08 1046.28 2005/08/09 1048.39 2005/08/10 1052.32 2005/08/11 1053.27 2005/08/12 1053.14 2005/08/15 1054.51 2005/08/16 1054.04 2005/08/17 1055.83 2005/08/18 1058.96 2005/08/19 1059.6 2005/08/22 1062.11 2005/08/23 1060.09 2005/08/24 1061.5 2005/08/25 1063.06 2005/08/26 1061.7 2005/08/30 1059.67 2005/08/31 1062.16 2005/09/01 1062.7 2005/09/02 1064.5 2005/09/05 1064.63 2005/09/06 1063.43 2005/09/07 1062.77 2005/09/08 1063.23 2005/09/09 1061.53 2005/09/12 1061.08 2005/09/13 1062.3 2005/09/14 1063.49 2005/09/15 1062.04 2005/09/16 1066.73 2005/09/19 1067.67 2005/09/20 1066.98 2005/09/21 1068.43 2005/09/22 1068.36 2005/09/23 1065.22 2005/09/26 1068.9 2005/09/27 1067.91 2005/09/28 1068.14 2005/09/29 1069.78 2005/09/30 1067.07 2005/10/03 1070.11 2005/10/05 1069.17 2005/10/06 1070.62 2005/10/07 1070.36 2005/10/10 1071.7 2005/10/11 1072.47 2005/10/12 1074.11 2005/10/14 1071.89 2005/10/17 1076.02 2005/10/18 1073.79 2005/10/19 1075.63 2005/10/20 1072.38 2005/10/21 1072.23 2005/10/24 1075.54 2005/10/27 1075.55 2005/10/28 1075.6 2005/10/31 1075.61 2005/11/01 1077.11 2005/11/02 1077.72 2005/11/03 1076.72 2005/11/04 1075.08 2005/11/07 1075.01 2005/11/08 1073.97 2005/11/09 1074.33 2005/11/10 1071.35 2005/11/11 1070.55 2005/11/14 1069.91 2005/11/15 1072.59 2005/11/16 1071.49 2005/11/17 1068.11 2005/11/18 1066.5 2005/11/21 1063.7 2005/11/22 1062.47 2005/11/23 1061.21 2005/11/25 1060.69 2005/11/28 1067.28 2005/11/29 1067.68 2005/11/30 1069.74 2005/12/01 1062.17 2005/12/02 1060.97 2005/12/05 1065.7 2005/12/06 1066.42 2005/12/07 1066.96 2005/12/08 1069.25 2005/12/09 1069.27 2005/12/12 1066.42 2005/12/13 1067.4 2005/12/14 1069.85 2005/12/15 1069.96 2005/12/16 1073.82 2005/12/19 1077.61 2005/12/20 1077.3 2005/12/21 1077.43 2005/12/22 1078.45 2005/12/23 1079.08 2005/12/27 1079.91 2005/12/28 1080.68 2005/12/29 1080.04 2005/12/30 1081.15 2005/12/31 1083.45 2006/01/01 1083.45 2006/01/04 1082.25 2006/01/05 1081.59 2006/01/06 1073.29 2006/01/09 1072.11 2006/01/10 1067.56 2006/01/11 1065.03 2006/01/12 1067.54 2006/01/13 1069.43 From lembark at wrkhors.com Sun Jan 15 17:51:28 2006 From: lembark at wrkhors.com (Steven Lembark) Date: Sun, 15 Jan 2006 20:51:28 -0500 Subject: [Chicago-talk] [Perl Jobs] Strong LAMP developer (onsite), United States, IL, Chicago (fwd) Message-ID: <5594450ABBDA678982B41855@[192.168.1.9]> ---------- Forwarded Message ---------- From: Perl Jobs Subject: [Perl Jobs] Strong LAMP developer (onsite), United States, IL, Chicago > Online URL for this job: http://jobs.perl.org/job/1071 > > To subscribe to this list, send mail to jobs-subscribe at perl.org. > To unsubscribe, send mail to jobs-unsubscribe at perl.org. > > Posted: January 13, 2006 > > Job title: Strong LAMP developer > > Location: United States, IL, Chicago > > Travel: 0% > > Terms of employment: Salaried employee > > Hours: Full time > > Onsite: yes > > Description: > Chicagoland based company in search of a web developer to > design/develop/maintain a web-based content management system, and other > support tools for our users in a LAMP environment. > > Candidates should be highly self-motivated individuals who possess a > strong understanding and working knowledge of Perl, MySql, Linux RedHat, > Apache, mod_perl, PHP, Java, XHTML, CSS, Javascript, XML, and UML. > Candidates should also demonstrate a willingness to learn new languages > and > technologies as needed. > > > Required skills: > - Perl, mod_perl, PHP > - Apache + SSL > - SQL Database design, DBI, MySql > - solid OO design, UML > - XHTML, CSS, JavaScript, XML > - Strong communications skills > - Self motivated > - Detail oriented > > > Desired skills: > - Linux administration experience > - MySql administration experience > > > Contact information at: > http://jobs.perl.org/job/1071#contact > > > > ---------- End Forwarded Message ---------- -- Steven Lembark 85-09 90th Street Workhorse Computing Woodhaven, NY 11421 lembark at wrkhors.com 1 888 359 3508 From andy at petdance.com Mon Jan 16 10:31:27 2006 From: andy at petdance.com (Andy Lester) Date: Mon, 16 Jan 2006 12:31:27 -0600 Subject: [Chicago-talk] Fwd: [Pdx-pm] Perlmongers Wikipedia article References: <20060116180528.GA20844@joshheumann.com> Message-ID: > brian d foy has started a Wikipedia article about Perl Mongers. > > http://en.wikipedia.org/wiki/Perl_mongers > > Any additions would be very welcome, particularly if you can fill > in any > details of the the early history of PM. > > Cheers, > > Dave... -- Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance From Darren.Young at ChicagoGSB.edu Tue Jan 17 11:13:43 2006 From: Darren.Young at ChicagoGSB.edu (Young, Darren) Date: Tue, 17 Jan 2006 13:13:43 -0600 Subject: [Chicago-talk] Script comments Message-ID: <490F3E9EEF01B04598860AAB71777B4E2BF72C@GSBEX.gsb.uchicago.edu> Finally have come close to finishing my parallel backup script. Thanks for the Parallel::ForkManager idea, works great. Love to get some review and comments on the script from those that are better than me at this (before it gets shoved into production). Thanks in advance, >>> 1 #!/usr/local/bin/perl 2 # ======================================================================== ====== 3 # 4 # backup.pl 5 # 6 # Perform backup of the mailstore(s) in parallel 7 # 8 # $Id: backup.pl,v 1.6 2006/01/17 19:04:04 dyoung2 Exp $ 9 # 10 # ======================================================================== ====== 11 # 12 # ChangeLog 13 # 14 # $Log: backup.pl,v $ 15 # Revision 1.6 2006/01/17 19:04:04 dyoung2 16 # * Cleaned up tabs (converted to whitespace) 17 # 18 # Revision 1.5 2006/01/17 18:54:25 dyoung2 19 # * Removed constants. 20 # * Added --smtphost and --smtpfrom options. 21 # 22 # Revision 1.4 2006/01/17 18:45:44 dyoung2 23 # * Added sending of report email. 24 # 25 # Revision 1.3 2006/01/17 17:50:29 dyoung2 26 # * Added stats tracking. 27 # * Added --testmode. 28 # * Added dup of STDIN, STDOUT and STDERR to the logfile. 29 # 30 # Revision 1.2 2006/01/10 21:08:58 dyoung2 31 # * First version for testing. 32 # 33 # Revision 1.1 2006/01/09 20:38:17 dyoung2 34 # * Initial version. 35 # 36 # ======================================================================== ====== 37 # 38 # Notes: 39 # 40 # - Doesn't account for multiple instances of message server on the same box. 41 # - Need to check the backup-groups file to ensure groups exist there. 42 # 43 # ======================================================================== ====== 44 45 my $cvsid = '$Id: backup.pl,v 1.6 2006/01/17 19:04:04 dyoung2 Exp $'; 46 my @cvsinfo = split( ' ', $cvsid ); 47 our $NAME = File::Basename::basename($0); 48 our $VERSION = $cvsinfo[2]; 49 50 51 # ------------------------------------------------------------------------ ------ 52 # B E G I N 53 # ------------------------------------------------------------------------ ------ 54 55 # Pragmas 56 use strict; 57 58 # "Standard" modules we use 59 use FindBin; 60 use Getopt::Long qw(GetOptions); 61 use File::Basename (); 62 use Sys::Hostname; 63 use Mail::Sender; 64 use Parallel::ForkManager; 65 use File::stat; 66 67 use POSIX qw(strftime); 68 69 70 # ------------------------------------------------------------------------ ------ 71 # G L O B A L V A R I A B L E S 72 # ------------------------------------------------------------------------ ------ 73 my $DEBUG = 0; 74 my $DEBUG_LEVEL = 1; 75 my $VERBOSE = 0; 76 my $LOGFILE = "$FindBin::Bin/$NAME.log"; 77 78 my $TESTMODE = 0; 79 my $TYPE = "full"; 80 my $REPTDEST = "systems@\lists.chicagogsb.edu"; 81 my $SMTPHOST = "localhost"; 82 my $SMTPFROM = "IMS_Backup"; 83 84 my $STARTLETTER = "A"; 85 my $ENDLETTER = "Z"; 86 87 my $REGFILE = "/etc/msgregistry.inf"; 88 my $HOSTNAME = hostname; 89 90 my $IMSROOT = get_ims_root($REGFILE); 91 my $BKPFILE = $IMSROOT . "/" . "msg-$HOSTNAME" . "/" . "backup-groups.conf"; 92 my $IMSBKPCMD = $IMSROOT . "/bin/msg/store/bin/imsbackup"; 93 94 my $BKPDEST = "/mnt/imsbkvol"; 95 96 my $NUMPROCS = 4; 97 98 99 # used for statistics 100 my %JOB_START; 101 my %JOB_END; 102 my %JOB_SIZE; 103 104 105 # ------------------------------------------------------------------------ ------ 106 # C O M M A N D L I N E O P T I O N S 107 # ------------------------------------------------------------------------ ------ 108 109 our $USAGE = " 110 Usage: 111 112 $NAME 113 - Perform backup of the mailstore(s) in parallel 114 115 Options: 116 --help : this help screen 117 --version : prints the version 118 119 --debug : enables debugging (default off) 120 --debug_level : debug level (1-4) (default: $DEBUG_LEVEL 121 --verbose : passes a verbose flag to all commands called 122 123 --logfile : location of the logfile (default: $LOGFILE) 124 125 --testmode : only run in test, don't actually do anything (default off) 126 127 --type : type of backup 128 valid options are: full (the default) or incr (incremental) 129 130 --numprocs : number of children to keep running (default: $NUMPROCS) 131 --bkpdest : destination for the backup files (default: $BKPDEST) 132 133 --startletter : group letter to start with (default: $STARTLETTER) 134 --endletter : group letter to end with (default: $ENDLETTER) 135 136 --smtphost : host to use for sending report email (default: $SMTPHOST) 137 --smtpfrom : from address for report email (default: $SMTPHOST) 138 139 "; 140 141 142 GetOptions( 143 "help" => sub { print_usage(); }, 144 "version" => sub { print_version(); }, 145 146 "debug" => \$DEBUG, 147 "debug_level" => \$DEBUG_LEVEL, 148 "verbose" => \$VERBOSE, 149 150 "logfile=s" => \$LOGFILE, 151 152 "testmode" => \$TESTMODE, 153 154 "type=s" => \$TYPE, 155 156 "numprocs=i" => \$NUMPROCS, 157 "bkpdest=s" => \$BKPDEST, 158 159 "startletter=s" => \$STARTLETTER, 160 "endletter=s" => \$ENDLETTER, 161 162 "smtphost=s" => \$SMTPHOST, 163 "smtpfrom=s" => \$SMTPFROM 164 ); 165 166 167 # ------------------------------------------------------------------------ ------ 168 # V A R I A B L E S 169 # ------------------------------------------------------------------------ ------ 170 171 # upper case the start and end letters 172 $STARTLETTER = uc($STARTLETTER); 173 $ENDLETTER = uc($ENDLETTER); 174 175 my $name = "main()"; 176 177 # the group letters to run imsbackup against 178 # what happens if ENDLETTER comes *before* STARTLETTER (e.g. type) 179 my @letters = ("$STARTLETTER" .. "$ENDLETTER"); 180 181 182 # ------------------------------------------------------------------------ ------ 183 # M A I N L O O P 184 # ------------------------------------------------------------------------ ------ 185 186 # Flush everything 187 select(STDIN); $| = 1; 188 select(STDERR); $| = 1; 189 select(STDOUT); $| = 1; 190 191 unless ( $TESTMODE ) { 192 open( STDOUT, ">$LOGFILE" ) or die "Unable to dup STDOUT: ($!)\n"; 193 open( STDIN, "/dev/null" ) or die "Can't read /dev/null: ($!)"; 194 open( STDERR, ">>&STDOUT" ) or die "Can't dup stdout: ($!)"; 195 } 196 197 if ( $TESTMODE ) { 198 logmsg("$name: ** Running in test mode **"); 199 } 200 201 # Avoid broken pipe messages 202 $SIG{PIPE} = 'IGNORE'; 203 204 logmsg("$NAME: version $VERSION starting"); 205 logmsg("$name: performing a $TYPE backup"); 206 207 # dump our settings if debug was requested 208 debug("$name: START -> $STARTLETTER"); 209 debug("$name: END -> $ENDLETTER"); 210 debug("$name: IMSROOT -> $IMSROOT"); 211 debug("$name: BKPFILE -> $BKPFILE"); 212 debug("$name: BKPCMD -> $IMSBKPCMD"); 213 debug("$name: NUMPROCS -> $NUMPROCS"); 214 debug("$name: BKPDEST -> $BKPDEST"); 215 debug("$name: SMTPHOST -> $SMTPHOST"); 216 debug("$name: SMTPFROM -> $SMTPFROM"); 217 218 219 220 # create the fork manager object 221 my $forker = new Parallel::ForkManager($NUMPROCS); 222 223 # callback for each child start 224 $forker->run_on_start( sub { 225 my ($pid, $group) = @_; 226 logmsg("$group: Started $group, pid = $pid"); 227 $JOB_START{$group} = time(); 228 }); 229 230 # callback for each child finish 231 $forker->run_on_finish( sub { 232 my ($pid, $exit_code, $group) = @_; 233 logmsg("$group: Finished $group, pid = $pid, exit code = $exit_code"); 234 $JOB_END{$group} = time(); 235 236 # if the dump file is present save the file size 237 # otherwise use 0 as the size (file isn't there) 238 if ( -f "$BKPDEST/$group" ) { 239 my $f = stat("$BKPDEST/$group"); 240 $JOB_SIZE{$group} = $f->size; 241 logmsg("$group: size => " . $f->size); 242 } else { 243 $JOB_SIZE{$group} = 0; 244 } 245 }); 246 247 248 249 ### 250 # Start children, keep specified number of children running 251 ### 252 foreach my $letter (@letters) { 253 my $group = "group" . $letter; 254 logmsg("forker(): working on letter $letter"); 255 256 my $pid = $forker->start($group) and next; 257 258 my $cmd; 259 $cmd = $IMSBKPCMD; 260 $cmd .= " " . "-f-"; 261 $cmd .= " " . "/$HOSTNAME/$group"; 262 $cmd .= " " . ">"; 263 $cmd .= " " . "$BKPDEST" . "/" . $group; 264 265 debug("$name: $cmd"); 266 267 # only run the system() call outside of testmode 268 if ( ! $TESTMODE ) { 269 $rc = system($cmd); 270 $rc = $rc / 256; 271 } else { 272 $rc = 0; 273 } 274 275 logmsg("forker(): system call returned : $rc"); 276 277 $forker->finish($rc, $group); # closes process 278 } 279 280 281 # wait for all children to complete (avoids zombies) 282 logmsg("$name: waiting for all children to finish"); 283 $forker->wait_all_children(); 284 285 286 ### 287 # Print statistics for each group 288 ### 289 logmsg("$name: all done, dumping stats\n"); 290 foreach my $letter (@letters) { 291 my $group = "group" . $letter; 292 293 my $start = strftime "%m-0.000000e+00-%Y %H:%M:%S", localtime($JOB_START{$group}); 294 my $end = strftime "%m-0.000000e+00-%Y %H:%M:%S", localtime($JOB_END{$group}); 295 my $elapsed = $JOB_END{$group} = $JOB_START{$group}; 296 297 print "$group " . $start . " " . $end . " " . $JOB_SIZE{$group} . "\n"; 298 } 299 print "\n"; 300 301 302 303 ### 304 # Generate and send report email 305 ### 306 logmsg("$name: Sending report email"); 307 open(LOGFILE, "<$LOGFILE") or die "Unable to open logfile $LOGFILE for read ($!)\n"; 308 309 if ( $DEBUG ) { 310 $sender = new Mail::Sender { 311 smtp => "$SMTPHOST", 312 from => "$SMTPFROM", 313 debug => \*STDOUT, 314 debug_level => $DEBUG_LEVEL, 315 } or die $Mail::Sender::Error . "\n"; 316 } else { 317 $sender = new Mail::Sender { 318 smtp => "$SMTPHOST", 319 from => "$SMTPFROM", 320 } or die $Mail::Sender::Error . "\n"; 321 } 322 323 logmsg("$name: opening smtp connection to $SMTPHOST"); 324 $sender->Open ({ 325 to => 'darren.young at gsb.uchicago.edu', 326 subject => "IMS backup report for " . localtime(time()), 327 }) or die $Mail::Sender::Error . "\n"; 328 329 while() { 330 $sender->SendEx($_); 331 }; 332 333 $sender->Close(); 334 close(LOGFILE); 335 336 337 # all done 338 exit(0); 339 340 341 342 343 # ------------------------------------------------------------------------ ------ 344 # F U N C T I O N S 345 # ------------------------------------------------------------------------ ------ 346 347 sub print_version { 348 print "$NAME version $VERSION\n"; 349 exit(0); 350 } 351 352 sub print_usage { 353 print "$USAGE"; 354 exit(0); 355 } 356 357 sub logmsg { 358 my $message = shift; 359 if ( ! $message ) { 360 print "logmsg: you must supply a message!\n"; 361 exit(127); 362 } 363 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); 364 365 $mon += 1; 366 $year += 1900; 367 $mon = sprintf("00", $mon); 368 $mday = sprintf("00", $mday); 369 $hour = sprintf("00", $hour); 370 $min = sprintf("00", $min); 371 $sec = sprintf("00", $sec); 372 373 print "$mon-$mday-$year $hour:$min:$sec: $message\n"; 374 375 return(1); 376 } 377 378 sub debug { 379 my $message = shift; 380 if ( $DEBUG ) { 381 logmsg("DEBUG: $message"); 382 return(1); 383 } else { 384 return(1); 385 } 386 } 387 388 sub get_ims_root { 389 my ($regfile) = @_; 390 my $rootpath = ""; 391 392 open(REGFILE, "<$regfile") or die "Failed to open $regfile ($!)\n"; 393 while() { 394 next if /^$/; 395 chomp; 396 if ( /RootPath/ ) { 397 ($key, $rootpath) = split('=', $_); 398 $rootpath =~ s/^\s+//; 399 $rootpath =~ s/\s+$//; 400 } 401 } 402 close(REGFILE); 403 404 return($rootpath); 405 } 406 407 __END__ From steve at fisharerojo.org Tue Jan 17 11:54:08 2006 From: steve at fisharerojo.org (Steve Peters) Date: Tue, 17 Jan 2006 13:54:08 -0600 Subject: [Chicago-talk] Script comments In-Reply-To: <490F3E9EEF01B04598860AAB71777B4E2BF72C@GSBEX.gsb.uchicago.edu> References: <490F3E9EEF01B04598860AAB71777B4E2BF72C@GSBEX.gsb.uchicago.edu> Message-ID: <20060117195408.GA29544@fisharerojo.org> On Tue, Jan 17, 2006 at 01:13:43PM -0600, Young, Darren wrote: > Finally have come close to finishing my parallel backup script. Thanks > for the Parallel::ForkManager idea, works great. Love to get some review > and comments on the script from those that are better than me at this > (before it gets shoved into production). > Three quick comments since I'm assuming you have unit tests for this code to show that its working... 1. Pod::Usage - live it, learn it, love it. 2. I saw you were using POSIX::strftime() one place in your script. So why do you have this code in there too. Also, do you really want to fail your backup if someone writes out an empty log message. 3. Why is your program have its own unique logging function? A package would probably be more useful, and let you put all your logs in a single parsable format. Steve Peters steve at fisharerojo.org 357 sub logmsg { 358 my $message = shift; 359 if ( ! $message ) { 360 print "logmsg: you must supply a message!\n"; 361 exit(127); 362 } 363 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); 364 365 $mon += 1; 366 $year += 1900; 367 $mon = sprintf("00", $mon); 368 $mday = sprintf("00", $mday); 369 $hour = sprintf("00", $hour); 370 $min = sprintf("00", $min); 371 $sec = sprintf("00", $sec); From Darren.Young at ChicagoGSB.edu Tue Jan 17 12:05:32 2006 From: Darren.Young at ChicagoGSB.edu (Young, Darren) Date: Tue, 17 Jan 2006 14:05:32 -0600 Subject: [Chicago-talk] Script comments Message-ID: <490F3E9EEF01B04598860AAB71777B4E2BF72D@GSBEX.gsb.uchicago.edu> > 1. Pod::Usage - live it, learn it, love it. Yea, good idea, that's another chunk that was supposed to be 2 options and was added at the start but has grown out of control now. > 2. I saw you were using POSIX::strftime() one place in your script. > So why do you have this code in there too. You know, I completely missed that one, thanks. > Also, do you really want to fail your backup if someone writes out an empty log message. Probably not, the logmsg is pulled from a logging package I normally use and was still there. > 3. Why is your program have its own unique logging function? > A package would probably be more useful, and let you put all your logs > in a single parsable format. It actually is in another package that I normally use. I just ripped that function out for this script. Not enough time to think this one through. From lembark at wrkhors.com Tue Jan 17 15:20:03 2006 From: lembark at wrkhors.com (Steven Lembark) Date: Tue, 17 Jan 2006 18:20:03 -0500 Subject: [Chicago-talk] Script comments In-Reply-To: <490F3E9EEF01B04598860AAB71777B4E2BF72C@GSBEX.gsb.uchicago.edu> References: <490F3E9EEF01B04598860AAB71777B4E2BF72C@GSBEX.gsb.uchicago.edu> Message-ID: > > 1 #!/usr/local/bin/perl > 2 # > ======================================================================== > ====== Using blocks of '#' survive wraps without blowing up the code. > 4 # backup.pl Perl Library? > ------------------------------------------------------------------------ > ------ > 71 # G L O B A L V A R I A B L E S > 72 # > ------------------------------------------------------------------------ > ------ > 73 my $DEBUG = 0; > 74 my $DEBUG_LEVEL = 1; > 75 my $VERBOSE = 0; > 76 my $LOGFILE = "$FindBin::Bin/$NAME.log"; > 77 > 78 my $TESTMODE = 0; > 79 my $TYPE = "full"; > 80 my $REPTDEST = "systems@\lists.chicagogsb.edu"; > 81 my $SMTPHOST = "localhost"; > 82 my $SMTPFROM = "IMS_Backup"; > 83 > 84 my $STARTLETTER = "A"; > 85 my $ENDLETTER = "Z"; > 86 > 87 my $REGFILE = "/etc/msgregistry.inf"; > 88 my $HOSTNAME = hostname; > 89 > 90 my $IMSROOT = get_ims_root($REGFILE); > 91 my $BKPFILE = $IMSROOT . "/" . "msg-$HOSTNAME" . "/" . > "backup-groups.conf"; > 92 my $IMSBKPCMD = $IMSROOT . "/bin/msg/store/bin/imsbackup"; > 93 > 94 my $BKPDEST = "/mnt/imsbkvol"; > 95 > 96 my $NUMPROCS = 4; > 97 > 98 > 99 # used for statistics > 100 my %JOB_START; > 101 my %JOB_END; > 102 my %JOB_SIZE; Lexicals aren't "global", the farthest out they can go is the package they live in (vs. global variables that can be accessed from everywhere). You might also want to initialize the lists to () for prettier debugging and some easier checks. > ------ > 106 # C O M M A N D L I N E O P T I O N S > 107 # > ------------------------------------------------------------------------ Ditto the suggestion for Pod::Usage. > ------ > 168 # V A R I A B L E S > 169 # > ------------------------------------------------------------------------ Why not put these in the same place as your package variables? If it looks like one place in the code defines the package stuff it makes finding things harder if they aren't in it (and the Getopt::Long block is long). > ------ > 170 > 171 # upper case the start and end letters > 172 $STARTLETTER = uc($STARTLETTER); > 173 $ENDLETTER = uc($ENDLETTER); > 174 > 175 my $name = "main()"; Check out the use of "caller" in a list context. The $subroutine argument saves you from setting this. With EXPR, it returns some extra information that the debugger uses to print a stack trace. The value of EXPR indicates how many call frames to go back before the current one. ($package, $filename, $line, $subroutine, $hasargs, $wantarray, $evaltext, $is_require, $hints, $bitmask) = caller($i); > 191 unless ( $TESTMODE ) { > 192 open( STDOUT, ">$LOGFILE" ) or die "Unable to dup STDOUT: > ($!)\n"; > 193 open( STDIN, "/dev/null" ) or die "Can't read /dev/null: > ($!)"; > 194 open( STDERR, ">>&STDOUT" ) or die "Can't dup stdout: ($!)"; Might want to start using the three-argument version. It'll make the second open a bit more obvious. Q: Why bother to open /dev/null? Just close STDIN if you want to ignore it -- saves flushing it, above. You can also save the "or die..." checks via: use Fatal qw( open ); which converts failure to an exception for you automatically. Closing flushes the handle automatically, which a re-open will do for you. That leaves you with: use Fatal qw( open ); open my $logfh, '>', $logpath; # alive at this point means the log path is open # and error messages no longer need go to the # original file handles to be noticed. close STDIN; open STDOUT, '>>&' , $logfh; # double-check the exact syntax open STDERR, '>>&' , $logfh; # double-check the exact syntax It'd probably be cleaner to create the anon-sub's as variables first and pass them in as: $forker->foo( $job_start ); $forker->bar( $job_finish ); Putting them at the top in the package variables section also saves anyone from having to wander this far down the code in order to change some part of them (e.g., adding logging later on). ############################################################ # package variables ############################################################ ############################################################ # passed to Parllel::Forkatosis as init, cleanup # handlers. my %fork_handler_subz = ( run_on_start => sub { ... }, run_on_finish => sub { ... }, ); ... # deep in the bowels of your code where noone needs # to be mucking around you can stuff them up the # forkatosis handler and go along with life. $forker->$_( $fork_handler_subz{ $_ } ) for keys %fork_handler_subz; > 220 # create the fork manager object > 221 my $forker = new Parallel::ForkManager($NUMPROCS); > 222 > 223 # callback for each child start > 224 $forker->run_on_start( sub { > 225 my ($pid, $group) = @_; > 226 logmsg("$group: Started $group, > pid = $pid"); > 227 $JOB_START{$group} = time(); > 228 }); > 229 > 230 # callback for each child finish > 231 $forker->run_on_finish( sub { > 232 my ($pid, $exit_code, $group) = > @_; > 233 logmsg("$group: Finished $group, > pid = $pid, exit code = $exit_code"); > 234 $JOB_END{$group} = time(); > 235 > 236 # if the dump file is present save > the file size > 237 # otherwise use 0 as the size > (file isn't there) > 238 if ( -f "$BKPDEST/$group" ) { > 239 my $f = > stat("$BKPDEST/$group"); > 240 $JOB_SIZE{$group} = $f->size; > 241 logmsg("$group: size => " . > $f->size); > 242 } else { > 243 $JOB_SIZE{$group} = 0; > 244 } > 245 }); > 246 > 247 > 248 > 249 ### > 250 # Start children, keep specified number of children running > 251 ### > 252 foreach my $letter (@letters) { > 253 my $group = "group" . $letter; > 254 logmsg("forker(): working on letter $letter"); > 255 > 256 my $pid = $forker->start($group) and next; > 257 > 258 my $cmd; > 259 $cmd = $IMSBKPCMD; > 260 $cmd .= " " . "-f-"; > 261 $cmd .= " " . "/$HOSTNAME/$group"; > 262 $cmd .= " " . ">"; > 263 $cmd .= " " . "$BKPDEST" . "/" . $group; This might be a bit less error prone using with a list, which can be passed directly to system (see perldoc -f system for reasons why). It'd also be easier to read if you were consistent using "$foo/$bar" vs. $foo . '/' . $bar. my $group_path = "$BKPDEST/$group"; my @cmd = ( $imsbkpcmd, '-f-', "/$hostname/$group", '>', "$bkpdest/$group" ); system @cmd unless $debug_mode; If this is getting passed to system it'll be cleaner in most cases to just leave it as a list: (see perldoc -f system for reasons). > 265 debug("$name: $cmd"); > 266 > 267 # only run the system() call outside of testmode > 268 if ( ! $TESTMODE ) { > 269 $rc = system($cmd); > 270 $rc = $rc / 256; > 271 } else { > 272 $rc = 0; > 273 } > 274 > 275 logmsg("forker(): system call returned : $rc"); > 276 > 277 $forker->finish($rc, $group); # closes process > 278 } > 279 > 280 > 281 # wait for all children to complete (avoids zombies) > 282 logmsg("$name: waiting for all children to finish"); > 283 $forker->wait_all_children(); This all reduces to: use Schedule::Parallel; sub handle_a_letter { my $letter = shift or croak "Bogus handle_a_letter: missing the letter"; my @cmd = ( ... ); system @cmd; } my @queue = map { my $letter = $_; sub { handle_a_letter $letter } } @letterz; runqueue @queue and die "Failed execution..."; which deals with the waits, and dodges having to hardwire separate pre- and post- condidtions for you. This might also make testing a bit easier since you could call handle_a_letter directly to check the results of a single backup. > 307 open(LOGFILE, "<$LOGFILE") or die "Unable to open logfile $LOGFILE That or just open it with a '+' and use rewind -- saves a possible source of erros and data loss if someone blows off the file before you are done processing the data. > for read ($!)\n"; > 308 > 309 if ( $DEBUG ) { > 310 $sender = new Mail::Sender { You're always better off avoiding the indirect object calls. Mail::Sender->new( ... ) > 329 while() { > 330 $sender->SendEx($_); > 331 }; You can loose a trailing blank line this way, but using defined will also dodge a warning. > 357 sub logmsg { my $debug_prefix = ''; sub debug { # notice the trailing space. $debug = 'DEBUG '; } sub logmsg { use Date::Format; my $message = shift or croak 'Bogus logmsg: missing the message'; my $datestr = time2str '%m-%d-%Y %H:%M:%S', time; print "$debug_preifx$debug_prefix $name $datestr $message"; } Might be better of with "%Y-%m-%d %H:%M:%S' (i.e., ISO format) since all the date packages can process it properly and the stuff sorts lexically if you want to combine files later on. -- Steven Lembark 85-09 90th Street Workhorse Computing Woodhaven, NY 11421 lembark at wrkhors.com 1 888 359 3508 From Darren.Young at ChicagoGSB.edu Tue Jan 17 16:09:14 2006 From: Darren.Young at ChicagoGSB.edu (Young, Darren) Date: Tue, 17 Jan 2006 18:09:14 -0600 Subject: [Chicago-talk] Script comments Message-ID: <490F3E9EEF01B04598860AAB71777B4E2BF72F@GSBEX.gsb.uchicago.edu> > > > > 1 #!/usr/local/bin/perl > > 2 # > > > ============================================================== > ========== > > ====== > > Using blocks of '#' survive wraps without blowing up the code. It was intact when I sent it, really it was. I limit to 79 characters in vim but then added line numbers for the email. Seems as though the mailing list wrapped everything once I added those. Think I'll dump it through perltidy here to clean it up and move down to a 76 character line width. > > > 4 # backup.pl > > Perl Library? Changed it to msg-backup.pl, thx. Have to digest the rest now... From Darren.Young at ChicagoGSB.edu Tue Jan 17 16:20:08 2006 From: Darren.Young at ChicagoGSB.edu (Young, Darren) Date: Tue, 17 Jan 2006 18:20:08 -0600 Subject: [Chicago-talk] Perl Help Message-ID: <490F3E9EEF01B04598860AAB71777B4E2BF730@GSBEX.gsb.uchicago.edu> Have a couple small projects on my plate that we're looking for some (paid) Perl assistance. Not 100% sure if it's appropriate to look for this on this list. But, if it is and anyone is interested, I'll post the details. Thanks, Darren Young Senior UNIX Administrator University of Chicago Graduate School of Business From brian.d.foy at gmail.com Tue Jan 17 16:20:22 2006 From: brian.d.foy at gmail.com (brian d foy) Date: Tue, 17 Jan 2006 18:20:22 -0600 Subject: [Chicago-talk] Script comments In-Reply-To: References: <490F3E9EEF01B04598860AAB71777B4E2BF72C@GSBEX.gsb.uchicago.edu> Message-ID: <2715accf0601171620x5e173cbdq6fbc2d656c91c080@mail.gmail.com> On 1/17/06, Steven Lembark wrote: > Lexicals aren't "global", the farthest out they can go > is the package they live in (vs. global variables that > can be accessed from everywhere). Lexicals exist in their scope, not packages (because they aren't package variables). The package builtin doesn't define a scope. If the lexical isn't in a block, it's defined in the scope of the file. Anything else in the file can see it, but things in other files can't. #!/usr/bin/perl my $foo = "Chicago"; print "In main, foo is $foo\n"; package bar; my $quux = "New York"; print "In bar, foo is $foo\n"; print "In bar, quux is $quux\n"; package baz; print "In baz, foo is $foo\n"; print "In baz, quux is $quux\n"; -- brian d foy http://www.pair.com/~comdog/ From brian.d.foy at gmail.com Tue Jan 17 16:45:16 2006 From: brian.d.foy at gmail.com (brian d foy) Date: Tue, 17 Jan 2006 18:45:16 -0600 Subject: [Chicago-talk] Perl Help In-Reply-To: <490F3E9EEF01B04598860AAB71777B4E2BF730@GSBEX.gsb.uchicago.edu> References: <490F3E9EEF01B04598860AAB71777B4E2BF730@GSBEX.gsb.uchicago.edu> Message-ID: <2715accf0601171645h1146d6c4v3a5a13fe92f83c9b@mail.gmail.com> On 1/17/06, Young, Darren wrote: > > Have a couple small projects on my plate that we're looking for some > (paid) Perl assistance. Not 100% sure if it's appropriate to look for > this on this list. But, if it is and anyone is interested, I'll post the > details. Hi Darren, If you have simple or short problems, you might get some free help here. :) Otherwise, several of us can help privately too. :) -- brian d foy http://www.pair.com/~comdog/ From fasteliteprogrammer at yahoo.com Tue Jan 17 20:14:00 2006 From: fasteliteprogrammer at yahoo.com (elite elite) Date: Tue, 17 Jan 2006 20:14:00 -0800 (PST) Subject: [Chicago-talk] test Message-ID: <20060118041400.95663.qmail@web36515.mail.mud.yahoo.com> __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com From andy at petdance.com Tue Jan 17 20:23:42 2006 From: andy at petdance.com (Andy Lester) Date: Tue, 17 Jan 2006 22:23:42 -0600 Subject: [Chicago-talk] Fwd: [perlsemny] Slides from my Inside-Out talk References: <43CDBEDA.4050006@hyperbolic.net> Message-ID: Wow, here are some GREAT slides on inside-out objects that totally kick the ass of the ones I did for the Uniforum class. Begin forwarded message: > From: David Golden > Date: January 17, 2006 10:06:50 PM CST > To: perlsemny at yahoogroups.com > Subject: [perlsemny] Slides from my Inside-Out talk > Reply-To: perlsemny at yahoogroups.com > > For those at tonight's talk (and even those who weren't), I've > posted a > PDF of my slides: > > http://dagolden.com/talks/20060117_whats_all_the_fuss.pdf > > I'm also happy to take followup questions or feedback on the > presentation itself. > > Regards, > David Golden > > > > > Yahoo! Groups Links > > <*> To visit your group on the web, go to: > http://groups.yahoo.com/group/perlsemny/ > > <*> To unsubscribe from this group, send an email to: > perlsemny-unsubscribe at yahoogroups.com > > <*> Your use of Yahoo! Groups is subject to: > http://docs.yahoo.com/info/terms/ > > > > -- Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/pipermail/chicago-talk/attachments/20060118/2bc7f056/attachment-0001.html From fasteliteprogrammer at yahoo.com Tue Jan 17 20:13:52 2006 From: fasteliteprogrammer at yahoo.com (elite elite) Date: Tue, 17 Jan 2006 20:13:52 -0800 (PST) Subject: [Chicago-talk] test Message-ID: <20060118041352.63410.qmail@web36511.mail.mud.yahoo.com> __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com From lembark at wrkhors.com Wed Jan 18 07:43:51 2006 From: lembark at wrkhors.com (Steven Lembark) Date: Wed, 18 Jan 2006 10:43:51 -0500 Subject: [Chicago-talk] Script comments In-Reply-To: <490F3E9EEF01B04598860AAB71777B4E2BF72F@GSBEX.gsb.uchicago.edu> References: <490F3E9EEF01B04598860AAB71777B4E2BF72F@GSBEX.gsb.uchicago.edu> Message-ID: <203C94211DECA2970754E43A@[192.168.1.9]> -- "Young, Darren" >> > >> > 1 #!/usr/local/bin/perl >> > 2 # >> > >> ============================================================== >> ========== >> > ====== >> >> Using blocks of '#' survive wraps without blowing up the code. > > It was intact when I sent it, really it was. I limit to 79 characters in You I trust. The mailers I don't. A single block of ######################################################################## can be split any number of times without breaking the code. > Have to digest the rest now... Maalox moments :-) -- Steven Lembark 85-09 90th Street Workhorse Computing Woodhaven, NY 11421 lembark at wrkhors.com 1 888 359 3508 From lembark at wrkhors.com Wed Jan 18 07:46:10 2006 From: lembark at wrkhors.com (Steven Lembark) Date: Wed, 18 Jan 2006 10:46:10 -0500 Subject: [Chicago-talk] Script comments In-Reply-To: <2715accf0601171620x5e173cbdq6fbc2d656c91c080@mail.gmail.com> References: <490F3E9EEF01B04598860AAB71777B4E2BF72C@GSBEX.gsb.uchicago.edu> <2715accf0601171620x5e173cbdq6fbc2d656c91c080@mail.gmail.com> Message-ID: > lexical isn't in a block, it's defined in the scope of the file. Which isn't global. The name "package lexicals" is one I picked up at one of the Perl Conferences to describe lexicals defined outside of any curlys; "file lexicals" would probably have been a better name. -- Steven Lembark 85-09 90th Street Workhorse Computing Woodhaven, NY 11421 lembark at wrkhors.com 1 888 359 3508 From Darren.Young at ChicagoGSB.edu Wed Jan 18 09:24:03 2006 From: Darren.Young at ChicagoGSB.edu (Young, Darren) Date: Wed, 18 Jan 2006 11:24:03 -0600 Subject: [Chicago-talk] Script comments Message-ID: <490F3E9EEF01B04598860AAB71777B4E2BF734@GSBEX.gsb.uchicago.edu> > > lexical isn't in a block, it's defined in the scope of the file. > > Which isn't global. > > The name "package lexicals" is one I picked up at one > of the Perl Conferences to describe lexicals defined > outside of any curlys; "file lexicals" would probably > have been a better name. > I've actually wondered for some time what to call variables 'way up at the top' and outside of braces/loops/etc, really, the ones up in main. And I should probably get used to calling them lexicals as well since that's really what they are. DY From Darren.Young at ChicagoGSB.edu Wed Jan 18 09:50:06 2006 From: Darren.Young at ChicagoGSB.edu (Young, Darren) Date: Wed, 18 Jan 2006 11:50:06 -0600 Subject: [Chicago-talk] Perl Help Message-ID: <490F3E9EEF01B04598860AAB71777B4E2BF735@GSBEX.gsb.uchicago.edu> Ok then, here goes. Perhaps more detail that anyone needs, but better safe than sorry. The first project under way is increasing the student mail quota from 40MB to 100MB. While this doesn't sound like much, when you take it x 5000 mailboxes it becomes a pain. The largest problems are that 1) we have constant account maintenance activity (adds/changes/deletes) so there has to be a firm process and 2) a single large partition of 300+GB is a real witch to fsck when things have unplanned downtime. What I've done to get around #2 is to create many small (50GB) LUN's on the SAN and map those up to the mail server. Each of those then has a single slice/filesystem and is mounted up on the host. The mail server (iPlanet 5.2) then has a mail partition/store on each of those. Account adds / moves will simply round-robin on all of those small partitions. When one of those starts getting chummy, we'll move some off to another one. Now, the 5000 accounts I'm speaking of here are active students. In addition to those we have 30,000 alumni accounts since everyone here gets 'email for life'. Not a forward, a real 20MB mailbox. These mailboxes are stored on an AS5200 array as opposed to the SAN. And, at this point, all of the student mailboxes are as well. Which leads me to what has to be done first. Move the student mailboxes over to the SAN stores. iPlanet has a single command to do a mailbox move from a given mail partition to another one. The problem is it doesn't do things like locking the mailbox during the move, deny access during, etc. Sun wants the mail server down to do the move. Even at wire speed on a 2GB HBA to the SAN, that means many many hours of downtime. I know 90% of the things that have to be done to move the mailbox in a safe manner, what I need to create is a generic method and a command wrapper to perform the operations. Basically: 1. 2 LDAP attributes that have to be changed to hold delivery to the mailbox and deny access to it (POP, IMAP and HTTP). 2. Any active POP or IMAP processes talking to the mailbox have to be killed. 3. A system command is issued to the message server to perform the move. 4. The reverse of #2 and #1 needs to be performed. 5. Another system command is issued to start delivery of mail that was held. The command wrapper around this needs to be able to act on a single mailbox/LDAP DN or work on many of them fed from a file. Reason for the file (or many on the command line) is for graduation. 1 quarter after students graduate they become official alumni which means their quota is reduced and their mailbox is moved to the alumni mailstore (and different server). When these requests come through from our account/student maintenance system they come through in bulk between 800 and 1500 at a time. This same routine will then need to be integrated into our existing account maintenance system which is written in Perl. This takes care of all the initial adds/changes/deletes but has no ability to place mailboxes on certain stores. Since we always had a single store, I had built all the LDAP portions to take the message server defaults. This is where the round-robin ability comes in. When an account add request comes through, the LDAP create code needs to "fling" the creates around many stores in a fairly even manner. Was thinking it would remember where it created the last one and use the next one in line. There are 2 or 3 other projects along the same lines, all Perl and pretty much all account maintenance related. If anyone has questions and wants more details, feel free to call me at the office. 773-702-0331. And thanks for all the other help. From lembark at wrkhors.com Wed Jan 18 10:48:57 2006 From: lembark at wrkhors.com (Steven Lembark) Date: Wed, 18 Jan 2006 13:48:57 -0500 Subject: [Chicago-talk] Script comments In-Reply-To: <490F3E9EEF01B04598860AAB71777B4E2BF734@GSBEX.gsb.uchicago.edu> References: <490F3E9EEF01B04598860AAB71777B4E2BF734@GSBEX.gsb.uchicago.edu> Message-ID: <382C60919DA6AE9960C4BB61@[192.168.1.9]> > I've actually wondered for some time what to call variables 'way up at > the top' and outside of braces/loops/etc, really, the ones up in main. > > And I should probably get used to calling them lexicals as well since > that's really what they are. Anything with a "my" in front of it is a lexical variable. [Which is why most of the subroutines most people write most of the time are closures :-]. Because their lifespan is longer than it takes to execute a block, people have various names for the lexicals that live in the file scope. The difference is not one of scope (they are lexicals and the same rules apply to them wherever they are) but lifetime: lexicals enclosed in explicit blocks (say, a for loop) have a different lifetime than file-scoped ones. -- Steven Lembark 85-09 90th Street Workhorse Computing Woodhaven, NY 11421 lembark at wrkhors.com 1 888 359 3508 From Darren.Young at ChicagoGSB.edu Wed Jan 18 11:04:44 2006 From: Darren.Young at ChicagoGSB.edu (Young, Darren) Date: Wed, 18 Jan 2006 13:04:44 -0600 Subject: [Chicago-talk] Script comments Message-ID: <490F3E9EEF01B04598860AAB71777B4E2BF738@GSBEX.gsb.uchicago.edu> > my @cmd = > ( > $imsbkpcmd, > '-f-', > "/$hostname/$group", > '>', > "$bkpdest/$group" > ); > > system @cmd unless $debug_mode; > > If this is getting passed to system it'll be cleaner > in most cases to just leave it as a list: Oh, that is sooo much cleaner. Completely forgot that way of using system(). This is what stinks about only wrting Perl between outages/upgrades/projects, I forget way too much. Darren From Darren.Young at ChicagoGSB.edu Wed Jan 18 13:11:44 2006 From: Darren.Young at ChicagoGSB.edu (Young, Darren) Date: Wed, 18 Jan 2006 15:11:44 -0600 Subject: [Chicago-talk] Check for modules Message-ID: <490F3E9EEF01B04598860AAB71777B4E2BF739@GSBEX.gsb.uchicago.edu> Was reading recipe 12.2 in the cookbook (Trapping Errors in require or use) and came up with something based on their example. Any thoughts on this chunk? Possible problems? I'd prefer to spit out more details/instructions if a module isn't installed as opposed to the "Can't find foo/bar" Can't even say how many times I've had a non-perl admin move one of my scripts to a different host then come back and say "what does this mean?". ######################################################################## #### # B E G I N ######################################################################## #### # Require a Perl version require 5.006_001; # tested against 5.6 and 5.8 # Pragmas use strict; # catch my accidental lack of my BEGIN { # modules we need to operate my @MODs = ( # "Standard" modules we use 'FindBin', 'Getopt::Long', 'File::Basename', 'Sys::Hostname', 'File::stat', 'Pod::Usage', 'POSIX', # "Extra" modules we need # (not included with the Perl distribution) 'Mail::Sender', 'Parallel::ForkManager', 'Date::Format', ); # check to see if the required modules are installed # and if so, load them up otherwise puke for my $mod (@MODs) { if ( eval "require $mod" ) { $mod->import(); ### print "Loaded module: $mod\n"; } else { print "Module $mod not installed!" and exit(0); } } } Namely, was wondering about the eval "require" vs. an eval "use" (which doesn't seem to produce the same results). Is eval "reqiure" + import() the ideal way to do this? Thanks, Darren From joshua.mcadams at gmail.com Wed Jan 18 17:37:49 2006 From: joshua.mcadams at gmail.com (Joshua McAdams) Date: Wed, 18 Jan 2006 19:37:49 -0600 Subject: [Chicago-talk] Dinner Message-ID: <49d805d70601181737t4ab3cf79od1fe8bde7377ddc@mail.gmail.com> Any suggestions for the location of the night-before-YAPC dinner? It is probably going to be a dutch treat event, just like it was at YAPC Toronto. Preferably in the IIT area, though we were also thinking about Chinatown since it is only one 'L' stop away and since there is nothing near IIT. Does anyone have a Chinatown favorite? From joshua.mcadams at gmail.com Wed Jan 18 17:48:30 2006 From: joshua.mcadams at gmail.com (Joshua McAdams) Date: Wed, 18 Jan 2006 19:48:30 -0600 Subject: [Chicago-talk] Citadel Message-ID: <49d805d70601181748h3f5bffbey2be4c7bfa7ab3cf8@mail.gmail.com> Anyone on the list have inroads into Citadel? We would like to ask them about YAPC sponsorship and could use some help. Thanks, Josh From jason at froebe.net Wed Jan 18 17:57:36 2006 From: jason at froebe.net (Jason L. Froebe) Date: Wed, 18 Jan 2006 19:57:36 -0600 Subject: [Chicago-talk] Citadel In-Reply-To: <49d805d70601181748h3f5bffbey2be4c7bfa7ab3cf8@mail.gmail.com> Message-ID: <000601c61c9b$b8d9d4f0$6b01a8c0@superbutter> Hi Josh, I would add Northern Trust, UBS and Bank of America to that list as all are heavy users of perl jason -----Original Message----- From: chicago-talk-bounces at pm.org [mailto:chicago-talk-bounces at pm.org] On Behalf Of Joshua McAdams Sent: Wednesday, January 18, 2006 7:49 PM To: Chicago.pm chatter Subject: [Chicago-talk] Citadel Anyone on the list have inroads into Citadel? We would like to ask them about YAPC sponsorship and could use some help. Thanks, Josh _______________________________________________ Chicago-talk mailing list Chicago-talk at pm.org http://mail.pm.org/mailman/listinfo/chicago-talk -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 4480 bytes Desc: not available Url : http://mail.pm.org/pipermail/chicago-talk/attachments/20060119/6eb1b36d/smime.bin From joshua.mcadams at gmail.com Wed Jan 18 18:17:09 2006 From: joshua.mcadams at gmail.com (Joshua McAdams) Date: Wed, 18 Jan 2006 20:17:09 -0600 Subject: [Chicago-talk] Citadel In-Reply-To: <000601c61c9b$b8d9d4f0$6b01a8c0@superbutter> References: <49d805d70601181748h3f5bffbey2be4c7bfa7ab3cf8@mail.gmail.com> <000601c61c9b$b8d9d4f0$6b01a8c0@superbutter> Message-ID: <49d805d70601181817k73eb6d4o43f6cb3d86845cf0@mail.gmail.com> > I would add Northern Trust, UBS and Bank of America to that list as all are > heavy users of perl Thanks!!! If anyone has a contact, please let me know and I'll send a sponsorship request form to you. From esinclai at pobox.com Wed Jan 18 18:18:43 2006 From: esinclai at pobox.com (Eric Sinclair) Date: Wed, 18 Jan 2006 20:18:43 -0600 Subject: [Chicago-talk] Citadel In-Reply-To: <49d805d70601181817k73eb6d4o43f6cb3d86845cf0@mail.gmail.com> References: <49d805d70601181748h3f5bffbey2be4c7bfa7ab3cf8@mail.gmail.com> <000601c61c9b$b8d9d4f0$6b01a8c0@superbutter> <49d805d70601181817k73eb6d4o43f6cb3d86845cf0@mail.gmail.com> Message-ID: Josh- I work at UBS, though not directly with Perl. I'd be happy to call around and see who you might speak with. -Eric On Jan 18, 2006, at 8:17 PM, Joshua McAdams wrote: >> I would add Northern Trust, UBS and Bank of America to that list >> as all are >> heavy users of perl > > Thanks!!! > > If anyone has a contact, please let me know and I'll send a > sponsorship request form to you. > _______________________________________________ > Chicago-talk mailing list > Chicago-talk at pm.org > http://mail.pm.org/mailman/listinfo/chicago-talk > -- esinclai at pobox.com aim/skype: esinclai http://www.kittyjoyce.com/eric/log/ jabber: esinclai at gmail.com From jason at froebe.net Wed Jan 18 18:22:43 2006 From: jason at froebe.net (Jason L. Froebe) Date: Wed, 18 Jan 2006 20:22:43 -0600 Subject: [Chicago-talk] Citadel In-Reply-To: <49d805d70601181817k73eb6d4o43f6cb3d86845cf0@mail.gmail.com> Message-ID: <005401c61c9f$3af8cec0$6b01a8c0@superbutter> I know atleast one person at each of the banks.. send the forms to me and I'll pass them along. Jason L. Froebe http://jfroebe.livejournal.com http://www.propsmart.com Team Sybase -----Original Message----- From: chicago-talk-bounces+jason=froebe.net at pm.org [mailto:chicago-talk-bounces+jason=froebe.net at pm.org] On Behalf Of Joshua McAdams Sent: Wednesday, January 18, 2006 8:17 PM To: Chicago.pm chatter Subject: Re: [Chicago-talk] Citadel > I would add Northern Trust, UBS and Bank of America to that list as all are > heavy users of perl Thanks!!! If anyone has a contact, please let me know and I'll send a sponsorship request form to you. _______________________________________________ Chicago-talk mailing list Chicago-talk at pm.org http://mail.pm.org/mailman/listinfo/chicago-talk -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 4480 bytes Desc: not available Url : http://mail.pm.org/pipermail/chicago-talk/attachments/20060119/74b2390a/smime-0001.bin From jason at froebe.net Wed Jan 18 18:23:30 2006 From: jason at froebe.net (Jason L. Froebe) Date: Wed, 18 Jan 2006 20:23:30 -0600 Subject: [Chicago-talk] Citadel In-Reply-To: Message-ID: <005c01c61c9f$57fb90c0$6b01a8c0@superbutter> Eric, contact me tomorrow. :) Jason L. Froebe http://jfroebe.livejournal.com http://www.propsmart.com Team Sybase -----Original Message----- From: chicago-talk-bounces at pm.org [mailto:chicago-talk-bounces at pm.org] On Behalf Of Eric Sinclair Sent: Wednesday, January 18, 2006 8:19 PM To: Chicago.pm chatter Subject: Re: [Chicago-talk] Citadel Josh- I work at UBS, though not directly with Perl. I'd be happy to call around and see who you might speak with. -Eric On Jan 18, 2006, at 8:17 PM, Joshua McAdams wrote: >> I would add Northern Trust, UBS and Bank of America to that list >> as all are >> heavy users of perl > > Thanks!!! > > If anyone has a contact, please let me know and I'll send a > sponsorship request form to you. > _______________________________________________ > Chicago-talk mailing list > Chicago-talk at pm.org > http://mail.pm.org/mailman/listinfo/chicago-talk > -- esinclai at pobox.com aim/skype: esinclai http://www.kittyjoyce.com/eric/log/ jabber: esinclai at gmail.com _______________________________________________ Chicago-talk mailing list Chicago-talk at pm.org http://mail.pm.org/mailman/listinfo/chicago-talk -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 4480 bytes Desc: not available Url : http://mail.pm.org/pipermail/chicago-talk/attachments/20060119/2f702455/smime.bin From shawn.c.carroll at gmail.com Wed Jan 18 19:16:17 2006 From: shawn.c.carroll at gmail.com (Shawn Carroll) Date: Wed, 18 Jan 2006 21:16:17 -0600 Subject: [Chicago-talk] Citadel In-Reply-To: <49d805d70601181748h3f5bffbey2be4c7bfa7ab3cf8@mail.gmail.com> References: <49d805d70601181748h3f5bffbey2be4c7bfa7ab3cf8@mail.gmail.com> Message-ID: On 1/18/06, Joshua McAdams wrote: > Anyone on the list have inroads into Citadel? We would like to ask > them about YAPC sponsorship and could use some help. > > Thanks, > Josh > _______________________________________________ > Chicago-talk mailing list > Chicago-talk at pm.org > http://mail.pm.org/mailman/listinfo/chicago-talk > I work at Citadel, is that in roads enough? --Shawn -- shawn.c.carroll at gmail.com Perl Programmer Soccer Referee From shawn.c.carroll at gmail.com Wed Jan 18 19:17:22 2006 From: shawn.c.carroll at gmail.com (Shawn Carroll) Date: Wed, 18 Jan 2006 21:17:22 -0600 Subject: [Chicago-talk] Dinner In-Reply-To: <49d805d70601181737t4ab3cf79od1fe8bde7377ddc@mail.gmail.com> References: <49d805d70601181737t4ab3cf79od1fe8bde7377ddc@mail.gmail.com> Message-ID: Happiness is a great place, less than a block from the L. Also, you have Connies at 25th? and Archer. --Shawn On 1/18/06, Joshua McAdams wrote: > Any suggestions for the location of the night-before-YAPC dinner? It > is probably going to be a dutch treat event, just like it was at YAPC > Toronto. Preferably in the IIT area, though we were also thinking > about Chinatown since it is only one 'L' stop away and since there is > nothing near IIT. Does anyone have a Chinatown favorite? > _______________________________________________ > Chicago-talk mailing list > Chicago-talk at pm.org > http://mail.pm.org/mailman/listinfo/chicago-talk > -- shawn.c.carroll at gmail.com Perl Programmer Soccer Referee From shild at sbcglobal.net Wed Jan 18 19:25:15 2006 From: shild at sbcglobal.net (Scott T. Hildreth) Date: Wed, 18 Jan 2006 21:25:15 -0600 Subject: [Chicago-talk] Dinner In-Reply-To: <49d805d70601181737t4ab3cf79od1fe8bde7377ddc@mail.gmail.com> References: <49d805d70601181737t4ab3cf79od1fe8bde7377ddc@mail.gmail.com> Message-ID: <1137641115.19139.46.camel@fbsd1.dyndns.org> On Wed, 2006-01-18 at 19:37 -0600, Joshua McAdams wrote: > Any suggestions for the location of the night-before-YAPC dinner? It > is probably going to be a dutch treat event, just like it was at YAPC > Toronto. Preferably in the IIT area, though we were also thinking > about Chinatown since it is only one 'L' stop away and since there is > nothing near IIT. Does anyone have a Chinatown favorite? How about having everyone come out to Warrenville, we can go to "Super Taco".... For the Green Sauce of course. :-) > _______________________________________________ > Chicago-talk mailing list > Chicago-talk at pm.org > http://mail.pm.org/mailman/listinfo/chicago-talk -- Scott T. Hildreth From ann at domaintje.com Thu Jan 19 04:59:20 2006 From: ann at domaintje.com (Ann Barcomb) Date: Thu, 19 Jan 2006 05:59:20 -0700 (MST) Subject: [Chicago-talk] Dinner In-Reply-To: <1137641115.19139.46.camel@fbsd1.dyndns.org> References: <49d805d70601181737t4ab3cf79od1fe8bde7377ddc@mail.gmail.com> <1137641115.19139.46.camel@fbsd1.dyndns.org> Message-ID: <20060119055746.O1351@cerin.biocede.com> Isn't it a bit early to be talking about where you're going to have dinner in June? ;) For a moment you had me thinking that I was going to be in Chicago during YAPC and not even know it. However, instead I'm in Chicago now for the next few weeks. Are there any social meetings planned? - Ann From joshua.mcadams at gmail.com Thu Jan 19 06:15:08 2006 From: joshua.mcadams at gmail.com (Joshua McAdams) Date: Thu, 19 Jan 2006 08:15:08 -0600 Subject: [Chicago-talk] Dinner In-Reply-To: <20060119055746.O1351@cerin.biocede.com> References: <49d805d70601181737t4ab3cf79od1fe8bde7377ddc@mail.gmail.com> <1137641115.19139.46.camel@fbsd1.dyndns.org> <20060119055746.O1351@cerin.biocede.com> Message-ID: <49d805d70601190615k3793bf22n1d2211fd5c682762@mail.gmail.com> > Isn't it a bit early to be talking about where you're going to have > dinner in June? ;) Never too early to think about good food. > Are there any social meetings planned? MJD will be here Feb 6 (http://chicago.pm.org/). Other than that, I don't know of anything. From perl at cromedome.net Thu Jan 19 06:41:58 2006 From: perl at cromedome.net (Jason A. Crome) Date: Thu, 19 Jan 2006 08:41:58 -0600 Subject: [Chicago-talk] Dinner In-Reply-To: <49d805d70601181737t4ab3cf79od1fe8bde7377ddc@mail.gmail.com> References: <49d805d70601181737t4ab3cf79od1fe8bde7377ddc@mail.gmail.com> Message-ID: <1342989F-156B-458F-BAB8-47D112633FEF@cromedome.net> I highly recommend the Phoenix House in Chinatown. Great food, and they can easily accommodate large groups. On Jan 18, 2006, at 7:37 PM, Joshua McAdams wrote: > Any suggestions for the location of the night-before-YAPC dinner? It > is probably going to be a dutch treat event, just like it was at YAPC > Toronto. Preferably in the IIT area, though we were also thinking > about Chinatown since it is only one 'L' stop away and since there is > nothing near IIT. Does anyone have a Chinatown favorite? > _______________________________________________ > Chicago-talk mailing list > Chicago-talk at pm.org > http://mail.pm.org/mailman/listinfo/chicago-talk > From ann at domaintje.com Thu Jan 19 07:00:19 2006 From: ann at domaintje.com (Ann Barcomb) Date: Thu, 19 Jan 2006 08:00:19 -0700 (MST) Subject: [Chicago-talk] Dinner In-Reply-To: <49d805d70601190615k3793bf22n1d2211fd5c682762@mail.gmail.com> References: <49d805d70601181737t4ab3cf79od1fe8bde7377ddc@mail.gmail.com> <1137641115.19139.46.camel@fbsd1.dyndns.org> <20060119055746.O1351@cerin.biocede.com> <49d805d70601190615k3793bf22n1d2211fd5c682762@mail.gmail.com> Message-ID: <20060119075854.W5099@cerin.biocede.com> On Thu, 19 Jan 2006, Joshua McAdams wrote: >> Isn't it a bit early to be talking about where you're going to have >> dinner in June? ;) > Never too early to think about good food. I do think about food a lot, but usually either just next week, unless I get in to daydreams taking place several years in the future. >> Are there any social meetings planned? > MJD will be here Feb 6 (http://chicago.pm.org/). Other than that, I > don't know of anything. I saw that. I am probably going to do that since I am still in town, but note that that doesn't involve food. From joshua.mcadams at gmail.com Thu Jan 19 09:08:26 2006 From: joshua.mcadams at gmail.com (Joshua McAdams) Date: Thu, 19 Jan 2006 11:08:26 -0600 Subject: [Chicago-talk] Dinner In-Reply-To: <20060119075854.W5099@cerin.biocede.com> References: <49d805d70601181737t4ab3cf79od1fe8bde7377ddc@mail.gmail.com> <1137641115.19139.46.camel@fbsd1.dyndns.org> <20060119055746.O1351@cerin.biocede.com> <49d805d70601190615k3793bf22n1d2211fd5c682762@mail.gmail.com> <20060119075854.W5099@cerin.biocede.com> Message-ID: <49d805d70601190908k43ed26bdqb510c2f3efe15b6c@mail.gmail.com> > >> Are there any social meetings planned? > > MJD will be here Feb 6 (http://chicago.pm.org/). Other than that, I > > don't know of anything. > I saw that. I am probably going to do that since I am still in town, > but note that that doesn't involve food. I think that with every IIT Rice event there is an implied Mexican dinner at Cozumels afterwards :) From lembark at wrkhors.com Thu Jan 19 15:19:44 2006 From: lembark at wrkhors.com (Steven Lembark) Date: Thu, 19 Jan 2006 18:19:44 -0500 Subject: [Chicago-talk] Check for modules In-Reply-To: <490F3E9EEF01B04598860AAB71777B4E2BF739@GSBEX.gsb.uchicago.edu> References: <490F3E9EEF01B04598860AAB71777B4E2BF739@GSBEX.gsb.uchicago.edu> Message-ID: <19127B37A63FB2EDBBBF6D34@[192.168.1.9]> > # modules we need to operate > my @MODs = > ( > # "Standard" modules we use > 'FindBin', > 'Getopt::Long', > 'File::Basename', > 'Sys::Hostname', > 'File::stat', > 'Pod::Usage', > 'POSIX', > > # "Extra" modules we need > # (not included with the Perl distribution) > 'Mail::Sender', > 'Parallel::ForkManager', > 'Date::Format', > ); > > # check to see if the required modules are installed > # and if so, load them up otherwise puke > for my $mod (@MODs) { > if ( eval "require $mod" ) { > $mod->import(); > ### print "Loaded module: $mod\n"; > } else { > print "Module $mod not installed!" and exit(0); > } > } > } Just use them; they'll succeed for fail on their own and you can't really recover from one of them failing anyway. > Namely, was wondering about the eval "require" vs. an eval "use" (which > doesn't seem to produce the same results). Is eval "reqiure" + import() > the ideal way to do this? use foo is pretty much the same as: BEGIN { require foo; foo->import; } This leaves out a sanity check for import existing among other things. require doesn't call the import hook for you and is done at runtime (vs. in a begin block). -- Steven Lembark 85-09 90th Street Workhorse Computing Woodhaven, NY 11421 lembark at wrkhors.com 1 888 359 3508 From lembark at wrkhors.com Thu Jan 19 15:20:54 2006 From: lembark at wrkhors.com (Steven Lembark) Date: Thu, 19 Jan 2006 18:20:54 -0500 Subject: [Chicago-talk] Citadel In-Reply-To: References: <49d805d70601181748h3f5bffbey2be4c7bfa7ab3cf8@mail.gmail.com> Message-ID: <2AF47B961365B1816195434D@[192.168.1.9]> > I work at Citadel, is that in roads enough? Should be :-) How is everything going there? -- Steven Lembark 85-09 90th Street Workhorse Computing Woodhaven, NY 11421 lembark at wrkhors.com 1 888 359 3508 From jt at plainblack.com Thu Jan 19 15:30:34 2006 From: jt at plainblack.com (JT Smith) Date: Thu, 19 Jan 2006 17:30:34 -0600 Subject: [Chicago-talk] search indexers Message-ID: What search indexing systems do you guys use? Here are my requirements: - Must be easily installable on all platforms (which rules out stuff like xapian). - Must be open source on all platforms (which rules out stuff like mnogo search). - Must be able to index more than just web pages (rules out htdig) - Must be able to index more than just databases (rules out DBIx::FullTextSearch) - Would like it to be able to store Meta Data (rules out MyConText) - Is either pure perl or has perl bindings (rules out Lucene) The only thing I've found so far that matches is Plucene, the Perl port of the Java based Lucene engine. I wrote a test to see how it would work out. The API and functionality is exactly what I need, but it's very slow. After having indexed 17,000 documents, a search takes 2 seconds to return 20 results. And that's on hardware that looks like: Dual Xeon 3.4 Ghz with hyperthreading 2 GB RAM SCSI Hard Disks So I'm not skimping on hardware. So my question to you is, have you used anything that would fit the above criteria? JT ~ Plain Black ph: 703-286-2525 ext. 810 fax: 312-264-5382 http://www.plainblack.com I reject your reality, and substitute my own. ~ Adam Savage From andy at petdance.com Thu Jan 19 16:05:55 2006 From: andy at petdance.com (Andy Lester) Date: Thu, 19 Jan 2006 18:05:55 -0600 Subject: [Chicago-talk] search indexers In-Reply-To: References: Message-ID: <5C652004-1393-4DC7-A6DB-587B3CEFE863@petdance.com> > > - Is either pure perl or has perl bindings (rules out Lucene) > > The only thing I've found so far that matches is Plucene, the Perl > port of the Java Socialtext also has problems with the slowness of Plucene. :-( -- Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance From andy at petdance.com Thu Jan 19 16:05:55 2006 From: andy at petdance.com (Andy Lester) Date: Thu, 19 Jan 2006 18:05:55 -0600 Subject: [Chicago-talk] search indexers In-Reply-To: References: Message-ID: <5C652004-1393-4DC7-A6DB-587B3CEFE863@petdance.com> > > - Is either pure perl or has perl bindings (rules out Lucene) > > The only thing I've found so far that matches is Plucene, the Perl > port of the Java Socialtext also has problems with the slowness of Plucene. :-( -- Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance From jt at plainblack.com Thu Jan 19 16:37:34 2006 From: jt at plainblack.com (JT Smith) Date: Thu, 19 Jan 2006 18:37:34 -0600 Subject: [Chicago-talk] search indexers In-Reply-To: <5C652004-1393-4DC7-A6DB-587B3CEFE863@petdance.com> References: <5C652004-1393-4DC7-A6DB-587B3CEFE863@petdance.com> Message-ID: On Thu, 19 Jan 2006 18:05:55 -0600 Andy Lester wrote: > Socialtext also has problems with the slowness of Plucene. :-( The funny thing is that Lucene (the java version) is amazingly fast, so either perl sux, or the implementation of plucene does. I'm guessing it's not perl. I'm experimenting with a few things. If any work out I'll let you know. JT ~ Plain Black ph: 703-286-2525 ext. 810 fax: 312-264-5382 http://www.plainblack.com I reject your reality, and substitute my own. ~ Adam Savage From andy at petdance.com Thu Jan 19 16:53:17 2006 From: andy at petdance.com (Andy Lester) Date: Thu, 19 Jan 2006 18:53:17 -0600 Subject: [Chicago-talk] search indexers In-Reply-To: References: <5C652004-1393-4DC7-A6DB-587B3CEFE863@petdance.com> Message-ID: > > The funny thing is that Lucene (the java version) is amazingly > fast, so either perl sux, > or the implementation of plucene does. I'm guessing it's not perl. > > I'm experimenting with a few things. If any work out I'll let you > know. It's a huge memory hog, too, I've heard. I don't think Simon intended it for prime time. -- Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance From me at heyjay.com Thu Jan 19 17:19:49 2006 From: me at heyjay.com (Jay Strauss) Date: Thu, 19 Jan 2006 19:19:49 -0600 Subject: [Chicago-talk] InsideOut Objects Message-ID: <200601191919.49622.me@heyjay.com> Why does Randal say: =comment Congratulations on not duplicating the mistake that that both Object::InsideOut and Class::Std made in the documentation, namely: package Foo::Bar; { ... } Which should have been { package Foo::Bar; ... } Too many people thinking of Perl6 already. Yes, I've reported it, but been ignored apparently. in http://www.perlmonks.org/?node_id=522007 =cut I'd think it would be: package Foo::Bar; { use Object::InsideOut; # all my object setup stuff } sub other_method { } 1; thanks Jay From steve at fisharerojo.org Thu Jan 19 18:35:28 2006 From: steve at fisharerojo.org (Steve Peters) Date: Thu, 19 Jan 2006 20:35:28 -0600 Subject: [Chicago-talk] search indexers In-Reply-To: References: <5C652004-1393-4DC7-A6DB-587B3CEFE863@petdance.com> Message-ID: <20060120023528.GA21637@fisharerojo.org> On Thu, Jan 19, 2006 at 06:53:17PM -0600, Andy Lester wrote: > > > > The funny thing is that Lucene (the java version) is amazingly > > fast, so either perl sux, > > or the implementation of plucene does. I'm guessing it's not perl. > > > > I'm experimenting with a few things. If any work out I'll let you > > know. > > It's a huge memory hog, too, I've heard. > > I don't think Simon intended it for prime time. > I wonder how much Plucene could be improved with some modest application of XS code. It is remarkable in that it is pure Perl, but that may be a bit of a drawback for this type of application. Steve Peters steve at fisharerojo.org From zrusilla at mac.com Thu Jan 19 22:04:28 2006 From: zrusilla at mac.com (zrusilla@mac.com) Date: Fri, 20 Jan 2006 00:04:28 -0600 Subject: [Chicago-talk] search indexers In-Reply-To: References: Message-ID: JT, SWISH++ doesn't have Perl bindings, but it can run as a search server. Perhaps querying such a server might do the trick? http://homepage.mac.com/pauljlucas/software/swish/ Liz On Jan 19, 2006, at 5:30 PM, JT Smith wrote: > What search indexing systems do you guys use? > > Here are my requirements: > > - Must be easily installable on all platforms (which rules out stuff > like xapian). > > - Must be open source on all platforms (which rules out stuff like > mnogo search). > > - Must be able to index more than just web pages (rules out htdig) > > - Must be able to index more than just databases (rules out > DBIx::FullTextSearch) > > - Would like it to be able to store Meta Data (rules out MyConText) > > - Is either pure perl or has perl bindings (rules out Lucene) > > The only thing I've found so far that matches is Plucene, the Perl > port of the Java > based Lucene engine. I wrote a test to see how it would work out. The > API and > functionality is exactly what I need, but it's very slow. After having > indexed 17,000 > documents, a search takes 2 seconds to return 20 results. And that's > on hardware that > looks like: > > Dual Xeon 3.4 Ghz with hyperthreading > 2 GB RAM > SCSI Hard Disks > > So I'm not skimping on hardware. > > So my question to you is, have you used anything that would fit the > above criteria? > > > JT ~ Plain Black > ph: 703-286-2525 ext. 810 > fax: 312-264-5382 > http://www.plainblack.com > > I reject your reality, and substitute my own. ~ Adam Savage > _______________________________________________ > Chicago-talk mailing list > Chicago-talk at pm.org > http://mail.pm.org/mailman/listinfo/chicago-talk > > Between thought and expression lies a lifetime. -- "Some Kinda Love," Velvet Underground From merlyn at stonehenge.com Fri Jan 20 05:58:06 2006 From: merlyn at stonehenge.com (Randal L. Schwartz) Date: 20 Jan 2006 05:58:06 -0800 Subject: [Chicago-talk] InsideOut Objects In-Reply-To: <200601191919.49622.me@heyjay.com> References: <200601191919.49622.me@heyjay.com> Message-ID: <86vewfknm9.fsf@blue.stonehenge.com> >>>>> "Jay" == Jay Strauss writes: Jay> Why does Randal say: Did you read the whole thread? Other people elaborated on my answer. -- Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095 Perl/Unix/security consulting, Technical writing, Comedy, etc. etc. See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training! From me at heyjay.com Fri Jan 20 07:50:48 2006 From: me at heyjay.com (Jay Strauss) Date: Fri, 20 Jan 2006 09:50:48 -0600 Subject: [Chicago-talk] InsideOut Objects In-Reply-To: <86vewfknm9.fsf@blue.stonehenge.com> References: <200601191919.49622.me@heyjay.com> <86vewfknm9.fsf@blue.stonehenge.com> Message-ID: <200601200950.48222.me@heyjay.com> On Friday 20 January 2006 7:58 am, Randal L. Schwartz wrote: > >>>>> "Jay" == Jay Strauss writes: > > Jay> Why does Randal say: > > Did you read the whole thread? Other people elaborated on my answer. Sorry, I missed the thread. I think I get it now. Jay From jt at plainblack.com Fri Jan 20 11:08:39 2006 From: jt at plainblack.com (JT Smith) Date: Fri, 20 Jan 2006 13:08:39 -0600 Subject: [Chicago-talk] search indexers In-Reply-To: References: <5C652004-1393-4DC7-A6DB-587B3CEFE863@petdance.com> Message-ID: Just thought I'd do a follow up. There doesn't seem to be any one solution out there that meets my needs directly, so I've decided to roll my own using the MySQL FULLTEXT index feature. I've written an initial test case. It runs 9 times faster for imports than Plucene and 100 times faster for searches. JT ~ Plain Black ph: 703-286-2525 ext. 810 fax: 312-264-5382 http://www.plainblack.com I reject your reality, and substitute my own. ~ Adam Savage From ehs at pobox.com Fri Jan 20 12:02:45 2006 From: ehs at pobox.com (Ed Summers) Date: Fri, 20 Jan 2006 14:02:45 -0600 Subject: [Chicago-talk] search indexers In-Reply-To: References: <5C652004-1393-4DC7-A6DB-587B3CEFE863@petdance.com> Message-ID: On 1/20/06, JT Smith wrote: > so I've decided to roll my own using the MySQL FULLTEXT > index feature. I've written an initial test case. It runs 9 times faster > for imports than Plucene and 100 times faster for searches. Just so you don't feel alone, the BBC [1] is building a 7 million record index of its programs 1933-present ... and it's using MySQL's fulltext indexing features as the backend. //Ed [1] http://www.hackdiary.com/archives/000071.html From jt at plainblack.com Fri Jan 20 12:09:13 2006 From: jt at plainblack.com (JT Smith) Date: Fri, 20 Jan 2006 14:09:13 -0600 Subject: [Chicago-talk] search indexers In-Reply-To: References: <5C652004-1393-4DC7-A6DB-587B3CEFE863@petdance.com> Message-ID: Awesome. It does make me feel better to know that someone else has written something similar to index a lot of content. On Fri, 20 Jan 2006 14:02:45 -0600 Ed Summers wrote: > On 1/20/06, JT Smith wrote: >> so I've decided to roll my own using the MySQL FULLTEXT >> index feature. I've written an initial test case. It runs 9 times faster >> for imports than Plucene and 100 times faster for searches. > > Just so you don't feel alone, the BBC [1] is building a 7 million > record index of its programs 1933-present ... and it's using MySQL's > fulltext indexing features as the backend. > > //Ed > > [1] http://www.hackdiary.com/archives/000071.html > _______________________________________________ > Chicago-talk mailing list > Chicago-talk at pm.org > http://mail.pm.org/mailman/listinfo/chicago-talk JT ~ Plain Black ph: 703-286-2525 ext. 810 fax: 312-264-5382 http://www.plainblack.com I reject your reality, and substitute my own. ~ Adam Savage From andrew at broscom.com Fri Jan 20 13:53:09 2006 From: andrew at broscom.com (Andrew Brosnan) Date: Fri, 20 Jan 2006 16:53:09 -0500 Subject: [Chicago-talk] search indexers In-Reply-To: Message-ID: On 1/20/06 at 1:08 PM, jt at plainblack.com (JT Smith) wrote: > Just thought I'd do a follow up. There doesn't seem to be any one > solution out there that meets my needs directly, so I've decided to > roll my own using the MySQL FULLTEXT index feature. I've written an > initial test case. It runs 9 times faster for imports than Plucene > and 100 times faster for searches. I maintain some code that does this also. I found that as table size and load increase, complex queries can really hang. We're waiting for MySQL Cluster to support FULLTEXT before doing a rewrite. Andrew -- Andrew Brosnan - Broscom LLC - 1 207 925-1156 andrew at broscom.com - http://www.broscom.com Websites, Hosting, Programming, Consulting From jt at plainblack.com Fri Jan 20 14:29:12 2006 From: jt at plainblack.com (JT Smith) Date: Fri, 20 Jan 2006 16:29:12 -0600 Subject: [Chicago-talk] search indexers In-Reply-To: References: Message-ID: > I maintain some code that does this also. I found that as table size and > load increase, complex queries can really hang. We're waiting for MySQL > Cluster to support FULLTEXT before doing a rewrite. At what point do you see this, and on why kind of hardware? Are we talking 100k rows, 1M, 1b? And what's the average size of your records? Or perhaps this is more easily expressed as, what is the size of your database table on the file system? JT ~ Plain Black ph: 703-286-2525 ext. 810 fax: 312-264-5382 http://www.plainblack.com I reject your reality, and substitute my own. ~ Adam Savage From andrew at broscom.com Fri Jan 20 17:28:08 2006 From: andrew at broscom.com (Andrew Brosnan) Date: Fri, 20 Jan 2006 20:28:08 -0500 Subject: [Chicago-talk] search indexers In-Reply-To: Message-ID: On 1/20/06 at 4:29 PM, jt at plainblack.com (JT Smith) wrote: > > I maintain some code that does this also. I found that as table > > size and load increase, complex queries can really hang. We're > > waiting for MySQL Cluster to support FULLTEXT before doing a > > rewrite. > > At what point do you see this, and on why kind of hardware? Are we > talking 100k rows, 1M, 1b? And what's the average size of your > records? Or perhaps this is more easily expressed as, what is the > size of your database table on the file system? This is two dedicated load balanced db servers (master/slave replication) each with several GB of RAM. Average MyISAM table sizes range 1-2 million records (200-400MB). We've spent some time tuning MySQL and optimizing queries, but the FULLTEXT queries can still cause problems especially under heavier loads (500K+ per day). The point I wanted to make (but neglected to) was this - I can pound away on this in a dev environment using 100K records and everything is peachy. It's not until we put it in production and things get loaded up that we see problems. I learned that my 'testing' wasn't really telling me everything I wanted to know :-) Regards, Andrew From shijialeee at yahoo.com Sat Jan 21 19:15:38 2006 From: shijialeee at yahoo.com (James.Q.L) Date: Sat, 21 Jan 2006 19:15:38 -0800 (PST) Subject: [Chicago-talk] search indexers In-Reply-To: Message-ID: <20060122031538.68430.qmail@web50407.mail.yahoo.com> --- Andrew Brosnan wrote: > On 1/20/06 at 4:29 PM, jt at plainblack.com (JT Smith) wrote: > > > > I maintain some code that does this also. I found that as table > > > size and load increase, complex queries can really hang. We're > > > waiting for MySQL Cluster to support FULLTEXT before doing a > > > rewrite. > > > > At what point do you see this, and on why kind of hardware? Are we > > talking 100k rows, 1M, 1b? And what's the average size of your > > records? Or perhaps this is more easily expressed as, what is the > > size of your database table on the file system? > > This is two dedicated load balanced db servers (master/slave > replication) each with several GB of RAM. Average MyISAM table sizes > range 1-2 million records (200-400MB). We've spent some time tuning > MySQL and optimizing queries, but the FULLTEXT queries can still cause > problems especially under heavier loads (500K+ per day). slow because of too many writes? I know MyISAM handle concurrent writes poorly. but good read handling. Qiang __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com From andrew at broscom.com Sat Jan 21 19:37:29 2006 From: andrew at broscom.com (Andrew Brosnan) Date: Sat, 21 Jan 2006 22:37:29 -0500 Subject: [Chicago-talk] search indexers In-Reply-To: <20060122031538.68430.qmail@web50407.mail.yahoo.com> Message-ID: On 1/21/06 at 7:15 PM, shijialeee at yahoo.com (James.Q.L) wrote: > --- Andrew Brosnan wrote: > > On 1/20/06 at 4:29 PM, jt at plainblack.com (JT Smith) wrote: > > > > > > I maintain some code that does this also. I found that as table > > > > size and load increase, complex queries can really hang. We're > > > > waiting for MySQL Cluster to support FULLTEXT before doing a > > > > rewrite. > > > > > > At what point do you see this, and on why kind of hardware? Are we > > > talking 100k rows, 1M, 1b? And what's the average size of your > > > records? Or perhaps this is more easily expressed as, what is the > > > size of your database table on the file system? > > > > This is two dedicated load balanced db servers (master/slave > > replication) each with several GB of RAM. Average MyISAM table > > sizes range 1-2 million records (200-400MB). We've spent some time > > tuning MySQL and optimizing queries, but the FULLTEXT queries can > > still cause problems especially under heavier loads (500K+ per day). > > slow because of too many writes? I know MyISAM handle concurrent > writes poorly. but good read handling. No. It's the FULLTEXT queries...reads. From wnodom at tmtowtdi.com Tue Jan 24 07:18:10 2006 From: wnodom at tmtowtdi.com (Bill Odom) Date: Tue, 24 Jan 2006 09:18:10 -0600 Subject: [Chicago-talk] O'Reilly Gives Early Access to Cutting-Edge Technology Message-ID: <70BB1607-106F-410D-B683-42556693D333@tmtowtdi.com> O'Reilly's Safari Books Online has just announced a new service called Rough Cuts that gives you early access to content on cutting-edge technologies months before it's published. Rough Cuts allows you to purchase work-in-progress manuscripts of selected titles. You'll even have the chance to shape the final product by sending feedback to the author and editors. The beta version just debuted with four works-in-progress covering Ajax, Ruby, and Flickr. For more information, go to: http://www.oreilly.com/roughcuts/ Titles now available: Ajax Hacks: Rough Cuts Version http://www.oreilly.com/catalog/ajaxhks/ Flickr Hacks: Rough Cuts Version http://www.oreilly.com/catalog/flickrhks/ Ruby Cookbook: Rough Cuts Version http://www.oreilly.com/catalog/rubyckbk/ Ruby on Rails: Up and Running: Rough Cuts Version http://www.oreilly.com/catalog/rubyrails/ Rough Cuts FAQ http://www.oreilly.com/roughcuts/faq.csp Thanks! Marsee ================================================================ O'Reilly 1005 Gravenstein Highway North Sebastopol, CA 95472 http://ug.oreilly.com/ http://www.oreilly.com ================================================================ From tigerpeng2001 at yahoo.com Tue Jan 24 12:39:08 2006 From: tigerpeng2001 at yahoo.com (tiger peng) Date: Tue, 24 Jan 2006 12:39:08 -0800 (PST) Subject: [Chicago-talk] Help on Purging Database In-Reply-To: <200601150950.01090.me@heyjay.com> Message-ID: <20060124203908.65928.qmail@web54710.mail.yahoo.com> Hello All, There is a need to create a general tool for purging old records from transaction databases (Oracle). The referential integrity is required but foreign keys or triggers are no allowed (for performance reason). I did googling and cpanning without good solution. Is there anyone did similar tasks or knows where are the similar utilities? Thanks inadvance, Tiger From steve at fisharerojo.org Tue Jan 24 12:48:22 2006 From: steve at fisharerojo.org (Steve Peters) Date: Tue, 24 Jan 2006 14:48:22 -0600 Subject: [Chicago-talk] Help on Purging Database In-Reply-To: <20060124203908.65928.qmail@web54710.mail.yahoo.com> References: <200601150950.01090.me@heyjay.com> <20060124203908.65928.qmail@web54710.mail.yahoo.com> Message-ID: <20060124204822.GA20340@fisharerojo.org> On Tue, Jan 24, 2006 at 12:39:08PM -0800, tiger peng wrote: > Hello All, > > There is a need to create a general tool for purging > old records from transaction databases (Oracle). The > referential integrity is required but foreign keys or > triggers are no allowed (for performance reason). > > I did googling and cpanning without good solution. Is > there anyone did similar tasks or knows where are the > similar utilities? > Without knowing any requirements or anything else about your system, your likely best bet will be something custom in PL/SQL. I would highly doubt if a generic tool is available that does not at least rely on foreign keys. Steve Peters steve at fisharerojo.org From wiggins at danconia.org Tue Jan 24 13:41:39 2006 From: wiggins at danconia.org (Wiggins d'Anconia) Date: Tue, 24 Jan 2006 14:41:39 -0700 Subject: [Chicago-talk] search indexers In-Reply-To: References: Message-ID: <43D69F13.6080206@danconia.org> JT Smith wrote: > What search indexing systems do you guys use? > I can't speak to the speed of it on an index of that size since I don't have one available, but you might check out Swish-e. I also don't know about the cross platformness of it, but I believe it has the other properties. http://www.swish-e.org It has a bit of configuration/learning curve but it is fairly configurable. The search is C based, but there is a Perl API to it. HTH, http://danconia.org > Here are my requirements: > > - Must be easily installable on all platforms (which rules out stuff like xapian). > > - Must be open source on all platforms (which rules out stuff like mnogo search). > > - Must be able to index more than just web pages (rules out htdig) > > - Must be able to index more than just databases (rules out DBIx::FullTextSearch) > > - Would like it to be able to store Meta Data (rules out MyConText) > > - Is either pure perl or has perl bindings (rules out Lucene) > > The only thing I've found so far that matches is Plucene, the Perl port of the Java > based Lucene engine. I wrote a test to see how it would work out. The API and > functionality is exactly what I need, but it's very slow. After having indexed 17,000 > documents, a search takes 2 seconds to return 20 results. And that's on hardware that > looks like: > > Dual Xeon 3.4 Ghz with hyperthreading > 2 GB RAM > SCSI Hard Disks > > So I'm not skimping on hardware. > > So my question to you is, have you used anything that would fit the above criteria? > > > JT ~ Plain Black > ph: 703-286-2525 ext. 810 > fax: 312-264-5382 > http://www.plainblack.com > > I reject your reality, and substitute my own. ~ Adam Savage > _______________________________________________ > Chicago-talk mailing list > Chicago-talk at pm.org > http://mail.pm.org/mailman/listinfo/chicago-talk > > From tigerpeng2001 at yahoo.com Tue Jan 24 13:43:43 2006 From: tigerpeng2001 at yahoo.com (tiger peng) Date: Tue, 24 Jan 2006 13:43:43 -0800 (PST) Subject: [Chicago-talk] Help on Purging Database In-Reply-To: <20060124204822.GA20340@fisharerojo.org> Message-ID: <20060124214343.89108.qmail@web54711.mail.yahoo.com> --- Steve Peters wrote: > On Tue, Jan 24, 2006 at 12:39:08PM -0800, tiger peng > wrote: > > Hello All, > > > > There is a need to create a general tool for > purging > > old records from transaction databases (Oracle). > The > > referential integrity is required but foreign keys > or > > triggers are no allowed (for performance reason). > > > > I did googling and cpanning without good solution. > Is > > there anyone did similar tasks or knows where are > the > > similar utilities? > > > > Without knowing any requirements or anything else > about your system, > your likely best bet will be something custom in > PL/SQL. I would highly > doubt if a generic tool is available that does not > at least rely on > foreign keys. > > Steve Peters > steve at fisharerojo.org > _______________________________________________ > Chicago-talk mailing list > Chicago-talk at pm.org > http://mail.pm.org/mailman/listinfo/chicago-talk > I am try to put the following data sturcture in a config file and load to scripts by require. But there are some headach problems: 1. User should understand perl data structure, or a tool for creating the config files is needed; 2. Implementation of 'CASECADE', recusive, looks not easy as the information passed seems vary among the recusive calls; $purge_list = [ parent_table=> { timestamp_column => { day =>100, # keep the records younger than 100 days #row => 1000, # or the youngest 1000 records } children => { child1 => { rf => { parent_fk_col1 => 'child_pk_col1', parent_fk_col2 => 'child_pk_col2', }, grand_children => {}, }, }, ] From andy at petdance.com Tue Jan 24 19:02:37 2006 From: andy at petdance.com (Andy Lester) Date: Tue, 24 Jan 2006 21:02:37 -0600 Subject: [Chicago-talk] Mark-Jason Dominus needs your code Message-ID: <11090EDB-E32D-45E0-86F2-8B383CC6FCEC@petdance.com> MJD's talk on February 6 (see http://chicago.pm.org for details) is on searching for red flags in code. He needs YOUR actual code to work with to find places for improvement in his talk. He needs to get code sent to him at mjd at plover.com by the end of Wednesday! SO PLEASE SEND HIM SOME CODE you'd like him to critique and offer improvents on at the February 6th meeting! Guidelines for code submission are at: http://perl.plover.com/ flagbook/contribute.html Thanks! xoa -- Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance From lembark at wrkhors.com Wed Jan 25 00:01:55 2006 From: lembark at wrkhors.com (Steven Lembark) Date: Wed, 25 Jan 2006 03:01:55 -0500 Subject: [Chicago-talk] PAUSE indexer report LEMBARK/Object-Trampoline-1.12.tar.gz (fwd) Message-ID: <1ABC1B76D624D928AD975393@[192.168.1.9]> This version adds an auto-use flag. That allows you to delay using the "real" module until the object is actually called. The main advantage to this is allowing a module to appear at mutlple levels in an inheritence or use chain without causing circular references (so long as the final result is all dealt with by the time the object is really used). Lazyness incarnate! ---------- Forwarded Message ---------- From: PAUSE Subject: PAUSE indexer report LEMBARK/Object-Trampoline-1.12.tar.gz > The following report has been written by the PAUSE namespace indexer. > Please contact modules at perl.org if there are any open questions. > Id: mldistwatch 697 2006-01-18 07:33:13Z k > > User: LEMBARK (Steven Lembark) > Distribution file: Object-Trampoline-1.12.tar.gz > Number of files: 8 > *.pm files: 1 > README: Object-Trampoline-1.12/README > META.yml: Object-Trampoline-1.12/META.yml > Timestamp of file: Wed Jan 25 07:34:08 2006 UTC > Time of this run: Wed Jan 25 07:56:17 2006 UTC > > Status of this distro: OK > ========================= > > The following packages (grouped by status) have been found in the distro: > > Status: Successfully indexed > ============================ > > module: Object::Trampoline > version: 1.02 > in file: Object-Trampoline-1.12/lib/Object/Trampoline.pm > status: indexed > > module: Object::Trampoline::Bounce > version: 1.02 > in file: Object-Trampoline-1.12/lib/Object/Trampoline.pm > status: indexed > > __END__ ---------- End Forwarded Message ---------- -- Steven Lembark 85-09 90th Street Workhorse Computing Woodhaven, NY 11421 lembark at wrkhors.com 1 888 359 3508 From lembark at wrkhors.com Wed Jan 25 00:22:24 2006 From: lembark at wrkhors.com (Steven Lembark) Date: Wed, 25 Jan 2006 03:22:24 -0500 Subject: [Chicago-talk] Help on Purging Database In-Reply-To: <20060124204822.GA20340@fisharerojo.org> References: <200601150950.01090.me@heyjay.com> <20060124203908.65928.qmail@web54710.mail.yahoo.com> <20060124204822.GA20340@fisharerojo.org> Message-ID: -- Steve Peters > On Tue, Jan 24, 2006 at 12:39:08PM -0800, tiger peng wrote: >> Hello All, >> >> There is a need to create a general tool for purging >> old records from transaction databases (Oracle). The >> referential integrity is required but foreign keys or >> triggers are no allowed (for performance reason). >> >> I did googling and cpanning without good solution. Is >> there anyone did similar tasks or knows where are the >> similar utilities? >> > > Without knowing any requirements or anything else about your system, > your likely best bet will be something custom in PL/SQL. I would highly > doubt if a generic tool is available that does not at least rely on > foreign keys. Actually, it's not hard to handle with a nested hash of table dependencies and list of top-level keys that need to be deleted. The main issue is how many of the root- level beasties can be flushed without snowballing deletes flooding the rollback/undo segments. A lot of it does depend on how many records need to be deleted at what levels and what proportion of the database they make up. -- Steven Lembark 85-09 90th Street Workhorse Computing Woodhaven, NY 11421 lembark at wrkhors.com 1 888 359 3508