From timm at gleason.to Mon May 3 11:40:50 2004 From: timm at gleason.to (Timm Gleason) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Off-topic (need RedHat 7.2 LILO/GRUB help) In-Reply-To: Message-ID: Michael, Not sure, aftrer reading this mail several times, what it is you are asking for? Are you looking for a GRUB way to boot the 2.4.22 kernel? Timm Gleason On Fri, 30 Apr 2004, Michael R. Wolf wrote: > > Warning -- off topic. Hit delete now if you can't spare the diversion. > > Thanks for the indulgence, > Michael > > ================================================================ > > I know it's off-topic for a Perl list, but you're my favorite techies, > and I know someone out here in SPUGland has a clue. > > I'm trying to get a computer set up to test a custom PCI board. The > drivers for the board require the 2.4.22 kernel. That requires a > standard install, then two updates/upgrades/up-somethings. > > I got RH 7.2 to jump right off the CD's. > > The customer sent me a CD with some other stuff on it, so that I could > upgrade to the 2.4.20 kernel then the 2.4.22 kernel then add some > avtec-specific drivers. > > I expect that this will look familiar to someone who's used LILO or > GRUB before. My local contact prefers LILO (but is currently in > Japan). The customer has used GRUB (and is in Maryland). I'll go with > what works because I just need an OS so I can write a Perl test > harness to exercise the board. > > Here's what was on the customer's CD: > > -r--r--r-- 1 michael root 226105 Apr 23 10:51 avtec_2.4.22.tar.gz > -r--r--r-- 1 michael root 10625740 Apr 23 11:06 boot.tar.gz > -r--r--r-- 1 michael root 832426 Apr 23 11:00 dev-3.3-4.i386.rpm > -r--r--r-- 1 michael root 176773 Apr 23 11:00 iptables-1.2.8-8.72.3.i386.rpm > -r--r--r-- 1 michael root 126202 Apr 23 11:00 iptables-ipv6-1.2.8-8.72.3.i386.rpm > -r--r--r-- 1 michael root 12671436 Apr 26 04:40 kernel-2.4.20-20.7.i386.rpm > -r--r--r-- 1 michael root 6362328 Apr 26 04:41 kernel-BOOT-2.4.20-20.7.i386.rpm > -r--r--r-- 1 michael root 1790757 Apr 26 04:41 kernel-doc-2.4.20-20.7.i386.rpm > -r--r--r-- 1 michael root 1153405 Apr 23 11:01 kernel-headers-2.4.9-34.i386.rpm > -r--r--r-- 1 michael root 38692562 Apr 26 04:41 kernel-source-2.4.20-20.7.i386.rpm > -r--r--r-- 1 michael root 41042746 Apr 23 10:48 linux-2.4.22-6.ll.rh73.tar.gz > -r--r--r-- 1 michael root 208818 Apr 23 11:00 modutils-2.4.18-3.7x.i386.rpm > -r--r--r-- 1 michael root 47516 Apr 23 11:00 modutils-devel-2.4.18-3.7x.i386.rpm > > The clues as to how to load multiple kernels are probably in the > boot.tar.gz file, whose contents are below: > > drwxr-xr-x root/root 0 boot/ > drwxr-xr-x root/root 0 boot/grub/ > -rw-r--r-- root/root 1262 boot/grub/grub.conf > -rw-r--r-- root/root 54044 boot/grub/splash.xpm.gz > srwxrwxrwx root/root 0 boot/grub/menu.lst --> ./grub.conf > -rw-r--r-- root/root 82 boot/grub/device.map > -rw-r--r-- root/root 512 boot/grub/stage1 > -rw-r--r-- root/root 120000 boot/grub/stage2 > -rw-r--r-- root/root 10848 boot/grub/e2fs_stage1_5 > -rw-r--r-- root/root 9744 boot/grub/fat_stage1_5 > -rw-r--r-- root/root 8864 boot/grub/ffs_stage1_5 > -rw-r--r-- root/root 9248 boot/grub/minix_stage1_5 > -rw-r--r-- root/root 12512 boot/grub/reiserfs_stage1_5 > -rw-r--r-- root/root 8512 boot/grub/vstafs_stage1_5 > srwxrwxrwx root/root 0 boot/vmlinuz --> vmlinuz-2.4.20-20.7 > -rw-r--r-- root/root 5824 boot/boot.b > -rw-r--r-- root/root 612 boot/chain.b > -rw-r--r-- root/root 23108 boot/message > -rw-r--r-- root/root 640 boot/os2_d.b > srwxrwxrwx root/root 0 boot/kernel.h --> kernel.h-2.4.9 > -rw-r--r-- root/root 1095761 boot/vmlinuz-2.4.22-6.ll.rh73 > srwxrwxrwx root/root 0 boot/System.map --> System.map-2.4.20-20.7 > -rw-r--r-- root/root 116130 boot/initrd-2.4.22-6.ll.rh73 > -rw-r--r-- root/root 1192132 boot/vmlinuz-2.4.22-6.ll.rh73_av > srwxrwxrwx root/root 0 boot/module-info --> module-info-2.4.20-20.7 > -rw-r--r-- root/root 850361 boot/bzImage > -rw-r--r-- root/root 850361 boot/vmlinuz-2.4.7-10_avtec > -rw-r--r-- root/root 811923 boot/vmlinuz-2.4.7-10_avtec.sav > -rw-r--r-- root/root 327990 boot/initrd-2.4.7-10custom.img > -rw-r--r-- root/root 431819 boot/System.map.old > -rw-r--r-- root/root 850455 boot/vmlinuz-2.4.7-10_avtec_5 > -rw-r--r-- root/root 431819 boot/System.map-2.4.7-10custom > -rw-r--r-- root/root 802068 boot/vmlinuz-2.4.7-10.bu > -rw-r--r-- root/root 850332 boot/vmlinuz-2.4.7-10_avtec_3 > -rw-r--r-- root/root 511785 boot/System.map-2.4.20-20.7 > -rw-r--r-- root/root 405 boot/kernel.h-2.4.9 > -rw-r--r-- root/root 15438 boot/module-info-2.4.20-20.7 > -rw-r--r-- root/root 44882 boot/config-2.4.20-20.7 > -rw-r--r-- root/root 116130 boot/initrd-2.4.20-20.7.img > -rw-r--r-- root/root 3005123 boot/vmlinux-2.4.20-20.7 > -rw-r--r-- root/root 1079416 boot/vmlinuz-2.4.20-20.7 > > Gunshy and looking for a clue. It's a separate system, so I can > > ready && fire && aim until sucess; # Here's the Perl.... :-) > > But I'd rather > ready && aim && fire; > > Please call (206)782-8377 if you've got time to share a clue. > > Many thanks, > Michael Wolf > > -- > Michael R. Wolf > All mammals learn by playing! > MichaelRWolf@att.net > > > _____________________________________________________________ > Seattle Perl Users Group Mailing List > POST TO: spug-list@mail.pm.org http://spugwiki.perlocity.org > ACCOUNT CONFIG: http://mail.pm.org/mailman/listinfo/spug-list > MEETINGS: 3rd Tuesdays, Location Unknown > WEB PAGE: http://www.seattleperl.org > Monday, May 03 2004 -- | The one who praises you is a thief. Timm Gleason | The one who criticizes you is your http://www.gleason.to/ | true friend. http://www.uranushertz.to/ | Quis custodiet iposos custodes? | -----PGP PUBLIC KEY BLOCK AVAILABLE----- From MichaelRWolf at att.net Fri May 7 11:42:35 2004 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: oscilliscope or line tester needed Message-ID: I need to check data coming from the DB39 connector (RS422 or RS232) of a serial I/O board for testing/characterization purposes. Does anyone have a scope or line tester that I could - borrow (in a SPUGly way) or - rent (in a B2B way) or - a suggestion on where else to go? Thanks, Michael Wolf -- Michael R. Wolf All mammals learn by playing! MichaelRWolf@att.net From asim at pair.com Fri May 7 11:58:27 2004 From: asim at pair.com (Asim Jalis) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: oscilliscope or line tester needed In-Reply-To: References: Message-ID: <20040507165827.GA41053@wokkil.pair.com> On Fri, May 07, 2004 at 09:42:35AM -0700, Michael R. Wolf wrote: > I need to check data coming from the DB39 connector (RS422 or > RS232) of a serial I/O board for testing/characterization > purposes. Does anyone have a scope or line tester that I could > - borrow (in a SPUGly way) or > - rent (in a B2B way) or > - a suggestion on where else to go? Suggestion: ask on a hardware list. Asim From kmeyer at blarg.net Fri May 7 16:28:43 2004 From: kmeyer at blarg.net (Ken Meyer) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Update: May 8th, 2004 GSLUG Mtg: Spam, Security, Backups. Message-ID: The next Greater Seattle Linux Users Group (GSLUG) meeting will be held on Saturday, May 8th. It starts at 10:00 AM on the North Seattle Community College Campus. For detailed directions, agenda, and lecturer bios, please visit the GSLUG monthly meetings web page at: http://www.gslug.org/meeting.html This month, we will be back in Instructional Building room IB 3319, where we had met before being diverted elsewhere for the duration of the Winter Quarter of instruction at North. This room is on the third floor of the West side of the Instructional building (facing College Way), about at the middle of the building, between the elevator towers. For a map TO the campus, see: http://www.northseattle.edu/maps/directions.htm For directions to the room ON the campus: http://www.northseattle.edu/maps/locate.htm N.B. The specific room may change from month to month, so please check the web page on Fridays before the meeting to be sure that you go to the right place. The topics will be as follows; the order of presentation is TBD: * "SMTP Filtering - Viruses, Spam, Forgery" by Jarod C. Wilson. Filtering your inbound email to keep out the "bad stuff". Integrating AMaViSd-new, ClamAV, SpamAssassin and SPF (Sender Policy Framework) http://spf.pobox.com/ with your mail server. Using a stand-alone proxy in front of your mail server is preferred. * "Protecting the Root account" by Ian MacGregor. The in's and out's of the "login" and "su" commands, and how to protect them by utilizing the "wheel" group and changing file permissions. * "The Why's, What's, When's, and How's of Backups" by Chris Kacoroski. + Why backups + Deciding what to backup + Deciding how often to backup + Backup options (hardware) + Backup options (software) + Q&A A preliminary introduction to the critical subjects of future GSLUG goals and objectives, organization and leadership will also be held as time is available. Of course, the normal announcements, sharing of Linux news, and afternoon workshop session will also occur. You are encouraged to bring your system and solicit volunteer assistance for installation, configuration and troubleshooting problems. ---------------------------------------------------------------------------- --- Please feel free to forward this announcement as appropriate. To ensure that you receive future GSLUG announcements. Please join the list at: http://lists.gslug.org/mailman/listinfo/gslug-announce You are also invited to join the general discussion list at: http://lists.gslug.org/mailman/listinfo/gslug-general A message board alternative may be found at: http://msgboard.gslug.org/ And a wiki site at: http://wiki.gslug.org/ -- The GSLUG Crew From spug at dansanderson.com Fri May 7 23:12:59 2004 From: spug at dansanderson.com (Dan Sanderson) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Newbie mod_perl q: When modules are loaded Message-ID: Hi all - I'm getting started with mod_perl on a toy server I own. (I have root and can modify Apache configuration, and can restart the web server.) It's running Debian 3.0r2 stable, and I'm keeping it that way, which means I'm using Apache 1.3.26 and mod_perl 1.26. I'm starting out with trying to use Apache::Registry to speed up regular Perl CGI scripts. I understand that mod_perl compiles and caches scripts and modules once on first load, and uses the cached versions on subsequent loads. A default configuration knows to recompile scripts when they change, but not modules. At the cost of performance, the following Apache configuration line would also check modules for updates before loading the cached versions: PerlInitHandler Apache::StatINC When I tried this, I noticed that my apps (specifically Kwiki) would complain about missing modules about half the time. Always, a reload of the page would succeed. When I removed the line, most of the original behavior was restored, except one of the modules is permanently unavailable. The error says "Can't locate CGI/Kwiki/Changes.pm in @INC (@INC contains: ...)", where the paths definitely do not contain the module. The app normally finds the module using a "use lib" line to the path to the libraries in the CGI script, and it does this successfully for other parts of the Kwiki. The use lib path is not in the list of paths in the error message. Kwiki's index.cgi loads modules by name from its configuration file: changes_class is set to "CGI::Kwiki::Changes". Would this cause a specific problem for mod_perl, with or without the StatINC configuration? Given that mod_perl doesn't reload modules with a high performance configuration, what's the best way to refresh the cache when new modules are deployed (presumably from a test instance to a production instance)? Is there a better way to configure a development instance of a mod_perl website to reload modules when they change, than StatINC? The docs tentatively suggest a couple of other options, but I get the impression there is no official recommendation. Is that about right? Is mod_perl 2 better at this? Thanks for any advice you can provide! -- Dan From spug at dansanderson.com Sat May 8 01:37:31 2004 From: spug at dansanderson.com (Dan Sanderson) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Newbie mod_perl q: When modules are loaded In-Reply-To: References: Message-ID: Incidentally, stopping and starting Apache does fix the Changes problem, my questions are more about the expected development workflow for mod_perl websites. If there's a well-known explanation, or good troubleshooting steps for modules that can't be found, I'd be interested in that as well. Thanks! -- Dan On Fri, 7 May 2004, Dan Sanderson wrote: > Hi all - > > I'm getting started with mod_perl on a toy server I own. (I have root and > can modify Apache configuration, and can restart the web server.) It's > running Debian 3.0r2 stable, and I'm keeping it that way, which means I'm > using Apache 1.3.26 and mod_perl 1.26. I'm starting out with trying to > use Apache::Registry to speed up regular Perl CGI scripts. > > I understand that mod_perl compiles and caches scripts and modules once on > first load, and uses the cached versions on subsequent loads. A default > configuration knows to recompile scripts when they change, but not > modules. At the cost of performance, the following Apache configuration > line would also check modules for updates before loading the cached > versions: > PerlInitHandler Apache::StatINC > > When I tried this, I noticed that my apps (specifically Kwiki) would > complain about missing modules about half the time. Always, a reload of > the page would succeed. > > When I removed the line, most of the original behavior was restored, > except one of the modules is permanently unavailable. The error says > "Can't locate CGI/Kwiki/Changes.pm in @INC (@INC contains: ...)", where > the paths definitely do not contain the module. The app normally finds > the module using a "use lib" line to the path to the libraries in the CGI > script, and it does this successfully for other parts of the Kwiki. The > use lib path is not in the list of paths in the error message. > > Kwiki's index.cgi loads modules by name from its configuration file: > changes_class is set to "CGI::Kwiki::Changes". Would this cause a > specific problem for mod_perl, with or without the StatINC configuration? > > Given that mod_perl doesn't reload modules with a high performance > configuration, what's the best way to refresh the cache when new modules > are deployed (presumably from a test instance to a production instance)? > > Is there a better way to configure a development instance of a mod_perl > website to reload modules when they change, than StatINC? The docs > tentatively suggest a couple of other options, but I get the impression > there is no official recommendation. Is that about right? > > Is mod_perl 2 better at this? > > Thanks for any advice you can provide! > > -- Dan > _____________________________________________________________ > Seattle Perl Users Group Mailing List > POST TO: spug-list@mail.pm.org http://spugwiki.perlocity.org > ACCOUNT CONFIG: http://mail.pm.org/mailman/listinfo/spug-list > MEETINGS: 3rd Tuesdays, Location Unknown > WEB PAGE: http://www.seattleperl.org > From andrew at sweger.net Sat May 8 13:00:08 2004 From: andrew at sweger.net (Andrew Sweger) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Newbie mod_perl q: When modules are loaded In-Reply-To: Message-ID: On Fri, 7 May 2004, Dan Sanderson wrote: > Kwiki's index.cgi loads modules by name from its configuration file: > changes_class is set to "CGI::Kwiki::Changes". Would this cause a > specific problem for mod_perl, with or without the StatINC configuration? I don't know of a specific problem, but I could see where 'use lib' will not do what you might expect because things (and stuff) have been precompiled and cached in memory. Especially if directories have changed locations after they've been cached. > Given that mod_perl doesn't reload modules with a high performance > configuration, what's the best way to refresh the cache when new modules > are deployed (presumably from a test instance to a production instance)? Even for development with plain old Perl CGI scripts, I always recommend a simple installation process that installs the files from where they're being developed to their running locations on the system. Give developers (yourself) necessary sudo permissions to have the install script or make file restart Apache. If you aren't testing from known a starting point, you're just going to give yourself fits chasing ghosts. -- Andrew B. Sweger -- The great thing about multitasking is that several things can go wrong at once. From MichaelRWolf at att.net Sun May 9 15:32:41 2004 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Meeting Announcement -- Ingy Returneth -- May 18, 2004 In-Reply-To: <20040508013150.GB9750@ttul.org> (Brian Ingerson's message of "Fri, 7 May 2004 18:31:50 -0700") References: <20040508013150.GB9750@ttul.org> Message-ID: May Seattle Perl Users Group (SPUG) Meeting =========================================== Title: Ingy Returneth -- IO::All and Spork Speakers: Ingy (Brian Ingerson) Meeting Date: Tuesday, May 18, 2004 Meeting Time: 7:00 - 9:00 p.m. (networking 6:30 - 7:00) Location: Geospiza 3411 Thorndyke Avenue West (See directions below) Cost: Admission is free and open to the general public Info: http://www.seattleperl.org/ =========================================== Ingy ("The Ingy") has returned to Seattle. For his return appearance, he will introduce us to two of his recent creations: IO::All - a combination of the Perl best IO modules Spork - a slideshow creation module Come wrap your brain around another set of creations that could only have come from the mind of Ingy, and have only been created with the Power of Perl. We will be meeting in a new location. A big thanks to many of the folks at Geospiza (a Life Science company, and big Perl user) for stepping up to hosting SPUG. IO::All Perl Module ------------------- As described on CPAN -- http://search.cpan.org/~ingy/IO-All-0.17/lib/IO/All.pm IO::All combines all of the best Perl IO modules into a single Spiffy object oriented interface to greatly simplify your everyday Perl IO idioms. It exports a single function called IO, which returns a new IO::All object. And that object can do it all! An O'Reilly article (http://www.perl.com/pub/a/2004/03/12/ioall.html) let the cat out of the bag and started a big discussion. Spork Perl Module ----------------- As described on CPAN -- http://search.cpan.org/~ingy/Spork-0.15/lib/Spork.pm Spork lets you create HTML slideshow presentations easily. It comes with a sample slideshow. All you need is a text editor, a browser and a topic. Spork allows you create an entire slideshow by editing a single file called Spork.slides (by default). Each slide is created using a minimal markup language similar to the syntax used in Kwiki wikis. ================================================================ Directions to Geospiza: ----------------------- Geospiza 3411 Thorndyke Ave. W Seattle, WA 98119 By carpool: (send requests to spug-list@pm.org) ----------- Definately a more fun way to spend the driving time. By Bus: (http://transit.metrokc.gov/) ------- The 15 & 18 stop at West Dravus Street on 15th Avenue The 44, 46 get to Ballard at Market St & 15th Ave (1/2 mile walk, xfer to 15 or 18 at Walgreen's, request a pick-up) The 75 gets to Ballard 4 blocks from Walgreens (see 44, 46) The 17 stops south of the Ballard Bridge Coming from I5: --------------- 1 - EXIT onto 50th Street toward Seattle Pacific University (Larry & Gloria Wall's Alma Mater) 2 - TURN SLIGHT LEFT at light at bottom of hill onto Green Lake Way North (following signs toward Fisherman's Terminal) 3 - TURN SLIGHT RIGHT (following traffic flow) onto N 46th St (Following signs to Ballard) 4 - FOLLOW TRAFFIC WINDING down the hill into Ballard TO JOIN NW 55th Street, which is called Market Steet at this point 5 - TURN LEFT onto 15th Ave NW (a major intersection - Safeway, Walgreens, Denny's) 6 - CROSS the Ballard Bridge 7 - RIGHT EXIT onto West Dravus Street (West Dravus Street is the major overpass over 15th Ave West that leads into Magnolia. It's south of the Ballard Bridge, north of the Interbay Golf Center.) 8 - RIGHT TURN onto West Dravus Street, westbound 9 - STRAIGHT for 2 blocks, passing QFC on right 10 - TURN RIGHT onto Thorndyke Ave West 11 - STRAIGHT for 1.25 blocks 12 - Geospiza is on your left: 3411 Thorndyke Avenue West Comin from Downtown: ==================== 1 - Get onto Elliot Avenue West, heading north 2 - SLIGHT RIGHT onto 15th Avenue West 3 - RIGHT EXIT onto West Dravus Street 4 - TURN LEFT onto West Dravus Street, westbound 5 - You're now within 1/2 mile. See directions above. 6 - STRAIGHT for 2 blocks, passing QFC on right 7 - TURN RIGHT onto Thorndyke Ave West 8 - STRAIGHT for 1.25 blocks 9 - Geospiza is on your left: 3411 Thorndyke Avenue West ================================================================ Mapquest: http://www.mapquest.com/maps/map.adp?country=US&countryid=250&addtohistory=&searchtab=address&searchtype=address&address=3411+Thorndyke+Ave.+W&city=Seattle&state=wa&zipcode=&search=++Search++ Yahoo! Maps: http://maps.yahoo.com/maps_result?ed=XKC6Qup_0ToFdKje6jM_UZzJhylBjoFqlp8tBW5T&csz=seattle%2C+wa&country=us&new=1&name=&qty= -- Michael R. Wolf All mammals learn by playing! MichaelRWolf@att.net From MichaelRWolf at att.net Sun May 9 15:42:22 2004 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Meeting Announcement -- Ingy Returneth -- May 18, 2004 In-Reply-To: (Michael R. Wolf's message of "Sun, 09 May 2004 13:32:41 -0700") References: <20040508013150.GB9750@ttul.org> Message-ID: "Michael R. Wolf" writes: > May Seattle Perl Users Group (SPUG) Meeting > =========================================== > > Title: Ingy Returneth -- IO::All and Spork > Speakers: Ingy (Brian Ingerson) > > Meeting Date: Tuesday, May 18, 2004 > Meeting Time: 7:00 - 9:00 p.m. (networking 6:30 - 7:00) > Location: Geospiza > 3411 Thorndyke Avenue West (See directions below) > Cost: Admission is free and open to the general public > Info: http://www.seattleperl.org/ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ The web site isn't updated yet. Could someone do this? -- Michael R. Wolf All mammals learn by playing! MichaelRWolf@att.net From jgardner at jonathangardner.net Mon May 10 12:57:24 2004 From: jgardner at jonathangardner.net (Jonathan Gardner) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Newbie mod_perl q: When modules are loaded In-Reply-To: References: Message-ID: <200405101057.24972.jgardner@jonathangardner.net> On Friday 07 May 2004 09:12 pm, Dan Sanderson wrote: > Hi all - > > I'm getting started with mod_perl on a toy server I own. (I have root > and can modify Apache configuration, and can restart the web server.) > It's running Debian 3.0r2 stable, and I'm keeping it that way, which > means I'm using Apache 1.3.26 and mod_perl 1.26. I'm starting out with > trying to use Apache::Registry to speed up regular Perl CGI scripts. > > I understand that mod_perl compiles and caches scripts and modules once > on first load, and uses the cached versions on subsequent loads. I'm going to be pedantic, but the end result will be less confusion, so it may be beneficial to all. First off, mod_perl is an apache module that allows you to write perl code to plug into apache. Apache::Registry is a module that has a handler that can effectively "cache" CGI scripts. You are going to have to grasp the mental concepts of how perl, Apache, and mod_perl work internally. This isn't too painful, but it will take some time. When you grasp these concepts, then you will be able to write your own apache modules and pretty much your own web server that behaves in the way you like. The investment is definitely worth it. > Given that mod_perl doesn't reload modules with a high performance > configuration, what's the best way to refresh the cache when new modules > are deployed (presumably from a test instance to a production instance)? > The way I believe is best is to have several seperate instances of apache running, one or more for each developer. Assign a port (or group of ports) for each developer, and have them set up their servers on their ports. It would be best to have each apache (production, developer, testing, etc...) work from the exact same module and code base. In other words, compile apache once and use that for everything. When you make a module change, restart the server by stopping then starting it. It is important that you do not rely on StatINC. I have seen too many problems appear when a module has been reloaded into a state that isn't the same as the state when it is first loaded. In fact, I would recommend to do the same while modifying CGI's. Work from a clean slate. > Is there a better way to configure a development instance of a mod_perl > website to reload modules when they change, than StatINC? No, not that I know of. > The docs tentatively suggest a couple of other options, but I get the > impression there is no official recommendation. Is that about right? > Yes. There is no other way that is really good. > Is mod_perl 2 better at this? > mod_perl 2 is not ready for production yet, so it is irrelevant. Besides, loading modules is a perl thing, not a mod_perl one, so I don't see how mod_perl 2 could fix this. Rather, it would be StatINC that would fix it, if anything. -- Jonathan Gardner jgardner@jonathangardner.net From coleman_dave at hotmail.com Tue May 11 15:08:15 2004 From: coleman_dave at hotmail.com (Dave Coleman) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: txt -> db Message-ID: I am working on a project to read the contents of a plain text file generated daily, and place that content into a database. The target is a .mdb. I remember somebody was playing with db manipulation a few weeks ago, but never heard an outcome. I see mods on cpan to convert formats to/from SQL, and many other wonderful tools that I have no use for at the moment. Anybody have a mod they would recommend for a simple MS Access interface? ( this client is limited to MS products. I apologize on their behalf ) dave _________________________________________________________________ FREE pop-up blocking with the new MSN Toolbar – get it now! http://toolbar.msn.com/go/onm00200415ave/direct/01/ From brianmaddux at yahoo.com Tue May 11 15:39:40 2004 From: brianmaddux at yahoo.com (Brian Maddux) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: txt -> db In-Reply-To: Message-ID: <20040511203940.56997.qmail@web40201.mail.yahoo.com> Do you have DBI and DBD::ODBC available? With DBI, its quite easy to create a little script that takes a SQL file (containing an insert statement) and a text file and load all lines from the text file into the database. I use this technique with insert and update statements almost everyday. I'd be happy to go into more detail if DBI is an option. Here's something I'm curious about.... could this be solved with OLE? Brian --- Dave Coleman wrote: > I am working on a project to read the contents of a > plain text file > generated daily, and place that content into a > database. The target is a > .mdb. I remember somebody was playing with db > manipulation a few weeks ago, > but never heard an outcome. > I see mods on cpan to convert formats to/from SQL, > and many other wonderful > tools that I have no use for at the moment. > Anybody have a mod they would > recommend for a simple MS Access interface? > ( this client is limited to MS products. I > apologize on their behalf ) > > dave > > _________________________________________________________________ > FREE pop-up blocking with the new MSN Toolbar – get > it now! > http://toolbar.msn.com/go/onm00200415ave/direct/01/ > > _____________________________________________________________ > Seattle Perl Users Group Mailing List > POST TO: spug-list@mail.pm.org > http://spugwiki.perlocity.org > ACCOUNT CONFIG: > http://mail.pm.org/mailman/listinfo/spug-list > MEETINGS: 3rd Tuesdays, Location Unknown > WEB PAGE: http://www.seattleperl.org ===== ------------------------------------------------------- Brian Maddux Whidbey Island, WA brianmaddux@yahoo.com ------------------------------------------------------- __________________________________ Do you Yahoo!? Win a $20,000 Career Makeover at Yahoo! HotJobs http://hotjobs.sweepstakes.yahoo.com/careermakeover From james at banshee.com Tue May 11 20:09:03 2004 From: james at banshee.com (James Moore) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: txt -> db In-Reply-To: Message-ID: <01cf01c437bd$baa1d090$0200a8c0@gealach> AFAIK, the mdb file format isn't usable from anything other than Jet itself (the engine that writes those things - Access is built around Jet). In the past MS has guarded the mdb format like a rabid dog, and since it's of dubious value I don't know of any non-MS attempts to read and write it directly. Doesn't mean they don't exist, I just don't know about 'em. Possibilities: 1. Set up an ODBC driver on the Windows box that's going to run the database and talk to that. I've never tried to hook Perl straight up to odbc, but it's probably straightforward. 2. (What I'd do, since #1 would require learning something new, and everyone knows that once you become a real estate agent your ability topi) Write to a mysql database which you then export via odbc to an access or a sql server setup. On the sqlserver side run a query to select from mysql into a local table. Haven't done this exactly, but I do use mysql databases in Access via odbc, so getting the rest of the way should be trivial (it's just a query once you're reading the mysql tables in Access). 3. (Warning - heresy alert) Don't bother. Your target is an MS-specific abomination. Embrace the darkside and go with an all-MS solution. - James From aaron at activox.com Wed May 12 10:17:21 2004 From: aaron at activox.com (aaron salo) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: txt -> db In-Reply-To: <01cf01c437bd$baa1d090$0200a8c0@gealach> References: <01cf01c437bd$baa1d090$0200a8c0@gealach> Message-ID: <40A24001.5050809@activox.com> Dave, Although they may offend our sensibilities, sometimes these things are unavoidable. As a bonus, if you simply MUST get at an Access database cross platform (i.e., from a web server on your Linux box to a .mdb on a Windows box), here is a good step by step on setting up DBI::Proxy to do the trick. http://www.awilcox.com/geek_stuff/perl/proxy.html More on point for your situation, if you are wanting info on how to set up the ODBC driver to "access" Access using Perl and DBD::ODBC, which sounds more in line with what you may be doing, you can skip the Proxy-specific steps and simply follow the steps for installing materials on the Windows machine, that is a subset of the instructions at the link above. Et Voila. James' suggestion about using the myODBC driver in order to use Access as a front end for a mySQL database is also a very handy thing to do, an excellent plan if you have the freedom to do this for a longer term solution. Your users don't know anything about the back end, they just see Access and they are happy. Good luck, Aaron From MichaelRWolf at att.net Wed May 12 11:22:09 2004 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: The Second Coming of Monty Python's Life of Brian Message-ID: This is not strictly Perl-ish (or Linux-is), but I once asked Gloria Wall (Larry's wife, and also a linguist by training) "What's more important about Perl -- the language or the culture?". She answered, simply "You can't separate culture from language". So..... The "Life of Brian" reopens this Friday in Seattle at the Neptune for an exclusive engagement. http://seattletimes.nwsource.com/html/movies/2001925956_brian12.html Given that it's such a piece of the Geek culture, I figured it would be fun to see it as a group. I've already ordered tickets for the 7:15 Friday, May 14th. Here's a link so you can, too. If you do, send me an email, and I'll coordinate a get-together. https://tickets.moviefone.com/ticketing/order.adp?showtime=1915&screenId=1&movieid=8893&theaterid=7029&showdate=20040514&referrer=http%3a%2f%2fmovies%2echannel%2eaol%2ecom%2fmovie%2fmain%2eadp%3fdate%3d20040514%26x%3d9%26y%3d7%26tab%3dshowtimes%26mid%3d8893 Landmark Neptune Theatre 1303 NE 45th (http://movies.channel.aol.com/showtimes/theater.adp?&tab=mapdirections&theaterid=7029) Seattle, WA 98105 (206) 781-5755 A blurb from the Landmark Theatre Site: http://www.landmarktheatres.com/Market/Seattle/SeattleInfo.htm In response to the furor over Mel Gibson's The Passion of the Christ, Monty Python unleashes the theatrical re-release (or second coming) of Life of Brian, the troupe's quasi-Biblical saga of an inept, reluctant messiah (Graham Chapman) who happened to be born on the same night as Jesus. Director Terry Jones, along with regulars Michael Palin, John Cleese, Terry Gilliam and Eric Idle, take multiple roles in an irreverent religious satire that raised the ire of church groups from coast to coast when originally released. Official Web Site Read an extract from Always Look on the Bright Side of Life, Robert Sellers' book about the history of HandMade Films, with details about the making of Monty Python's Life of Brian. -- Michael R. Wolf All mammals learn by playing! MichaelRWolf@att.net From asim at pair.com Wed May 12 11:37:11 2004 From: asim at pair.com (Asim Jalis) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: The Second Coming of Monty Python's Life of Brian In-Reply-To: References: Message-ID: <20040512163711.GA10302@wokkil.pair.com> On Wed, May 12, 2004 at 09:22:09AM -0700, Michael R. Wolf wrote: > The "Life of Brian" reopens this Friday in Seattle at the > Neptune for an exclusive engagement. I was thinking this might also make a good title for an Ingy talk. From Richard.Haynal at comcast.net Wed May 12 19:37:53 2004 From: Richard.Haynal at comcast.net (Richard Haynal) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: txt -> db In-Reply-To: <01cf01c437bd$baa1d090$0200a8c0@gealach> References: <01cf01c437bd$baa1d090$0200a8c0@gealach> Message-ID: <40A2C361.70208@comcast.net> I had to once do that with perl. You can use DBI and either DBD-ODBC or DBD-ADO. James Moore wrote: >AFAIK, the mdb file format isn't usable from anything other than Jet itself >(the engine that writes those things - Access is built around Jet). In the >past MS has guarded the mdb format like a rabid dog, and since it's of >dubious value I don't know of any non-MS attempts to read and write it >directly. Doesn't mean they don't exist, I just don't know about 'em. > >Possibilities: > >1. Set up an ODBC driver on the Windows box that's going to run the >database and talk to that. I've never tried to hook Perl straight up to >odbc, but it's probably straightforward. > >2. (What I'd do, since #1 would require learning something new, and >everyone knows that once you become a real estate agent your ability topi) >Write to a mysql database which you then export via odbc to an access or a >sql server setup. On the sqlserver side run a query to select from mysql >into a local table. Haven't done this exactly, but I do use mysql databases >in Access via odbc, so getting the rest of the way should be trivial (it's >just a query once you're reading the mysql tables in Access). > >3. (Warning - heresy alert) Don't bother. Your target is an MS-specific >abomination. Embrace the darkside and go with an all-MS solution. > >- James > > >_____________________________________________________________ >Seattle Perl Users Group Mailing List >POST TO: spug-list@mail.pm.org http://spugwiki.perlocity.org >ACCOUNT CONFIG: http://mail.pm.org/mailman/listinfo/spug-list >MEETINGS: 3rd Tuesdays, Location Unknown >WEB PAGE: http://www.seattleperl.org > > > From tim at consultix-inc.com Wed May 12 20:32:03 2004 From: tim at consultix-inc.com (Tim Maher) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Amazon Jobs Message-ID: <20040513013203.GA10668@jumpy.consultix-inc.com> General: Full time, permanent, opportunity with Amazon.Com. Located in Seattle. Compensation package includes Restricted Stock Units. Job Description: Senior Development Engineer Have your ever thought how cool it would be to package and re-constitute the worlds leading ecommerce technology? Ever thought about how to make one of the worlds largest private distributed systems easy to use, predictable in nature, and perform very, very fast? There is a rare opportunity to employ an innovator within a small team of focused, very senior engineers inventing and packaging Amazon's web application and service framework technologies. We are pushing the limits of publish/subscribe technologies on a world wide scale. Your ability to affect a large audience is un-paralleled. No joke, your inventions will impact thousands of software developers and millions of customers. With this opportunity there is great responsibility. The team expects the potential candidates to have a history grounded in the fundamentals of OOD/P, C, C++, Perl, event-driven programming, distributed-computing, message based system communications. In addition to innovating framework-level code your role will include educating, influencing, communicating to broad audiences. Clarity in speech, presentation, and written output is a must. Knowledge of product and package lifecycles, testing paradigms, operational tradeoffs, and deployment strategies desired. For more information, please contact: Rakhel Wainey Tech Recruiter | Amazon.com rakhel@amazon.com www.amazon.com/jobs From MichaelRWolf at att.net Thu May 13 10:39:41 2004 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: QOTW restarted -- #16 currently running Message-ID: Perl Quiz-of-the-Week #16 is out, after a long hiatus. Get more information: http://perl.plover.com/qotw/ Here's the body of the quiz. IMPORTANT: Please do not post solutions, hints, or other spoilers until at least 60 hours after the date of this message. Thanks. IMPORTANTE: Por favor, no envi?is soluciones, pistas, o cualquier otra cosa que pueda echar a perder la resoluci?n del problema hasta que hayan pasado por lo menos 60 horas desde el env?o de este mensaje. Gracias. IMPORTANT: S'il vous pla?t, attendez au minimum 60 heures apr?s la date de ce message avant de poster solutions, indices ou autres r?v?lations. Merci. WICHTIG: Bitte schicken Sie keine L?sungen, Tipps oder Hinweise f?r diese Aufgabe vor Ablauf von 60 Stunden nach dem Datum dieser Mail. Danke. BELANGRIJK: Stuur aub geen oplossingen, hints of andere tips in de eerste 60 uur na het verzendingstijdstip van dit bericht. Waarvoor dank. VNIMANIE: Pozhalujsta ne shlite reshenija, nameki na reshenija, i voobshe lyubye podskazki v techenie po krajnej mere 60 chasov ot daty etogo soobshenija. Spasibo. Qing3 Zhu4Yi4: Qing3 Ning2 Deng3Dao4 Jie1Dao4 Ben3 Xin4Xi2 Zhi1Hou4 60 Xiao3Shi2, Zai4 Fa1Biao3 Jie3Da2, Ti2Shi4, Huo4 Qi2Ta1 Hui4 Xie4Lou4 Da2An4 De5 Jian4Yi4. Xie4Xie4. ---------------------------------------------------------------- This quiz is phrased for Unix systems. If it makes sense to write a solution for Windows or other systems, feel free to do so. The usual way to look for a character string in files in Unix is to use grep. For instance, let's say you want to search for the word 'summary' without regard to case in all files in a certain directory. You might say: grep -i summary * But if there is a very large number of files in your directory, you will get something like this: ksh: /usr/bin/grep: arg list too long Now, you could just issue multiple commands, like this: grep -i summary [A-B]* grep -i summary [C-E]* etc. ... but that's so tedious. Write a Perl program that allows you to search all files in such a directory with one command. You're probably wondering: - Should I use grep? egrep? fgrep? Perl's regex matching? - Should there be an option to make the search case-sensitive or not? - Should we traverse all files under all subdirectories? You can decide for yourself on these questions. There is one other requirement, though: the program must not fail when it finds things for which grepping does not make sense (e.g. directories or named pipes). -- Michael R. Wolf All mammals learn by playing! MichaelRWolf@att.net From ingy at ttul.org Thu May 13 10:48:57 2004 From: ingy at ttul.org (Brian Ingerson) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: The Second Coming of Monty Python's Life of Brian In-Reply-To: <20040512163711.GA10302@wokkil.pair.com> References: <20040512163711.GA10302@wokkil.pair.com> Message-ID: <20040513154857.GD15647@ttul.org> On 12/05/04 12:37 -0400, Asim Jalis wrote: > On Wed, May 12, 2004 at 09:22:09AM -0700, Michael R. Wolf wrote: > > The "Life of Brian" reopens this Friday in Seattle at the > > Neptune for an exclusive engagement. > > I was thinking this might also make a good title for an Ingy > talk. BTDT. I gave a talk in Taipei recently called "The Life of Brian". I don't think they really got the reference though. Cheers, um, Brian From ingy at ttul.org Thu May 13 10:55:34 2004 From: ingy at ttul.org (Brian Ingerson) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: QOTW restarted -- #16 currently running In-Reply-To: References: Message-ID: <20040513155534.GA16229@ttul.org> At the SPUG meeting next Tuseday I'll show you how to do this as a Perl one-liner with IO::All. Of course it will be one of the more mundane things you can do with IO::All. I'll also show you how to write a one line webserver and much more. Cheers, Brian On 13/05/04 08:39 -0700, Michael R. Wolf wrote: > > Perl Quiz-of-the-Week #16 is out, after a long hiatus. > > Get more information: > http://perl.plover.com/qotw/ > > > Here's the body of the quiz. > > > IMPORTANT: Please do not post solutions, hints, or other spoilers > until at least 60 hours after the date of this message. > Thanks. > > IMPORTANTE: Por favor, no envi?is soluciones, pistas, o cualquier otra > cosa que pueda echar a perder la resoluci?n del problema hasta > que hayan pasado por lo menos 60 horas desde el env?o de este > mensaje. Gracias. > > IMPORTANT: S'il vous pla?t, attendez au minimum 60 heures apr?s la > date de ce message avant de poster solutions, indices ou autres > r?v?lations. Merci. > > WICHTIG: Bitte schicken Sie keine L?sungen, Tipps oder Hinweise f?r > diese Aufgabe vor Ablauf von 60 Stunden nach dem Datum dieser > Mail. Danke. > > BELANGRIJK: Stuur aub geen oplossingen, hints of andere tips in de > eerste 60 uur na het verzendingstijdstip van dit > bericht. Waarvoor dank. > > VNIMANIE: Pozhalujsta ne shlite reshenija, nameki na reshenija, i > voobshe lyubye podskazki v techenie po krajnej mere 60 chasov > ot daty etogo soobshenija. Spasibo. > > Qing3 Zhu4Yi4: Qing3 Ning2 Deng3Dao4 Jie1Dao4 Ben3 Xin4Xi2 Zhi1Hou4 60 > Xiao3Shi2, Zai4 Fa1Biao3 Jie3Da2, Ti2Shi4, Huo4 Qi2Ta1 Hui4 > Xie4Lou4 Da2An4 De5 Jian4Yi4. Xie4Xie4. > > ---------------------------------------------------------------- > > This quiz is phrased for Unix systems. If it makes sense to write a > solution for Windows or other systems, feel free to do so. > > The usual way to look for a character string in files in Unix is to use > grep. For instance, let's say you want to search for the word 'summary' > without regard to case in all files in a certain directory. You might say: > > grep -i summary * > > But if there is a very large number of files in your directory, you will > get something like this: > > ksh: /usr/bin/grep: arg list too long > > Now, you could just issue multiple commands, like this: > > grep -i summary [A-B]* > grep -i summary [C-E]* > etc. > > ... but that's so tedious. Write a Perl program that allows you to search > all files in such a directory with one command. > > You're probably wondering: > - Should I use grep? egrep? fgrep? Perl's regex matching? > - Should there be an option to make the search case-sensitive or not? > - Should we traverse all files under all subdirectories? > > You can decide for yourself on these questions. There is one other > requirement, though: the program must not fail when it finds things for > which grepping does not make sense (e.g. directories or named pipes). > > > > -- > Michael R. Wolf > All mammals learn by playing! > MichaelRWolf@att.net > > > _____________________________________________________________ > Seattle Perl Users Group Mailing List > POST TO: spug-list@mail.pm.org http://spugwiki.perlocity.org > ACCOUNT CONFIG: http://mail.pm.org/mailman/listinfo/spug-list > MEETINGS: 3rd Tuesdays, Location Unknown > WEB PAGE: http://www.seattleperl.org From MichaelRWolf at att.net Thu May 13 11:58:27 2004 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Open Sauce lunch *today* Message-ID: http://spugwiki.perlocity.org/index.cgi?ThursdayMay13Ballard === SPUG brainstorming lunch. Do you have ideas for the future of SPUG? Come and brainstorm what you'd like to see for the future of SPUG. Right now, let's focus on *what*. The *how* can come later. - programs (monthly meeting content) - projects (module building, new products, new businesses) - events (outreach, training, conferences, symposiums, CPAN-a-thon) - your ideas go here..... Come! Brainstorm! * Thursday, May 13, 2004 * Thai Siam * NW 83rd St and 15th Ave. NW 98117-5465 * (North Ballard/South Crown Hill) * 12:15 pm * 784-5465 -- Michael R. Wolf All mammals learn by playing! MichaelRWolf@att.net From tallpeak at hotmail.com Thu May 13 14:25:52 2004 From: tallpeak at hotmail.com (Aaron W. West) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: MS SQL & ODBC and nested queries (use odbc_cursortype => 2 in connect) Message-ID: The subject says it all. I answered my own question with perldoc DBD::ODBC. Use dynamic cursors for nested queries, by setting odbc_cursortype => 2 in DBI->connect. I might have thought that would be the default, but static cursors are apparently the default. So this is just for information in case anyone ran into this lately. ------------- I use DBI 1.42 and DBD::ODBC 1.09. Recently I noticed that I get ODBC errors when I try using nested queries. It seems you can't run another query (even with a different statement handle) when one query is "busy" with results. You need to either call finish on the statement handle ($sth->finish()) or retrieve all the results first, before running an execute on another statement handle. I suppose the standard way to avoid the problem is, as I did, to use a $sth->fetchall_arrayref for the "outer" query. That was my fix. If anyone does things differently, I'd be curious to know. I may not like this approach when my outer-query result set is millions of rows (for backfills, etc). Here's an example of the problem (by the way, pubsex.pl means pubs example. Shame on you for thinking otherwise...) $ cat pubsex.pl use DBI; use DBD::ODBC; $dsn = "driver={SQL Server};Server=.;database=pubs"; print "enter password:"; $password = <>; chomp $password; $dbh = DBI->connect( "dbi:ODBC:$dsn", "SA", $password, { AutoCommit => 1 } ) || die; $sql = "select * from sales"; $sth = $dbh->prepare($sql); $sth->execute(); @row = $sth->fetchrow_array(); print "@row\n"; $sth2 = $dbh->prepare("update titles set price=9.99 where title_id='asdf'") || die; $sth2->execute() || die; $ perl pubsex.pl enter password:[my password for SA] 6380 6871 1994-09-14 00:00:00.000 5 Net 60 BU1032 DBD::ODBC::st execute failed: [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt (SQL-HY000)(DBD: st_execute/SQLExecute err=-1) at pubsex.pl line 15, <> line 1. Died at pubsex.pl line 15, <> line 1. Nevermind, perldoc DBD::ODBC has the answer: odbc_cursortype (applies to connect only!) This allows multiple concurrent statements on SQL*Server. In your connect, add { odbc_cursortype => 2 }. If you are using DBI > 1.41, you should also be able to use { odbc_cursortype => DBI::SQL_CURSOR_DYNAMIC } instead. For example: my $dbh = DBI->connect("dbi:ODBC:$DSN", $user, $pass, { RaiseError = 1, odbc_cursortype => 2}); my $sth = $dbh->prepare("one statement"); my $sth2 = $dbh->prepare("two statement"); $sth->execute; my @row; while (@row = $sth->fetchrow_array) { $sth2->execute($row[0]); } See t/20SqlServer.t for an example. -- But now my results are different, that's weird: Oh, it's because I had: @row = $sth->fetchrow_array() || die; ..and the || die changed the statement in some way such that only the last element of the row was stored in @row. I guess it's being interpreted as a scalar? Sometimes perl is weird... The version that works with no error: $ cat pubsex.pl use DBI; use DBD::ODBC; $dsn = "driver={SQL Server};Server=.;database=pubs"; print "enter password:"; $password = <>; chomp $password; $dbh = DBI->connect( "dbi:ODBC:$dsn", "SA", $password, { AutoCommit => 1, odbc_cursortype => 2 } ) || die; $sql = "select * from sales"; $sth = $dbh->prepare($sql) || die; $sth->execute() || die; @row = $sth->fetchrow_array() or die; print "@row\n"; $sth2 = $dbh->prepare("update titles set price=9.99 where title_id='asdf'") || die; $sth2->execute() || die; $ echo [password] | perl pubsex.pl enter password:6380 6871 1994-09-14 00:00:00.000 5 Net 60 BU1032 From stuart_poulin at yahoo.com Thu May 13 15:14:04 2004 From: stuart_poulin at yahoo.com (Stuart Poulin) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: $fd->sync on Win32 Message-ID: <20040513201404.76518.qmail@web60801.mail.yahoo.com> Hi Folks, I need to write some benchmark tools that will test various drive access to local disks, network shares, etc. on Windows and Unix. One part is to test fsync timing: for ($j=0; $jsyswrite($buffer, MAXBUF)){ die "Unable to write $ARGV[0] : $!"; } $fd->sync(); } $fd->sync Works fine on Unix but isn't implemented on Win32. $fd->sync is really what I want in this case and not $fd->flush. Other than using cygwin.dll - anybody have an idea for Win32? Thanks, Stu --------------------------------- Do you Yahoo!? Yahoo! Movies - Buy advance tickets for 'Shrek 2' -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/pipermail/spug-list/attachments/20040513/077fdf1a/attachment.htm From davidinnes at chicagoscience.com Thu May 13 19:45:21 2004 From: davidinnes at chicagoscience.com (David Innes) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: MS SQL & ODBC and nested queries (use odbc_cursortype => 2 inconnect) In-Reply-To: Message-ID: <004b01c4394c$bcec0a60$fe7e5e40@converger.net> Doh! If I'd figured that out I'd be using DBI to this day. I started hooking SQL Server directly via the ADO object and now it's too entrenched. Speaking of DBD and MS Sql Server, it's irksome that there's still no direct, DSN-less DBI::MSSQL module (at least last time I looked) since that's always faster, and less complex than ODBC and DSN. I mean, if you can write directly to SQL with ADO it shouldn't be that hard to develop a DBI for it. (Actually last time I looked there was an DBI::ADO but it was still labeled experimental.) By the way, I'd be delighted to be made a fool of if someone can prove me wrong about lack of SQLServer and/or solid ADO support for those of us in the Windows world. -- David Innes ----Original Message----- From: spug-list-bounces@mail.pm.org [mailto:spug-list-bounces@mail.pm.org] On Behalf Of Aaron W. West Sent: Thursday, May 13, 2004 12:26 PM To: spug-list@mail.pm.org Subject: SPUG: MS SQL & ODBC and nested queries (use odbc_cursortype => 2 inconnect) The subject says it all. I answered my own question with perldoc DBD::ODBC. Use dynamic cursors for nested queries, by setting odbc_cursortype => 2 in DBI->connect. I might have thought that would be the default, but static cursors are apparently the default. So this is just for information in case anyone ran into this lately. ------------- I use DBI 1.42 and DBD::ODBC 1.09. Recently I noticed that I get ODBC errors when I try using nested queries. It seems you can't run another query (even with a different statement handle) when one query is "busy" with results. You need to either call finish on the statement handle ($sth->finish()) or retrieve all the results first, before running an execute on another statement handle. I suppose the standard way to avoid the problem is, as I did, to use a $sth->fetchall_arrayref for the "outer" query. That was my fix. If anyone does things differently, I'd be curious to know. I may not like this approach when my outer-query result set is millions of rows (for backfills, etc). Here's an example of the problem (by the way, pubsex.pl means pubs example. Shame on you for thinking otherwise...) $ cat pubsex.pl use DBI; use DBD::ODBC; $dsn = "driver={SQL Server};Server=.;database=pubs"; print "enter password:"; $password = <>; chomp $password; $dbh = DBI->connect( "dbi:ODBC:$dsn", "SA", $password, { AutoCommit => 1 } ) || die; $sql = "select * from sales"; $sth = $dbh->prepare($sql); $sth->execute(); @row = $sth->fetchrow_array(); print "@row\n"; $sth2 = $dbh->prepare("update titles set price=9.99 where title_id='asdf'") || die; $sth2->execute() || die; $ perl pubsex.pl enter password:[my password for SA] 6380 6871 1994-09-14 00:00:00.000 5 Net 60 BU1032 DBD::ODBC::st execute failed: [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt (SQL-HY000)(DBD: st_execute/SQLExecute err=-1) at pubsex.pl line 15, <> line 1. Died at pubsex.pl line 15, <> line 1. Nevermind, perldoc DBD::ODBC has the answer: odbc_cursortype (applies to connect only!) This allows multiple concurrent statements on SQL*Server. In your connect, add { odbc_cursortype => 2 }. If you are using DBI > 1.41, you should also be able to use { odbc_cursortype => DBI::SQL_CURSOR_DYNAMIC } instead. For example: my $dbh = DBI->connect("dbi:ODBC:$DSN", $user, $pass, { RaiseError = 1, odbc_cursortype => 2}); my $sth = $dbh->prepare("one statement"); my $sth2 = $dbh->prepare("two statement"); $sth->execute; my @row; while (@row = $sth->fetchrow_array) { $sth2->execute($row[0]); } See t/20SqlServer.t for an example. -- But now my results are different, that's weird: Oh, it's because I had: @row = $sth->fetchrow_array() || die; ..and the || die changed the statement in some way such that only the last element of the row was stored in @row. I guess it's being interpreted as a scalar? Sometimes perl is weird... The version that works with no error: $ cat pubsex.pl use DBI; use DBD::ODBC; $dsn = "driver={SQL Server};Server=.;database=pubs"; print "enter password:"; $password = <>; chomp $password; $dbh = DBI->connect( "dbi:ODBC:$dsn", "SA", $password, { AutoCommit => 1, odbc_cursortype => 2 } ) || die; $sql = "select * from sales"; $sth = $dbh->prepare($sql) || die; $sth->execute() || die; @row = $sth->fetchrow_array() or die; print "@row\n"; $sth2 = $dbh->prepare("update titles set price=9.99 where title_id='asdf'") || die; $sth2->execute() || die; $ echo [password] | perl pubsex.pl enter password:6380 6871 1994-09-14 00:00:00.000 5 Net 60 BU1032 _____________________________________________________________ Seattle Perl Users Group Mailing List POST TO: spug-list@mail.pm.org http://spugwiki.perlocity.org ACCOUNT CONFIG: http://mail.pm.org/mailman/listinfo/spug-list MEETINGS: 3rd Tuesdays, Location Unknown WEB PAGE: http://www.seattleperl.org From andrew at sweger.net Thu May 13 21:42:22 2004 From: andrew at sweger.net (Andrew Sweger) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Open Sauce lunch *today* In-Reply-To: Message-ID: Two hours is not enough time to invite folks for this kind of thing. Some folks get digests, so they won't see it for at least a day. Some people use software that files mailing lists into separate folders so they can focus on work and catch up with the list when they're less busy. It generally takes at least twenty minutes for email sent to the list to actually be delivered to subscribers (at least this is true for myself, I'm not sure what the longest wait is for the person at the end of the delivery list). For all the people near Crown Hill or Ballard, who have nothing better to do than obsess over the spug-list, did any manage to show up? Any results worth sharing? On Thu, 13 May 2004, Michael R. Wolf wrote: > http://spugwiki.perlocity.org/index.cgi?ThursdayMay13Ballard > > === SPUG brainstorming lunch. > > Do you have ideas for the future of SPUG? Come and brainstorm what > you'd like to see for the future of SPUG. > > Right now, let's focus on *what*. The *how* can come later. > > - programs (monthly meeting content) > - projects (module building, new products, new businesses) > - events (outreach, training, conferences, symposiums, CPAN-a-thon) > - your ideas go here..... > > Come! Brainstorm! > > * Thursday, May 13, 2004 > * Thai Siam > * NW 83rd St and 15th Ave. NW 98117-5465 > * (North Ballard/South Crown Hill) > * 12:15 pm > * 784-5465 > > > -- Andrew B. Sweger -- The great thing about multitasking is that several things can go wrong at once. From florentin_ionescu at yahoo.com Fri May 14 02:33:35 2004 From: florentin_ionescu at yahoo.com (Florentin Ionescu) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: perl rpc Message-ID: <40A4764F.4040602@yahoo.com> I have to automate some commands remotely from a client to a server. Looking on CPAN I found Perl RPC - does anybody please knows of a different alternative ? Thank you. From pdarley at kinesis-cem.com Fri May 14 10:19:23 2004 From: pdarley at kinesis-cem.com (Peter Darley) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: MS SQL & ODBC and nested queries (use odbc_cursortype => 2inconnect) In-Reply-To: <004b01c4394c$bcec0a60$fe7e5e40@converger.net> Message-ID: David, I'm not super hip to the lingo, and I'm not sure whas a DSN is, but I'm connecting to a SQL Server directly using DBI::Sybase. Does that fit your bill, or is it using the mysterious DSN? Thanks, Peter Darley -----Original Message----- From: spug-list-bounces@mail.pm.org [mailto:spug-list-bounces@mail.pm.org]On Behalf Of David Innes Sent: Thursday, May 13, 2004 5:45 PM To: 'Aaron W. West'; spug-list@mail.pm.org Subject: RE: SPUG: MS SQL & ODBC and nested queries (use odbc_cursortype => 2inconnect) Doh! If I'd figured that out I'd be using DBI to this day. I started hooking SQL Server directly via the ADO object and now it's too entrenched. Speaking of DBD and MS Sql Server, it's irksome that there's still no direct, DSN-less DBI::MSSQL module (at least last time I looked) since that's always faster, and less complex than ODBC and DSN. I mean, if you can write directly to SQL with ADO it shouldn't be that hard to develop a DBI for it. (Actually last time I looked there was an DBI::ADO but it was still labeled experimental.) By the way, I'd be delighted to be made a fool of if someone can prove me wrong about lack of SQLServer and/or solid ADO support for those of us in the Windows world. -- David Innes ----Original Message----- From: spug-list-bounces@mail.pm.org [mailto:spug-list-bounces@mail.pm.org] On Behalf Of Aaron W. West Sent: Thursday, May 13, 2004 12:26 PM To: spug-list@mail.pm.org Subject: SPUG: MS SQL & ODBC and nested queries (use odbc_cursortype => 2 inconnect) The subject says it all. I answered my own question with perldoc DBD::ODBC. Use dynamic cursors for nested queries, by setting odbc_cursortype => 2 in DBI->connect. I might have thought that would be the default, but static cursors are apparently the default. So this is just for information in case anyone ran into this lately. ------------- I use DBI 1.42 and DBD::ODBC 1.09. Recently I noticed that I get ODBC errors when I try using nested queries. It seems you can't run another query (even with a different statement handle) when one query is "busy" with results. You need to either call finish on the statement handle ($sth->finish()) or retrieve all the results first, before running an execute on another statement handle. I suppose the standard way to avoid the problem is, as I did, to use a $sth->fetchall_arrayref for the "outer" query. That was my fix. If anyone does things differently, I'd be curious to know. I may not like this approach when my outer-query result set is millions of rows (for backfills, etc). Here's an example of the problem (by the way, pubsex.pl means pubs example. Shame on you for thinking otherwise...) $ cat pubsex.pl use DBI; use DBD::ODBC; $dsn = "driver={SQL Server};Server=.;database=pubs"; print "enter password:"; $password = <>; chomp $password; $dbh = DBI->connect( "dbi:ODBC:$dsn", "SA", $password, { AutoCommit => 1 } ) || die; $sql = "select * from sales"; $sth = $dbh->prepare($sql); $sth->execute(); @row = $sth->fetchrow_array(); print "@row\n"; $sth2 = $dbh->prepare("update titles set price=9.99 where title_id='asdf'") || die; $sth2->execute() || die; $ perl pubsex.pl enter password:[my password for SA] 6380 6871 1994-09-14 00:00:00.000 5 Net 60 BU1032 DBD::ODBC::st execute failed: [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt (SQL-HY000)(DBD: st_execute/SQLExecute err=-1) at pubsex.pl line 15, <> line 1. Died at pubsex.pl line 15, <> line 1. Nevermind, perldoc DBD::ODBC has the answer: odbc_cursortype (applies to connect only!) This allows multiple concurrent statements on SQL*Server. In your connect, add { odbc_cursortype => 2 }. If you are using DBI > 1.41, you should also be able to use { odbc_cursortype => DBI::SQL_CURSOR_DYNAMIC } instead. For example: my $dbh = DBI->connect("dbi:ODBC:$DSN", $user, $pass, { RaiseError = 1, odbc_cursortype => 2}); my $sth = $dbh->prepare("one statement"); my $sth2 = $dbh->prepare("two statement"); $sth->execute; my @row; while (@row = $sth->fetchrow_array) { $sth2->execute($row[0]); } See t/20SqlServer.t for an example. -- But now my results are different, that's weird: Oh, it's because I had: @row = $sth->fetchrow_array() || die; ..and the || die changed the statement in some way such that only the last element of the row was stored in @row. I guess it's being interpreted as a scalar? Sometimes perl is weird... The version that works with no error: $ cat pubsex.pl use DBI; use DBD::ODBC; $dsn = "driver={SQL Server};Server=.;database=pubs"; print "enter password:"; $password = <>; chomp $password; $dbh = DBI->connect( "dbi:ODBC:$dsn", "SA", $password, { AutoCommit => 1, odbc_cursortype => 2 } ) || die; $sql = "select * from sales"; $sth = $dbh->prepare($sql) || die; $sth->execute() || die; @row = $sth->fetchrow_array() or die; print "@row\n"; $sth2 = $dbh->prepare("update titles set price=9.99 where title_id='asdf'") || die; $sth2->execute() || die; $ echo [password] | perl pubsex.pl enter password:6380 6871 1994-09-14 00:00:00.000 5 Net 60 BU1032 _____________________________________________________________ Seattle Perl Users Group Mailing List POST TO: spug-list@mail.pm.org http://spugwiki.perlocity.org ACCOUNT CONFIG: http://mail.pm.org/mailman/listinfo/spug-list MEETINGS: 3rd Tuesdays, Location Unknown WEB PAGE: http://www.seattleperl.org _____________________________________________________________ Seattle Perl Users Group Mailing List POST TO: spug-list@mail.pm.org http://spugwiki.perlocity.org ACCOUNT CONFIG: http://mail.pm.org/mailman/listinfo/spug-list MEETINGS: 3rd Tuesdays, Location Unknown WEB PAGE: http://www.seattleperl.org From tallpeak at hotmail.com Fri May 14 12:14:44 2004 From: tallpeak at hotmail.com (Aaron W. West) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: MS SQL & ODBC and nested queries (use odbc_cursortype => 2inconnect) References: Message-ID: I installed DBD::Sybase long back, but I thought I found out it has no support for ? placeholders with MS-SQL. Am I wrong? The speed of ODBC is reasonable, so eventually I decided to stick with ODBC. eg: I can retrieve 30,000 (single-field) records per second now, although I see around 100,000 on ActiveState Perl, and used to see 120,000 in Cygwin Perl with an older version of DBI & DBD::ODBC. I'm not sure what changed. Here's something else I always seem to use for MS SQL with DBD::ODBC: # This is needed to avoid needless sql_describe_params, # and errors inserting datetime values # It emulates old DBI 0.28 behavior: $dbh->{odbc_default_bind_type} = 12; # SQL_VARCHAR; #12 For nested queries, I read that an alternative to using dynamic cursors is to stick the the default cursor behavior but use multiple connections. But I think I'd go ahead and use dynamic (server-side) cursors rather than make multiple connections to the same database from my script, unless there's some big reason not to. (So far, this isn't an issue for me...) ----- Original Message ----- From: "Peter Darley" To: "David Innes" ; "'Aaron W. West'" ; Sent: Friday, May 14, 2004 8:19 AM Subject: RE: SPUG: MS SQL & ODBC and nested queries (use odbc_cursortype => 2inconnect) David, I'm not super hip to the lingo, and I'm not sure whas a DSN is, but I'm connecting to a SQL Server directly using DBI::Sybase. Does that fit your bill, or is it using the mysterious DSN? Thanks, Peter Darley -----Original Message----- From: spug-list-bounces@mail.pm.org [mailto:spug-list-bounces@mail.pm.org]On Behalf Of David Innes Sent: Thursday, May 13, 2004 5:45 PM To: 'Aaron W. West'; spug-list@mail.pm.org Subject: RE: SPUG: MS SQL & ODBC and nested queries (use odbc_cursortype => 2inconnect) Doh! If I'd figured that out I'd be using DBI to this day. I started hooking SQL Server directly via the ADO object and now it's too entrenched. Speaking of DBD and MS Sql Server, it's irksome that there's still no direct, DSN-less DBI::MSSQL module (at least last time I looked) since that's always faster, and less complex than ODBC and DSN. I mean, if you can write directly to SQL with ADO it shouldn't be that hard to develop a DBI for it. (Actually last time I looked there was an DBI::ADO but it was still labeled experimental.) By the way, I'd be delighted to be made a fool of if someone can prove me wrong about lack of SQLServer and/or solid ADO support for those of us in the Windows world. -- David Innes ----Original Message----- From: spug-list-bounces@mail.pm.org [mailto:spug-list-bounces@mail.pm.org] On Behalf Of Aaron W. West Sent: Thursday, May 13, 2004 12:26 PM To: spug-list@mail.pm.org Subject: SPUG: MS SQL & ODBC and nested queries (use odbc_cursortype => 2 inconnect) The subject says it all. I answered my own question with perldoc DBD::ODBC. Use dynamic cursors for nested queries, by setting odbc_cursortype => 2 in DBI->connect. I might have thought that would be the default, but static cursors are apparently the default. So this is just for information in case anyone ran into this lately. ------------- I use DBI 1.42 and DBD::ODBC 1.09. Recently I noticed that I get ODBC errors when I try using nested queries. It seems you can't run another query (even with a different statement handle) when one query is "busy" with results. You need to either call finish on the statement handle ($sth->finish()) or retrieve all the results first, before running an execute on another statement handle. I suppose the standard way to avoid the problem is, as I did, to use a $sth->fetchall_arrayref for the "outer" query. That was my fix. If anyone does things differently, I'd be curious to know. I may not like this approach when my outer-query result set is millions of rows (for backfills, etc). Here's an example of the problem (by the way, pubsex.pl means pubs example. Shame on you for thinking otherwise...) $ cat pubsex.pl use DBI; use DBD::ODBC; $dsn = "driver={SQL Server};Server=.;database=pubs"; print "enter password:"; $password = <>; chomp $password; $dbh = DBI->connect( "dbi:ODBC:$dsn", "SA", $password, { AutoCommit => 1 } ) || die; $sql = "select * from sales"; $sth = $dbh->prepare($sql); $sth->execute(); @row = $sth->fetchrow_array(); print "@row\n"; $sth2 = $dbh->prepare("update titles set price=9.99 where title_id='asdf'") || die; $sth2->execute() || die; $ perl pubsex.pl enter password:[my password for SA] 6380 6871 1994-09-14 00:00:00.000 5 Net 60 BU1032 DBD::ODBC::st execute failed: [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt (SQL-HY000)(DBD: st_execute/SQLExecute err=-1) at pubsex.pl line 15, <> line 1. Died at pubsex.pl line 15, <> line 1. Nevermind, perldoc DBD::ODBC has the answer: odbc_cursortype (applies to connect only!) This allows multiple concurrent statements on SQL*Server. In your connect, add { odbc_cursortype => 2 }. If you are using DBI > 1.41, you should also be able to use { odbc_cursortype => DBI::SQL_CURSOR_DYNAMIC } instead. For example: my $dbh = DBI->connect("dbi:ODBC:$DSN", $user, $pass, { RaiseError = 1, odbc_cursortype => 2}); my $sth = $dbh->prepare("one statement"); my $sth2 = $dbh->prepare("two statement"); $sth->execute; my @row; while (@row = $sth->fetchrow_array) { $sth2->execute($row[0]); } See t/20SqlServer.t for an example. -- But now my results are different, that's weird: Oh, it's because I had: @row = $sth->fetchrow_array() || die; .and the || die changed the statement in some way such that only the last element of the row was stored in @row. I guess it's being interpreted as a scalar? Sometimes perl is weird... The version that works with no error: $ cat pubsex.pl use DBI; use DBD::ODBC; $dsn = "driver={SQL Server};Server=.;database=pubs"; print "enter password:"; $password = <>; chomp $password; $dbh = DBI->connect( "dbi:ODBC:$dsn", "SA", $password, { AutoCommit => 1, odbc_cursortype => 2 } ) || die; $sql = "select * from sales"; $sth = $dbh->prepare($sql) || die; $sth->execute() || die; @row = $sth->fetchrow_array() or die; print "@row\n"; $sth2 = $dbh->prepare("update titles set price=9.99 where title_id='asdf'") || die; $sth2->execute() || die; $ echo [password] | perl pubsex.pl enter password:6380 6871 1994-09-14 00:00:00.000 5 Net 60 BU1032 _____________________________________________________________ Seattle Perl Users Group Mailing List POST TO: spug-list@mail.pm.org http://spugwiki.perlocity.org ACCOUNT CONFIG: http://mail.pm.org/mailman/listinfo/spug-list MEETINGS: 3rd Tuesdays, Location Unknown WEB PAGE: http://www.seattleperl.org _____________________________________________________________ Seattle Perl Users Group Mailing List POST TO: spug-list@mail.pm.org http://spugwiki.perlocity.org ACCOUNT CONFIG: http://mail.pm.org/mailman/listinfo/spug-list MEETINGS: 3rd Tuesdays, Location Unknown WEB PAGE: http://www.seattleperl.org From cmeyer at helvella.org Fri May 14 13:40:01 2004 From: cmeyer at helvella.org (Colin Meyer) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: perl rpc In-Reply-To: <40A4764F.4040602@yahoo.com> References: <40A4764F.4040602@yahoo.com> Message-ID: <20040514184001.GE29359@funpox.helvella.org> On Fri, May 14, 2004 at 12:33:35AM -0700, Florentin Ionescu wrote: > I have to automate some commands remotely from a client to a server. > > Looking on CPAN I found Perl RPC - does anybody please knows of a > different alternative ? I'd recommend SOAP::LITE or RPC::XML because they provide recognized protocols that many other programs can speak with. -Colin. From ced at carios2.ca.boeing.com Fri May 14 17:32:19 2004 From: ced at carios2.ca.boeing.com (ced@carios2.ca.boeing.com) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: perl rpc Message-ID: <200405142232.PAA07648@carios2.ca.boeing.com> > I have to automate some commands remotely from a client to a server. > Looking on CPAN I found Perl RPC - does anybody please knows of a > different alternative ? Net::SSH::Perl may be preferable in some cases depending on security needs. Rgds, -- Charles DeRykus From andrew at sweger.net Fri May 14 22:04:46 2004 From: andrew at sweger.net (Andrew Sweger) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: MS SQL & ODBC and nested queries (use odbc_cursortype => 2inconnect) In-Reply-To: Message-ID: On Fri, 14 May 2004, Aaron W. West wrote: > I installed DBD::Sybase long back, but I thought I found out it has no > support for ? placeholders with MS-SQL. Am I wrong? You might be wrong. I seem to recall using placeholders with DBD::Sybase against both MS-SQL and Sybase servers back in 1999. The prepared statements might not have been cached at the time (saved optimizer analysis, etc.) other than the last prepared statement (good for repeated queries or inserts, for example). But it was so long ago, it might have been from another life. -- Andrew B. Sweger -- The great thing about multitasking is that several things can go wrong at once. From spug at magnadev.com Mon May 17 14:31:33 2004 From: spug at magnadev.com (Ron Pero) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Anyone from Tacoma going to Tuesday's SPUG meeting? Message-ID: If so and you want to drive up together, let me know. Ron Pero spug@magandev.com From davidinnes at chicagoscience.com Mon May 17 15:03:01 2004 From: davidinnes at chicagoscience.com (David Innes) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: $fd->sync on Win32 In-Reply-To: <20040513201404.76518.qmail@web60801.mail.yahoo.com> Message-ID: <000e01c43c49$f5473420$fe7e5e40@converger.net> Hi Stewart, Disclaimer: I've never done drive testing and I'm ignorant of low-level disk/file functions but. According to Google, it looks as though the Win32 API call FlushFileBuffers() might be equivalent to fsync. (http://support.microsoft.com/default.aspx?scid=kb;en-us;66052) You can also open a file with no buffering with no caching using the FILE_FLAG_WRITE_THROUGH or the even deeper FILE_FLAG_NO_BUFFERING flags on the CreateFile() API call. (http://support.microsoft.com/default.aspx?scid=kb;en-us;99794) Recalling my previous disclaimer, Google also turns up a multi-platform tool called dt at http://www.bit-net.com/~rmiller/dt.html. It appears to require cygwin for Windows platforms but I don't know whether that's for the test machine only or for Windows targets as well. Finally, depending on whether you want to run fsync only on the testing host and not targets you may want to play around with Windows Services for UNIX, which also lets you call fsync. It looks like it's a free download but it looks like it only works on Win2k, WinXP Pro, and Win 2003 Server. (http://www.microsoft.com/windows/sfu/productinfo/features/default.asp) Dave Roth's Windows NT/Win32 Perl Programming: The Standard Extensions book (Powels: http://www.powells.com/cgi-bin/biblio?inkey=17-157870216x-0 or Amazon: http://www.amazon.com/exec/obidos/tg/detail/-/157870216X/qid=1084823355/sr=1 -2/ref=sr_1_2/102-3650323-2047354?v=glance &s=books) goes into a lot of detail about hacking around the Win32 APIs. Hope one of those helps. -- David Innes -----Original Message----- From: spug-list-bounces@mail.pm.org [mailto:spug-list-bounces@mail.pm.org] On Behalf Of Stuart Poulin Sent: Thursday, May 13, 2004 1:14 PM To: spug-list@mail.pm.org Subject: SPUG: $fd->sync on Win32 Hi Folks, I need to write some benchmark tools that will test various drive access to local disks, network shares, etc. on Windows and Unix. One part is to test fsync timing: for ($j=0; $jsyswrite($buffer, MAXBUF)){ die "Unable to write $ARGV[0] : $!"; } $fd->sync(); } $fd->sync Works fine on Unix but isn't implemented on Win32. $fd->sync is really what I want in this case and not $fd->flush. Other than using cygwin.dll - anybody have an idea for Win32? Thanks, Stu _____ Do you Yahoo!? Yahoo! Movies - Buy advance tickets for 'Shrek 2' -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/pipermail/spug-list/attachments/20040517/87aeb8cf/attachment.htm From andrew at sweger.net Tue May 18 14:54:35 2004 From: andrew at sweger.net (Andrew Sweger) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Meeting Announcement -- Ingy Returneth -- May 18, 2004 Message-ID: Sorry for the late reminder. Hopefully everyone that's interested in making it to Ingy's talk _tonight_ is able to. The meeting announcement details from Michael are copied below. This should be a fun meeting. Ingy always manages to provide mind expanding topics and his energy will infect you. So, if you need some inspiration or you just want to know what all the noise is about these modules, plan on showing up and seeing Ingy's modules. I'll be going and can offer a ride to some _one_ not too far out of the way between north Seattle (basically Shoreline) and the meeting location. Contact me off list if you're interested. -- Andrew B. Sweger -- The great thing about multitasking is that several things can go wrong at once. ---------- Forwarded message ---------- From: Michael R. Wolf To: SPUG list Date: Sun, 09 May 2004 13:32:41 -0700 Subject: SPUG: Meeting Announcement -- Ingy Returneth -- May 18, 2004 May Seattle Perl Users Group (SPUG) Meeting =========================================== Title: Ingy Returneth -- IO::All and Spork Speakers: Ingy (Brian Ingerson) Meeting Date: Tuesday, May 18, 2004 Meeting Time: 7:00 - 9:00 p.m. (networking 6:30 - 7:00) Location: Geospiza 3411 Thorndyke Avenue West (See directions below) Cost: Admission is free and open to the general public Info: http://www.seattleperl.org/ =========================================== Ingy ("The Ingy") has returned to Seattle. For his return appearance, he will introduce us to two of his recent creations: IO::All - a combination of the Perl best IO modules Spork - a slideshow creation module Come wrap your brain around another set of creations that could only have come from the mind of Ingy, and have only been created with the Power of Perl. We will be meeting in a new location. A big thanks to many of the folks at Geospiza (a Life Science company, and big Perl user) for stepping up to hosting SPUG. IO::All Perl Module ------------------- As described on CPAN -- http://search.cpan.org/~ingy/IO-All-0.17/lib/IO/All.pm IO::All combines all of the best Perl IO modules into a single Spiffy object oriented interface to greatly simplify your everyday Perl IO idioms. It exports a single function called IO, which returns a new IO::All object. And that object can do it all! An O'Reilly article (http://www.perl.com/pub/a/2004/03/12/ioall.html) let the cat out of the bag and started a big discussion. Spork Perl Module ----------------- As described on CPAN -- http://search.cpan.org/~ingy/Spork-0.15/lib/Spork.pm Spork lets you create HTML slideshow presentations easily. It comes with a sample slideshow. All you need is a text editor, a browser and a topic. Spork allows you create an entire slideshow by editing a single file called Spork.slides (by default). Each slide is created using a minimal markup language similar to the syntax used in Kwiki wikis. ================================================================ Directions to Geospiza: ----------------------- Geospiza 3411 Thorndyke Ave. W Seattle, WA 98119 By carpool: (send requests to spug-list@pm.org) ----------- Definately a more fun way to spend the driving time. By Bus: (http://transit.metrokc.gov/) ------- The 15 & 18 stop at West Dravus Street on 15th Avenue The 44, 46 get to Ballard at Market St & 15th Ave (1/2 mile walk, xfer to 15 or 18 at Walgreen's, request a pick-up) The 75 gets to Ballard 4 blocks from Walgreens (see 44, 46) The 17 stops south of the Ballard Bridge Coming from I5: --------------- 1 - EXIT onto 50th Street toward Seattle Pacific University (Larry & Gloria Wall's Alma Mater) 2 - TURN SLIGHT LEFT at light at bottom of hill onto Green Lake Way North (following signs toward Fisherman's Terminal) 3 - TURN SLIGHT RIGHT (following traffic flow) onto N 46th St (Following signs to Ballard) 4 - FOLLOW TRAFFIC WINDING down the hill into Ballard TO JOIN NW 55th Street, which is called Market Steet at this point 5 - TURN LEFT onto 15th Ave NW (a major intersection - Safeway, Walgreens, Denny's) 6 - CROSS the Ballard Bridge 7 - RIGHT EXIT onto West Dravus Street (West Dravus Street is the major overpass over 15th Ave West that leads into Magnolia. It's south of the Ballard Bridge, north of the Interbay Golf Center.) 8 - RIGHT TURN onto West Dravus Street, westbound 9 - STRAIGHT for 2 blocks, passing QFC on right 10 - TURN RIGHT onto Thorndyke Ave West 11 - STRAIGHT for 1.25 blocks 12 - Geospiza is on your left: 3411 Thorndyke Avenue West Comin from Downtown: ==================== 1 - Get onto Elliot Avenue West, heading north 2 - SLIGHT RIGHT onto 15th Avenue West 3 - RIGHT EXIT onto West Dravus Street 4 - TURN LEFT onto West Dravus Street, westbound 5 - You're now within 1/2 mile. See directions above. 6 - STRAIGHT for 2 blocks, passing QFC on right 7 - TURN RIGHT onto Thorndyke Ave West 8 - STRAIGHT for 1.25 blocks 9 - Geospiza is on your left: 3411 Thorndyke Avenue West ================================================================ Mapquest: http://www.mapquest.com/maps/map.adp?country=US&countryid=250&addtohistory=&searchtab=address&searchtype=address&address=3411+Thorndyke+Ave.+W&city=Seattle&state=wa&zipcode=&search=++Search++ Yahoo! Maps: http://maps.yahoo.com/maps_result?ed=XKC6Qup_0ToFdKje6jM_UZzJhylBjoFqlp8tBW5T&csz=seattle%2C+wa&country=us&new=1&name=&qty= -- Michael R. Wolf All mammals learn by playing! MichaelRWolf@att.net _____________________________________________________________ Seattle Perl Users Group Mailing List POST TO: spug-list@mail.pm.org http://spugwiki.perlocity.org ACCOUNT CONFIG: http://mail.pm.org/mailman/listinfo/spug-list MEETINGS: 3rd Tuesdays, Location Unknown WEB PAGE: http://www.seattleperl.org From tim at consultix-inc.com Tue May 18 17:14:21 2004 From: tim at consultix-inc.com (Tim Maher) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Meeting Announcement -- Ingy Returneth -- May 18, 2004 In-Reply-To: References: Message-ID: <20040518221421.GA31616@jumpy.consultix-inc.com> By the way, will there by any wireless access for meeting attendees tonight? *--------------------------------------------------------------------------* | Tim Maher, CEO (206) 781-UNIX (866) DOC-PERL (866) DOC-UNIX | | tim(AT)Consultix-Inc.Com http://TeachMePerl.Com http://TeachMeUnix.Com | *+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-* | UPCOMING CLASSES: "UNIX Fundamentals -- for Power Users", 6/1-4, Seattle | | Watch for my upcoming book: "Minimal Perl for Shell Users & Programmers" | *--------------------------------------------------------------------------* From tim at consultix-inc.com Tue May 18 17:27:01 2004 From: tim at consultix-inc.com (Tim Maher) Date: Mon Aug 2 21:37:20 2004 Subject: SPUG: Geospiza directions: correction? Message-ID: <20040518222701.GB31616@jumpy.consultix-inc.com> Judging from the Mapquest info, step #10 below should say "turn right onto 17th Ave West" and #11 should have appended to it "... cross Bertona St., where 17th Ave becomes Thorndyke Ave W". > 10 - TURN RIGHT onto Thorndyke Ave West > > 11 - STRAIGHT for 1.25 blocks > > 12 - Geospiza is on your left: 3411 Thorndyke Avenue West I've reproduced the original directions below. WARNING: I have no real experience in traveling to this location, and Mapquest data is not infallible. -Tim *--------------------------------------------------------------------------* | Tim Maher, CEO (206) 781-UNIX (866) DOC-PERL (866) DOC-UNIX | | tim(AT)Consultix-Inc.Com http://TeachMePerl.Com http://TeachMeUnix.Com | *+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-* | UPCOMING CLASSES: "UNIX Fundamentals -- for Power Users", 6/1-4, Seattle | | Watch for my upcoming book: "Minimal Perl for Shell Users & Programmers" | *--------------------------------------------------------------------------* Directions to Geospiza: ----------------------- Geospiza 3411 Thorndyke Ave. W Seattle, WA 98119 Coming from I5: --------------- 1 - EXIT onto 50th Street toward Seattle Pacific University (Larry & Gloria Wall's Alma Mater) 2 - TURN SLIGHT LEFT at light at bottom of hill onto Green Lake Way North (following signs toward Fisherman's Terminal) 3 - TURN SLIGHT RIGHT (following traffic flow) onto N 46th St (Following signs to Ballard) 4 - FOLLOW TRAFFIC WINDING down the hill into Ballard TO JOIN NW 55th Street, which is called Market Steet at this point 5 - TURN LEFT onto 15th Ave NW (a major intersection - Safeway, Walgreens, Denny's) 6 - CROSS the Ballard Bridge 7 - RIGHT EXIT onto West Dravus Street (West Dravus Street is the major overpass over 15th Ave West that leads into Magnolia. It's south of the Ballard Bridge, north of the Interbay Golf Center.) 8 - RIGHT TURN onto West Dravus Street, westbound 9 - STRAIGHT for 2 blocks, passing QFC on right 10 - TURN RIGHT onto Thorndyke Ave West 11 - STRAIGHT for 1.25 blocks 12 - Geospiza is on your left: 3411 Thorndyke Avenue West Comin from Downtown: ==================== 1 - Get onto Elliot Avenue West, heading north 2 - SLIGHT RIGHT onto 15th Avenue West 3 - RIGHT EXIT onto West Dravus Street 4 - TURN LEFT onto West Dravus Street, westbound 5 - You're now within 1/2 mile. See directions above. 6 - STRAIGHT for 2 blocks, passing QFC on right 7 - TURN RIGHT onto Thorndyke Ave West 8 - STRAIGHT for 1.25 blocks 9 - Geospiza is on your left: 3411 Thorndyke Avenue West *--------------------------------------------------------------------------* | Tim Maher, CEO (206) 781-UNIX (866) DOC-PERL (866) DOC-UNIX | | tim(AT)Consultix-Inc.Com http://TeachMePerl.Com http://TeachMeUnix.Com | *+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-* | UPCOMING CLASSES: "UNIX Fundamentals -- for Power Users", 6/1-4, Seattle | | Watch for my upcoming book: "Minimal Perl for Shell Users & Programmers" | *--------------------------------------------------------------------------* From stuart_poulin at yahoo.com Tue May 18 17:36:00 2004 From: stuart_poulin at yahoo.com (Stuart Poulin) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: $fd->sync on Win32 In-Reply-To: <000e01c43c49$f5473420$fe7e5e40@converger.net> Message-ID: <20040518223600.88436.qmail@web60809.mail.yahoo.com> Thanks David! Good Googlin' ;-) I wish I could have found this info a few days back. I did end up writing it in C and using cygwin. I'm not sure how cygwin actually implements it, but it appears to work the same as on Unix systems. Maybe I could do a little "Inline" thing for Win32. Nice thing is Perl 5 can sometimes look like C so porting to C can be easy at times. Long live Perl 5. thanks, Stu David Innes wrote: Hi Stewart, Disclaimer: I’ve never done drive testing and I’m ignorant of low-level disk/file functions but… According to Google, it looks as though the Win32 API call FlushFileBuffers() might be equivalent to fsync. (http://support.microsoft.com/default.aspx?scid=kb;en-us;66052) You can also open a file with no buffering with no caching using the FILE_FLAG_WRITE_THROUGH or the even deeper FILE_FLAG_NO_BUFFERING flags on the CreateFile() API call. (http://support.microsoft.com/default.aspx?scid=kb;en-us;99794) Recalling my previous disclaimer, Google also turns up a multi-platform tool called dt at http://www.bit-net.com/~rmiller/dt.html. It appears to require cygwin for Windows platforms but I don’t know whether that’s for the test machine only or for Windows targets as well. Finally, depending on whether you want to run fsync only on the testing host and not targets you may want to play around with Windows Services for UNIX, which also lets you call fsync. It looks like it’s a free download but it looks like it only works on Win2k, WinXP Pro, and Win 2003 Server. (http://www.microsoft.com/windows/sfu/productinfo/features/default.asp) Dave Roth’s Windows NT/Win32 Perl Programming: The Standard Extensions book (Powels: http://www.powells.com/cgi-bin/biblio?inkey=17-157870216x-0 or Amazon: http://www.amazon.com/exec/obidos/tg/detail/-/157870216X/qid=1084823355/sr=1-2/ref=sr_1_2/102-3650323-2047354?v=glance&s=books) goes into a lot of detail about hacking around the Win32 APIs. Hope one of those helps. -- David Innes -----Original Message----- From: spug-list-bounces@mail.pm.org [mailto:spug-list-bounces@mail.pm.org] On Behalf Of Stuart Poulin Sent: Thursday, May 13, 2004 1:14 PM To: spug-list@mail.pm.org Subject: SPUG: $fd->sync on Win32 Hi Folks, I need to write some benchmark tools that will test various drive access to local disks, network shares, etc. on Windows and Unix. One part is to test fsync timing: for ($j=0; $jsyswrite($buffer, MAXBUF)){ die "Unable to write $ARGV[0] : $!"; } $fd->sync(); } $fd->sync Works fine on Unix but isn't implemented on Win32. $fd->sync is really what I want in this case and not $fd->flush. Other than using cygwin.dll - anybody have an idea for Win32? Thanks, Stu --------------------------------- Do you Yahoo!? Yahoo! Movies - Buy advance tickets for 'Shrek 2' --------------------------------- Do you Yahoo!? SBC Yahoo! - Internet access at a great low price. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/pipermail/spug-list/attachments/20040518/674de63e/attachment.htm From MichaelRWolf at att.net Tue May 18 18:34:39 2004 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: wireless access for tonight's meeting In-Reply-To: <20040518221421.GA31616@jumpy.consultix-inc.com> (Tim Maher's message of "Tue, 18 May 2004 15:14:21 -0700") References: <20040518221421.GA31616@jumpy.consultix-inc.com> Message-ID: Tim Maher writes: > By the way, will there by any wireless access for meeting attendees > tonight? Not *at* the meeting. If folks want wireless connection *after* the meeting, we can head up the hill a few blocks to QCafe -- they've got wireless access, some couches, coffee, and pastries. -- Michael R. Wolf All mammals learn by playing! MichaelRWolf@att.net From MichaelRWolf at att.net Wed May 19 14:19:13 2004 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Open Sauce Lunch -- next Wednesday Message-ID: Here's the Open Sauce lunch announcement I promised at last night's SPUG meeting. http://spugwiki.perlocity.org/index.cgi?WednesdayMay26Ballard Hope to see you and your ideas next week! Michael P.S. For the detail oriented among you (probably all of you), I changed the day from Tuesday to Wednesday. -- Michael R. Wolf All mammals learn by playing! MichaelRWolf@att.net From ced at carios2.ca.boeing.com Wed May 19 15:34:49 2004 From: ced at carios2.ca.boeing.com (ced@carios2.ca.boeing.com) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Re: IO::All Message-ID: <200405192034.NAA15675@carios2.ca.boeing.com> Hello everyone, I missed Brian's talk unfortunately but was there any mention of IO::All's error handling... was there a demo of subclassing throw() for instance? Thanks, -- Charles DeRykus From ced at carios2.ca.boeing.com Wed May 19 15:38:48 2004 From: ced at carios2.ca.boeing.com (ced@carios2.ca.boeing.com) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Re: IO::All Message-ID: <200405192038.NAA15700@carios2.ca.boeing.com> > was there a demo of subclassing throw() for instance? Sorry, I meant "subclassing and then overriding throw()". -- Charles DeRykus From andrew at sweger.net Fri May 21 10:54:09 2004 From: andrew at sweger.net (Andrew Sweger) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Overly clever? Message-ID: Some code that I have adopted finally got to the point of requiring more disciplined practices. First, a little background on the problem. The original code was of the style I call pseudo-modular. For example, the "module" looked like this: File: Whizbang.pm ----------------- package Whizbang; sub foo {...} sub bar {...} 1; __END__ The script that depends on Whizbang looks like this: File: whiz.pl ------------------ #!/usr/bin/perl use strict; use Whizbang; package Whizbang; # <----- Seriously! sub baz {&foo();&bar()} __END__ I worked with it like this for a while, but it really got on my nerves basically never knowing where functions were defined. Or worse, not having any compile-time checks with 5,000 lines of code that has no tests. Even now, I think I've run at most 20% of the code. I'm not sure how some code paths are reached (there are other evils lurking in there). So, I did some basic things that are automatic for me. I added lexical warnings, made the module a little more real by having it export functions into the callers package, stopped using global package variables everywhere, and put the main script back into package main. I know that it's not fashionable to export symbols into the caller's namespace by brute force and I want to be aware of which functions are actually being used (so I can further encapsulate the module at a later point). This next bit is the part I'm worried about. First, an explanation. My goal is up-front accounting of functions and when they're used (because there are more than I can keep track of) without radically changing how all the code works or is used (it's a "Martha Stewart" remodel, not a "This Old House" remodel; i.e., superficial versus tearing it down to the studs). I renamed all the functions in the module to the form _function_name to indicate they are internal to the module and not meant to be exported. Then I made a list of all the functions in the module and assigned it to the constant FUNCTIONS. If a function is meant to be exported, its name is listed without the leading underscore (in addition to the one with the underscore). This gives me a catalog of all the functions in the module. I can make a function exportable by listing it sans leading underscore in its name. Then several other steps, that are executed when the module is first use'd, check to make sure the catalog of functions actually exist and creates aliases for the exportable functions. Note, I don't actually use the :all export tag unless I'm terribly desparate. I prefer to explicitly name which functions must be imported from Whizbang at use time. This is my (vastly simplified) implementation of exporting functions in the module: File: Whizbang.pm ----------------- package Whizbang; use warnings; use strict; use Exporter 'import'; use vars qw(%EXPORT_TAGS); use contant FUNCTIONS => qw( sub_one _sub_one _sub_two sub_three _sub_three ); # There are hundreds of functions in the real thing use subs FUNCTIONS; my @EXPORTABLE = grep !/^_/, FUNCTIONS; %EXPORT_TAGS = ( all => [@EXPORTABLE] ); Exporter::export_ok_tags('all'); foreach (FUNCTIONS) { next unless /^_/; warn "Catalog of functions contains non-existent sub $_" unless defined &{Whizbang::{$_}}; } foreach (@EXPORTABLE) { warn "Unable to export $_ because _$_ is not defined", next unless defined &{Whizbang::{"_$_"}}; eval "*$_ = \\&_$_"; # alias _function to function } sub _sub_one {...} sub _sub_two {...} sub _sub_three {...} 1; __END__ The script would then be more like: File: whiz.pl ------------------ #!/usr/bin/perl use warnings; use strict; use Whizbang qw( sub_one sub_three ); ... __END__ Now, the question: Have I created a monster? Is this trying to be overly clever? Have I completely missed a simpler way to achieve my current goal? It does seem to do the job of letting me know when I'm trying to call a function that hasn't been both declared as exportable (via the method above) *and* listed in the import array in the calling script. So now I have a fairly good accounting of functions without a any changes to the old code. A related question (or maybe it's just a gripe), why can't Perl complain at compile time about undeclared subroutines when they called as function() or &function instead of just bareword usage? At least as an option, I'd like to test the code for the problem of calls to functions that haven't been imported at compile-time (rather than hit or miss complaints at run-time about undefined subroutines). In other news, line folding (as it's called in Vim) is very cool. Ask for a demo when you see me! -- Andrew B. Sweger -- The great thing about multitasking is that several things can go wrong at once. From matw at eclipse-optics.com Fri May 21 12:16:22 2004 From: matw at eclipse-optics.com (Mathew D. Watson) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Perl Reference Guide 3.0 - available Message-ID: <200405211716.i4LHGgv22389@mail.pm.org> Anyone collect Perl memorabilia? I just uncovered an old "Perl Reference Guide, for version 3.0" by Johan Vromans. It's neatly folded and stapled. The paper has yellowed, but it's in pretty good shape considering where I found it. I'd be happy to mail it to anyone who wants it. Cheers, --Mat From bill at celestial.com Fri May 21 12:59:07 2004 From: bill at celestial.com (Bill Campbell) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Perl Reference Guide 3.0 - available In-Reply-To: <200405211716.i4LHGgv22389@mail.pm.org> References: <200405211716.i4LHGgv22389@mail.pm.org> Message-ID: <20040521175907.GA62433@alexis.mi.celestial.com> On Fri, May 21, 2004, Mathew D. Watson wrote: >Anyone collect Perl memorabilia? > >I just uncovered an old "Perl Reference Guide, for version 3.0" by Johan >Vromans. > >It's neatly folded and stapled. The paper has yellowed, but it's in pretty >good shape considering where I found it. I have the O'Reilly Programming Perl Quick Reference Guide for perl 4.0 by Vromans which I even look at from time to time. Bill -- INTERNET: bill@Celestial.COM Bill Campbell; Celestial Software LLC UUCP: camco!bill PO Box 820; 6641 E. Mercer Way FAX: (206) 232-9186 Mercer Island, WA 98040-0820; (206) 236-1676 URL: http://www.celestial.com/ Imagine if every Thursday your shoes exploded if you tied them the usual way. This happens to us all the time with computers, and nobody thinks of complaining. -- Jef Raskin http://jefraskin.com/ From MichaelRWolf at att.net Fri May 21 15:13:15 2004 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Overly clever? In-Reply-To: (Andrew Sweger's message of "Fri, 21 May 2004 08:54:09 -0700 (PDT)") References: Message-ID: Clever, not overly so. IMHO. Mainly, I like that you're putting complexity *in* the module to assist the consumer of the module, keeping the complexity out of the calling code. I've got a few questions... First, a maintenance point -- since "Whizbang" seems a strange name (i.e. likely to be changed by someone when you publish it), perhaps a $package_name scalar could hold that, *and* be used in all the warn messages. Change it once, and have all references change. Constant refactoring, as Ingy would say. Second, does this really work, the "next" part, that is? I'd have expected that the comma would have created a list for warn which expected a list, and that it wouldn't have worked as a binary sequence operator as you have shown here. I'll admit that I'm not 100% sure of how/why the Perl DWIMery on commas works as it does, so any explanations from the group that could help me frame it would be appreciated. > foreach (@EXPORTABLE) { > warn "Unable to export $_ because _$_ is not defined", next > unless defined &{Whizbang::{"_$_"}}; > eval "*$_ = \\&_$_"; # alias _function to function > } -- Michael R. Wolf All mammals learn by playing! MichaelRWolf@att.net From MichaelRWolf at att.net Fri May 21 15:22:13 2004 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Re: IO::All In-Reply-To: <200405192034.NAA15675@carios2.ca.boeing.com> (ced@carios2.ca.boeing.com's message of "Wed, 19 May 2004 13:34:49 -0700 (PDT)") References: <200405192034.NAA15675@carios2.ca.boeing.com> Message-ID: ced@carios2.ca.boeing.com writes: > Hello everyone, > > I missed Brian's talk unfortunately but was there any mention > of IO::All's error handling... was there a demo of subclassing > throw() for instance? In fact, there was a discussion of error handling. I don't want to put words in Ingy's mouth, but it went along the lines of... "Error handling? We don't need no stinkin' error handling!" Humor and playfulness, aside -- I'd call it "error handling lite", or "go ahead and let it die, if anyone cares, they'll wrap it with an eval and catch it". eval { # Ingy code with no error handling goes here... } warn "Ingy-instigated errors $@" if $@; I had a brief discussion with Jack about it on a ride home, basically because Jack had asked a question about it during the talk. Much of the discussion centered around a historical error-handling conundrum -- propogate errors up the call stack and let callers check return values (pessimistic -- check every call) -- throw an exception and have callers ignore or propogate it up the call stack to anyone who cares (optomistic -- assume sucess, catch errors at the "right" level, and ignore them when you can) -- Michael R. Wolf All mammals learn by playing! MichaelRWolf@att.net From MichaelRWolf at att.net Fri May 21 21:12:51 2004 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: looking for Programmer/Writers Message-ID: A collegue of mine is looking for programmer/writers (i.e. folks that know a high level language, have depth in some technology, and can write) for a 1-year-ish gig. If you're such a person, or know one, please get in touch. Michael Wolf From adamm at wazamatta.com Sat May 22 01:48:25 2004 From: adamm at wazamatta.com (Adam Monsen) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Overly clever? In-Reply-To: References: Message-ID: <20040522064825.GB904@wazamatta.com> On 21-May-2004 13:13 -0700, Michael R. Wolf wrote: [...] > First, a maintenance point -- since "Whizbang" seems a strange name > (i.e. likely to be changed by someone when you publish it), perhaps a > $package_name scalar could hold that, *and* be used in all the warn > messages. Change it once, and have all references change. Constant > refactoring, as Ingy would say. [...] Better yet, use the __PACKAGE__ literal in the warnings, etc., then just change the package name where it's declared if/when you desire. see perldata(1). -- Adam Monsen http://adammonsen.com/ From MichaelRWolf at att.net Mon May 24 12:20:16 2004 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Programmer/Writer opportunity -- multiple positions References: Message-ID: SPUGers, Here's the full requirements for the position I mentioned on Friday. I've since gotten the full text and clearance to post it. Programmer/Writer 1 qualifications plus 3-5 years work related experience required. Excellent technical writing skills required. The ability to read or write a high-level programming language and understand the principles of high quality software development is required. Must possess expert understanding of one or more major technologies, such as database design and development, networking, client/server applications, security, multimedia, or device drivers, etc. Must have demonstrated interest in, and knowledge of, broad but related areas of technology. The ability to be proactive in solving problems is required. Bachelor's degree in Computer Science or related field preferred. Work related experience may substitute for degree. Alie DeGon Sakson & Taylor, Inc. Direct Line 206-545-3633 Please follow-up directly to Alie DeGon; I've set the Reply-to field of this message appropriately. Enjoy, Michael P.S. If you do pursue this opportunity, please let me (or the list) know how it goes for you. From ced at carios2.ca.boeing.com Mon May 24 23:35:17 2004 From: ced at carios2.ca.boeing.com (ced@carios2.ca.boeing.com) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Re: IO::All Message-ID: <200405250435.VAA05348@carios2.ca.boeing.com> > Humor and playfulness, aside -- I'd call it "error handling lite", or > "go ahead and let it die, if anyone cares, they'll wrap it with an > eval and catch it". > eval { > # Ingy code with no error handling goes here... > } > warn "Ingy-instigated errors $@" if $@; Thanks, I knew Ingy wouldn't leave anyone hangin' in the breeze. I suspected 'eval' was the answer but I saw that tidbit about subclassing and throw() and was trolling for some examples ... :) > I had a brief discussion with Jack about it on a ride home, basically > because Jack had asked a question about it during the talk. Much of > the discussion centered around a historical error-handling conundrum > > -- propogate errors up the call stack and let callers check return > values (pessimistic -- check every call) > > -- throw an exception and have callers ignore or propogate it up the > call stack to anyone who cares (optomistic -- assume sucess, catch > errors at the "right" level, and ignore them when you can) Difficult problem. I/O errors, though, tend to be dealt with very unevenly. We religously check 'open' succes but then assume 'print', etc. succeed. I try to emulate T. Christiansen's paranoia: From the Perl Cookbook: When opening a file or making virtually any other system call, checking the return value is indispensable. Not every open succeeds; not every file is readable; not every piece of data you print can reach its destination. Most programmers check open, seek, tell, and close in robust programs. You might also want to check other functions. ... When you no longer have use for a filehandle, close it.... implicity closes are for convenience, not stability, because they don't tell you whether the system call succeeded or failed. I recall once a 'close(FH) or die $!' revealed a full file system. This was a critical monitoring app so I was really thankful for having heeded Tom's quiet crusade. -- Charles DeRykus From m3047 at inwa.net Tue May 25 00:10:33 2004 From: m3047 at inwa.net (Fred Morris) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Re: IO::All Message-ID: My first impulse is to say "well, it's easy because these sort of visonary philosophers: when they fall over and can't get up, they die". I wasn't referring to the guy at the 'B, either. I was going to try to apologize, but it's very zen, don't you think? I mean: which one am I talking about? I'm not even certain: At 9:35 PM 5/24/04, ced@carios2.ca.boeing.com wrote: >[...]We religously check 'open' succes but then assume 'print', >etc. succeed. I try to emulate T. Christiansen's paranoia: > > From the Perl Cookbook: > > When opening a file or making virtually any other system call, > checking the return value is indispensable. Not every open succeeds; > not every file is readable; not every piece of data you print can > reach its destination. [...] Don't you love it how thinks can be chipped away at, until all that remains is... IO? So I guess what the world really needs is IO::WhatIWant and IO::ThatCantHappen. If you have big enough computers, you can game them both. QED. -- FredMorris m3047@inwa.youbnet From MichaelRWolf at att.net Tue May 25 02:11:46 2004 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Open Sauce Lunch -- *this* Wednesday In-Reply-To: (Michael R. Wolf's message of "Wed, 19 May 2004 12:19:13 -0700") References: Message-ID: Here's the Open Sauce lunch I announced last week. It's coming up *this* Wednesday. Wednesday, May 26, 2004 Thai Siam NW 83rd St and 15th Ave. NW 98117-5465 (North Ballard/South Crown Hill) 12:15 pm http://spugwiki.perlocity.org/index.cgi?WednesdayMay26Ballard Hope to see you there. I'm hoping that the biggest Perl Monger group in the world -- the other mongers claiming this distinction are probably just a drinking club with a Perl problem...:-) -- can come up with some really world-class ideas to think locally, act locally, and have a global impact. We've collectively got more Perl expertise in this group and in the geographical area than many Perl-centric companies. How could we harness that power to serve each other, the community at large, and ultimately Perl itself. All of which feeds back to serving ourselves, too. I've got some ideas. Bring your ideas. We can all have lunch together... you, me, and our collective ideas. Michael -- Michael R. Wolf All mammals learn by playing! MichaelRWolf@att.net From MichaelRWolf at att.net Thu May 27 18:49:14 2004 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: A little respect Message-ID: An issue come up for me 3 times in the past 24 hours. The universe is speaking to me. I'm listening. And now I'm sharing. Observation: OS preferences can tend cloud other issues, and, however inadvertent, be off-putting. I don't want to get *overly* Politically Correct, but I do want to make sure that SPUG is inclusive. To paraphrase Walt Whitman[1]: Perl is large. It contains multitudes. It's come to my attention that Windows users can be made to feel less than peers or less than welcome in some SPUG discussions, and could possibly be intimidated to participate as a result. I'll take responsibility for a piece of that, though it was never my intent. For instance, I use the term WinDOS (or WinDoze) when referring to the OS that's not as comfortable to me as Unix. (Actually, my OS is emacs -- I only escape to Windows, cygwin, or Unix for what emacs doesn't provide!!!) It also came to my attention on the receiving end of this issue as it was turned around and came to put me off. In my recently re-started job search, I had two conversations just today that had me feel degraded (in a MS-centric shop) for my Unix background. The phrase "Oh, we don't do many of those legacy systems" really hurt. And I understand that it was not their intent[2]. It got me to thinking. Really thinking. More important than the OS (I've used Perl on both Windows and Unix), I'm a Perl User. I use Perl to get into the problem, and am rarely even interested in the Operating System. Actually, above being a Perl User, I'm a Problem Solver. (Listen to Ingy on this one -- he's really language agnostic. Really unattached, in a Zen way.) So my request is, that in SPUG -- the PU being Perl User -- that we remember that we're all Perl Users, and all trying to get a problem solved, with constraints. Sometimes those constraints are personal preference; sometimes it's just what was there when we showed up. Sometimes changing it is an option; sometimes it isn't. That's the problem solving balance we call engineering. Only GOD gets to specify all the boundary conditions[3]. We, on the other hand, have to live with existing conditions. A few suggested guidelines: Unix users -- if we take pot shots at Windows, make sure that it's framed as a personal preference, and not as a personal attack. Pot shots at people are not OK. Windows users -- humor us in our preference of OS's, don't take it personally, and educate us in the ways that Perl can help Windows, and Windows can help Perl. All -- learn from the other side. It's all a SPUGlicious learning/playing experience. Thanks for playing. Thanks for listening. Michael P.S. I think this issue is really a 2nd or 3rd level undercurrent. It's not an abrasive, flaming, harsh offensive environment. I'm calling for a tweak where necessary, and it's not even necessary most of the time, so don't take this more harshly than it's intended. Notes: 1. Do I contradict myself? Very well then I contradict myself, (I am large, I contain multitudes.) -- Walt Whitman, Song of Myself 2. In one of the conversations, when we peeled back the technology (ActiveX vs. Perl) and got to the core of the problem, and how to solve it, we both decided that the particular language didn't really matter as much as getting from A to B in a way that the customer never saw, but who, nevertheless, wanted to see B as soon as possible. When we focused on the problem, and its resolution, we set aside our pre-defined expectations for the solution, and came to a common ground understanding. 3. and even then, God has to do all the math to make sure that the Laws Of Physics (which are created by God) are not violated -- Michael R. Wolf All mammals learn by playing! MichaelRWolf@att.net From m3047 at inwa.net Tue May 25 22:54:15 2004 From: m3047 at inwa.net (Fred Morris) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Re: IO::All Message-ID: I trimmed, and I'll top-comment (there's nothing useful interspersed). What I was getting at is that I suppose that with the kinds of automated testing that M. Wolf and others espouse, and given the lack of premeditated error handing in IO::All, how do you test? And I had this glimmer of a notion of I/O which always succeeds, and I/O which always fails... but that both should return the "best correct" information in any case, they basically both just always either proclaim "success" or "the world is coming to an end". Something about being able to get a feel for just how much error checking a program is doing in the first place. I don't think it would work; great idea though. Don't ask me to write it, I have too many other things on my plate. Just some idle Sophistry, sorry. At 10:23 AM 5/25/04, ced@carios2.ca.boeing.com wrote: > I wrote: >> My first impulse is to say "well, it's easy because these sort of visonary >> philosophers: when they fall over and can't get up, they die". [...] > >> At 9:35 PM 5/24/04, ced@carios2.ca.boeing.com wrote: >> >[...]I try to emulate T. Christiansen's paranoia: >> > >> > From the Perl Cookbook: >> > >> > When opening a file or making virtually any other system call, >> > checking the return value is indispensable. [...] > [...] >> So I guess what the world really needs is IO::WhatIWant and >>IO::ThatCantHappen. As reported some months ago I ran into a situation dinking around with mod_perl/A2 with Perl 5.8 on SuSE 8.2 where for reasons unknown it's doing some ioctl call on file open and trying to perform a MIDI operation. Why??!? Anyway, it leaves $! set after the open. Who'd'a thunk it? (note to self: strace provides the answer... but what does it mean?) That can't happen, can it? I mean, I've heard of peeps writing proggies to make disks sing songs, or even walk across the floor (big disks. dinosaurs.).. but as far as unintended weirdness goes... >> If you have big enough computers, you can game them both. QED. > >I can't quite put my finger on it but I have this strange feeling >I've been dissed. LOL! >Alright, as a plodding, institutional schlep, I'm always looking >for a way to commit hari-kari when sometimes goes wrong with my >moth-eaten code. Far better to die with honor than to be thrust >through by leering barbarians. > >But, I'm jumping right on that IO::WhatIWant/ThatCantHappen bandwagon -- >you were serious right... Anyway, they sound too complicated: could >we just roll 'em into IO::DWIM ? I think that's what IO::All is intended to do. ;-) Maybe Ingy would consider changing the name? Or maybe IO::DWIM could be built on top of IO::All and incorporate IO::WhatIWant and IO::ThatCantHappen as global settings or something... (uh oh, I'm scaring myself) -- Fred Morris From ced at carios2.ca.boeing.com Tue May 25 12:23:11 2004 From: ced at carios2.ca.boeing.com (ced@carios2.ca.boeing.com) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Re: IO::All Message-ID: <200405251723.KAA07020@carios2.ca.boeing.com> > My first impulse is to say "well, it's easy because these sort of visonary > philosophers: when they fall over and can't get up, they die". I wasn't > referring to the guy at the 'B, either. I was going to try to apologize, > but it's very zen, don't you think? I mean: which one am I talking about? > I'm not even certain: > At 9:35 PM 5/24/04, ced@carios2.ca.boeing.com wrote: > >[...]We religously check 'open' succes but then assume 'print', > >etc. succeed. I try to emulate T. Christiansen's paranoia: > > > > From the Perl Cookbook: > > > > When opening a file or making virtually any other system call, > > checking the return value is indispensable. Not every open succeeds; > > not every file is readable; not every piece of data you print can > > reach its destination. [...] > Don't you love it how thinks can be chipped away at, until all that remains > is... IO? > So I guess what the world really needs is IO::WhatIWant and IO::ThatCantHappen. > If you have big enough computers, you can game them both. QED. I can't quite put my finger on it but I have this strange feeling I've been dissed. Alright, as a plodding, institutional schlep, I'm always looking for a way to commit hari-kari when sometimes goes wrong with my moth-eaten code. Far better to die with honor than to be thrust through by leering barbarians. But, I'm jumping right on that IO::WhatIWant/ThatCantHappen bandwagon -- you were serious right... Anyway, they sound too complicated: could we just roll 'em into IO::DWIM ? -- Charles DeRykus From spug at magnadev.com Fri May 28 00:28:45 2004 From: spug at magnadev.com (Ron Pero) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Using Perl to post data via SSL with client certificate authentication Message-ID: Net::SSLeay is tripping me up on something simple, and I would really appreciate a tip from someone that knows how to use perl to post data via an SSL connection using a client certificate for authentication. Basically, using sample code from the documentation, I get an error that I am calling the post_https function with too many arguments. Here are the pretty details. Using the example code from the documentation section, Using Client Certificates, I get this apache error: Too many arguments for Net::SSLeay::post_https at myscript.cgi line 446, near "$path_to_key8)" Execution of relay_response.cgi aborted due to compilation errors. [Wed May 26 16:41:57 2004] [error] [client 11.111.111.111] Premature end of script headers: myscript.cgi This is the sample code: ($page, $response, %reply_headers) = post_https('www.bacus.pt', 443, '/foo.cgi', # 3b make_headers('Authorization' => 'Basic ' . MIME::Base64::encode("$user:$pass",'')), make_form(OK => '1', name => 'Sampo'), $mime_type6, $path_to_crt7, $path_to_key8); This is what mine looks like: my $mime_type6 = 'text/xml'; my $path_to_crt7 = '/my/path/mycert.der'; my $path_to_key8 = '/my/path/mykey1024.pem'; use Net::SSLeay qw(post_https); my ($page, $response, %reply_headers) = post_https('partners.somewhere.com', 443, '/s/MyXml?pid=12345&pacct=My_Acct', '', $xml_text, $mime_type6, $path_to_crt7, $path_to_key8); Documentation bug? Or something else? Thank you, Ron From james at banshee.com Fri May 28 19:35:51 2004 From: james at banshee.com (James Moore) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Someone looking for a hash of Perl developers in Seattle (repost) In-Reply-To: Message-ID: <001001c44514$e574dc40$0300a8c0@delllaptop> I'm assuming this is Amazon - anyone know anything else? Interesting that they're willing to pay relocation for short-term contractors. - James --------------------------------------------------------- Online URL for this job: http://jobs.perl.org/job/1520 To subscribe to this list, send mail to jobs-subscribe@perl.org. To unsubscribe, send mail to jobs-unsubscribe@perl.org. Posted: May 28, 2004 Job title: 10 Object Oriented Perl Developers Company name: Superior Staffing Solutions Internal ID: OOPerl Location: United States, WA, Seattle Pay rate: Hourly Travel: 0% Terms of employment: Hourly employee Length of employment: 2-6 months (on-site) Hours: Full time Onsite: yes Description: My client needs 10 contractors in the next 30 days for a 2-6 month engagement Location: Seattle, WA (relocation available for outstanding applicants) Duration: 2-6 months (on-site) Salary: Competitive Hourly Positions: 10 Citizenship: US, Green Card or Canadian Please submit resume and hourly requirement to: bill@superiorss.com Required skills: All candidates must have Object Oriented Perl, and UNIX (or LINUX) experience. Candidates will have working knowledge of HTML, DHTML, and JavaScript. Candidates must have a strong computer science background with a bachelor's degree, or higher, in computer science, required. ? Desired skills: Experience with other Web technologies like ASP, JSP, PHP, Mason, or graphics software such as Photoshop is a plus.? A Bachelor's degree in Computer Science or a relevant area is highly desired. Experience with large database driven web sites or applications is highly desired. Contact information: Please submit resume and hourly requirement to: bill@superiorss.com From ingy at ttul.org Sat May 29 17:20:44 2004 From: ingy at ttul.org (Brian Ingerson) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Re: IO::All In-Reply-To: <200405250435.VAA05348@carios2.ca.boeing.com> References: <200405250435.VAA05348@carios2.ca.boeing.com> Message-ID: <20040529222044.GA19460@ttul.org> On 24/05/04 21:35 -0700, ced@carios2.ca.boeing.com wrote: > Difficult problem. I/O errors, though, tend to be dealt with very > unevenly. We religously check 'open' succes but then assume 'print', > etc. succeed. I try to emulate T. Christiansen's paranoia: > > From the Perl Cookbook: > > When opening a file or making virtually any other system call, > checking the return value is indispensable. Not every open succeeds; > not every file is readable; not every piece of data you print can > reach its destination. Most programmers check open, seek, tell, and > close in robust programs. You might also want to check other functions. > ... > When you no longer have use for a filehandle, close it.... implicity > closes are for convenience, not stability, because they don't tell > you whether the system call succeeded or failed. > > I recall once a 'close(FH) or die $!' revealed a full file system. > This was a critical monitoring app so I was really thankful for > having heeded Tom's quiet crusade. Good advice, and bad advice at the same time. I'm not overly keen on overly defensive programming. It creates crufty code. When I look at code I always want to be looking at the important stuff, not the edge case stuff. So I tend not to write a lot of edge case stuff in my code. At least until I get bitten. It's about avoiding premature optimization. But then, even if I need to add error checking code, I'll want to put it somewhere where I'll never see it again. That's why we have living rooms and garages. I would feel embarrassed to have guests over with error checking code all over my living room floor. So I chuck it in the garage. IO::All could be a garage. I could check for every possible error in IO::All for you, so you would never need to worry. But maybe that would cause problems. For instance should I throw an exception if a system close() fails? Maybe, maybe not. Does Perl throw an exception? No. Does it warn? No. Why not? I'm not sure. But from talking to the old timers, their advice is that a module should never die. In Perl you just keep going until something gives out. (Python will die if you even look at it funny. Die first, ask questions later.) I take this advice with a gram of salt though. If you know the user made a common mistake and couldn't have possibly got a good result, just die. She can catch the die if she really wants to. So in IO::All I check for errors that have bitten me. I always throw the errors with a throw method. That way I can override how the error is handled. The default is to call Carp::croak. In the latest version of IO::All I added a confess method: $stuff < io('xyz')->confess; This method just tells throw to call the more vigorous Carp::confess when there is an error. There is also an errors method: $stuff < io('xyz')->errors(\&handle_errors); This gives just a little bit of control. I suppose I could add levels of error checking. $io = io('xyz')->strict; $io = io('xyz')->silent; I probably will do that at some point. But the whole point of IO::All is to write cleaner code. If you are a real control freak, maybe IO::All isn't right for you. But then maybe again Perl isn't right for you. I've met many people who just couldn't use a language like Perl Python or even Java because of the the control they'd give up by not using C. And I've met so folks who couldn't move past assembler to get to C. From my point of view, Perl was a decent step forward, but it still leaves a lot to be desired. That's why I'm fixing it. :) Cheers, Brian From tim at consultix-inc.com Sat May 29 18:37:31 2004 From: tim at consultix-inc.com (Tim Maher) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: Re: IO::All In-Reply-To: <20040529222044.GA19460@ttul.org> References: <200405250435.VAA05348@carios2.ca.boeing.com> <20040529222044.GA19460@ttul.org> Message-ID: <20040529233731.GA28459@jumpy.consultix-inc.com> On Sat, May 29, 2004 at 03:20:44PM -0700, Brian Ingerson wrote: > Good advice, and bad advice at the same time. I'm not overly keen on > overly defensive programming. It creates crufty code. When I look at > code I always want to be looking at the important stuff, not the edge > case stuff. So I tend not to write a lot of edge case stuff in my code. > At least until I get bitten. > It's about avoiding premature optimization. A more apt phrase in this case might be "premature /pessim/ization" 8-} ============================================================== | Tim Maher, Ph.D. tim(AT)TeachMePerl.com | | SPUG Leader Emeritus spug(AT)TeachMePerl.com | | Seattle Perl Users Group http://www.SeattlePerl.com | | SPUG Wiki Site http://Spugwiki.Perlocity.org | | Perl Certification Site http://Perlcert.Perlocity.org | ============================================================== From tim at consultix-inc.com Mon May 31 15:26:32 2004 From: tim at consultix-inc.com (Tim Maher) Date: Mon Aug 2 21:37:21 2004 Subject: SPUG: White Camel Award nominees? Message-ID: <20040531202632.GA13114@jumpy.consultix-inc.com> Fellow SPUGsters, It's just about time to hand out the 2004 White Camel awards in recognition of non-technical contributions to the Perl community. As examples of past dudes and deeds deemed deserving of this distinction (can't believe I just wrote that!), here are some past winners: * Tom Christiansen, for developing a great set of docs and making them available for widespread use * Kevin Lenzo, for his work on creating the YAPC conventions (now a worldwide phenomenon) As a recipient myself, I sit on the committee that elects the next batch of White Camels, and as usual, we're looking for help in identifying the "unsung heros" of the community, who are doing great stuff for Perl, but not getting much recognition for it. Anybody care to nominate somebody? -Tim *--------------------------------------------------------------------------* | Tim Maher, CEO (206) 781-UNIX (866) DOC-PERL (866) DOC-UNIX | | tim(AT)Consultix-Inc.Com http://TeachMePerl.Com http://TeachMeUnix.Com | *+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-* | Watch for my upcoming book: "Minimal Perl for Shell Users & Programmers" | *--------------------------------------------------------------------------*