stas 02/01/05 11:15:43 Added: src/about about.html config.cfg src/contribute config.cfg docs.pod maillist.pod share_code.pod src/download binaries.pod bundles.html config.cfg distributions.html stable.html src/maillist README config.cfg contact.pod data.pl email-etiquette.pod list-advocacy.pod list-announce.pod list-asp.pod list-cvs.pod list-dev.pod list-docs-cvs.pod list-docs-dev.pod list-embperl.pod list-test-cvs.pod list-test-dev.pod list-users.pod maillist.tmpl make.pl src/products apache-modlist.html app-server.pod config.cfg products.html src/stats config.cfg graph.jpg graph.pl index.html input.data logo-middle.png logo.png netcraft.html pseudo-graph.jpg securityspace.html src/stories README adultad.pod adultad.txt allakhazam.com.pod allakhazam.com.txt bsat.pod bsat.txt calmaeth.maths.uwa.edu.au.pod calmaeth.maths.uwa.edu.au.txt chapters.pl colbychem.pod colbychem.txt config.cfg iagore.com.pod iagore.com.txt idl-net.pod idl-net.txt imdb.com.pod imdb.com.txt index_bot.html make.pl openscape.org.pod openscape.org.txt presto.pod presto.txt rent.com.pod rent.com.txt seds.org.pod seds.org.txt singlesheaven.com.pod singlesheaven.com.txt sites.html story.tmpl tamu.pod tamu.txt tgix.pod tgix.txt winamillion.msn.com.pod winamillion.msn.com.txt wmboerse.pod wmboerse.txt www.afp-direct.com.pod www.afp-direct.com.txt www.bivio.com.pod www.bivio.com.txt www.lind-waldock.com.pod www.lind-waldock.com.txt src/support commercial.html config.cfg index_top.html isps.html jobs.html training.html Log: porting the content from the old site Revision Changes Path 1.1 modperl-docs/src/about/about.html Index: about.html =================================================================== <html> <head> <title>About</title> </head> <body bgcolor="white"> <H1>Apache + Perl = mod_perl</H1> Simply <A HREF="../download/">install mod_perl</A> and you have a world of features at your fingertips: <ul> <li><b>Configure Apache with Perl</b>. Embed Perl in your <i>httpd.conf</i> file to define everything from virtual hosts to content handlers. <ul> <li><b>Configure Apache with Perl</b>. Embed Perl in your <i>httpd.conf</i> file to define everything from virtual hosts to content handlers. <li><b>Speed up your CGI scripts</b>. The Apache::Registry module can provide <b>100x speedups</b> for your CGI scripts. <li><b>Write custom Apache modules</b>. Write simple Perl code to <b>log hits</b>, generate dynamic <b>error pages</b>, <b>track users</b>, and more. <li><b>Templating systems</b> such as HTML::Mason, EmbPerl, or the Template Toolkit let you quickly develop structured dynamic web sites. <li>Third-party modules give you application functionality such as <b>sessions</b>, <b>passwords</b>, and <b>database integration</b>. <li><b>Apache 2.0 support</b> includes the ability to write <b>custom protocol handlers</b> in Perl! </ul> </body> </html> 1.1 modperl-docs/src/about/config.cfg Index: config.cfg =================================================================== use vars qw(@c); @c = ( id => 'about', title => "About mod_perl", abstract => "What happens if you take Apache and Perl and put them together...", # an ordered list pod files relative to $c{src} # the order is important for a correct placing of the chapters chapters => [ qw( about.html ) ], # non-pod/html files or dirs to be copied unmodified copy => [ ], ); 1.1 modperl-docs/src/contribute/config.cfg Index: config.cfg =================================================================== use vars qw(@c); @c = ( id => 'contribute', title => "Contribute", abstract => "101 ways to contribute to mod_perl community", chapters => [ qw( maillist.pod docs.pod share_code.pod ) ], ); 1.1 modperl-docs/src/contribute/docs.pod Index: docs.pod =================================================================== =head1 NAME Contribute to the Documentation =head1 Submit Corrections There is a lot of mod_perl documentation. And we are sure it includes documentation bugs. So if you spot any make sure to report it. The documentation includes code examples, which sometimes were written without testing, so it's possible that they are broken. If some example doesn't work for you, please, let us know. If you notice bad English grammar and speling :), don't hesitate to tell us where and what do you think is the best way to fix it. =head1 Submit New Articles If you have some mod_perl knowledge that is not documented please share it and send us the documentation patch, or a complete new article. This can include installation and configuration scenarious, performance improving tips, debugging techniques and what not. Developers using mod_perl constantly work with other technologies related to mod_perl. If you have spent some time lurking on the mod_perl lists, you have probably discovered that mod_perl developers are pros in many other related fields, such as Apache, Perl, relational databases, etc. If you think that the mod_perl community will find an information about a related technology useful, please submit this information for the inclusion in the documentation. =head1 How to Send Information and Where The documentation contributions and corrections are to be sent to the mod_perl documentation mailing list. If the correction is minor, please specify the URL you are talking about, and preferrably the version number of the document if such is available. If the correction is medium to large, please retrieve the documentation source package or use the cvs repository and submit the patch against the latest version. META: links? =cut 1.1 modperl-docs/src/contribute/maillist.pod Index: maillist.pod =================================================================== =head1 NAME Contribute at the Mailing List =head1 Answering Questions Since mod_perl is an open source technology, it's main support facility is its mailing lists. Therefore it's very essential to support users and developers by sharing your mod_perl and related knowledge through answering questions and submitting interesting posts that enrich community's knowledge in the related topics. You don't have to be a guru, to be a very valuable person to the mod_perl community. Through answering questions you learn a lot by yourself, and eventually become a guru yourself. =head1 Helping Navigating the Documentation mod_perl is one of the few open source projects that bundled with a lot of documentation. The only problem is that it's very hard to read all the documentation when someone just starts with mod_perl. Therefore helping to find the right document to read when someone in trouble is a noble thing to do. =cut 1.1 modperl-docs/src/contribute/share_code.pod Index: share_code.pod =================================================================== =head1 NAME Contribute by Sharing Code =head1 mod_perl Patches If you have modified the mod_perl source code, improved and extended it, please submit your modifications back to the mod_perl community so others will be able to enjoy your efforts. If you are trying to extend mod_perl, but don't have enough tuits/knowledge to accomplish this by yourself you can ask the mod_perl developers to help you. But make sure that you clearly explain what you want to do and provide code samples if possible. =head1 Complete Modules If you have developed a third-party mod_perl module, consider submitting it to CPAN (http://cpan.org/). Other than sharing your works, chances are that the code will receive a lot of attention from other users. This usually leads to more robust code and interface, as it gets reviewed and improved by its users. In some cases new features are submitted as patches, so you benefit from others sharing their works with you. Before submitting a new module to CPAN, please discuss it first on the mod_perl list. It's important to choose a good intuitive name for your module. Also it's possible that a module with a similar functionality already exists and most likely that someone will point it out. In which case you may want to help developing this existing module instead and integrating your features into it. =head1 Code Snippets If you have some neat code snippets, please send them to the mailing list. If you are kind enough to annotate these, they could probably fit into mod_perl documentation. At least they will be archived in the mailing list archive, and in the future users will be able to find your code and reuse it. =cut 1.1 modperl-docs/src/download/binaries.pod Index: binaries.pod =================================================================== =head1 NAME Source and Binary mod_perl distributions =head1 Description This page includes links to various source and binary mod_perl distributions. If you know about a distribution that isn't listed here, please tell us (by announcing it at the mod_perl list). =head1 Locations =over =item * Master Source distribution - Release http://perl.apache.org/dist, the latest CVS snapshot http://cvs.apache.org/snapshots/ =item * Win32 mod_perl Binaries (made by Randy Kobes) - ftp://theoryx5.uwinnipeg.ca/pub/other/. Grab a perl-win32-bin-x.x.exe self-extracting file. There's accompanying readme files with more details on the particular versions of packages included. These all include Perl and some common modules, so are largish. =item * Win32 ActivePerl mod_perl ppms - suitable for builds 6xx. You can install this by, within the ppm shell, setting the repository to I<http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer> and typing C<install mod_perl>. This will also run a post-install script to install the required mod_perl.so to your Apache modules/ directory. This mod_perl package is built against the current stable Apache release - earlier versions are available (http://theoryx5.uwinnipeg.ca/ppmpackages/mod_perl-legacy/), as are some ppms of other Apache modules (http://theoryx5.uwinnipeg.ca/ppmpackages/). =item * Static mod_perl and libapreq (Apache::Request) RPMs and SRPMs (made by David Harris ) http://www.davideous.com/modperlrpm/distrib/. Mirrored at http://perl.apache.org/rpm/. =item * i386 RPMs + SRPM (RedHat) of Apache with mod_perl and php3 built staticaly. (made by Vladimir Ivaschenko) http://www.hazard.maks.net/apache/ =back =cut 1.1 modperl-docs/src/download/bundles.html Index: bundles.html =================================================================== <html> <head> <title>Software Bundles</title> </head> <body bgcolor="white"> <p> There are several other Perl modules that you might wish to have installed, to take full advantage of mod_perl functionality. Provided you have Andreas König's <a href="http://www.perl.com/CPAN/modules/by-module/CPAN/">CPAN.pm</A> module, simply run: <pre> cpan> install Bundle::Apache</pre> This will fetch and install mod_perl and related packages for you all at once. Otherwise, once you've installed mod_perl see the listing by running <pre> % perldoc Bundle::Apache</pre> </p> </body> </html> 1.1 modperl-docs/src/download/config.cfg Index: config.cfg =================================================================== use vars qw(@c); @c = ( id => 'download', title => "Download", abstract => 'Source and Binary mod_perl distributions can be downloaded', # an ordered list pod files relative to $c{src} # the order is important for a correct placing of the chapters chapters => [ qw( binaries.pod bundles.html stable.html ) ], # non-pod/html files or dirs to be copied unmodified copy => [ ], ); 1.1 modperl-docs/src/download/distributions.html Index: distributions.html =================================================================== <HTML> <HEAD> <TITLE>mod_perl and libapreq distributions</TITLE> </HEAD> <BODY bgcolor="white"> <H1>mod_perl and libapreq distributions</H1> This page includes links to various source and binary mod_perl distributions. If you know about a distribution that isn't listed here, please tell us (by announcing it at the mod_perl list). <UL> <LI>Master Source distribution - Release <A HREF="http://perl.apache.org/dist"> http://perl.apache.org/dist </A>, the latest CVS snapshot <A HREF="http://cvs.apache.org/snapshots/"> http://cvs.apache.org/snapshots/</A> </LI> <LI> Win32 mod_perl Binaries (made by Randy Kobes) - <A href="ftp://theoryx5.uwinnipeg.ca/pub/other/">ftp://theoryx5.uwinnipeg.ca/pub/other/</A>. Grab a perl-win32-bin-x.x.exe self-extracting file. There's accompanying readme files with more details on the particular versions of packages included. These all include Perl and some common modules, so are largish.</LI> <LI>Win32 ActivePerl mod_perl ppms - suitable for builds 6xx. You can install this by, within the ppm shell, setting the repository to <VAR>http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer</VAR> and typing <CODE>install mod_perl</CODE>. This will also run a post-install script to install the required mod_perl.so to your Apache modules/ directory. This mod_perl package is built against the current stable Apache release - earlier versions are <A href="http://theoryx5.uwinnipeg.ca/ppmpackages/mod_perl-legacy/"> available</A>, as are some ppms of <A href="http://theoryx5.uwinnipeg.ca/ppmpackages/">other Apache modules</A>. </LI> <LI>Static mod_perl and libapreq (Apache::Request) RPMs and SRPMs (made by David Harris ) <A HREF="http://www.davideous.com/modperlrpm/distrib/"> http://www.davideous.com/modperlrpm/distrib/ </A>. Mirrored <A HREF="http://perl.apache.org/rpm/">here</A>. </LI> <LI>i386 RPMs + SRPM (RedHat) of Apache with mod_perl and php3 built staticaly. (made by Vladimir Ivaschenko) <A HREF="http://www.hazard.maks.net/apache/"> http://www.hazard.maks.net/apache/</A> </LI> </UL> <HR> <ADDRESS> maintained by Stas Bekman <[EMAIL PROTECTED]> <ADDRESS> </BODY> </HTML> 1.1 modperl-docs/src/download/stable.html Index: stable.html =================================================================== <html> <head> <title>Stable Release Download</title> </head> <body bgcolor="white"> <p> The latest stable release is available from <a href="dist/">this site</a>, from <a href="http://www.cpan.org/modules/by-module/Apache">CPAN</a> and its mirrors around the world. Be sure to read the <i>README</i> and <i>INSTALL</i> documents first. </p> </body> </html> 1.1 modperl-docs/src/maillist/README Index: README =================================================================== WARNING: All the list-*.pod files are autogenerated, do not edit them directly! Instead, to adjust the data -- modify 'data.pl' and to modify the look-n-feel -- modify 'maillist.tmpl'. After applying modifications, make sure to run: % ./make.pl 1.1 modperl-docs/src/maillist/config.cfg Index: config.cfg =================================================================== use vars qw(@c); @c = ( id => 'maillist', title => "Mailing Lists", abstract => "mod_perl and related projects mailing lists", # an ordered list pod files relative to $c{src} # the order is important for a correct placing of the chapters chapters => [ qw( list-users.pod list-docs-dev.pod list-docs-cvs.pod list-dev.pod list-cvs.pod list-test-dev.pod list-test-cvs.pod list-announce.pod list-advocacy.pod list-embperl.pod list-asp.pod contact.pod ) ], ); 1.1 modperl-docs/src/maillist/contact.pod Index: contact.pod =================================================================== =head1 NAME Contact Info =head1 Contact Info If you have a comment or question about mod_perl that you feel is not appropriate for any of the above public lists, you may contact Doug MacEachern E<lt>dougm (at) apache.orgE<gt>. =cut 1.1 modperl-docs/src/maillist/data.pl Index: data.pl =================================================================== %data = ( ### users => { title => 'mod_perl Users', desc => <<"DESC", The B<mod_perl users mailing list> is available for mod_perl users and developers to share ideas, solve problems and discuss things related to mod_perl and the C<Apache::*> modules. DESC addr => { subscribe => '[EMAIL PROTECTED]', subscribe_digest => '[EMAIL PROTECTED]', unsubscribe => '[EMAIL PROTECTED]', help => '[EMAIL PROTECTED]', }, archives => [ { title => 'Epigone', link => 'http://mathforum.org/epigone/modperl', comment => '', }, { title => 'msgs.securepoint.com', link => 'http://msgs.securepoint.com/cgi-bin/get/apache-current.html', comment => '', }, { title => 'groups.yahoo.com', link => 'http://groups.yahoo.com/group/modperl/', comment => '', }, { title => 'www.geocrawler.com', link => 'http://www.geocrawler.com/lists/3/web/182/0/', comment => '(throws all modperl lists in one bundle)', }, { title => 'www.mail-archive.com', link => 'http://www.mail-archive.com/modperl@apache.org/', comment => '', }, { title => 'www.davin.ottawa.on.ca', link => 'http://www.davin.ottawa.on.ca/archive/modperl/', comment => '', }, { title => 'marc.theaimsgroup.com', link => 'http://marc.theaimsgroup.com/?l=apache-modperl&r=1&w=2#apache-modperl', comment => '', }, { title => 'www.egroups.com', link => 'http://www.egroups.com/group/modperl/', comment => '', }, { title => 'Mbox file archive', link => 'http://perl.apache.org/mail/modperl/', comment => '', }, ], }, ### 'docs-dev' => { title => 'Documentation', desc => <<"DESC", A mailing list for discussing B<mod_perl documentation> DESC addr => { subscribe => '[EMAIL PROTECTED]', subscribe_digest => '[EMAIL PROTECTED]', unsubscribe => '[EMAIL PROTECTED]', help => '[EMAIL PROTECTED]', }, archives => [ { title => 'Mbox file', link => 'http://perl.apache.org/mail/docs-dev/', comment => '', }, ], }, ### 'docs-cvs' => { title => 'Documentation CVS', desc => <<"DESC", A mailing list where all the B<mod_perl documentation modification commits> are sent. DESC addr => { subscribe => '[EMAIL PROTECTED]', subscribe_digest => '[EMAIL PROTECTED]', unsubscribe => '[EMAIL PROTECTED]', help => '[EMAIL PROTECTED]', }, archives => [ { title => 'Mbox file', link => 'http://perl.apache.org/mail/docs-cvs/', comment => '', }, ], }, ### dev => { title => 'mod_perl Development', desc => <<"DESC", The B<development> mailing list is for discussions about the development of the core mod_perl. DESC addr => { subscribe => '[EMAIL PROTECTED]', subscribe_digest => '[EMAIL PROTECTED]', unsubscribe => '[EMAIL PROTECTED]', help => '[EMAIL PROTECTED]', }, archives => [ { title => 'Mbox file', link => 'http://perl.apache.org/mail/dev/', comment => '', }, { title => 'marc.theaimsgroup.com', link => 'http://marc.theaimsgroup.com/?l=apache-modperl-dev&r=1&w=2#apache-modperl-dev', comment => '', }, { title => 'www.mail-archive.com', link => 'http://www.mail-archive.com/dev%40perl.apache.org/', comment => '', }, { title => 'www.geocrawler.com', link => 'http://www.geocrawler.com/lists/3/web/182/0/', comment => '(it throws all modperl lists in one bundle, not good)', }, ], }, ### cvs => { title => 'Development CVS', desc => <<"DESC", The B<modperl-cvs> list is the list where you can watch mod_perl getting patched. No real discussions happen on this list, but if you want to know about the latest changes in the mod_perl core before the rest of the people, this is a list to be on. Everytime something gets committed to the modperl CVS repository a mail is sent here with the diff. DESC addr => { subscribe => '[EMAIL PROTECTED]', subscribe_digest => '[EMAIL PROTECTED]', unsubscribe => '[EMAIL PROTECTED]', help => '[EMAIL PROTECTED]', }, archives => [ { title => 'marc.theaimsgroup.com', link => 'http://marc.theaimsgroup.com/?l=apache-modperl-cvs&r=1&w=2#apache-modperl-cvs', comment => '', }, { title => 'Mbox file archive', link => 'http://perl.apache.org/mail/modperl-cvs/', comment => '', }, ], }, ### 'test-dev' => { title => 'Test Development', desc => <<"DESC", The B<test-dev> mailing list is for discussing I<Apache HTTP Test> L<http://httpd.apache.org/test/> project. It's linked from here, because mod_perl's sub-project C<Apache::Test> is discussed on this list. DESC addr => { subscribe => '[EMAIL PROTECTED]', subscribe_digest => '[EMAIL PROTECTED]', unsubscribe => '[EMAIL PROTECTED]', help => '[EMAIL PROTECTED]', }, archives => [ { title => 'www.apachelabs.org', link => 'http://www.apachelabs.org/test-dev/', comment => '', }, { title => 'Mbox file', link => 'http://httpd.apache.org/mail/test-dev/', comment => '', }, ], }, ### 'test-cvs' => { title => 'Test Development CVS', desc => <<"DESC", The B<test-cvs> list is the list where cvs commits for the I<Apache HTTP Test> L<http://httpd.apache.org/test/> project are sent, including cvs commits of changes for mod_perl's sub-project C<Apache::Test>. DESC addr => { subscribe => '[EMAIL PROTECTED]', subscribe_digest => '[EMAIL PROTECTED]', unsubscribe => '[EMAIL PROTECTED]', help => '[EMAIL PROTECTED]', }, archives => [ { title => 'Mbox file', link => 'http://httpd.apache.org/mail/test-cvs/', comment => '', }, ], }, ### advocacy => { title => 'mod_perl Advocacy', desc => <<"DESC", A mailing list for B<mod_perl advocacy issues>, discussions about the site, etc. DESC addr => { subscribe => '[EMAIL PROTECTED]', subscribe_digest => '[EMAIL PROTECTED]', unsubscribe => '[EMAIL PROTECTED]', help => '[EMAIL PROTECTED]', }, archives => [ { title => 'www.mail-archive.com', link => 'http://www.mail-archive.com/advocacy@perl.apache.org/', comment => '', }, { title => 'Mbox file', link => 'http://perl.apache.org/mail/advocacy/', comment => '', }, ], }, ### announce => { title => 'Announce', desc => <<"DESC", The B<announce> list is for announcing mod_perl and related products releases. DESC addr => { subscribe => '[EMAIL PROTECTED]', subscribe_digest => '[EMAIL PROTECTED]', unsubscribe => '[EMAIL PROTECTED]', help => '[EMAIL PROTECTED]', }, archives => [ { title => 'Mbox file', link => 'http://perl.apache.org/mail/announce/', comment => '', }, ], }, ### embperl => { title => 'Embperl', desc => <<"DESC", The B<embperl mailing list> is available for I<Embperl> L<http://perl.apache.org/embperl/> users and developers to share ideas, ask question and solve problems. DESC addr => { subscribe => '[EMAIL PROTECTED]', subscribe_digest => '[EMAIL PROTECTED]', unsubscribe => '[EMAIL PROTECTED]', help => '[EMAIL PROTECTED]', }, archives => [ { title => 'ecos.de', link => 'http://www.ecos.de/~mailarc/embperl/', comment => '', }, { title => 'geocrawler.com', link => 'http://www.geocrawler.com/lists/3/Web/187/0/', comment => '', }, { title => 'Mbox file', link => 'http://perl.apache.org/mail/embperl', comment => '', }, ], }, ### asp => { title => 'ASP', desc => <<"DESC", The B<asp> list is for C<Apache::ASP> discussions. DESC addr => { subscribe => '[EMAIL PROTECTED]', subscribe_digest => '[EMAIL PROTECTED]', unsubscribe => '[EMAIL PROTECTED]', help => '[EMAIL PROTECTED]', }, archives => [ { title => 'mail-archive.com', link => 'http://www.mail-archive.com/asp%40perl.apache.org/', comment => '', }, { title => 'Mbox file', link => 'http://perl.apache.org/mail/asp/', comment => '', }, ], }, ); 1; 1.1 modperl-docs/src/maillist/email-etiquette.pod Index: email-etiquette.pod =================================================================== =head1 The mod_perl Mailing List Guidelines =for html <!-- email-etiquette: This version dated 21 October 2001. Please make changes to the .pod source and use pod2html to create the .html file, thanks. [EMAIL PROTECTED] --> Ninety percent of the questions asked on the List have already been asked before, and answers will be found at one of the links below. Before you post to the mod_perl List, please read the following. Hopefully it will save you (and everyone else) some time. Except where noted the language of all documents is English. =head1 What is mod_perl? http://perl.apache.org/guide/intro.html#What_is_mod_perl =head1 What you need to know to be able to use mod_perl You need to know about Apache, CGI and of course about Perl itself. This document explains where to find more information about these and related topics. If you already have Perl on your machine then it's likely that you already have all the Perl documentation. Try typing `perldoc perldoc' and `man perl'. =head1 How To Get Help With mod_perl Itself http://perl.apache.org/ is the mod_perl home, it has links for everything related to mod_perl. =head2 Documentation which comes with the distribution Read the documents which came with mod_perl, particularly the ones named INSTALL, README and SUPPORT. Also read the documents to which they refer. Read all the relevant documentation about your operating system, any tools you use such as compilers and databases, and about the Apache Web server. You will get a much better response from the mod_perl List if you can show that you have made the effort of reading the documentation. =head2 Other documentation There are dozens of references to many authoritative resources at http://perl.apache.org/guide/help.html =head1 How to get on (and off!) the mod_perl mailing list =head2 To Get On The List There are two stages to getting on the list. Firstly you have to send a mail message to: [EMAIL PROTECTED] and wait for receiving a response from the mail server with instructions to proceed. Secondly you have to do what it says in the instructions. After you are subscribed you will receive a messsage with lots of useful information about the List. Read it. Print it, even. Save a copy of it. You *can* get another copy of it, but then you'll feel silly. Traffic on the mod_perl list can be high at times, several hundred posts per week, so you might want to consider subscribing to the mod_perl digest list as an alternative to the mod_perl list. To do so, send an email to [EMAIL PROTECTED] instead. =head2 To Get Off The List Instructions on how to unsubscribe are posted in the headers of every message which you receive from the List. All you have to do is send a message to: [EMAIL PROTECTED] (or [EMAIL PROTECTED] if you are on the digest list) To prevent malicious individuals from unsubscribing other people, the mailing list software insists that the message requesting that an email address be unsubscribed comes from that same address. If your email address has changed you can still unsubscribe, but you will need to read the help document, which can be recieved by sending an empty email to: [EMAIL PROTECTED] =head1 To post to the List I<Posting> to the list is just sending a message to the address which you will be given after you subscribe. Your message will not be accepted unless you have first L<subscribed|To Get On The List>. Do not post to [EMAIL PROTECTED], except to subscribe to the list! Please do not post to the list itself to attempt to unsubscribe from it. =head2 Private Mail Please do not send private mail to list members unless it is invited. Even if they have answered your question on the list, you should continue the discussion on the list. On the other hand, if someone replies to you personally, you shouldn't forward the reply to the list unless you have received permission from this person. =head2 Other Tips =head3 Read The Documentation Please read as much of the documentation as you can before posting. Please also try to see if your question has been asked recently, there are links to searchable archives of the list on the mod_perl home page http://perl.apache.org/. =head3 Give Full Information Don't forget that the people reading the list have no idea even what operating system your computer runs unless you tell them. When reporting problems include at least the information requested in the document entitled I<SUPPORT> which you will find in the mod_perl source distribution. You can find many excellent examples of posts with good supporting information by looking at the mod_perl mailing list archives. There are URLs for several archives (with several different search engines) on the mod_perl home page. Followup posts will show you how easy the writer made it for the person who replied to deduce the problem and to suggest a way of solving it, or to find some further item information. If after reading the I<SUPPORT> document you think that more information is needed for your particular problem, but you still don't know what information to give, ask on the list rather than sending long scripts and configuration files which few people will have the time to read. =head3 Error Messages If you include error messages in your post, make sure that they are EXACTLY the messages which you saw. Use a text editor to transfer them directly into your message if you can. Try not to say things like "the computer said something about not recognizing a command" but instead to say something like this: "When logged in as root I typed the command: httpd -X at the console and on the console I saw the message Syntax error on line 393 of /etc/httpd/conf/httpd.conf: Invalid command 'PerlHandler', perhaps mis-spelled or defined by a module not included in the server configuration [FAILED]" =head3 The Subject Line The I<Subject:> line is B<very> important. Choose an B<informative> I<Subject> line for the mail header. Busy list members will skip messages with unclear I<Subject> lines. =head3 Preserve The Threads Messages which all have the same I<Subject> line text (possibly preceded by the word "Re:" which is automatically added by your mailer) are together known as a "thread". List members and mail archive use mail unique-ids and/or the Subject line to sort mail. Do not change the text without a very good reason, because this may break the thread. Breaking the thread makes it difficult to follow the discussion and can be very confusing. It may be better to start a new thread than to continue an old one if you change the theme. =head3 Post in PLAIN TEXT Do not post in HTML. Microsoft users in particular should take careful note of this. Use either the US-ASCII or ISO-8859-1 (Latin-1) character set, do not use other character sets which may be designed for those who do not speak English and which may not be displayable on many terminals. If you ignore this advice then the chances are greater that your message will not be read. =head3 Time and Bandwidth Remember that thousands of people may read your messages. To save time and to keep badwidth usage to a minimum, please keep posts reasonably short, but please make it clear precisely what you are asking. If you can, send a *small* example of a script or configuration which reproduces your problem. Please do not send long scripts which cannot easily be understood. Please do not send large attachments of many kilobytes, if they are needed then put them on the Web somewhere or say in your message that you can send them separately if they are requested. =head3 Tags It can be helpful if you use a C<[tag]> in square brackets in the I<Subject:> line, as well as the brief description of your post. Some suggested tags are: ADMIN Stuff about running the List. ADVOCACY Promoting the use of mod_perl, printing T-shirts, stuff like that. Please don't start another discussion about whether we should put this on a different list, we've been there before. ANNOUNCE Announcements of new software tools, packages and updates. BENCHMARK Apache/mod_perl performance issues. BUG Report of possible fault in mod_perl or associated software - it's better if you can send a patch instead! DBI Stuff generally concerning Apache/mod_perl interaction with databases. FYI For information only. JOB Any post about mod_perl jobs is welcome as long as it is brief and to the point. Note: Not "JOBS". MASON Jonathan Swartz' implementation of Perl embedded in HTML. NEWS Items of news likely to be interesting to mod_perlers. OT Off-topic items, please try to keep traffic low. PATCH Suggested fix for fault in mod_perl or associated software. QUESTION Questions about mod_perl which is not covered by one of the more specific headings. RareModules Occasional reminders about little-used modules on CPAN. RFC Requests for comment from the mod_perl community. SITE Things about running the Apache/mod_perl servers. SUMMARY After investigation and perhaps fixing a fault, and after an extended discussion of a specific topic, it is helpful if someone summarizes the thread. Don't be shy, everyone will appreciate the effort. If you can't find a tag which fits your subject, don't worry. If you have a very specific subject to discuss, feel free to choose your own tag, for example C<[mod_proxy]> or C<[Perl Sections]> but remember that the main reasons for the I<Subject> line are to save people time and to improve the response to your posts. It does not matter whether you use C<[UPPER CASE]> or C<[lower case]> or even a C<[Mixture Of Both]> in the tag. Try to keep the tag short. The tag should be the first thing in the I<Subject> line. =head3 If You Don't Get a Reply Sometimes you will not get a reply. Try to be patient, but it is OK to try again after a few days. Sometimes the replies you get will be very short. Please do not worry about that. People are very busy, that's all. Of course if your post is C<[OT]> for the list then you may not get a reply, or you may get one telling you to try a different forum. =head3 If You Don't Understand a Reply Just say so. =head3 General Perl and Apache questions The mod_perl list is NOT for general questions about Apache and the Perl language. The majority view is tolerant of off-topic posts, but it is considered impolite to post general Perl and Apache questions on the mod_perl list. The best you can hope for is a private reply and a polite reminder that the question is off-topic for this list. If you catch someone on a bad day, you might not get the best. There are often bad days in software development departments... If the Perl and Apache documentation has not answered your question then you could try looking at http://lists.perl.org/ or one of the comp.lang.* newsgroups. From time to time there are efforts to start a dedicated Perl mailing list and these usually result in a message or two on the mod_perl list, so it might be worth your while to search the archives. Please note that there are now separate mailing lists for ASP, EmbPerl and Mason, but although we keep trying to get a separate list off the ground for I<Advocacy> it always seems to end up back on the mod_perl list. =head1 Replying to posts =head2 The "Subject:" line Make sure that you include the exact I<Subject:> from the original post, unmodified. This makes it much easier for people (and for the mail software) to deal with the mail. If you must change the subject line then please append the words "was originally" plus the original subject line to your new subject line so that folks can see what is going on. =head2 Extracts From Other Posts When replying to a post, please include B<short> excerpts from the post to which you are replying so that others can follow the conversation without having to wade through reams of superfluous text. If you are lazy about this then messages can get very long indeed and can become a burden to the other people who might be trying to help. Make sure that there is a clear distinction between the text(s) of the message(s) to which you are replying and your reply itself. =head2 Unnecessary Duplication If you know that the intended recipients are subscribed to the List, there is no need to send messages both to them and to the list. They will get more than one copy of the message which is wasteful. =head2 Private replies It is helpful to keep most of your replies on the list, so that others see that help is being given and so they do not waste time on problems which have already been solved. Where it is appropriate to take a discussion off the list (for example where it veers off-topic, as often happens), say so in a message so that everyone is aware of it. =head2 Flames The readers of the mod_perl List aren't interested in that kind of thing. Don't get involved. =head1 The mod_perl Guide You absolutely *must* read the mod_perl Guide. It is a large document, you probably will want to download it and read it off-line. If you get the source (see below, L<Corrections and Contributions>) it comes with a build file to turn the .pod (Plain Old Documentation) source into HTML, .ps (PostScript) and .pdf (Portable Document Format). You will need at least Perl version 5.005 to build it. If you browse the Guide on-line you can use one of the search engines to find things in it. If you build and browse your own local HTML copy of the Guide, some of the links in it will not work unless you are connected to the Internet. Some people prefer to work offline, using tools like `grep' or `mc' to search the .pod source directly. =head2 Finding the Guide The URL of the Guide is: http://perl.apache.org/guide/ The sources are available from CPAN and other mirrors: http://www.perl.com/CPAN-local/authors/id/S/ST/STAS/ =head2 Corrections And Contributions Corrections and additions to the Guide are welcome. The original is kept in .pod format, and it is converted to other formats by Perl code. The Guide changes rather frequently (the CVS snapshot is updated every six hours!) so if you want to make a contribution make sure that you get the latest version of the Guide source from http://stason.org/guide-snapshots and make your changes to the .pod source only. In the first instance, post your changes to the mod_perl List for comment. =begin html <br><hr><br><!-- 11 Jun 2000 Initial publication for comment 18 Dec 2000 Minor corrections and additions 21 Oct 2001 Minor corrections, converted to .POD format --> =end html email-etiquette: This version dated 17 October 2001. 1.1 modperl-docs/src/maillist/list-advocacy.pod Index: list-advocacy.pod =================================================================== =head1 NAME mod_perl Advocacy mailing list =head1 Description A mailing list for B<mod_perl advocacy issues>, discussions about the site, etc. Please read the mailing list L<Guidelines|email-etiquette> before posting. =head1 Subscription Information To subscribe or unsubscribe send an empty email to one of the following addresses. =over =item * subscribe to the list mailto:[EMAIL PROTECTED] =item * subscribe to the list's digest mailto:[EMAIL PROTECTED] =item * unsubscribe from the list mailto:[EMAIL PROTECTED] =item * get help with the list mailto:[EMAIL PROTECTED] =back =head1 Searchable Archives =over =item * www.mail-archive.com http://www.mail-archive.com/advocacy@perl.apache.org/ =item * Mbox file http://perl.apache.org/mail/advocacy/ =back =cut 1.1 modperl-docs/src/maillist/list-announce.pod Index: list-announce.pod =================================================================== =head1 NAME Announce mailing list =head1 Description The B<announce> list is for announcing mod_perl and related products releases. Please read the mailing list L<Guidelines|email-etiquette> before posting. =head1 Subscription Information To subscribe or unsubscribe send an empty email to one of the following addresses. =over =item * subscribe to the list mailto:[EMAIL PROTECTED] =item * subscribe to the list's digest mailto:[EMAIL PROTECTED] =item * unsubscribe from the list mailto:[EMAIL PROTECTED] =item * get help with the list mailto:[EMAIL PROTECTED] =back =head1 Searchable Archives =over =item * Mbox file http://perl.apache.org/mail/announce/ =back =cut 1.1 modperl-docs/src/maillist/list-asp.pod Index: list-asp.pod =================================================================== =head1 NAME ASP mailing list =head1 Description The B<asp> list is for C<Apache::ASP> discussions. Please read the mailing list L<Guidelines|email-etiquette> before posting. =head1 Subscription Information To subscribe or unsubscribe send an empty email to one of the following addresses. =over =item * subscribe to the list mailto:[EMAIL PROTECTED] =item * subscribe to the list's digest mailto:[EMAIL PROTECTED] =item * unsubscribe from the list mailto:[EMAIL PROTECTED] =item * get help with the list mailto:[EMAIL PROTECTED] =back =head1 Searchable Archives =over =item * mail-archive.com http://www.mail-archive.com/asp%40perl.apache.org/ =item * Mbox file http://perl.apache.org/mail/asp/ =back =cut 1.1 modperl-docs/src/maillist/list-cvs.pod Index: list-cvs.pod =================================================================== =head1 NAME Development CVS mailing list =head1 Description The B<modperl-cvs> list is the list where you can watch mod_perl getting patched. No real discussions happen on this list, but if you want to know about the latest changes in the mod_perl core before the rest of the people, this is a list to be on. Everytime something gets committed to the modperl CVS repository a mail is sent here with the diff. Please read the mailing list L<Guidelines|email-etiquette> before posting. =head1 Subscription Information To subscribe or unsubscribe send an empty email to one of the following addresses. =over =item * subscribe to the list mailto:[EMAIL PROTECTED] =item * subscribe to the list's digest mailto:[EMAIL PROTECTED] =item * unsubscribe from the list mailto:[EMAIL PROTECTED] =item * get help with the list mailto:[EMAIL PROTECTED] =back =head1 Searchable Archives =over =item * marc.theaimsgroup.com http://marc.theaimsgroup.com/?l=apache-modperl-cvs&r=1&w=2#apache-modperl-cvs =item * Mbox file archive http://perl.apache.org/mail/modperl-cvs/ =back =cut 1.1 modperl-docs/src/maillist/list-dev.pod Index: list-dev.pod =================================================================== =head1 NAME mod_perl Development mailing list =head1 Description The B<development> mailing list is for discussions about the development of the core mod_perl. Please read the mailing list L<Guidelines|email-etiquette> before posting. =head1 Subscription Information To subscribe or unsubscribe send an empty email to one of the following addresses. =over =item * subscribe to the list mailto:[EMAIL PROTECTED] =item * subscribe to the list's digest mailto:[EMAIL PROTECTED] =item * unsubscribe from the list mailto:[EMAIL PROTECTED] =item * get help with the list mailto:[EMAIL PROTECTED] =back =head1 Searchable Archives =over =item * Mbox file http://perl.apache.org/mail/dev/ =item * marc.theaimsgroup.com http://marc.theaimsgroup.com/?l=apache-modperl-dev&r=1&w=2#apache-modperl-dev =item * www.mail-archive.com http://www.mail-archive.com/dev%40perl.apache.org/ =item * www.geocrawler.com http://www.geocrawler.com/lists/3/web/182/0/ (it throws all modperl lists in one bundle, not good) =back =cut 1.1 modperl-docs/src/maillist/list-docs-cvs.pod Index: list-docs-cvs.pod =================================================================== =head1 NAME Documentation CVS mailing list =head1 Description A mailing list where all the B<mod_perl documentation modification commits> are sent. Please read the mailing list L<Guidelines|email-etiquette> before posting. =head1 Subscription Information To subscribe or unsubscribe send an empty email to one of the following addresses. =over =item * subscribe to the list mailto:[EMAIL PROTECTED] =item * subscribe to the list's digest mailto:[EMAIL PROTECTED] =item * unsubscribe from the list mailto:[EMAIL PROTECTED] =item * get help with the list mailto:[EMAIL PROTECTED] =back =head1 Searchable Archives =over =item * Mbox file http://perl.apache.org/mail/docs-cvs/ =back =cut 1.1 modperl-docs/src/maillist/list-docs-dev.pod Index: list-docs-dev.pod =================================================================== =head1 NAME Documentation mailing list =head1 Description A mailing list for discussing B<mod_perl documentation> Please read the mailing list L<Guidelines|email-etiquette> before posting. =head1 Subscription Information To subscribe or unsubscribe send an empty email to one of the following addresses. =over =item * subscribe to the list mailto:[EMAIL PROTECTED] =item * subscribe to the list's digest mailto:[EMAIL PROTECTED] =item * unsubscribe from the list mailto:[EMAIL PROTECTED] =item * get help with the list mailto:[EMAIL PROTECTED] =back =head1 Searchable Archives =over =item * Mbox file http://perl.apache.org/mail/docs-dev/ =back =cut 1.1 modperl-docs/src/maillist/list-embperl.pod Index: list-embperl.pod =================================================================== =head1 NAME Embperl mailing list =head1 Description The B<embperl mailing list> is available for I<Embperl> L<http://perl.apache.org/embperl/> users and developers to share ideas, ask question and solve problems. Please read the mailing list L<Guidelines|email-etiquette> before posting. =head1 Subscription Information To subscribe or unsubscribe send an empty email to one of the following addresses. =over =item * subscribe to the list mailto:[EMAIL PROTECTED] =item * subscribe to the list's digest mailto:[EMAIL PROTECTED] =item * unsubscribe from the list mailto:[EMAIL PROTECTED] =item * get help with the list mailto:[EMAIL PROTECTED] =back =head1 Searchable Archives =over =item * ecos.de http://www.ecos.de/~mailarc/embperl/ =item * geocrawler.com http://www.geocrawler.com/lists/3/Web/187/0/ =item * Mbox file http://perl.apache.org/mail/embperl =back =cut 1.1 modperl-docs/src/maillist/list-test-cvs.pod Index: list-test-cvs.pod =================================================================== =head1 NAME Test Development CVS mailing list =head1 Description The B<test-cvs> list is the list where cvs commits for the I<Apache HTTP Test> L<http://httpd.apache.org/test/> project are sent, including cvs commits of changes for mod_perl's sub-project C<Apache::Test>. Please read the mailing list L<Guidelines|email-etiquette> before posting. =head1 Subscription Information To subscribe or unsubscribe send an empty email to one of the following addresses. =over =item * subscribe to the list mailto:[EMAIL PROTECTED] =item * subscribe to the list's digest mailto:[EMAIL PROTECTED] =item * unsubscribe from the list mailto:[EMAIL PROTECTED] =item * get help with the list mailto:[EMAIL PROTECTED] =back =head1 Searchable Archives =over =item * Mbox file http://httpd.apache.org/mail/test-cvs/ =back =cut 1.1 modperl-docs/src/maillist/list-test-dev.pod Index: list-test-dev.pod =================================================================== =head1 NAME Test Development mailing list =head1 Description The B<test-dev> mailing list is for discussing I<Apache HTTP Test> L<http://httpd.apache.org/test/> project. It's linked from here, because mod_perl's sub-project C<Apache::Test> is discussed on this list. Please read the mailing list L<Guidelines|email-etiquette> before posting. =head1 Subscription Information To subscribe or unsubscribe send an empty email to one of the following addresses. =over =item * subscribe to the list mailto:[EMAIL PROTECTED] =item * subscribe to the list's digest mailto:[EMAIL PROTECTED] =item * unsubscribe from the list mailto:[EMAIL PROTECTED] =item * get help with the list mailto:[EMAIL PROTECTED] =back =head1 Searchable Archives =over =item * www.apachelabs.org http://www.apachelabs.org/test-dev/ =item * Mbox file http://httpd.apache.org/mail/test-dev/ =back =cut 1.1 modperl-docs/src/maillist/list-users.pod Index: list-users.pod =================================================================== =head1 NAME mod_perl Users mailing list =head1 Description The B<mod_perl users mailing list> is available for mod_perl users and developers to share ideas, solve problems and discuss things related to mod_perl and the C<Apache::*> modules. Please read the mailing list L<Guidelines|email-etiquette> before posting. =head1 Subscription Information To subscribe or unsubscribe send an empty email to one of the following addresses. =over =item * subscribe to the list mailto:[EMAIL PROTECTED] =item * subscribe to the list's digest mailto:[EMAIL PROTECTED] =item * unsubscribe from the list mailto:[EMAIL PROTECTED] =item * get help with the list mailto:[EMAIL PROTECTED] =back =head1 Searchable Archives =over =item * Epigone http://mathforum.org/epigone/modperl =item * msgs.securepoint.com http://msgs.securepoint.com/cgi-bin/get/apache-current.html =item * groups.yahoo.com http://groups.yahoo.com/group/modperl/ =item * www.geocrawler.com http://www.geocrawler.com/lists/3/web/182/0/ (throws all modperl lists in one bundle) =item * www.mail-archive.com http://www.mail-archive.com/modperl@apache.org/ =item * www.davin.ottawa.on.ca http://www.davin.ottawa.on.ca/archive/modperl/ =item * marc.theaimsgroup.com http://marc.theaimsgroup.com/?l=apache-modperl&r=1&w=2#apache-modperl =item * www.egroups.com http://www.egroups.com/group/modperl/ =item * Mbox file archive http://perl.apache.org/mail/modperl/ =back =cut 1.1 modperl-docs/src/maillist/maillist.tmpl Index: maillist.tmpl =================================================================== =head1 NAME [% list.title -%] mailing list =head1 Description [% list.desc -%] Please read the mailing list L<Guidelines|email-etiquette> before posting. =head1 Subscription Information To subscribe or unsubscribe send an empty email to one of the following addresses. =over =item * subscribe to the list mailto:[% list.addr.subscribe %] =item * subscribe to the list's digest mailto:[% list.addr.subscribe_digest %] =item * unsubscribe from the list mailto:[% list.addr.unsubscribe %] =item * get help with the list mailto:[% list.addr.help %] =back =head1 Searchable Archives [% IF list.archives.size -%] =over [% FOREACH arch = list.archives -%] [% IF arch -%] =item * [% arch.title %] [% arch.link -%] [% arch.comment -%] [% END -%] [% END -%] =back [% END -%] =cut 1.1 modperl-docs/src/maillist/make.pl Index: make.pl =================================================================== #!/usr/bin/perl use strict; use warnings; use Template; use vars qw(%data); require "./data.pl"; my $tmpl_file = "maillist.tmpl"; my $config = { INCLUDE_PATH => ".", OUTPUT_PATH => ".", }; my $template = Template->new($config) or die $Template::ERROR, "\n"; while (my($k,$v) = each %data) { generate($k, $v); } sub generate { my($node, $data) = @_; my $filename = "list-$node.pod"; print "generating $filename\n"; # use Data::Dumper; # print Dumper [EMAIL PROTECTED]; my $vars = {list => $data}; $template->process($tmpl_file, $vars, $filename) or die "error: ", $template->error(), "\n"; } 1.1 modperl-docs/src/products/apache-modlist.html Index: apache-modlist.html =================================================================== <html> <head> <title>The Apache/Perl Module List</title> </head> <body> <h1>The Apache/Perl Module List</h1> Maintained by <a href="mailto:[EMAIL PROTECTED]">Doug MacEachern</a>, <br><i> $Revision: 1.1 $ $Date: 2002/01/05 19:15:41 $</i> <h3>Contents</h3> <a href="#intro">Introduction</a><br> <a href="#part">Playing Your Part</a><br> <a href="#modules">The Apache/Perl Modules</a><br> <a href="#where">Where Are The Modules Kept?</a><br> <a href="#contacts">Contacts</a><br> <a href="#info">More Info</a><br> <p> <h3><a name="intro">Introduction</a></h3> The Apache/Perl module list is here for the same reason as the main <a href="http://www.perl.com/CPAN/modules/00modlist.long.html"> Perl module list</a>, to change duplication of effort into cooperation and help to save the world! Apache/Perl modules are somewhat different from the many others found on CPAN. Most Perl modules are "building blocks", developers use them to build applications or even more building blocks. It just so happens that Apache/Perl modules are encapsulted inside a namespace and .pm file. However, this does not make them all building blocks, many are just like apache modules written in C, you install, edit the server configuration files and you're done. Before you start a new module, consider this: Apache/Perl modules are useless outside of mod_perl and Apache. Do your best to design such that your <b>Apache::*</b> module will make good use of the building blocks found on CPAN, putting together new building blocks where appropriate and simply glue them together with the Apache API, keeping the <b>Apache::*</b> modules very small. <p> These modules will also serve as good examples, showing you where modules can step in during a stage of a request with <b>Perl*Handler</b> callbacks. You'll also see how and when to use the Apache API methods. <h3><a name="part">Playing Your Part</a></h3> Apache and Perl are world-wide collaborative efforts, naturally, the Apache/Perl integration project is the same.<br> You've started on the right foot simply by reading this document, thanks!<br> Please be sure you've read the main <a href="http://www.perl.com/CPAN/modules/00modlist.long.html"> Perl module list</a>, all that is said there is relevant here! <p> If you have any additions or changes for the list, please send them to the Apache/Perl <a href="mailto:modperl@apache.org"> mailing list </a> or to <a href="mailto:[EMAIL PROTECTED]">me</a>. <p> If you wish to share you module(s) the Perl way, by putting them on CPAN, send a request to <a href="mailto:[EMAIL PROTECTED]">me</a> or <a href="mailto:modules@perl.org">modules@perl.org</a> to get set up with a PAUSE user id and directory. <p> <b>HINT</b>: For a nice set of template files try this: <pre> % h2xs -AX -n Apache::YourPackageName </pre> <h3><a name="modules">The Apache/Perl modules</a></h3> <pre> Apache:: * PerlHandler's AddrMunge bdpf Munge email addresses in webpages MJD AutoIndex Rdcf Lists directory content GOZER Archive bdpf Make linked contents pages of .tar(.gz) JPETERSON <a href="http://www.nodeworks.com/asp/">ASP</a> bdpO Implement Active Server Pages CHAMAS BBS cdpO BBS like System for Apache MKOSS CallHandler cdpf Map filenames to subroutine calls GKNOPS Cachet i OutputChain with caching MERLYN Compress bdpO Compress content on the fly KWILLIAM Dir i OO (subclassable) mod_dir replacement DOUGM Dispatch bmpf Call PerlHandlers as CGI scripts GEOFF <a href="http://perl.apache.org/embperl/">Embperl</a> Rmcf Embed Perl in HTML GRICHTER EmbperlChain bdpO Feed handler output to Embperl CHOLET ePerl Rdpr Fast emulated Embedded Perl (ePerl) RSE Filter RdpO OutputChain like functionality KWILLIAM Forward bdpO OutputChain like functionality MPB FTP i Full-fledged FTP proxy PMKANE Gateway bdpf A multiplexing gateway CCWF GzipChain bmpf Compress files on the fly ANDK iNcom bdpf An e-commerce framework FRAJULAC Layer bdpf Layer content tree over one or more SAM Magick bdpf Image conversion on-the-fly MPB <a href="http://www.masonhq.com">Mason</a> bdpO Build sites w/ modular Perl/HTML blocks JSWARTZ ModuleDoc bdpf Self documentation for Apache C modules DOUGM NavBar bdpO Navigation bar generator MPB NNTPGateway adpf A Web based NNTP (usenet) interface BOUBAKER OutputChain bmpO Chain output of stacked handlers JANPAZ OWA bdpf Runs Oracle PL/SQL Web Toolkit apps SVINTO PageKit ampO Application framework w/ HTML::Template TJMATHER PassFile bdpf Send file via OutputChain ANDK PerlRun Smpf Run unaltered CGI scripts APML PrettyPerl Rdpf Syntax highlighting for Perl files RA PrettyText bdpf Re-format .txt files for client display CHTHORMAN RandomLocation bdpf Random image display RKOBES Registry Smpf Run unaltered CGI scripts APML RobotRules cdpf Enforce robot rules (robots.txt) PARKER Sandwich bmpf Layered document (sandwich) maker VKHERA ShowRequest bdpf Show phases and module participation DOUGM SimpleReplace ampf Simple replacement template tool GEOFF SSI RmpO Implement server-side includes in Perl KWILLIAM SSIChain bmpO SSI on other modules output JANPAZ Stage Rdpf Manage a document staging directory ANDK TarGzip c ZENIN TimedRedirect bdpf Redirect urls for a given time period PETERM UploadSvr bdpO A lightweight publishing system ANDK VhostSandwich cdpf Virtual host layered document maker MARKC WDB bdpf Database query/edit tool using DBI JROWE WebSQL cdpO Adaptation of Sybase's WebSQL GUNTHER * PerlInitHandler's RequestNotes ampf Pass cookie & form data around pnotes GEOFF * PerlHeaderParserHandler's AgentDeny cdpf Deny abusive User-Agents ROBH * PerlAuthenHandler's AuthAny bdpf Authenticate with any username/password MPB AuthenCache bmpf Cache authentication credentials JBODNAR AuthCookie RdpO Authen + Authz via cookies KWILLIAM AuthenDBI bmpO Authenticate via Perl's DBI MERGL AuthenGSS cdpf Generic Security Service (RFC 2078) DOUGM AuthenIMAP bdpf Authentication via an IMAP server MICB AuthenPasswdSrv bdpf External authentication server JEFFH AuthenPasswd bdpf Authenticate against /etc/passwd DEP AuthLDAP bdpf LDAP authentication module CDONLEY AuthPerLDAP bdpf LDAP authentication module (PerLDAP) HENRIK AuthenNIS bdpf NIS authentication DEP AuthNISPlus bdpF NIS Plus authentication/authorization VALERIE AuthenRaduis bdpf Authentication via a Radius server DANIEL AuthenSmb bdpf Authenticate against NT server PARKER AuthenURL bdpf Authenticate via another URL JGROENVEL DBILogin bdpf Authenticate to backend database JGROENVEL DCELogin bdpf Obtain a DCE login context DOUGM PHLogin bdpf Authenticate via a PH database JGROENVEL TicketAccess bdpO Ticket based access/authentication MPB * PerlAuthzHandler's AuthCookie bdpf Authen + Authz via cookies EBARTLEY AuthzAge bmpf Authorize based on age APML AuthzDCE cdpf DFS/DCE ACL based access control DOUGM AuthzDBI bmpO Group authorization via Perl's DBI MERGL AuthzGender bdpf Authorize based on gender MPB AuthzNIS bdpf NIS authorization DEP AuthzPasswd bdpf Authorize against /etc/passwd DEP AuthzSSL bdpf Authorize based on client cert MPB RoleAuthz i Role-based authorization DOUGM * PerlAccessHandler's AccessLimitNum bmpf Limit user access by number of requests APML BlockAgent bdpf Block access from certain agents MPB DayLimit bmpf Limit access based on day of week MPB IPThrottle cdpf Limit bandwith consumption by IP MERLYN RobotLimit cdpf Limit access of robots PARKER SpeedLimit bdpf Control client request rate MPB * PerlTypeHandler's AcceptLanguage cdpf Send file type based on language pref ROBH MIME bdcf Perl implementation of mod_mime MPB MimeDBI bdpf Type mapping from a DBI database MPB MimeXML bdpf mime encoding sniffer for XML files MSERGEANT * PerlTransHandler's (May also include a PerlHandler) AdBlocker bdpf Block advertisement images MPB AddHostPath adpf Prepends parts of hostname to URI RJENKS AnonProxy bdpf Anonymizing proxy MPB Checksum bdpf Manage document checksum trees MPB DynaRPC i Dynamically translate URIs into RPCs DOUGM LowerCaseGETs bdpf Lowercase URI's when needed PLISTER MsqlProxy bmpf Translate URI's into mSQL queries APML ProxyPass bdpf Perl implementation of ProxyPass MJS ProxyPassThru bdpO Skeleton for vanilla proxy RMANGI ProxyCache i Caching proxy DOUGM StripSession bdpf Strip session info from URI MPB Throttle bdpf Speed-based content negotiation DONS TransLDAP bdpf Translate URIs to LDAP queries CDONLEY * PerlFixupHandler's HttpEquiv bdpf HTML HTTP-EQUIV tags to HTTP headers ROBH RefererBlock bdpf Block based on MIME type + Referer CHOLET Timeit bmpf Benchmark PerlHandlers APML Usertrack bdpf Perl version of mod_usertrack ABH * PerlLogHandler's DBILogConfig bdpf Custom format logging via DBI JBODNAR DBILogger bdpf Logging via DBI ABH DumpHeaders bdpf Watch HTTP transaction via headers DOUGM LogMail bdpf Log certain requests via email MPB Traffic bdpf Logs bytes transferred, per-user basis MAURICE WatchDog c Look for problematic URIs DOUGM * PerlChildInitHandler's Resource Smpf Limit resources used by httpd children APML * Server Configuration ConfigLDAP i Config via LDAP and <Perl> MARKK ConfigDBI i Config via DBI and <Perl> MARKIM ModuleConfig SmcO Interface to configuration API APML PerlSections SmpO Utilities for <Perl> sections APML httpd_conf bmpO Methods to configure and run an httpd APML src SmpO Finding and reading bits of source APML * Database DBI bmpO Persistent DBI connection mgmt. MERGL Sybase::DBlib bmpO Persistent DBlib connection mgmt. BMILLET Sybase::CTlib bapO Persistent CTlib connection mgmt. MDOWNING Mysql bdpO Persistent connection mgmt. for Mysql NJENSEN * Interfaces and integration with Apache C structures and modules Apache SmcO Interface to request_rec struct + API APML Backhand bdcr Bridge between mod_backhand + mod_perl DLOWE CmdParms SmcO Interface to Apache cmd_parms struct APML Command bmcO Interface to Apache command_rec struct APML Connection SmcO Inteface to Apache conn_rec struct APML Constants Smcf Constants defined in httpd.h APML ExtUtils SmpO Utils for Apache:C/Perl glue APML File SmcO Methods for working with files APML Handler bmcO Interface to Apache handler_rec struct APML Log SmcO ap_log_error interface APML LogFile bmcO Interface to Apache's piped logs, etc. APML Module bmcO Interface to Apache module struct APML Scoreboard RdcO Perl interface to Apache's scoreboard.h DOUGM Server SmcO Interface to Apache server_rec struct APML SubProcess cmcO Interface to Apache subprocess API APML Table SmcO Interface to Apache table struct + API APML URI SmcO URI component parsing and unparsing APML Util Smcf Interface to Apache's util*.c functions APML * HTTP Method handlers PATCH bdpf HTTP PATCH method handler MPB PUT cdpf HTTP PUT method handler SORTIZ Roaming bdpO PUT/GET/MOVE/DELETE (Netscape Roaming) JWEID * Watchdog and Monitoring tools SizeLimit Smpf Graceful exit for large children APML GTopLimit Rdpn Child exit on small shared or large mem STAS Status Smpf Embedded interpreter runtime status APML VMonitor Rdpn Visual System and Processes Monitor STAS Watchdog::RunAway Rdpn RunAway processes watchdog/terminator STAS * Development and Debug tools DB amcO Hook Perl interactive DB into mod_perl DOUGM Debug Rmpf mod_perl debugging utilities APML DebugInfo ampO Per-request data logging GEOFF DProf bmcf Hook Devel::DProf into mod_perl DOUGM FakeRequest ampO Implement Apache methods off-line APML Leak bmcf Memory leak tracking routines APML Peek amcf Devel::Peek for mod_perl APML SawAmpersand bmpf Make sure noone is using $&, $' or $` APML SmallProf bmpf Hook Devel::SmallProf into mod_perl DOUGM StatINC Smpf Reload require'd files when updated APML Symbol bmcO Things for symbol things APML Symdump bmpf Symbol table snapshots to disk APML test Smpf Handy routines for 'make test' scripts APML * Misc Byterun i Run Perl bytecode modules DOUGM Cookie amcO C version of CGI::Cookie APML Icon bdcO Access to AddIcon* configuration DOUGM Include Smpf mod_include + Apache::Registry handler APML Mmap bdcf Share data via Mmap module FLETCH Motd bmpf Add Message of the Day functionality CRAMIREZ ParseLog bdpO OO interface to Apache log files AKIRA RegistryLoader SmpO Apache::Registry startup script loader APML Request amcO CGI.pm functionality using API methods APML Safe ampO Adaptation of "safecgiperl" APML Session bmpO Maintain client <-> httpd session/state JBAKER Servlet ampO Interface to the Java Servlet engine IKLUFT SIG SmpO Signal handlers for mod_perl APML State i Powerful state engine RSE TempFile bdpf Manage temporary files TOMHUGHES Upload amcO File upload class APML </pre> <h3><a name="where">Where Are The Modules Kept?</a></h3> Modules listed with the <b>APML</b> as is contact are part of the mod_perl distribution package. Other modules can be found on CPAN the <a href="http://www.perl.com/CPAN/modules/by-module/Apache/"> modules/by-module/Apache/</A> directory. If they have not made it to CPAN yet, they might be found in the mod_perl <a href="http://perl.apache.org/src/contrib/">contrib</a> directory, which is also tar'd and distributed via CPAN in the <a href="http://www.perl.com/CPAN/modules/by-module/Apache/"> modules/by-module/Apache/</A> directory. Otherwise, feel free to ask the contact author or the list how you can go about getting your hands on a copy. <h3><a name="contacts">Contacts</a></h3> <pre> ABH Ask Bjørn Hansen <[EMAIL PROTECTED]> AKIRA Akira Hangai <[EMAIL PROTECTED]> ANDK Andreas König <[EMAIL PROTECTED]> APML The Apache/Perl Mailing List <modperl@apache.org> BMILLETT Brian Millett <[EMAIL PROTECTED]> BOUBAKER Heddy Boubaker <[EMAIL PROTECTED]> CCWF Charles C. Fu &lt;[EMAIL PROTECTED]&gt; CDONLEY Clayton Donley <[EMAIL PROTECTED]> CHAMAS Joshua Chamas <[EMAIL PROTECTED]> CHOLET Eric Cholet <[EMAIL PROTECTED]> CHTHORMAN Chris Thorman <[EMAIL PROTECTED]> CRAMIREZ Carlos Ramirez <[EMAIL PROTECTED]> DANIEL Daniel <[EMAIL PROTECTED]> DEP Demetrios E. Paneras <[EMAIL PROTECTED]> DLOWE David Lowe <[EMAIL PROTECTED]> DONS Don Schwarz <[EMAIL PROTECTED]> DOUGB Doug Bagley <[EMAIL PROTECTED]> DOUGM Doug MacEachern <[EMAIL PROTECTED]> EBARTLEY Eric Bartley <[EMAIL PROTECTED]> FLETCH Mike Fletcher <[EMAIL PROTECTED]> FRAJULAC Francis J. Lacoste <[EMAIL PROTECTED]> GEOFF Geoffrey Young <[EMAIL PROTECTED]> GKNOPS Gerd Knops <[EMAIL PROTECTED]> GOZER Philippe M. Chiasson <[EMAIL PROTECTED]> GRICHTER Gerald Richter <[EMAIL PROTECTED]> GUNTHER Gunther Birznieks <[EMAIL PROTECTED]> HENRIK Henrik Strom <[EMAIL PROTECTED]> HMUELLER Hanno Mueller <[EMAIL PROTECTED]> IKLUFT Ian Kluft <[EMAIL PROTECTED]> JANPAZ Honza Pazdziora <[EMAIL PROTECTED]> JBAKER Jeffrey Baker <[EMAIL PROTECTED]> JBODNAR Jason Bodnar <[EMAIL PROTECTED]> JGROV John D Groenveld <[EMAIL PROTECTED]> JEFFH Jeffrey Hulten <[EMAIL PROTECTED]> JROWE Jeff Rowe <[EMAIL PROTECTED]> JSWARTZ Jonathan Swartz <[EMAIL PROTECTED]> JWEID Jochen Wiedmann <[EMAIL PROTECTED]> KWILLIAM Ken Williams <[EMAIL PROTECTED]> LDS Lincoln D. Stein <[EMAIL PROTECTED]> MARKC Mark Constable <[EMAIL PROTECTED]> MARKIM Mark A. Imbriaco <[EMAIL PROTECTED]> MARKK Mark Kennedy <[EMAIL PROTECTED]> MAURICE Maurice Aubrey <[EMAIL PROTECTED]> MDARWIN Matthew Darwin <[EMAIL PROTECTED]> MDORMAN Michael Alan Dorman <[EMAIL PROTECTED]> MDOWNING Mark Downing <[EMAIL PROTECTED]> MERGL Edmund Mergl <[EMAIL PROTECTED]> MERLYN Randal L. Schwartz <merlyn@stonehenge.com> MJD Mark-Jason Dominus <[EMAIL PROTECTED]> MJS Michael Smith <[EMAIL PROTECTED]> MKOSS Max Kossatzmax <[EMAIL PROTECTED]> MICB Malcolm Beattie <[EMAIL PROTECTED]> MPB mod_perl book (Doug and Lincoln) <[EMAIL PROTECTED]> MSERGEANT Matt Sergeant <[EMAIL PROTECTED]> RA Roman Kosenko <[EMAIL PROTECTED]> NJENSEN Neil Jensen <[EMAIL PROTECTED]> PARKER Michael Parker <[EMAIL PROTECTED]> PETERM Peter Marshall <[EMAIL PROTECTED]> JPETERSON Jonathan Peterson <[EMAIL PROTECTED]> PLISTER Peter Lister <[EMAIL PROTECTED]> PMKANE Patrick Michael Kane <[EMAIL PROTECTED]> PTI Peter Tillemans <[EMAIL PROTECTED]> RJENKS Robert Jenks <[EMAIL PROTECTED]> RKOBES Randy Kobes <[EMAIL PROTECTED]> RMANGI Rick Mangi <[EMAIL PROTECTED]> ROBH Rob Hartill <[EMAIL PROTECTED]> RSE Ralf S. Engelschall <[EMAIL PROTECTED]> SAM Simon Matthews <[EMAIL PROTECTED]> SKANE Stephen E Kane <[EMAIL PROTECTED]> SORTIZ Salvador Ortiz <[EMAIL PROTECTED]> STAS Stas Bekman <[EMAIL PROTECTED]> SVINTO Svante Sörmark <[EMAIL PROTECTED]> TJMATHER T.J. Mather <[EMAIL PROTECTED]> TOMHUGHES Tom Hughes <[EMAIL PROTECTED]> VALERIE Valerie Delane <[EMAIL PROTECTED]> VKHERA Vivek Khera <[EMAIL PROTECTED]> ZENIN Byron Brummer <[EMAIL PROTECTED]> </pre> <h3><a name="info">More Info</a></h3> See the Apache/Perl <a href="http://perl.apache.org/">homepage</a>. </body> </html> 1.1 modperl-docs/src/products/app-server.pod Index: app-server.pod =================================================================== =head1 NAME Application Servers and Toolkits based on mod_perl. =head1 Overview There are several application servers and toolkits available designed to run under mod_perl. =head1 Apache::ASP C<Apache::ASP> (http://www.apache-asp.org/) provides an Active Server Pages port to the Apache Web Server with Perl scripting only, and enables developing of dynamic web applications with session management and embedded perl code. There are also many powerful extensions, including XML taglibs, XSLT rendering, and new events not originally part of the ASP API =head1 Apache::PageKit C<Apache::PageKit> (http://pagekit.org/) is a web application framework that uses C<HTML::Template> and XML to separate the Model, View, Content and Controller. Provides elegant solutions to many difficult web programming problems, including session management, language localization, authentication, form validation, and co-branding. =head1 AxKit C<AxKit> (http://axkit.org/) is an XML Application Server for Apache. It provides on-the-fly conversion from XML to any format, such as HTML, WAP or text using either W3C standard techniques, or flexible custom code. C<AxKit> also uses a built-in Perl interpreter to provide some amazingly powerful techniques for XML transformation. =head1 Embperl C<Embperl> (http://perl.apache.org/embperl/) is a system for building dynamic websites with Perl. It gives you the power to embed Perl code in your HTML documents and the ability to build your Web site out of small reusable objects in an object-oriented style. You can also take advantage of all the usual Perl modules, (including C<DBI> for database access) use their functionality and easily include their output in your web pages. Embperl has several features which are especially useful for creating HTML, including dynamic tables, form field processing, URL escaping/unescaping, session handling, and more. =head1 Mason C<Mason> (http://www.masonhq.com/) is a powerful Perl-based web site development and delivery engine. With C<Mason> you can embed Perl code in your HTML and construct pages from shared, reusable components. C<Mason> solves the common problems of site development: caching, debugging, templating, simulating browser conditions, maintaining development and production sites, and more =head1 OpenInteract C<OpenInteract> (http://www.openinteract.org/) is a web application environment written in perl and geared to run on the Apache web server using the mod_perl plugin module. The environment is built to be not only friendly to people editing and changing a website's content, but also for the developers who can write code (or complex templates) and create entire applications. =head1 OpenFrame C<OpenFrame> (http://openframe.fotango.com/) is an open source application framework for distributed media applications. What all this buzzword-compliant mumbo-jumbo really means is that with OpenFrame you can write a single application for multiple downstream clients (ie, Web, WAP, iDTV, Email) and not have to worry about much except the presentation. =head1 The Template Toolkit The Template Toolkit (http://template-toolkit.org/) is a fast, powerful and easily extensible template processing system written in Perl. It is ideally suited (but not limited) to the creation of static and dynamic web content. The C<Apache::Template> module provides an Apache/mod_perl interface to the Template Toolkit, providing a quick and simple way to integrate its processing power into your web site. =cut 1.1 modperl-docs/src/products/config.cfg Index: config.cfg =================================================================== use vars qw(@c); @c = ( id => 'products', title => "Products", abstract => "mod_perl based software", chapters => [ qw( apache-modlist.html app-server.pod products.html ) ], ); 1.1 modperl-docs/src/products/products.html Index: products.html =================================================================== <html> <head> <title>mod_perl Related Software</title> <body bgcolor=#ffffff > <h3>mod_perl Related Software</h3> <hr> <p> <b>Products based on the mod_perl architecture</b><p> <i>Freeware, source code distribution:</i> <ul> <li> Ben Sugars' <a href="http://interact.canoe.ca/~bsugars/nsapi_perl.html"> nsapi_perl</a> (Perl plugin for Netscape) </ul> <i>Commercial, binary distribution:</i> <ul> <li> ActiveWare's <a href="http://www.ActiveState.com/software/perlEx/default.htm">PerlEx</a> (Perl plugins for O'Reilly WebSite, Netscape and IIS) <li> The Oracle Web Server <a href="http://www.olab.com/doc/books/perl/perltoc.htm"> Perl Cartridge</a> (Perl plugin for Oracle Web Application Server) <li> Binary Evolution's <a href="http://www.binevolve.com/bine/vep/"> Velocity Engine for Perl</a> (Perl plugins for Netscape and IIS) </ul> <hr> <p> <b>Software for use with mod_perl</b> <p> <i>Freeware:</i> <ul> <li> Ian Kluft's <a href="http://www.employees.org/~ikluft/apache/servlet/"> Apache::Servlet</a> <li> John Groenveld's <a href="http://www.perl.org/CPAN/modules/by-module/Apache/">Apache::DBILogin</a> <li> Andreas Koenig's <a href="http://www.perl.org/CPAN/modules/by-module/Apache/">Apache::GzipChain</a> <li> Mike Fletcher's <a href="http://www.perl.org/CPAN/modules/by-module/Apache/">Apache::Mmap</a> <li> Jan Pazdziora's <a href="http://www.perl.org/CPAN/modules/by-module/Apache/">Apache::OutputChain</a> <li> Doug MacEachern's <a href="http://www.perl.org/CPAN/modules/by-module/Apache/">Apache::Sandwich</a> <li> Andreas Koenig's <a href="http://www.perl.org/CPAN/modules/by-module/Apache/">Apache::Stage</a> <li> Maurice Aubrey's <a href="http://www.perl.org/CPAN/modules/by-module/Apache/">Apache::Traffic</a> <li> Edmund Mergl's <a href="http://www.perl.org/CPAN/modules/by-module/Apache/">Apache::DBI</a> <li> Gerald Richter's <a href="http://perl.apache.org/embperl/">HTML::Embperl</a> <li> Ralf S. Engelschall's <a href="http://www.engelschall.com/sw/eperl/">Apache::ePerl</a> </ul> ... and many more. See the <a href="http://perl.apache.org/src/apache-modlist.html">Apache/Perl module list</a> </ul> <hr> <p> <b>Products shipping with mod_perl</b><p> <i>Freeware:</i> <ul> <li> Silicon Graphics' <a href="https://www.sgi.com/toolbox/public/apache/">Developer's Toolbox</a> </ul> <p> <hr> <p> <b>Compatible products</b> <p> <i>Freeware:</i> <ul> <li> Ralf S. Engelschall's <a href="http://www.modssl.org/">mod_ssl</a> <li> Ben Laurie's <a href="http://www.apache-ssl.org/">Apache-SSL</a> </ul> ... and many more. Most of the <a href="http://modules.apache.org/">modules for Apache</a> should be able to use more or less integrated with mod_perl. <p> <i>Commercial:</i> <ul> <li> C2Net's <a href="http://www.c2.net/">Stronghold</a> </ul> <hr> If you know of other mod_perl related software products, please send a description to <a href="mailto:[EMAIL PROTECTED]">me</a>. </body> </html> 1.1 modperl-docs/src/stats/config.cfg Index: config.cfg =================================================================== use vars qw(@c); @c = ( id => 'stats', title => "Statistics", abstract => "mod_perl deployment statistics", chapters => [ qw( netcraft.html securityspace.html ) ], copy_glob => [ qw( logo-middle.png logo.png graph.pl input.data pseudo-graph.jpg graph.jpg ) ], ); 1.1 modperl-docs/src/stats/graph.jpg <<Binary file>> 1.1 modperl-docs/src/stats/graph.pl Index: graph.pl =================================================================== #!/usr/bin/perl # this script builds 2 graphs from 2 data sets, expects to find a file # with data of name "input.data" in the script's directory, data should be # separated with tabs, e.g: #May 1999 156458 36976 #April 1999 134255 32570 #March 1999 112399 28482 # # first set describes a number Hostnames, 2nd - Unique IP numbers # # first graph (graph.gif) is a normal one # # second graph (pseudo-graph.gif) is much smaller and includes points, # with no other labels, but y axis. This graph should be linked to a # bigger one (graph.gif) # # Note: you need GD::Graph package to be installed in order to use this # script. # This script is free software; you can # redistribute it and/or modify it under the same terms as # Perl itself. # by Stas Bekman <[EMAIL PROTECTED]> # Aug, 14 1999 # # updated July, 16 to generate jpegs instead of gifs (since gif support # was removed from libgd) use GD::Graph::linespoints; use strict; print STDERR "Processing data\n"; my @data = read_data_from_csv("input.data") or die "Cannot read data from input.data"; # make the Y axis to be optimally used my $max_y = 0; foreach (@{$data[1]},@{$data[2]}) { $max_y = $_ if $_ > $max_y ; } # normalize it $max_y = ( int $max_y / 1000 + 1 ) * 1000; normal_graph(); pseudo_graph(); # plot a normal graph of points with all the info as possible sub normal_graph{ my $my_graph = new GD::Graph::linespoints(700,400); $my_graph->set( x_label => 'Months', y_label => 'Counts', title => "mod_perl usage survey (numbers are by courtesy of netcraft.com).", y_max_value => $max_y, y_label_skip => 1, x_label_skip => 1, x_labels_vertical => 1, x_label_position => 1/2, markers => [ 1, 7 ], marker_size => 2, transparent => 1, t_margin => 10, b_margin => 10, l_margin => 10, r_margin => 10, two_axes => 1, logo => 'logo.png', logo_position => 'LL', ); #$my_graph->set( dclrs => [ qw(green pink blue cyan) ] ); $my_graph->set_x_label_font(GD::gdMediumBoldFont); $my_graph->set_y_label_font(GD::gdMediumBoldFont); $my_graph->set_x_axis_font(GD::gdMediumBoldFont); $my_graph->set_y_axis_font(GD::gdMediumBoldFont); $my_graph->set_title_font(GD::gdGiantFont); $my_graph->set_legend('Hostnames','Unique IP numbers' ); $my_graph->set_legend_font(GD::gdMediumBoldFont); open IMG, '>graph.jpg' or die $!; print IMG $my_graph->plot([EMAIL PROTECTED])->jpeg(70); close IMG; # $my_graph->plot_to_gif( "graph.gif", [EMAIL PROTECTED] ); } # plot a small graph of points with as least info as possible sub pseudo_graph{ my $my_graph = new GD::Graph::linespoints(350,200); # in this graph we don't want X labels to be printed for (0..$#{$data[0]}) { $data[0]->[$_] = ""; } $my_graph->set( y_max_value => $max_y, y_label_skip => 0, x_label_skip => 1, x_labels_vertical => 1, x_label_position => 1/2, markers => [ 1, 7 ], marker_size => 2, transparent => 1, t_margin => 10, b_margin => 10, l_margin => 10, r_margin => 10, two_axes => 0, logo => 'logo-middle.png', logo_position => 'UL', ); #$my_graph->set( dclrs => [ qw(green pink blue cyan) ] ); $my_graph->set_x_label_font(GD::gdMediumBoldFont); $my_graph->set_y_label_font(GD::gdSmallFont); $my_graph->set_x_axis_font(GD::gdMediumBoldFont); $my_graph->set_y_axis_font(GD::gdSmallFont); $my_graph->set_title_font(GD::gdGiantFont); $my_graph->set_legend('Hostnames','Unique IP numbers' ); $my_graph->set_legend_font(GD::gdSmallFont); open IMG, '>pseudo-graph.jpg' or die $!; print IMG $my_graph->plot([EMAIL PROTECTED])->jpeg(70); close IMG; #$my_graph->plot_to_gif( "pseudo-graph.gif", [EMAIL PROTECTED] ); } sub read_data_from_csv { my $fn = shift; my @d = (); open(ZZZ, $fn) || return (); while (<ZZZ>) { chomp; # you might want Text::CSV here my @row = split /\t/; for (my $i = 0; $i <= $#row; $i++) { undef $row[$i] if ($row[$i] eq 'undef'); unshift @{$d[$i]}, $row[$i]; } } close (ZZZ); return @d; } 1.1 modperl-docs/src/stats/index.html Index: index.html =================================================================== <html> <head> <title>Server survey results</title> </head> <body bgcolor=#ffffff > Thanks to Mike Prettejohn <[EMAIL PROTECTED]> for grep'ing mod_perl in the <a href="http://www.netcraft.co.uk/">netcraft</a> survey. <p> If you're developer behind one of these mod_perl sites, Netcraft has <a href="http://www.netcraft.co.uk/jobs/technical.html">development positions</a> available which require mod_perl experience. <p> SecuritySpace provides yet <a href="http://www.securityspace.com/s_survey/data/man.200110/apachemods.html"> another report</a>. Make sure to click on the menu at the left to pick the latest month, since the link hardcodes the month. They also provide a <a href="http://www.securityspace.com/s_survey/data/man.200110/apachemods.html?mod=cGVybA==">page</a> similar to this one with statistics and a graph based on the data collected by <a href="http://www.securityspace.com/">www.securityspace.com</a> <p> <hr> <IMG SRC="graph.jpg" HEIGHT=400 WIDTH=700 BORDER=0 ALT="Graph"> <BR> <BR> The <A HREF="graph.pl"> script </A> that produced this graph and the <A HREF="input.data"> raw input data </A> <BR> <p> If your site is running mod_perl, feel free to <a href="http://www.netcraft.co.uk/cgi-bin/Survey/whats/">tell</a> the netcraft survey. <p> Note that as of October 97, the list of URLs for servers running mod_perl has passed Netcraft's limit for publication. (Actually, we passed it in September, but Mike gave it to us anyhow). <p> <!-- reports can be retrieved from http://www.netcraft.com/survey/Reports/200106/mod_perl.txt, adjust the year/month if needed --> <table cellpadding=3 border=1> <tr><td>Survey</td><td>hostnames</td><td>unique ip addresses</td></tr> <tr><td> October 2001 </td><td>2540267</td><td>293633</td></tr> <tr><td> September 2001 </td><td>2899420</td><td>281192</td></tr> <tr><td> August 2001 </td><td>2823060</td><td>283180</td></tr> <tr><td> July 2001 </td><td>2936558</td><td>281471</td></tr> <tr><td> June 2001 </td><td>2802093</td><td>273827</td></tr> <tr><td> May 2001 </td><td>2475367</td><td>265466</td></tr> <tr><td> April 2001 </td><td>2482288</td><td>256862</td></tr> <tr><td> March 2001 </td><td>2298821</td><td>244201</td></tr> <tr><td> February 2001 </td><td>2203353</td><td>230502</td></tr> <tr><td> January 2001 </td><td>2001011</td><td>225123</td></tr> <tr><td> December 2000 </td><td>1811864</td><td>214467</td></tr> <tr><td> November 2000 </td><td>1524620</td><td>197931</td></tr> <tr><td> October 2000 </td><td>1597399</td><td>183327</td></tr> <tr><td> September 2000 </td><td>1508381</td><td>170758</td></tr> <tr><td> August 2000 </td><td>1476602</td><td>152073</td></tr> <tr><td> July 2000 </td><td>1286714</td><td>132940</td></tr> <tr><td> June 2000 </td><td>1080206</td><td>123008</td></tr> <tr><td> May 2000 </td><td>852675</td><td>108327</td></tr> <tr><td> April 2000 </td><td>736805</td><td>95994</td></tr> <tr><td> March 2000 </td><td>612425</td><td>85749</td></tr> <tr><td> February 2000 </td><td>478614</td><td>74515</td></tr> <tr><td> January 2000 </td><td>418742</td><td>66239</td></tr> <tr><td> December 1999 </td><td>411008</td><td>63993</td></tr> <tr><td> November 1999 </td><td>384018</td><td>60116</td></tr> <tr><td> October 1999 </td><td>342285</td><td>55688</td></tr> <tr><td> September 1999 </td><td>282232</td><td>50334</td></tr> <tr><td> August 1999 </td><td>248925</td><td>51413</td></tr> <tr><td> July 1999 </td><td>202081</td><td>42183</td></tr> <tr><td> June 1999 </td><td>183793</td><td>40484</td></tr> <tr><td> May 1999 </td><td>156458</td><td>36976</td></tr> <tr><td> April 1999 </td><td>134255</td><td>32570</td></tr> <tr><td> March 1999 </td><td>112399</td><td>28482</td></tr> <tr><td> February 1999 </td><td>103088</td><td>25854</td></tr> <tr><td> January 1999 </td><td>81982</td><td>23742</td></tr> <tr><td> December 1998 </td><td>72545</td><td>22598</td></tr> <tr><td> November 1998 </td><td>63692</td><td>19239</td></tr> <tr><td> October 1998 </td><td>64171</td><td>15055</td></tr> <tr><td> September 1998 </td><td>57365</td><td>12540</td></tr> <tr><td> August 1998 </td><td>54450</td><td>12438</td></tr> <tr><td> July 1998 </td><td>47068</td><td>9904</td></tr> <tr><td> June 1998 </td><td>42508</td><td>9237</td></tr> <tr><td> May 1998 </td><td>39535</td><td>8682</td></tr> <tr><td> April 1998 </td><td>33696</td><td>6980</td></tr> <tr><td> March 1998 </td><td>30075</td><td>6439</td></tr> <tr><td> February 1998 </td><td>25343</td><td>5607</td></tr> <tr><td> January 1998 </td><td>16591</td><td>4343</td></tr> <tr><td> December 1997 </td><td>14624</td><td>3814</td></tr> <tr><td> November 1997 </td><td>13303</td><td>3431</td></tr> <tr><td> October 1997 </td><td>12654</td><td>3045</td></tr> <tr><td> <a href="aug97.html">September 1997</a></td><td>7165</td><td>2256</td></tr> <tr><td> <a href="july97.html">August 1997</a></td><td>1501</td><td>1228</td></tr> <tr><td><a href="june97.html">July 1997</a></td><td>1138</td><td>580</td></tr> <tr><td> <a href="may97.html">June 1997</a></td><td>312</td><td>239</td></tr> </table> </body> </html> 1.1 modperl-docs/src/stats/input.data Index: input.data =================================================================== December 2001 2720503 326545 November 2001 2651419 322595 October 2001 2540267 293633 September 2001 2899420 281192 August 2001 2823060 283180 July 2001 2936558 281471 June 2001 2802093 273827 May 2001 2475367 265466 April 2001 2482288 256862 March 2001 2298821 244201 February 2001 2203353 230502 January 2001 2001011 225123 December 2000 1811864 214467 November 2000 1524620 197931 October 2000 1597399 183327 September 2000 1508381 170758 August 2000 1476602 152073 July 2000 1286714 132940 June 2000 1080206 123008 May 2000 852675 108327 April 2000 736805 95994 March 2000 612425 85749 February 2000 478614 74515 January 2000 418742 66239 December 1999 411008 63993 November 1999 384018 60116 October 1999 342285 55688 September 1999 282232 50334 August 1999 248925 51413 July 1999 202081 42183 June 1999 183793 40484 May 1999 156458 36976 April 1999 134255 32570 March 1999 112399 28482 February 1999 103088 25854 January 1999 81982 23742 December 1998 72545 22598 November 1998 63692 19239 October 1998 64171 15055 September 1998 57365 12540 August 1998 54450 12438 July 1998 47068 9904 June 1998 42508 9237 May 1998 39535 8682 April 1998 33696 6980 March 1998 30075 6439 February 1998 25343 5607 January 1998 16591 4343 December 1997 14624 3814 November 1997 13303 3431 October 1997 12654 3045 September 1997 7165 2256 August 1997 1501 1228 July 1997 1138 580 June 1997 312 239 1.1 modperl-docs/src/stats/logo-middle.png <<Binary file>> 1.1 modperl-docs/src/stats/logo.png <<Binary file>> 1.1 modperl-docs/src/stats/netcraft.html Index: netcraft.html =================================================================== <html> <head> <title>Netcraft's mod_perl statistics</title> </head> <body bgcolor=#ffffff > <hr> <IMG SRC="graph.jpg" HEIGHT=400 WIDTH=700 BORDER=0 ALT="Graph"> <BR> <BR> The <A HREF="graph.pl"> script </A> that produced this graph and the <A HREF="input.data"> raw input data </A> <BR> <p> If your site is running mod_perl, <a href="http://www.netcraft.co.uk/up/graph/">tell</a> the Netcraft survey. <p> <!-- monthly reports can be retrieved from http://www.netcraft.com/survey/Reports/200106/mod_perl.txt, adjust the year/month if needed --> <table cellpadding=3 border=1> <tr><td>Survey</td><td>hostnames</td><td>unique ip addresses</td></tr> <tr><td> December 2001 </td><td>2720503</td><td>326545</td></tr> <tr><td> November 2001 </td><td>2651419</td><td>322595</td></tr> <tr><td> October 2001 </td><td>2540267</td><td>293633</td></tr> <tr><td> September 2001 </td><td>2899420</td><td>281192</td></tr> <tr><td> August 2001 </td><td>2823060</td><td>283180</td></tr> <tr><td> July 2001 </td><td>2936558</td><td>281471</td></tr> <tr><td> June 2001 </td><td>2802093</td><td>273827</td></tr> <tr><td> May 2001 </td><td>2475367</td><td>265466</td></tr> <tr><td> April 2001 </td><td>2482288</td><td>256862</td></tr> <tr><td> March 2001 </td><td>2298821</td><td>244201</td></tr> <tr><td> February 2001 </td><td>2203353</td><td>230502</td></tr> <tr><td> January 2001 </td><td>2001011</td><td>225123</td></tr> <tr><td> December 2000 </td><td>1811864</td><td>214467</td></tr> <tr><td> November 2000 </td><td>1524620</td><td>197931</td></tr> <tr><td> October 2000 </td><td>1597399</td><td>183327</td></tr> <tr><td> September 2000 </td><td>1508381</td><td>170758</td></tr> <tr><td> August 2000 </td><td>1476602</td><td>152073</td></tr> <tr><td> July 2000 </td><td>1286714</td><td>132940</td></tr> <tr><td> June 2000 </td><td>1080206</td><td>123008</td></tr> <tr><td> May 2000 </td><td>852675</td><td>108327</td></tr> <tr><td> April 2000 </td><td>736805</td><td>95994</td></tr> <tr><td> March 2000 </td><td>612425</td><td>85749</td></tr> <tr><td> February 2000 </td><td>478614</td><td>74515</td></tr> <tr><td> January 2000 </td><td>418742</td><td>66239</td></tr> <tr><td> December 1999 </td><td>411008</td><td>63993</td></tr> <tr><td> November 1999 </td><td>384018</td><td>60116</td></tr> <tr><td> October 1999 </td><td>342285</td><td>55688</td></tr> <tr><td> September 1999 </td><td>282232</td><td>50334</td></tr> <tr><td> August 1999 </td><td>248925</td><td>51413</td></tr> <tr><td> July 1999 </td><td>202081</td><td>42183</td></tr> <tr><td> June 1999 </td><td>183793</td><td>40484</td></tr> <tr><td> May 1999 </td><td>156458</td><td>36976</td></tr> <tr><td> April 1999 </td><td>134255</td><td>32570</td></tr> <tr><td> March 1999 </td><td>112399</td><td>28482</td></tr> <tr><td> February 1999 </td><td>103088</td><td>25854</td></tr> <tr><td> January 1999 </td><td>81982</td><td>23742</td></tr> <tr><td> December 1998 </td><td>72545</td><td>22598</td></tr> <tr><td> November 1998 </td><td>63692</td><td>19239</td></tr> <tr><td> October 1998 </td><td>64171</td><td>15055</td></tr> <tr><td> September 1998 </td><td>57365</td><td>12540</td></tr> <tr><td> August 1998 </td><td>54450</td><td>12438</td></tr> <tr><td> July 1998 </td><td>47068</td><td>9904</td></tr> <tr><td> June 1998 </td><td>42508</td><td>9237</td></tr> <tr><td> May 1998 </td><td>39535</td><td>8682</td></tr> <tr><td> April 1998 </td><td>33696</td><td>6980</td></tr> <tr><td> March 1998 </td><td>30075</td><td>6439</td></tr> <tr><td> February 1998 </td><td>25343</td><td>5607</td></tr> <tr><td> January 1998 </td><td>16591</td><td>4343</td></tr> <tr><td> December 1997 </td><td>14624</td><td>3814</td></tr> <tr><td> November 1997 </td><td>13303</td><td>3431</td></tr> <tr><td> October 1997 </td><td>12654</td><td>3045</td></tr> <tr><td> September 1997 </td><td>7165</td><td>2256</td></tr> <tr><td> August 1997 </td><td>1501</td><td>1228</td></tr> <tr><td> July 1997 </td><td>1138</td><td>580</td></tr> <tr><td> June 1997 </td><td>312</td><td>239</td></tr> </table> </body> </html> 1.1 modperl-docs/src/stats/pseudo-graph.jpg <<Binary file>> 1.1 modperl-docs/src/stats/securityspace.html Index: securityspace.html =================================================================== <html> <head> <title>Security Space's mod_perl statistics</title> </head> <body bgcolor=#ffffff > SecuritySpace provides <a href="http://www.securityspace.com/s_survey/data/man.200112/apachemods.html"> mod_perl usage report</a>. Make sure to click on the menu at the left to pick the latest month, since the link hardcodes the month. They also provide a <a href="http://www.securityspace.com/s_survey/data/man.200112/apachemods.html?mod=cGVybA==">page</a> similar to this one with statistics and a graph based on the data collected by <a href="http://www.securityspace.com/">www.securityspace.com</a> </body> </html> 1.1 modperl-docs/src/stories/README Index: README =================================================================== WARNING: All the *.pod files are autogenerated, do not edit them directly! Instead, adjust the corresponding .txt files. After applying modifications, make sure to run: % ./make.pl file.txt file2.txt ... or to run all files % ./make.pl This run will generate .pod files and link them to the main index. 1.1 modperl-docs/src/stories/adultad.pod Index: adultad.pod =================================================================== =head1 NAME Performance raised from 1.5 banner per second to over 20 banners per second, 10 million banners a week without a problem =head1 Info =over =item * Author: Marshall Dudley E<lt>mdudley (at) EXECONN.COME<gt> =item * Date: Fri, 6 Mar 1998 10:30:10 -0500 =back =head1 The Story Lincoln Stein wrote: > > Hi All, > > I'm looking for more mod_perl success stories like the one that Jeff > posted the other day. They will be used for vignettes in an > introductory chapter of the book that Doug and I are writing. If you > have a story you'd like to share (particularly one in which mod_perl > "defeats" one of its competitors) could you mail it to me or post it > to the list? For the vignettes we need some sort of identifying > information, either along the lines of "a major Southwestern > University" or "Kulturbox company of Berlin, Germany". > > Jeff, do you mind us using your story and identifying Texas A&M > directly? > > Lincoln You may not want to touch this one, but adultad.com contracted me to fix their adult banner exchange to where it could throw more than 1.5 banners a second. I put it under mod_perl, and it now tops out at slightly over 20 banners per second. It is now throwing approximately 10 Million banners a week solid without a problem. The banner exchange (both banner throwing/logging and click-thru redirection/logging) is running 100% under mod_perl. Marshall =cut 1.1 modperl-docs/src/stories/adultad.txt Index: adultad.txt =================================================================== From: Marshall Dudley <[EMAIL PROTECTED]> Organization: The Executive Connection, Inc. Date: Fri, 6 Mar 1998 10:30:10 -0500 Subject: Performance raised from 1.5 banner per second to over 20 banners per second, 10 million banners a week without a problem Lincoln Stein wrote: > > Hi All, > > I'm looking for more mod_perl success stories like the one that Jeff > posted the other day. They will be used for vignettes in an > introductory chapter of the book that Doug and I are writing. If you > have a story you'd like to share (particularly one in which mod_perl > "defeats" one of its competitors) could you mail it to me or post it > to the list? For the vignettes we need some sort of identifying > information, either along the lines of "a major Southwestern > University" or "Kulturbox company of Berlin, Germany". > > Jeff, do you mind us using your story and identifying Texas A&M > directly? > > Lincoln You may not want to touch this one, but adultad.com contracted me to fix their adult banner exchange to where it could throw more than 1.5 banners a second. I put it under mod_perl, and it now tops out at slightly over 20 banners per second. It is now throwing approximately 10 Million banners a week solid without a problem. The banner exchange (both banner throwing/logging and click-thru redirection/logging) is running 100% under mod_perl. Marshall 1.1 modperl-docs/src/stories/allakhazam.com.pod Index: allakhazam.com.pod =================================================================== =head1 NAME Allakhazam's Magical Realm =head1 Info =over =item * Author: Andy Sharp E<lt>asharp E<lt>atE<gt> nector.comE<gt> =item * Date: Wed Nov 07 21:20:11 2001 =item * Traffic: 1,800,000 Unique Page Loads per day =item * URL: http://everquest.allakhazam.com, http://camelot.allakhazam.com, http://eqbeastiary.allakhazam.com. =back =head1 The Story Almost everything on the site runs in mod_perl. We have 4 systems running the site, one static server (PIII 450, Linux, Apache/mod_proxy). Two database servers (Dual P800, FreeBSD, Mysql) which are replicated, and the one mod_perl server (PIII 800, FreeBSD, Apache/mod_perl). The idea to use the proxy server to intercept any requests for text or images which was not dynamic came directly from the mod_perl guide (http://perl.apache.org/guide/). It's been a rough ride sometimes, as I've been in the process of learning the guts of Apache and more about perl than I ever thought I'd need to know. Since the site first started, I've migrated from a Module based system, to Apache::Registry (I wasn't writing good enough perl for the module based system to work well), and more recently have been migrating high volume scripts back to the Module/Handler based system. That's been the true benefit of mod_perl in developing this site. It's been a learning process as we roll out a new application or area of the site, watching our hit load go up and up, and then spending hours looking for performance bottlenecks in code which was never intended to run as often as it does. mod_perl gives us an incredibly fast development time. Sometimes, the speed of development does mean than lower quality code creeps into the production environment, but it allows us (me) to get things done which would take much much longer in another application environment. Perls "there are many ways to do it" extends into mod_perl, meaning that I can try something new quickly, and come back later to optimize it. Amoung the features we have on the site: Application layer security, based on a custom written Session tracking system. A recursively threaded forum system on every page, this system accounts for the bulk of the page views. It's also real time in tems of both comments being added, and ratings to the messages propigating through. User uploaded data through out the site, we allow players to track their characters, add meta information to database entries. Detailed web based administration system based on the Application security layer. The speed of development of perl, coupled with the rich resources of CPAN, and the incredible power of mod_perl have made this site possible. Running the same site in other technologies would have been possible, but would either require more hardware, or more time to develop. =cut 1.1 modperl-docs/src/stories/allakhazam.com.txt Index: allakhazam.com.txt =================================================================== From: Andy Sharp <asharp <at> nector.com> Organization: Date: Wed Nov 07 21:20:11 2001 Subject: Allakhazam's Magical Realm Traffic: 1,800,000 Unique Page Loads per day URL: http://everquest.allakhazam.com, http://camelot.allakhazam.com, http://eqbeastiary.allakhazam.com. Almost everything on the site runs in mod_perl. We have 4 systems running the site, one static server (PIII 450, Linux, Apache/mod_proxy). Two database servers (Dual P800, FreeBSD, Mysql) which are replicated, and the one mod_perl server (PIII 800, FreeBSD, Apache/mod_perl). The idea to use the proxy server to intercept any requests for text or images which was not dynamic came directly from the mod_perl guide (http://perl.apache.org/guide/). It's been a rough ride sometimes, as I've been in the process of learning the guts of Apache and more about perl than I ever thought I'd need to know. Since the site first started, I've migrated from a Module based system, to Apache::Registry (I wasn't writing good enough perl for the module based system to work well), and more recently have been migrating high volume scripts back to the Module/Handler based system. That's been the true benefit of mod_perl in developing this site. It's been a learning process as we roll out a new application or area of the site, watching our hit load go up and up, and then spending hours looking for performance bottlenecks in code which was never intended to run as often as it does. mod_perl gives us an incredibly fast development time. Sometimes, the speed of development does mean than lower quality code creeps into the production environment, but it allows us (me) to get things done which would take much much longer in another application environment. Perls "there are many ways to do it" extends into mod_perl, meaning that I can try something new quickly, and come back later to optimize it. Amoung the features we have on the site: Application layer security, based on a custom written Session tracking system. A recursively threaded forum system on every page, this system accounts for the bulk of the page views. It's also real time in tems of both comments being added, and ratings to the messages propigating through. User uploaded data through out the site, we allow players to track their characters, add meta information to database entries. Detailed web based administration system based on the Application security layer. The speed of development of perl, coupled with the rich resources of CPAN, and the incredible power of mod_perl have made this site possible. Running the same site in other technologies would have been possible, but would either require more hardware, or more time to develop. 1.1 modperl-docs/src/stories/bsat.pod Index: bsat.pod =================================================================== =head1 NAME BSat =head1 Info =over =item * Author: Mike Fletcher E<lt>lemur1 (at) MINDSPRING.COME<gt> =item * Date: Fri, 6 Mar 1998 13:01:58 -0500 =back =head1 The Story At my former employer (Aaaahh . . . Sorry, just feels good to say that :), I rewrote a commercial interface to a defect tracking system. The original product was a bunch of Bourne shell scripts that all sourced one humoungus configuration script. It took on the order of 10-12 seconds to return some pages (and some of those weren't even excuting any queries against the defect database) on a mostly idle SS20. Under mod_perl, that dropped to approximately 2-4 seconds for everything but really large queries (i.e. everything in the db). =cut 1.1 modperl-docs/src/stories/bsat.txt Index: bsat.txt =================================================================== Subject: BSat From: Mike Fletcher <[EMAIL PROTECTED]> Date: Fri, 6 Mar 1998 13:01:58 -0500 At my former employer (Aaaahh . . . Sorry, just feels good to say that :), I rewrote a commercial interface to a defect tracking system. The original product was a bunch of Bourne shell scripts that all sourced one humoungus configuration script. It took on the order of 10-12 seconds to return some pages (and some of those weren't even excuting any queries against the defect database) on a mostly idle SS20. Under mod_perl, that dropped to approximately 2-4 seconds for everything but really large queries (i.e. everything in the db). 1.1 modperl-docs/src/stories/calmaeth.maths.uwa.edu.au.pod Index: calmaeth.maths.uwa.edu.au.pod =================================================================== =head1 NAME Computer Aided Teaching system at Mathematics Department at the University of Western Australia =head1 Info =over =item * Author: Kevin Judd E<lt>kevin (at) MATHS.UWA.EDU.AUE<gt> =item * Date: Mon, 9 Mar 1998 09:41:44 +0800 =back =head1 The Story At the Mathematics Department at the University of Western Australia I have a web-based computer aided teaching system using mod_perl. The students have individual weekly assignments in calculus, statistics, linear algebra with diagnostics and assessment built in. The system relieves academic staff of the burden of assignment marking and provides more personal interaction with students. The system requires database management and connection to a computer algebra engine. The transfer from a slow/unreliable/Macintosh/Hypercard/Mathematica system to a fast/reliable/web system took a couple of months and I had never programmed in perl before. The whole excersize was amazingly painless and it was entirely mod_perl's doing. http://CalMaeth.maths.uwa.edu.au Kevin =cut 1.1 modperl-docs/src/stories/calmaeth.maths.uwa.edu.au.txt Index: calmaeth.maths.uwa.edu.au.txt =================================================================== Subject: Computer Aided Teaching system at Mathematics Department at the University of Western Australia From: Kevin Judd <[EMAIL PROTECTED]> Date: Mon, 9 Mar 1998 09:41:44 +0800 At the Mathematics Department at the University of Western Australia I have a web-based computer aided teaching system using mod_perl. The students have individual weekly assignments in calculus, statistics, linear algebra with diagnostics and assessment built in. The system relieves academic staff of the burden of assignment marking and provides more personal interaction with students. The system requires database management and connection to a computer algebra engine. The transfer from a slow/unreliable/Macintosh/Hypercard/Mathematica system to a fast/reliable/web system took a couple of months and I had never programmed in perl before. The whole excersize was amazingly painless and it was entirely mod_perl's doing. http://CalMaeth.maths.uwa.edu.au Kevin 1.1 modperl-docs/src/stories/chapters.pl Index: chapters.pl =================================================================== @chapters = ( 'www.bivio.com.pod' ); 1; 1.1 modperl-docs/src/stories/colbychem.pod Index: colbychem.pod =================================================================== =head1 NAME ColbyChem: a free web server for ISIS/Host =head1 Info =over =item * Author: jwkuehne (at) colby.edu (John Kuehne) =item * Date: Wed, 13 May 1998 10:23:31 -0400 (EDT) =back =head1 The Story Dear mod_perl gang, The following is somewhat late in the "success story" thread of a few months ago, but I think there might be some interest for the database crowd. Below is a brief summary of a talk that I gave at a meeting in Philadelphia last week. Sponsored by Molecular Designs Limited (MDL), the meeting was attended by several hundred representatives of industry and government, and was concerned with the problems related to large molecular and reaction databases, and their use in combinatorial chemistry, drug discovery, etc. (These are databases consisting of molecular structures and their models, and reactions. A database user can pose an sql in the language of chemistry - molecular structures drawn with ISIS/Draw or ChemDraw - to find data that have substructure similarity, conformationally flexible similarity, reaction similarity, and much more. The structures, models, and reactions are displayed using MDL's chime plugin, itself based on RASMOL, which renders 'live' 3-D drawings that can be rotated and displayed in a number of ways from within the web page.) ******************************************************************************* Last November, Dr. Shattuck proposed that we build a reaction database of reaction mechanisms studied by Dr. Mundy and his colleagues, using MDL's reaction database software. Furthermore, it was his idea that we make this a web project open to all. Our first idea was to buy a license for MDL's ChemScape server, which links NetScape Enterprise server to MDL's database library. Unfortunately, the upgrade from our current MDL license to include ChemScape server was too expensive, not to mention NetScape Enterprise server. I started working on a web server based on Apache and mod_perl that would act as a gateway to MDL's database software. Although MDL's database server protocol is not public, they do provide a command line interface called hostcli, which has most of the functionality of the proprietary server. The use of hostcli is restricted to one machine, but within that machine one may run any number of hostcli processes. ColbyChem, the project that I presented at the meeting, makes use of hostcli by opening it on a pseudoterminal for each database user. The novel aspect of ColbyChem is its use of the integrated Apache/perl server running in single user (-X) mode for each database user. Because perl is embedded in Apache, dynamic variables are retained between calls to the server children. Certain Apache packages use this to open a persistent database connection to industry standard databases such as Oracle, but this is not an option with proprietary interfaces, such as MDL's. In order to adapt this to the idea of opening hostcli on a pty for each user, I run a dedicated Apache/perl daemon for each user, in single-mode (-X), on a separate port. That way, each Apache daemon caches the perl program and retains dynamic variables between calls. In essence, it becomes a new application, composed of Apache and perl, running under my program. The effect is similar to an X client. The browser is like the X server. Entrance to ColbyChem is through a dedicated login daemon running on port 9000. Upon receiving a valid login name, the daemon forks an Apache/perl daemon on a port specified in a password-like file, and transfers the browser to this new port. Authentication, which is very important here, is carried out entirely on this new daemon. The user supplies a password. ColbyChem encrypts it and compares with the encrypted password assigned to the user. If successful, ColbyChem forks and execs hostcli on the pty. It then records the IP number and sends back a cookie for secondary authentication upon browser reconnect. The cookie is different for each session, is not based only on an easily guessed system parameters like time or checksums, and does not reveal, to within the limitations of crypt(), the original or encrypted password. My solution for the cookie is to take the password, which is secret, and permute it using rand() seeded by time. The permuted cleartext password is then encrypted and sent back as the cookie. Thus, even if one knew the permutation order and cookie, it would still be impossible to recover the original password. ColbyChem presents side-by-side frames. The left frame contains a query builder and controls for hit-list logic and display. The right frame displays the data indented in the natural hierarchy of the database. Models, structures, and reactions are displayed using MDL's chime plugin. Essentially, ColbyChem is nothing more than a graphical front-end for hostcli, written in 1200 lines of perl. The heart of ColbyChem is two routines, each a page of code. The first routine, rd2perl, translates an export file from hostcli into a perl data structure that has the hierarchy of the original database, i.e. it imports the database into perl. The second routine recursively descends the branches of this structure until it reaches the tips, whereupon it prints out the data indented to reflect the database hierarchy. MDL has just delivered an Oracle interface to its molecular and reaction databases. This opens the possibility of using established packages for persistent database connnections that offer the flexibility of ChemScape server from within Apache/perl, without the novel hack of running dedicated daemons on separate ports for each user. John Kuehne, Ph.D. Information Technology Services Colby College 4200 Mayflower Hill Drive Waterville ME 04901 [EMAIL PROTECTED] 207-872-3652 =cut 1.1 modperl-docs/src/stories/colbychem.txt Index: colbychem.txt =================================================================== Subject: ColbyChem: a free web server for ISIS/Host Date: Wed, 13 May 1998 10:23:31 -0400 (EDT) From: [EMAIL PROTECTED] (John Kuehne) Reply-To: modperl@apache.org To: modperl@apache.org Dear mod_perl gang, The following is somewhat late in the "success story" thread of a few months ago, but I think there might be some interest for the database crowd. Below is a brief summary of a talk that I gave at a meeting in Philadelphia last week. Sponsored by Molecular Designs Limited (MDL), the meeting was attended by several hundred representatives of industry and government, and was concerned with the problems related to large molecular and reaction databases, and their use in combinatorial chemistry, drug discovery, etc. (These are databases consisting of molecular structures and their models, and reactions. A database user can pose an sql in the language of chemistry - molecular structures drawn with ISIS/Draw or ChemDraw - to find data that have substructure similarity, conformationally flexible similarity, reaction similarity, and much more. The structures, models, and reactions are displayed using MDL's chime plugin, itself based on RASMOL, which renders 'live' 3-D drawings that can be rotated and displayed in a number of ways from within the web page.) ******************************************************************************* Last November, Dr. Shattuck proposed that we build a reaction database of reaction mechanisms studied by Dr. Mundy and his colleagues, using MDL's reaction database software. Furthermore, it was his idea that we make this a web project open to all. Our first idea was to buy a license for MDL's ChemScape server, which links NetScape Enterprise server to MDL's database library. Unfortunately, the upgrade from our current MDL license to include ChemScape server was too expensive, not to mention NetScape Enterprise server. I started working on a web server based on Apache and mod_perl that would act as a gateway to MDL's database software. Although MDL's database server protocol is not public, they do provide a command line interface called hostcli, which has most of the functionality of the proprietary server. The use of hostcli is restricted to one machine, but within that machine one may run any number of hostcli processes. ColbyChem, the project that I presented at the meeting, makes use of hostcli by opening it on a pseudoterminal for each database user. The novel aspect of ColbyChem is its use of the integrated Apache/perl server running in single user (-X) mode for each database user. Because perl is embedded in Apache, dynamic variables are retained between calls to the server children. Certain Apache packages use this to open a persistent database connection to industry standard databases such as Oracle, but this is not an option with proprietary interfaces, such as MDL's. In order to adapt this to the idea of opening hostcli on a pty for each user, I run a dedicated Apache/perl daemon for each user, in single-mode (-X), on a separate port. That way, each Apache daemon caches the perl program and retains dynamic variables between calls. In essence, it becomes a new application, composed of Apache and perl, running under my program. The effect is similar to an X client. The browser is like the X server. Entrance to ColbyChem is through a dedicated login daemon running on port 9000. Upon receiving a valid login name, the daemon forks an Apache/perl daemon on a port specified in a password-like file, and transfers the browser to this new port. Authentication, which is very important here, is carried out entirely on this new daemon. The user supplies a password. ColbyChem encrypts it and compares with the encrypted password assigned to the user. If successful, ColbyChem forks and execs hostcli on the pty. It then records the IP number and sends back a cookie for secondary authentication upon browser reconnect. The cookie is different for each session, is not based only on an easily guessed system parameters like time or checksums, and does not reveal, to within the limitations of crypt(), the original or encrypted password. My solution for the cookie is to take the password, which is secret, and permute it using rand() seeded by time. The permuted cleartext password is then encrypted and sent back as the cookie. Thus, even if one knew the permutation order and cookie, it would still be impossible to recover the original password. ColbyChem presents side-by-side frames. The left frame contains a query builder and controls for hit-list logic and display. The right frame displays the data indented in the natural hierarchy of the database. Models, structures, and reactions are displayed using MDL's chime plugin. Essentially, ColbyChem is nothing more than a graphical front-end for hostcli, written in 1200 lines of perl. The heart of ColbyChem is two routines, each a page of code. The first routine, rd2perl, translates an export file from hostcli into a perl data structure that has the hierarchy of the original database, i.e. it imports the database into perl. The second routine recursively descends the branches of this structure until it reaches the tips, whereupon it prints out the data indented to reflect the database hierarchy. MDL has just delivered an Oracle interface to its molecular and reaction databases. This opens the possibility of using established packages for persistent database connnections that offer the flexibility of ChemScape server from within Apache/perl, without the novel hack of running dedicated daemons on separate ports for each user. John Kuehne, Ph.D. Information Technology Services Colby College 4200 Mayflower Hill Drive Waterville ME 04901 [EMAIL PROTECTED] 207-872-3652 1.1 modperl-docs/src/stories/config.cfg Index: config.cfg =================================================================== # WARNING: this file is autogenerated, DO NOT EDIT IT # edit make.pl instead use vars qw(@c); @c = ( id => 'success_stories', title => "Extraordinaire Technologie", abstract => "A single picture is worth a thousand words...", body => { bot => 'index_bot.html', }, # an ordered list pod files relative to $c{src} # the order is important for a correct placing of the chapters group => 'Sites Using mod_perl', chapters => ['sites.html'], group => 'Success Stories', chapters => [ 'adultad.pod', 'allakhazam.com.pod', 'bsat.pod', 'calmaeth.maths.uwa.edu.au.pod', 'colbychem.pod', 'iagore.com.pod', 'idl-net.pod', 'imdb.com.pod', 'openscape.org.pod', 'presto.pod', 'rent.com.pod', 'seds.org.pod', 'singlesheaven.com.pod', 'tamu.pod', 'tgix.pod', 'winamillion.msn.com.pod', 'wmboerse.pod', 'www.afp-direct.com.pod', 'www.bivio.com.pod', 'www.lind-waldock.com.pod' ], ); 1; 1.1 modperl-docs/src/stories/iagore.com.pod Index: iagore.com.pod =================================================================== =head1 NAME iAgora - Study, Travel, Work Abroad - Connecting Internationals =head1 Info =over =item * Author: Roger Espel Llima E<lt>roger (at) iagora.netE<gt> =item * Date: Fri, 16 Nov 2001 17:58:05 +0100 =item * Traffic: several million hits / month =item * URL: http://www.iagora.com/ =back =head1 The Story iAgora was started in mid-1998, as a community site for internationally minded people. After investigating the major existing web development systems, we chose to go with Linux, Apache and mod_perl. Three years later, we're very happy with this choice. At iAgora we are constantly adding features and sections to our site, and refining the ones we have. For us it was very important to have a flexible platform, that would give us complete freedom in organizing our code, and customizing how the pages are generated. We have found the combination of Linux, Apache and mod_perl to be: * cost-effective There are no software licences to pay, the programs are easy enough to install and configure, and many free support and middleware modules can be obtained from CPAN. * stable The running servers have had very few crashes, and generally not needed much maintenance. We have also found it very useful to be able to administer the servers remotely. * flexible Since mod_perl lets perl access low-level hooks within Apache, it is possible to have complete control over any aspect of its operation. For instance, we found it easy and convenient to create virtual URLs, where some path elements were matched to database queries rather than directories on disk, while still basically serving an HTML file. * adapted for large site creation Mod_perl gives us complete control over how HTML and perl code interface to each other. By using a templating to the fullest extent, we minimize the amount of duplication both in HTML and perl. This also lets us have common navigation and design accross the whole site, while separately maintaining the various form-based applications that make the site. Contact Person: * Technical: Roger Espel Llima <[EMAIL PROTECTED]> * Business: Philippe Negre <[EMAIL PROTECTED]> =cut 1.1 modperl-docs/src/stories/iagore.com.txt Index: iagore.com.txt =================================================================== Date: Fri, 16 Nov 2001 17:58:05 +0100 From: Roger Espel Llima <[EMAIL PROTECTED]> To: Stas Bekman <[EMAIL PROTECTED]> Subject: iAgora - Study, Travel, Work Abroad - Connecting Internationals URL: http://www.iagora.com/ Traffic: several million hits / month iAgora was started in mid-1998, as a community site for internationally minded people. After investigating the major existing web development systems, we chose to go with Linux, Apache and mod_perl. Three years later, we're very happy with this choice. At iAgora we are constantly adding features and sections to our site, and refining the ones we have. For us it was very important to have a flexible platform, that would give us complete freedom in organizing our code, and customizing how the pages are generated. We have found the combination of Linux, Apache and mod_perl to be: * cost-effective There are no software licences to pay, the programs are easy enough to install and configure, and many free support and middleware modules can be obtained from CPAN. * stable The running servers have had very few crashes, and generally not needed much maintenance. We have also found it very useful to be able to administer the servers remotely. * flexible Since mod_perl lets perl access low-level hooks within Apache, it is possible to have complete control over any aspect of its operation. For instance, we found it easy and convenient to create virtual URLs, where some path elements were matched to database queries rather than directories on disk, while still basically serving an HTML file. * adapted for large site creation Mod_perl gives us complete control over how HTML and perl code interface to each other. By using a templating to the fullest extent, we minimize the amount of duplication both in HTML and perl. This also lets us have common navigation and design accross the whole site, while separately maintaining the various form-based applications that make the site. Contact Person: * Technical: Roger Espel Llima <[EMAIL PROTECTED]> * Business: Philippe Negre <[EMAIL PROTECTED]> 1.1 modperl-docs/src/stories/idl-net.pod Index: idl-net.pod =================================================================== =head1 NAME Performance increase of around 1100% compared to ASP =head1 Info =over =item * Author: Abigaël Duesberg E<lt>abi (at) idl-net.comE<gt> =item * Date: Tue, 10 Nov 1998 23:16:31 +0100 =back =head1 The Story Hi, I saw that there were requests for success stories, so here is ours. We had to create 21 websites that basically had the same textual content (but different ads+clickthroughs, different designs, different acces rights, etc...), that needed to sometimes remain unseen and act as gateways to other sites, and sometimes show up, with changing content and links according to user rights. Also, it had to answer search engine bots with different content using yet another database of robot user agents, as well as (coupled with LWP stuff) try to relate automatic posting to search engine databases to bots that came visiting (I know this isn't really good, but then, food is sometimes more important, :-( ) and to optimise meta tags, resubmission, etc... It's all done in mod_perl, and in three days time it served a bit more than 4 million mod_perl hits, and submitted 180.000 forms to search engines. Everything's running on a 300mhz x86, with 128megs of ram. As a comparison, the early development tests were done using CGI on the same PC, and ASP on a more powerful one running IIS. We also tried using java servlets but the results were so desperate that I will not mention them here in respect for those people that use them. Given the time it took either for the CGI to be finished, or for the ASP to connect to it's SQL Server 6.5 to yield the right results or send the right page, we had been planning to buy 5 other PCs to get the job done with those solutions. Our benchmarks run with about 15.000 iterations of a series of calls to the servers that were under no other load show that ASP is hardly faster than CGI when database access is used (and then you have to take into account the fact that the ASP PC was fairly stronger, (I don't remember the CPU but it had 512megs of ram), but that mod_perl induces a performance increase of around 1100% !!! Also, it seems to be using less ressources (though I haven't tested that fully), or using them for so short time lapses that one doesn't even notice. The mod_perl development of the whole project was done by one person in less than three weeks (stress-testing included) , and it is running flawlessly. I am looking for something stronger, but all that comes to mind is a deeply heart-felt "Thanks !". Abigaël Duesberg ASP - Lotus - LiveWire - Perl - Java =cut 1.1 modperl-docs/src/stories/idl-net.txt Index: idl-net.txt =================================================================== Date: Tue, 10 Nov 1998 23:16:31 +0100 From: Abigaël Duesberg <[EMAIL PROTECTED]> To: modperl <modperl@apache.org> Subject: Performance increase of around 1100% compared to ASP Hi, I saw that there were requests for success stories, so here is ours. We had to create 21 websites that basically had the same textual content (but different ads+clickthroughs, different designs, different acces rights, etc...), that needed to sometimes remain unseen and act as gateways to other sites, and sometimes show up, with changing content and links according to user rights. Also, it had to answer search engine bots with different content using yet another database of robot user agents, as well as (coupled with LWP stuff) try to relate automatic posting to search engine databases to bots that came visiting (I know this isn't really good, but then, food is sometimes more important, :-( ) and to optimise meta tags, resubmission, etc... It's all done in mod_perl, and in three days time it served a bit more than 4 million mod_perl hits, and submitted 180.000 forms to search engines. Everything's running on a 300mhz x86, with 128megs of ram. As a comparison, the early development tests were done using CGI on the same PC, and ASP on a more powerful one running IIS. We also tried using java servlets but the results were so desperate that I will not mention them here in respect for those people that use them. Given the time it took either for the CGI to be finished, or for the ASP to connect to it's SQL Server 6.5 to yield the right results or send the right page, we had been planning to buy 5 other PCs to get the job done with those solutions. Our benchmarks run with about 15.000 iterations of a series of calls to the servers that were under no other load show that ASP is hardly faster than CGI when database access is used (and then you have to take into account the fact that the ASP PC was fairly stronger, (I don't remember the CPU but it had 512megs of ram), but that mod_perl induces a performance increase of around 1100% !!! Also, it seems to be using less ressources (though I haven't tested that fully), or using them for so short time lapses that one doesn't even notice. The mod_perl development of the whole project was done by one person in less than three weeks (stress-testing included) , and it is running flawlessly. I am looking for something stronger, but all that comes to mind is a deeply heart-felt "Thanks !". Abigaël Duesberg ASP - Lotus - LiveWire - Perl - Java 1.1 modperl-docs/src/stories/imdb.com.pod Index: imdb.com.pod =================================================================== =head1 NAME moviesdatabase.com or imdb.com =head1 Info =over =item * Author: Rob Hartill E<lt>robh (at) IMDB.COME<gt> =item * Date: Fri, 6 Mar 1998 21:35:40 +0000 =back =head1 The Story On Fri, 6 Mar 1998, Lincoln Stein wrote: > Hi All, > > I'm looking for more mod_perl success stories like the one that Jeff > posted the other day. They will be used for vignettes in an > introductory chapter of the book that Doug and I are writing. If you > have a story you'd like to share (particularly one in which mod_perl > "defeats" one of its competitors) could you mail it to me or post it > to the list? For the vignettes we need some sort of identifying > information, either along the lines of "a major Southwestern > University" or "Kulturbox company of Berlin, Germany". We use mod_perl for just about everything and then some too; serving around 1.25 million pageviews per day. All database lookups are handled inside Apache via mod_perl. Each request also goes through several mod_perl handlers and is then reformated on the fly with mod_perl SSI to embed advertising banners and give different views of the site depending on the hostname used. -- Rob Hartill Internet Movie Database (Ltd) http://www.moviedatabase.com/ .. a site for sore eyes. The Internet Movie Database (as we all know, a mod_perl driven site) won a 1997 Webby as the best Film site on the web. =cut 1.1 modperl-docs/src/stories/imdb.com.txt Index: imdb.com.txt =================================================================== Subject: moviesdatabase.com or imdb.com From: Rob Hartill <[EMAIL PROTECTED]> Date: Fri, 6 Mar 1998 21:35:40 +0000 On Fri, 6 Mar 1998, Lincoln Stein wrote: > Hi All, > > I'm looking for more mod_perl success stories like the one that Jeff > posted the other day. They will be used for vignettes in an > introductory chapter of the book that Doug and I are writing. If you > have a story you'd like to share (particularly one in which mod_perl > "defeats" one of its competitors) could you mail it to me or post it > to the list? For the vignettes we need some sort of identifying > information, either along the lines of "a major Southwestern > University" or "Kulturbox company of Berlin, Germany". We use mod_perl for just about everything and then some too; serving around 1.25 million pageviews per day. All database lookups are handled inside Apache via mod_perl. Each request also goes through several mod_perl handlers and is then reformated on the fly with mod_perl SSI to embed advertising banners and give different views of the site depending on the hostname used. -- Rob Hartill Internet Movie Database (Ltd) http://www.moviedatabase.com/ .. a site for sore eyes. The Internet Movie Database (as we all know, a mod_perl driven site) won a 1997 Webby as the best Film site on the web. 1.1 modperl-docs/src/stories/index_bot.html Index: index_bot.html =================================================================== <html> <head> <title>index bottom</title> </head> <body bgcolor="white"> If you have a success story to share please submit it to the modperl (at) apache.org mailing list. Please include the following information: <PRE> URL: Title: Contact Person: Traffic: (hits/day/month/whatever) Success Story: </PRE> </body> </html> 1.1 modperl-docs/src/stories/make.pl Index: make.pl =================================================================== #!/usr/bin/perl use strict; use warnings; use Template; use Data::Dumper; my %valid_headers = map {$_ => 1} qw(From Subject Date URL Traffic); my $save_config_file = "config.cfg"; my $tmpl_file = "story.tmpl"; my $config = { INCLUDE_PATH => ".", OUTPUT_PATH => ".", }; my $template = Template->new($config) or die $Template::ERROR, "\n"; my %map = ( '>' => 'E<gt>', '<' => 'E<lt>', '&' => 'E<amp>', ); ############################################################################### my @files = @ARGV ? @ARGV : <*.txt>; for my $file (@files) { (my $pod_file = $file) =~ s/\.txt$/.pod/; my $data = process($file); generate($pod_file, $data); } update_config_file(); sub process { my $file = shift; open my $fh, $file or die "cannot open $file: $!"; local $/ = ""; my $headers = <$fh>; local $/; my $body = <$fh>; close $fh; # headers my %headers = map {(/(\w+)\s*:\s+(.*)/ && $valid_headers{$1}) ? ($1,$2) : ()} split /\n/, $headers; my $title = delete $headers{Subject}; die "error: no Subject: in $file" unless $title; # antispam $headers{Author} = delete $headers{From}; $headers{Author} =~ s/\@/ (at) /; # print Dumper \%headers; # print "headers:\n$headers\n"; # print "body:\n$body\n"; my %data = ( title => $title, headers => \%headers, ); # cleanup for pod _encode(\%data); # keep the body as is $body =~ s/^/ /mg; $data{body} = $body; return \%data; } sub generate { my($filename, $data) = @_; print "+++ generating $filename\n"; # print Dumper [EMAIL PROTECTED]; my $vars = {story => $data}; $template->process($tmpl_file, $vars, $filename) or die "error: ", $template->error(), "\n"; } # automatically generate the config file maintain the list of # available stories, so when new stories are added they will be # automatically linked on the next rebuild. sub update_config_file { my $code = join ",\n" . " " x 20, map {qq('$_')} <*.pod>; local $/; my $tmpl = <DATA>; $tmpl =~ s/\[CHAPTERS\]/$code/; print "+++ generating $save_config_file\n"; open my $fh, '>', $save_config_file or die "cannot open $save_config_file:$!"; print $fh $tmpl; close $fh; } sub encode { $_[0] =~ s/([>&<])/$map{$1}/g; } sub _encode { my $ref = ref $_[0]; if (!$ref) { encode($_[0]) if defined $_[0]; } elsif ($ref eq 'ARRAY') { _encode($_) for @{$_[0]}; } elsif ($ref eq 'HASH') { _encode($_[0]->{$_}) for keys %{$_[0]}; } else { # nothing } } __DATA__ # WARNING: this file is autogenerated, DO NOT EDIT IT # edit make.pl instead use vars qw(@c); @c = ( id => 'success_stories', title => "Extraordinaire Technologie", abstract => "A single picture is worth a thousand words...", body => { bot => 'index_bot.html', }, # an ordered list pod files relative to $c{src} # the order is important for a correct placing of the chapters group => 'Sites Using mod_perl', chapters => ['sites.html'], group => 'Success Stories', chapters => [ [CHAPTERS] ], ); 1; 1.1 modperl-docs/src/stories/openscape.org.pod Index: openscape.org.pod =================================================================== =head1 NAME Mod_perl Uber Alles =head1 Info =over =item * Author: Christopher A. Thompson E<lt>x4 (at) ROCKETMAIL.COME<gt> =item * Date: Wed, 15 Apr 1998 09:34:19 -0700 =back =head1 The Story I have put up a site that's a true testament to mod perl's power. (He said humbly). http://openscape.org now contains the new site that I've been writing over the last 2 weeks. The site is generated 100% dynamically by my module Obelisk.pm. Apache 1.2.6 and mod_perl 1.10 are used, and the module is inserted to run on <Location />. MySQL and DBD::MySQL provide the back end object store. I keep all text, news items, and the like in the SQL database. at request time, the module takes the following steps. $method = $r->method; $loc = $r->uri; $loc is then parsed out. Depending on the "page" requested the module generates a page based on several SQL calls, and prints the result back out. I pass args on to the subrequests this way too, such as http://openscape.org/rnews/12 will read news item 12. It's all handled in the URL parsing. For the forms handling when you post a news item, I use CGI_Lite to grab things off POST. (If $method is POST), since Apache:: cant grab POST by default. I plan to implement my own POST handler, I just havent gotten around to it. You can post comments on news items, and those will be generated dynamically too. (a-la slashdot.org if you're familiar). The amazing part of all this is twofold. First, it's all done in 427 lines of perl and 6 SQL tables. Slashdot is 2500 lines of code. Second, while I dont have any definitive numbers, this looks like it's going to scale very large. I've thrown a few large parallel requests at it (just simple LWP gets, in many parallel processes) and it doesnt seem to slow down. This box is just a P5/166 with 64megs RAM and Linux 2.0.31. This all occurs with no CGI.pm, no Apache::Registry, no on disk content but the Obelisk.pm. I am so spoiled by this method that I dont think I can go back. I'm writing a Doc on the process and I'll have it up soon. I know I'm not the first person to do this, but the process doesnt seem to be exceedingly documented. Oh, and Obelisk will be GPL'ed as soon as I gather it into a form that's fit for human consumption. Thanks Doug and crew for mod_perl. -Chris === ------------------------------------------------------------ Chris Thompson |I do not wish it to be misconstrued that [EMAIL PROTECTED] | at no time was I not in total [EMAIL PROTECTED] | Disagreement --Anonymous ------------------------------------------------------------ =cut 1.1 modperl-docs/src/stories/openscape.org.txt Index: openscape.org.txt =================================================================== Subject: Mod_perl Uber Alles From: Christopher A. Thompson <[EMAIL PROTECTED]> Date: Wed, 15 Apr 1998 09:34:19 -0700 I have put up a site that's a true testament to mod perl's power. (He said humbly). http://openscape.org now contains the new site that I've been writing over the last 2 weeks. The site is generated 100% dynamically by my module Obelisk.pm. Apache 1.2.6 and mod_perl 1.10 are used, and the module is inserted to run on <Location />. MySQL and DBD::MySQL provide the back end object store. I keep all text, news items, and the like in the SQL database. at request time, the module takes the following steps. $method = $r->method; $loc = $r->uri; $loc is then parsed out. Depending on the "page" requested the module generates a page based on several SQL calls, and prints the result back out. I pass args on to the subrequests this way too, such as http://openscape.org/rnews/12 will read news item 12. It's all handled in the URL parsing. For the forms handling when you post a news item, I use CGI_Lite to grab things off POST. (If $method is POST), since Apache:: cant grab POST by default. I plan to implement my own POST handler, I just havent gotten around to it. You can post comments on news items, and those will be generated dynamically too. (a-la slashdot.org if you're familiar). The amazing part of all this is twofold. First, it's all done in 427 lines of perl and 6 SQL tables. Slashdot is 2500 lines of code. Second, while I dont have any definitive numbers, this looks like it's going to scale very large. I've thrown a few large parallel requests at it (just simple LWP gets, in many parallel processes) and it doesnt seem to slow down. This box is just a P5/166 with 64megs RAM and Linux 2.0.31. This all occurs with no CGI.pm, no Apache::Registry, no on disk content but the Obelisk.pm. I am so spoiled by this method that I dont think I can go back. I'm writing a Doc on the process and I'll have it up soon. I know I'm not the first person to do this, but the process doesnt seem to be exceedingly documented. Oh, and Obelisk will be GPL'ed as soon as I gather it into a form that's fit for human consumption. Thanks Doug and crew for mod_perl. -Chris === ------------------------------------------------------------ Chris Thompson |I do not wish it to be misconstrued that [EMAIL PROTECTED] | at no time was I not in total [EMAIL PROTECTED] | Disagreement --Anonymous ------------------------------------------------------------ 1.1 modperl-docs/src/stories/presto.pod Index: presto.pod =================================================================== =head1 NAME Forced to improve the quality =head1 Info =over =item * Author: modus (at) PR.ES.TO =item * Date: Fri, 6 Mar 1998 10:03:41 -0800 =back =head1 The Story At the risk of this becoming a giant mod_perl lovefest, I'll second that. I've learned more about perl & apache in my dozen months or so of mod_perl than in my many years of work with apache & perl. mod_perl has definately forced me to improve the quality of my perl coding manyfold & taught me more than I ever thought I wanted to know about Apache. On Fri, Mar 06, 1998 at 06:53:36PM +0100, Eric Cholet wrote: > We've a mod_perl web site that allows subscribers to view news stories and > news photographs from a major news agency. All content is received via a > satellite link and users can view it in real time, as well as search > through a huge archive database. > > What I like about mod_perl is its "double" reward: not only is it fast and > efficient, but it has been an enlightening experience working with such an > elegant tool and reading this list. > > ---- > Eric CHOLET - LOGILUNE > email: [EMAIL PROTECTED] > I am Pentium of Borg. Division is Futile. You will be approximated. -- Patrick Michael Kane <[EMAIL PROTECTED]> =cut 1.1 modperl-docs/src/stories/presto.txt Index: presto.txt =================================================================== Subject: Forced to improve the quality From: [EMAIL PROTECTED] Date: Fri, 6 Mar 1998 10:03:41 -0800 At the risk of this becoming a giant mod_perl lovefest, I'll second that. I've learned more about perl & apache in my dozen months or so of mod_perl than in my many years of work with apache & perl. mod_perl has definately forced me to improve the quality of my perl coding manyfold & taught me more than I ever thought I wanted to know about Apache. On Fri, Mar 06, 1998 at 06:53:36PM +0100, Eric Cholet wrote: > We've a mod_perl web site that allows subscribers to view news stories and > news photographs from a major news agency. All content is received via a > satellite link and users can view it in real time, as well as search > through a huge archive database. > > What I like about mod_perl is its "double" reward: not only is it fast and > efficient, but it has been an enlightening experience working with such an > elegant tool and reading this list. > > ---- > Eric CHOLET - LOGILUNE > email: [EMAIL PROTECTED] > I am Pentium of Borg. Division is Futile. You will be approximated. -- Patrick Michael Kane <[EMAIL PROTECTED]> 1.1 modperl-docs/src/stories/rent.com.pod Index: rent.com.pod =================================================================== =head1 NAME Rent.com runs mod_perl =head1 Info =over =item * Author: Eric Hammond E<lt>ehammond (at) rent.comE<gt> =item * Date: Fri, 14 Dec 2001 14:27:41 -0800 =back =head1 The Story http://www.rent.com/ Rent.com is a dynamic, database driven web site built on mod_perl. Initial development took 3 months to replace an NT/IIS/ASP implementation. =cut 1.1 modperl-docs/src/stories/rent.com.txt Index: rent.com.txt =================================================================== Date: Fri, 14 Dec 2001 14:27:41 -0800 From: Eric Hammond <[EMAIL PROTECTED]> Subject: Rent.com runs mod_perl http://www.rent.com/ Rent.com is a dynamic, database driven web site built on mod_perl. Initial development took 3 months to replace an NT/IIS/ASP implementation. 1.1 modperl-docs/src/stories/seds.org.pod Index: seds.org.pod =================================================================== =head1 NAME Students astronomy site =head1 Info =over =item * Author: Smelly Belly E<lt>smiley (at) SEDS.ORGE<gt> =item * Date: Fri, 6 Mar 1998 12:07:59 -0700 =back =head1 The Story I run a web site for approximately 1200 students of introductory astronomy here at the U of Arizona. The server is an old Sun Sparc 1 and we use lots of perl CGI's to connect to a database on the backend and create custom pages. Before mod_perl, the site was unacceptable slow. Now, with the scripts re-written to use mod_perl, the dynamically created pages load faster than regular HTML files. Mr. Guy Smiley -- e-mail: ( smiley at seds dot org ) website: ( double u double u double u dot seds dot org slash tilde smiley ) phone: ( five two zero three two one one nine six four ) -- "I root for a big comet or asteroid as a way of cleansing the planet." George Carlin =cut 1.1 modperl-docs/src/stories/seds.org.txt Index: seds.org.txt =================================================================== Subject: Students astronomy site From: Smelly Belly <[EMAIL PROTECTED]> Date: Fri, 6 Mar 1998 12:07:59 -0700 I run a web site for approximately 1200 students of introductory astronomy here at the U of Arizona. The server is an old Sun Sparc 1 and we use lots of perl CGI's to connect to a database on the backend and create custom pages. Before mod_perl, the site was unacceptable slow. Now, with the scripts re-written to use mod_perl, the dynamically created pages load faster than regular HTML files. Mr. Guy Smiley -- e-mail: ( smiley at seds dot org ) website: ( double u double u double u dot seds dot org slash tilde smiley ) phone: ( five two zero three two one one nine six four ) -- "I root for a big comet or asteroid as a way of cleansing the planet." George Carlin 1.1 modperl-docs/src/stories/singlesheaven.com.pod Index: singlesheaven.com.pod =================================================================== =head1 NAME Singles Heaven =head1 Info =over =item * Author: Stas Bekman E<lt>stas (at) stason.orgE<gt> =item * Date: Fri, 14 May 1999 10:06:24 +0200 =back =head1 The Story <STRONG>Singles Heaven</STRONG> - http://singlesheaven.com is a <STRONG>Match Maker</STRONG> site with 34,000+ members and growing. The site is driven by mod_perl, DBI, <CODE>Apache::DBI</CODE> (which provides a persistence to DB connections) and mysql. The speed is enormous, chatting with mod_perl is a pleasure of experience. Every page is being generated by about 10 SQL queries, for it does many dynamic checks every time - like checking for new emails, watching the users who registered in their watchdog and many more. You don't feel these queries are actually happen, the speed is of the ``Hello World'' script. Development path was very short, I have converted plain CGI scripts to run under mod_perl (Apache::Registry) almost in no time!!! If you are into a database driven service, give mod_perl a try !!! =cut 1.1 modperl-docs/src/stories/singlesheaven.com.txt Index: singlesheaven.com.txt =================================================================== From : Stas Bekman <[EMAIL PROTECTED]> Date : Fri, 14 May 1999 10:06:24 +0200 Subject : Singles Heaven Organization: Singles Heaven <STRONG>Singles Heaven</STRONG> - http://singlesheaven.com is a <STRONG>Match Maker</STRONG> site with 34,000+ members and growing. The site is driven by mod_perl, DBI, <CODE>Apache::DBI</CODE> (which provides a persistence to DB connections) and mysql. The speed is enormous, chatting with mod_perl is a pleasure of experience. Every page is being generated by about 10 SQL queries, for it does many dynamic checks every time - like checking for new emails, watching the users who registered in their watchdog and many more. You don't feel these queries are actually happen, the speed is of the ``Hello World'' script. Development path was very short, I have converted plain CGI scripts to run under mod_perl (Apache::Registry) almost in no time!!! If you are into a database driven service, give mod_perl a try !!! 1.1 modperl-docs/src/stories/sites.html Index: sites.html =================================================================== <html> <head> <title>Sites Running mod_perl</title> </head> <body bgcolor=#ffffff > <h3>Sites Running mod_perl</h3> <hr> This document contains information to give you an idea of where and more importantly, <b>how</b> mod_perl is being used. If you have an interesting mod_perl application, let <a href="mailto:[EMAIL PROTECTED]">us</a> know about it! <p> Of course, the sites described on this page are not the only sites running mod_perl. Since mod_perl has inserted it's name and version into Apache's Server header, we are able to see others based on the <a href="netcraft/">netcraft survey</a> results. <hr> <p> The first public site to run mod_perl and the hand that feeds CPAN with it, <a href="http://www.perl.com/CPAN/modules/04pause.html">PAUSE</a>, the Perl Authors Upload SErver. This was a birthday present given to PAUSE by <b>Andreas König</b> on August 20, 1996. <p> Andreas and <b>Kulturbox</b> went on to create an exciting site with mod_perl that gives you a dynamic tour of Berlin, Germany. <a href="http://www.kulturbox.de/perl/berlininfo">BerlinINFO</a>. The images you see here are generated on the fly, using mod_perl allows the <a href="http://www.perl.com/CPAN/modules/by-module/GD/">GD</a> image objects to be cached in memory for an extra performance boost. <p> Do you like movies? Then take a look at how <b>Rob Hartill</b> uses mod_perl to help you find out anything and everything there is to know about movies at the <a href="http://www.imdb.com/"> Internet Movie Database </a>. Besides using mod_perl to speed up the interactive database queries, mod_perl steps in during the first stage of a request, mapping URIs to cached query results if present and mapping based on language preference if the user has presented one. <p> <a href="http://www.webpersonals.com/">Webpersonals</a> site uses <code>HTML::Embperl</code> over mod_perl to drive this nice match making site. <p> <a href="http://hn.org">Hammernode Internet</a> a no-cost DNS provider serving thousands of zones, uses mod_perl to power both its dynamic web site, as well as the server end of its published API interface for client programs. We're very satisfied with mod_perl, and very thankful for it. <p> The Internet's largest on-line toy store, <a href="http://www.etoys.com/">eToys.com</a>, uses mod_perl extensively. We use an object-oriented approach built on standard CPAN modules such as DBI, BerkeleyDB, and Template Toolkit. eToys ranked third in overall traffic among e-commerce sites during the 1999 Christmas rush, right behind Amazon and eBay. <p> <b>Patrick Kane</b> uses mod_perl at <a href="http://www.enews.com/">The Electronic Newsstand</a> to maintain limited and persistent connections to their Sybase servers where users can search and browse through thousands of virtual magazines. Patrick also uses mod_perl's Authentication hook for seamlessly migrating users from their old registration system to a new one. <p> <a href="http://www.sol.no/">Scandinavia Online AS</a> uses mod_perl for the <a href="http://kvasir.sol.no/">Kvasir search engine</a>. <b>Kvasir</b> is Norway's most popular Internet directory. <p> <b>Alvar Freude</b> uses mod_perl on <a href="http://www.a-blast.org/">http://www.a-blast.org/</a>. It is a "truly interactive text network", written completely in mod_perl. For a quick, non-technical overview have a look on <a href="http://www.assoziations-blaster.de/prixars/">http://www.assoziations-blaster.de/prixars/</a>. (its in english on our old domain).<br> About one year ago, it runs on M$ IIS with ActivePerl and some PHP, in the meantime it is completely rewritten as Apache module, using MySQL as database. With this, I speed up the execution time from ~3 Seconds to ~10 milliseconds for each Blast-Page (OK, OK, the old machine had a very worst hardware, now we use only a semi-worst one: Pentium II 350, 320 MB RAM with Soft-RAID 0 under Linux).<br> The blast_engine includes the links into the texts in realtime, also the statistics are created in realtime:<br> <a href="http://www.a-blast.org/statistics/">http://www.a-blast.org/statistics/</a>, <a href="http://www.assoziations-blaster.de/statistik">http://www.assoziations-blaster.de/statistik/</a> (german, with much more traffic) The blaster uses the speed benefit of keeping the complete keyword list in memory (more then 5 MB for the german version), for the non-linear real-time linker I use a ~50 line regexp .-) The HTML-Files are compressed on-the-fly with Compress::Zlib, so we keep bandwidth (and transmission time to the users) small. <p> <A HREF="http://www.citysearch.com/">CitySearch.com</A> -- is providing online city guides for more than 100 cities worldwide, citysearch.com helps people find and plan what they want to do and then lets them take action, offering local transactions such as buying event tickets and making hotel and restaurant reservations online. Its traffic exceeds 100,000,000 page views a month. Of course it's running under mod_perl. <A HREF="http://perlmonth.com">PerlMonth</A> is a site completely driven by mod_perl/mySQL. Every article is stored in the database. When a user makes a request, a module we wrote parses the uri and dynamically creates the html page for the user. It's nothing out of the ordinary but it helps maintain the overall site with ease. PerlMonth does about 100K Pageviews/month w/o breaking a sweat. The site is written and maintaned by <B>Baiju Thakkar</B>. <p> <A HREF="http://singlesheaven.com">singlesheaven.com</A> is a match maker site, that is written completely in Perl and is being driven by Apache/mod_perl and mysql. Each request comprises a big number of database queries to make the site very interactive, and it's still very fast under mod_perl. The service runs under <CODE>Apache::Registry</CODE> module. The site is written and maintained by <B>Stas Bekman</B>. <p> <a href="http://www.filepile.com/">filepile.com</a> is an archive of over 1.2 million freeware/shareware files. <b>Michael Mittelstadt</b> explains: "After moving to mod_perl, everything is wonderful, everything is fast, and the computer (dual P6, linux) is no longer bending under the stress. mod_perl saved us from having to buy a second webserver." <p> <b>Gerald Richter</b> and <b>ECOS</b> are using mod_perl (with Embperl) for a picture database. This contains pictures from touristic information Rheinland-Pfalz. It's intented as press information, to reduce the need of sending photographs around. You can view and search the picture via the <a href="http://bilder.ecos.de">internet</a> or via a direct dial-in. The download is only available for vaild users and via direct dial-in. Also it's possible to maintain the database via the web and insert new picture and descriptions, change or delete them. Software running is Apache 1.3, mod_perl, <a href="http://perl.apache.org/embperl/">Embperl</a>, DBI, DBD-Pg, Postgress 6.21 on an Linux 2.0.34. <p> <b>Jayme Cox</b> explains: At <b>Broderbund Software</b>, we have a site running mod_perl to keep persistant database connections open between our Apache web farm and our Oracle database server. We have a <a href="http://www.warlords3.com"> game site </a> that checks our Oracle DB for a customers email address and lets them download additional game maps if they have registered the software. Using persistant DB connections increased the perceived response time by over 200%. The exact URL is <a href="http://www.warlords3.com/guild/maps"> http://www.warlords3.com/guild/maps</a>. <p> <b>Rick Mangi</b> and <a href="http://www.tgix.com/">Thaumaturgix, Inc.</a> use mod_perl to provide a method for gathering stats on web usage including a logging proxy server module for their customers. <p> <b>Jason Bodnar</b> at <b>Cox Interactive Media</b>, explains: <br> Right now we're using mod_perl for authentication on two sites (soon to be a third): <a href="http://www.Austin360.com">http://www.Austin360.com</a> and <a href="http://www.GoBig12.com">http://www.GoBig12.com</a>. We started out using Netscape servers and dbms for authentication. We were writing all our demographic info to flat files but that got out of hand so we moved the demo info to Informix. This was okay but it meant keeping two seperate databases (dbms or Berkely DB with username/password and Informix with demographics). Not fun. So when we switched to Apache (for performance reasons) I was able to consolidate all the info and do authentication out of Informix thanks to mod_perl, Apache::DBI, Apache::AuthenDBI and DBD::Informix. It makes life much simpler! We're also eventually going to be running our Eats Database (list over 1400 restaurants in Austin) and our movie database with mod_perl. I'm sure we'll find alot more uses for it in the future. <p> <A HREF="http://www.magirus.com">Magirus Datentechnik GmbH</A> is a German company of about 200 peoples, (de)located in Germany, Switzerland, Italy, Austria, and needs a powerful Intranet System for it's internal information flows. We're using mod_perl to do it. Our mod_perl applications make the link between 5 different database systems (Perl power and mod_perl permanent database connections), allow users to get price-lists, make offers and orders, get the status of a client, etc. The advantage of that kind of configuration is that we just need to install a Web Browser on the user's side. These tools are avaible from both Intranet or secured Internet connection. Without mod_perl, the average response time for the top 5 applications is between 3 till 9 seconds. This can't be accepted by an end-user. With mod_perl, the response time seems (for the end-user) to be null (depending of the client's speed). This is only working on a private-network and so we can't give you an address to try it. For more information, contact <A HREF="mailto:[EMAIL PROTECTED]"> [EMAIL PROTECTED]</A>. <p> <b>Tony Bowden</b> developed <a href="http://www.musicdatabase.com/">The Music Database</a> which uses mod_perl and MySQL to allow browsing and searching a cross-referenced guide to over 80,000 CDs and one million songs. (not operational at this stage). <p> <b>Randy Ray</b> uses Apache+mod_perl for his Software Configuration Management team's site within <b>U S WEST IT</b>. About 1/3 of the data the server sends out is CGI-generated. After the conversion to mod_perl, some existing CGI scripts running unchanged via Apache::Registry showed measurable speed increases of as much as 723%. All of the SCM CGI scripts use the Image::Size library to add HEIGHT and WIDTH attributes to <IMG> tags. As Image::Size caches the dimensions of each files as it is first read, the persistent dataspace will virtually eliminate the step of computing image sizes. <p> <a href="http://www.arttoday.com">ArtToday</a> has a collection of over 600,000 keyworded images of all types. Customers find images using keyword and category searches. They serve about 250,000 raw hits daily. Information about the collection persists in an Oracle 7 database, and keyword searches happen via a custom application written using a Verity search engine. All of this is glued together using Perl. Our hardware consists of a single Sun Ultra with lots of storage (about 150GB) and an unnecessarily large monitor. We switched to Apache/mod_perl after becoming frustrated with Netscape Commerce Server performance. Although I don't have hard numbers, I would estimate a factor of 2-5 times CGI performance. Using mod_perl and Apache we've turned our "extremely loaded" server into a "comfortably loaded" server, even allowing us room for some software development. Mod_perl saved us from having to buy another Ultra! <p> mod_perl scripts which search the archives of <A HREF="http://theory.uwinnipeg.ca/search/cpan-search.html">CPAN</A>, <A HREF="http://theory.uwinnipeg.ca/search/ctan-search.html">CTAN</A>, <A HREF="http://theory.uwinnipeg.ca/search/linux-search.html">Linux</A>, <A HREF="http://theory.uwinnipeg.ca/search/tetex.html">teTeX</A> (a Unix TeX system), and MuPAD (a symbolic math program) are available at <A HREF="http://theory.uwinnipeg.ca/">theory.uwinnipeg.ca</A>. These scripts query an mSQL database via various criteria, and employ the CPAN multiplexer code to choose a nearby mirror of the archive, if available and desired. <p> <A HREF="http://www.pbs.org/">PBS Online</A> is using mod_perl to improve the speed of its heavily loaded servers, having replaced CGI for games, navigation control, and commerce. <p> <a href='http://www.oreilly.com/'>O'Reilly and Associates</a> uses mod_perl to control access to their <a href='http://online-books.oreilly.com/books/'>online books site</a>. Every request for a document runs through a mod_perl script, which checks username and password, and may eventually provide dynamic data. <p> <a href="http://home.wired.com/">WIRED Digital</a> uses mod_perl (on linux and solaris) for several applications. On HotBot mod_perl is used for the <a href="http://members.hotbot.com/">HotBot mail and HotBot homepages</a> application, interfacing with a third-party application by WhoWhere. It is also used widely throughout <a href="http://www.hotwired.com/">HotWired</a>, <a href="http://www.wired.com/news/">Wired News</a>, <a href="http://www.webmonkey.com/"> Webmonkey </a> and <a href="http://www.suck.com/">Suck.com </a> as a replacement for CGI scripts, and to control the HotWired member pages. Mod_perl also runs two servers that redirect requests for external pages from within WIRED sites. WIRED Digital regards mod_perl as an important and highly valuable addition to the server development toolset, and will continue to consider mod_perl as a strong candidate for solutions. <p> <a href="http://www.medimatch.com/">MediMatch</a> uses Apache and Stronghold on Solaris, and makes use of mod_perl almost exclusively for its medical employment services database. Originally coded to use standard CGI, when we switched over to mod_perl to maintain persistent connections to a Sybase database, and for data caching in various fashions, we saw a speedup ranging from 25-500% (varying on the type and depth of the search queries). We also use mod_perl to facilitate the caching of CGI-parsed HTML pages, which reduced the speed of requests to approximately that of ordinary static HTML. <p> CMPnet <a href="http://www.cmpnet.com/">www.cmpnet.com</a>, a technology information network, uses mod_perl to generate 70% of its pages - over half a million hits a day. Our network includes TechWeb <a href="http://www.techweb.com/">www.techweb.com</a>, a technology news site, and FileMine <a href="http://www.filemine.com/">www.filemine.com</a>, a shareware site. We switched to mod_perl because we couldn't stand writing and debugging NSAPI code for Netscape servers anymore. Needless to say the productivity improvement was immeasurable. Recently our company evaluated several top commercial web publishing platforms (Vignette's StoryServer, INSO's DynaBase) for a possible switchover. But in the end we stayed with our mod_perl architecture and agreed to standardize our company's internet operations on it! <p> Mark A. Downing tells us: I have been running an <a href="http://www.wm7d.net/">Amateur Radio</a> callsign database (with 800k records) on my web page for nearly two years, originally with WebSQL. But due to the lack of portability, I rewrote my scripts using sybperl. Now with mod_perl, I have successfully cut the time to complete a lookup from nearly 5 seconds to under 1 second (It takes longer to display the data than to do the query). This was accomplished by creating persistant database connections (to sybase) using mod_perl, and Apache is now able to establish those connections upon startup. No longer do I have to wait for my original scripts to connect and gather data. <p> Rob Malda tells that <a href="http://slashdot.org/">Slashdot.org</a> - news for nerd, is a combination of Perl and MySQL. Slashdot runs under mod_perl which keeps things nice and speedy. <p> <a href="http://www.mojam.com/">Mojam</a> is a new Internet music media company with the goal of attracting the largest audience of music listeners and players anywhere. Mojam is different that RollingStone or MTV because it focuses on helping new bands get their music out to the listeners by posting thier show dates, music clips, and news releases. mojam.com is 100% Apache mod_perl running Mason to dynamically deliver all of it's pages. <p> <hr> </body> </html> 1.1 modperl-docs/src/stories/story.tmpl Index: story.tmpl =================================================================== =head1 NAME [% story.title %] =head1 Info [% IF story.headers -%] =over [% FOREACH key = story.headers.keys.sort -%] [% IF story.headers.$key -%] =item * [% key %]: [% story.headers.$key -%] [% END -%] [% END -%] =back [% END -%] =head1 The Story [% story.body -%] =cut 1.1 modperl-docs/src/stories/tamu.pod Index: tamu.pod =================================================================== =head1 NAME Move from ActiveWare PerlScript on IIS4 to Apache and modperl improved performance by factor 60 =head1 Info =over =item * Author: Jeff Baker E<lt>jeff (at) GODZILLA.TAMU.EDUE<gt> =item * Date: Tue, 3 Mar 1998 21:13:06 -0600 =back =head1 The Story I'd like to share my recent success story. Over the last four days, students living on campus here at Texas A&M University have had to go through what is called "contract renewal," where they indicate whether or not they will continue to live on campus in the coming academic year. In the past, this has all been done very tedioulsy with scantron forms and human-eye error correction. This year, the system was moved to the web. The code was user-proofed to prevent the usual mistakes, with the addition of some fancy authentication and session tracking mechanisms. The system was originally written using ActiveWare PerlScript on IIS 4.0, but when I was done, it was glaringly obvious that it was far too slow. In only 14 days, we ported the code to Apache and mod_perl, with the same NT platform underneath. The performance (transactions/sec) was more than 60 times better!!! The system went online Friday night, and in the course of its 4-day run, it served 400,000 documents, the bulk of which were generated on the fly. Ten thousand people used the system, and all went without a hitch. Here's to mod_perl! Jeffrey =cut 1.1 modperl-docs/src/stories/tamu.txt Index: tamu.txt =================================================================== From: Jeff Baker <[EMAIL PROTECTED]> Date: Tue, 3 Mar 1998 21:13:06 -0600 Subject: Move from ActiveWare PerlScript on IIS4 to Apache and modperl improved performance by factor 60 I'd like to share my recent success story. Over the last four days, students living on campus here at Texas A&M University have had to go through what is called "contract renewal," where they indicate whether or not they will continue to live on campus in the coming academic year. In the past, this has all been done very tedioulsy with scantron forms and human-eye error correction. This year, the system was moved to the web. The code was user-proofed to prevent the usual mistakes, with the addition of some fancy authentication and session tracking mechanisms. The system was originally written using ActiveWare PerlScript on IIS 4.0, but when I was done, it was glaringly obvious that it was far too slow. In only 14 days, we ported the code to Apache and mod_perl, with the same NT platform underneath. The performance (transactions/sec) was more than 60 times better!!! The system went online Friday night, and in the course of its 4-day run, it served 400,000 documents, the bulk of which were generated on the fly. Ten thousand people used the system, and all went without a hitch. Here's to mod_perl! Jeffrey 1.1 modperl-docs/src/stories/tgix.pod Index: tgix.pod =================================================================== =head1 NAME mod_perl contact management system for Fortune-500 pharmaceutical giant =head1 Info =over =item * Author: Rick Mangi E<lt>rmangi (at) TGIX.COME<gt> =item * Date: Fri, 6 Mar 1998 12:14:49 -0500 =back =head1 The Story I have 2 success stories to share: 1. I'm finishing a web-based mod_perl/javascript (client side) contact management system with heavy Apache::DBI and Registry use. This system is for a "fortune-500 pharmaceudical (sp?) giant". It is replacing an unmanageable (their description) Lotus Domino application. 2. It production, a mod_perl server for gathering web traffic statistics for an up and coming web traffic reporting company. The mod_perl enhanced server gathers data from thousands of client and server based proxies around the world. Data is stored in Oracle using Apache::DBI. This replaced a poorly designed PHP server (poor choice using php in this scenario imho). Rick -- _______________________________________________________________ Rick Mangi Tel: (212) 972-2030 Thaumaturgix, Inc. Fax: (212) 972-2003 317 Madison Avenue, Suite 1615 [EMAIL PROTECTED] New York, NY 10017 http://www.tgix.com thau'ma-tur-gy, n. the working of miracles "Perl is a state of mind as much as it is a language grammar" _______________________________________________________________ =cut 1.1 modperl-docs/src/stories/tgix.txt Index: tgix.txt =================================================================== Subject: mod_perl contact management system for Fortune-500 pharmaceutical giant From: Rick Mangi <[EMAIL PROTECTED]> Organization: Thaumaturgix, Inc. Date: Fri, 6 Mar 1998 12:14:49 -0500 I have 2 success stories to share: 1. I'm finishing a web-based mod_perl/javascript (client side) contact management system with heavy Apache::DBI and Registry use. This system is for a "fortune-500 pharmaceudical (sp?) giant". It is replacing an unmanageable (their description) Lotus Domino application. 2. It production, a mod_perl server for gathering web traffic statistics for an up and coming web traffic reporting company. The mod_perl enhanced server gathers data from thousands of client and server based proxies around the world. Data is stored in Oracle using Apache::DBI. This replaced a poorly designed PHP server (poor choice using php in this scenario imho). Rick -- _______________________________________________________________ Rick Mangi Tel: (212) 972-2030 Thaumaturgix, Inc. Fax: (212) 972-2003 317 Madison Avenue, Suite 1615 [EMAIL PROTECTED] New York, NY 10017 http://www.tgix.com thau'ma-tur-gy, n. the working of miracles "Perl is a state of mind as much as it is a language grammar" _______________________________________________________________ 1.1 modperl-docs/src/stories/winamillion.msn.com.pod Index: winamillion.msn.com.pod =================================================================== =head1 NAME Microsoft Network, 1 million hits per week through modperl =head1 Info =over =item * Author: Vivek Khera E<lt>khera (at) KCILINK.COME<gt> =item * Date: Fri, 6 Mar 1998 10:34:32 -0500 =back =head1 The Story >>>>> "LS" == Lincoln Stein <[EMAIL PROTECTED]> writes: LS> I'm looking for more mod_perl success stories like the one that Jeff LS> posted the other day. They will be used for vignettes in an The Microsoft Network promotion running to increase subscribership located at http://winamillion.msn.com/ is run on mod_perl. The contest ends at the end of the month, so check it out before then ;-) Anyhow, the system is currently pounding nearly 10 million hits per week to the web pages, of which about 1 million go through mod_perl. Each of those accesses runs through on averate 3 SQL queries to a MySQL database and 2 references to DB_File databases. There is no way in heck it would have run without mod_perl. By the way, this is using Squid in accelerator mode, as I described in the tuning docs. Squid handles about 93% of the content (the static and mostly static stuff). v. -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Vivek Khera, Ph.D. Khera Communications, Inc. Internet: khera@kciLink.com Rockville, MD +1-301-258-8292 PGP/MIME spoken here http://www.kciLink.com/home/khera/ =cut 1.1 modperl-docs/src/stories/winamillion.msn.com.txt Index: winamillion.msn.com.txt =================================================================== Subject: Re: Success stories From: Vivek Khera <khera@KCILINK.COM> Date: Fri, 6 Mar 1998 10:34:32 -0500 Subject: Microsoft Network, 1 million hits per week through modperl >>>>> "LS" == Lincoln Stein <[EMAIL PROTECTED]> writes: LS> I'm looking for more mod_perl success stories like the one that Jeff LS> posted the other day. They will be used for vignettes in an The Microsoft Network promotion running to increase subscribership located at http://winamillion.msn.com/ is run on mod_perl. The contest ends at the end of the month, so check it out before then ;-) Anyhow, the system is currently pounding nearly 10 million hits per week to the web pages, of which about 1 million go through mod_perl. Each of those accesses runs through on averate 3 SQL queries to a MySQL database and 2 references to DB_File databases. There is no way in heck it would have run without mod_perl. By the way, this is using Squid in accelerator mode, as I described in the tuning docs. Squid handles about 93% of the content (the static and mostly static stuff). v. -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Vivek Khera, Ph.D. Khera Communications, Inc. Internet: khera@kciLink.com Rockville, MD +1-301-258-8292 PGP/MIME spoken here http://www.kciLink.com/home/khera/ 1.1 modperl-docs/src/stories/wmboerse.pod Index: wmboerse.pod =================================================================== =head1 NAME Large real-time stock exchange game =head1 Info =over =item * Author: Sven Neuhaus E<lt>Sven.Neuhaus (at) de.uu.netE<gt> =item * Date: Fri, 05 Jun 1998 16:13:18 +0200 =back =head1 The Story Hello, another mod_perl success story: Have a look at www.wmboerse.de - it's a german real-time stock exchange simulation game for the soccer world championship. Participation is free and there are some nice prices to be won. The technology used is Apache, mod_perl, DBI and DB::Adabas. The project is sponsored by Sun Microsystems (they are supplying a Sun Ultra Enterprise 450 with 3 CPUs @ 300Mhz and 1GByte RAM at the moment), UUNET Germany (bandwidth) and Software AG (Adabas-D database). The server is a real beast. It's amazingly fast. The game is running since Sunday. At the moment, there are 2344 players, 183 of them have been active in the last 10 minutes. We are expecting a large increase in players as soon as national television reports about the game. The load is at 0.80, there are 123 processes, still 400MB RAM free (we plugged in 512 MB today, previously the box had 512MB). We will increase the maximum number of child processes if we get close to the current limit (100). Here's some data from the Apache status page: Server uptime: 4 hours 10 minutes 58 seconds Total accesses: 254671 - Total Traffic: 902.9 MB (!) CPU Usage: u27.68 s10.98 cu2.03 cs.63 - .274% CPU load 16.9 requests/sec - 61.4 kB/second - 3717 B/request 18 requests currently being processed, 14 idle servers Anyway, grab a browser and have a look. The project is a great success so far, and it couldn't have been done this easily and quickly without mod_perl and the other great free software out there. Thanks and enjoy! -Sven Neuhaus =cut 1.1 modperl-docs/src/stories/wmboerse.txt Index: wmboerse.txt =================================================================== To: modperl@apache.org Subject: mod_perl at its best. Organization: UUNET Deutschland Web Competence Center Date: Fri, 05 Jun 1998 16:13:18 +0200 From: Sven Neuhaus <[EMAIL PROTECTED]> Subject: Large real-time stock exchange game Hello, another mod_perl success story: Have a look at www.wmboerse.de - it's a german real-time stock exchange simulation game for the soccer world championship. Participation is free and there are some nice prices to be won. The technology used is Apache, mod_perl, DBI and DB::Adabas. The project is sponsored by Sun Microsystems (they are supplying a Sun Ultra Enterprise 450 with 3 CPUs @ 300Mhz and 1GByte RAM at the moment), UUNET Germany (bandwidth) and Software AG (Adabas-D database). The server is a real beast. It's amazingly fast. The game is running since Sunday. At the moment, there are 2344 players, 183 of them have been active in the last 10 minutes. We are expecting a large increase in players as soon as national television reports about the game. The load is at 0.80, there are 123 processes, still 400MB RAM free (we plugged in 512 MB today, previously the box had 512MB). We will increase the maximum number of child processes if we get close to the current limit (100). Here's some data from the Apache status page: Server uptime: 4 hours 10 minutes 58 seconds Total accesses: 254671 - Total Traffic: 902.9 MB (!) CPU Usage: u27.68 s10.98 cu2.03 cs.63 - .274% CPU load 16.9 requests/sec - 61.4 kB/second - 3717 B/request 18 requests currently being processed, 14 idle servers Anyway, grab a browser and have a look. The project is a great success so far, and it couldn't have been done this easily and quickly without mod_perl and the other great free software out there. Thanks and enjoy! -Sven Neuhaus 1.1 modperl-docs/src/stories/www.afp-direct.com.pod Index: www.afp-direct.com.pod =================================================================== =head1 NAME News agency uses mod_perl for their online system with over 3 million stories =head1 Info =over =item * Author: Eric Cholet E<lt>cholet (at) LOGILUNE.COME<gt> =item * Date: Fri, 14 May 1999 10:06:24 +0200 =back =head1 The Story http://www.afp-direct.com hosts the Agence France-Presse's online database of news stories and photographs. Agence France-Presse is the world's third largest news agency. The online database, available through subscription, contains over 3 million stories and photographs in a full-text searchable database. The web site makes the most of mod_perl and its array of modules such as persistent connections to back-end servers and custom authentication. =cut 1.1 modperl-docs/src/stories/www.afp-direct.com.txt Index: www.afp-direct.com.txt =================================================================== From: Eric Cholet <[EMAIL PROTECTED]> Organization: Logilune Date: Fri, 14 May 1999 10:06:24 +0200 Subject: News agency uses mod_perl for their online system with over 3 million stories http://www.afp-direct.com hosts the Agence France-Presse's online database of news stories and photographs. Agence France-Presse is the world's third largest news agency. The online database, available through subscription, contains over 3 million stories and photographs in a full-text searchable database. The web site makes the most of mod_perl and its array of modules such as persistent connections to back-end servers and custom authentication. 1.1 modperl-docs/src/stories/www.bivio.com.pod Index: www.bivio.com.pod =================================================================== =head1 NAME bivio Investment Club Accounting, Taxes, and more =head1 Info =over =item * Author: Rob Nagler E<lt>info E<lt>atE<gt> bivio.netE<gt> =item * Date: Wed Nov 07 22:24:48 2001 =item * Traffic: 50,000 pages/day =item * URL: http://www.bivio.com =back =head1 The Story bivio.com is a web-delivered application written entirely in perl which provides complete accounting, tax preparation, automatic downloads of broker transactions, message boards, file sharing, email aliases, and more. Apache/mod_perl on Linux has functioned incredibly reliably with +99% uptime. Our declarative MVCF application framework (250 perl classes) is available under the Artistic License from http://www.bivio.net This includes a demo application http://petshop.bivio.net which is a more concise implementation of J2EE's Blueprint Architecture. =cut 1.1 modperl-docs/src/stories/www.bivio.com.txt Index: www.bivio.com.txt =================================================================== From: Rob Nagler <info <at> bivio.net> Organization: Date: Wed Nov 07 22:24:48 2001 Subject: bivio Investment Club Accounting, Taxes, and more URL: http://www.bivio.com Traffic: 50,000 pages/day bivio.com is a web-delivered application written entirely in perl which provides complete accounting, tax preparation, automatic downloads of broker transactions, message boards, file sharing, email aliases, and more. Apache/mod_perl on Linux has functioned incredibly reliably with +99% uptime. Our declarative MVCF application framework (250 perl classes) is available under the Artistic License from http://www.bivio.net This includes a demo application http://petshop.bivio.net which is a more concise implementation of J2EE's Blueprint Architecture. 1.1 modperl-docs/src/stories/www.lind-waldock.com.pod Index: www.lind-waldock.com.pod =================================================================== =head1 NAME Modperl at the world's largest discount commodities trading firm. =head1 Info =over =item * Author: B. W. Fitzpatrick E<lt>fitz (at) onShore.comE<gt> =item * Date: Fri, 6 Mar 1998 16:58:39 -0600 =back =head1 The Story 30000 customers looking at live quotes, dynamic charts and news. "[...] More importantly, mod_perl allowed us to work the webserver and code around our design--not the other way around." > I'm looking for more mod_perl success stories like the one that Jeff > posted the other day. They will be used for vignettes in an > introductory chapter of the book that Doug and I are writing. If you > have a story you'd like to share (particularly one in which mod_perl > "defeats" one of its competitors) could you mail it to me or post it > to the list? For the vignettes we need some sort of identifying > information, either along the lines of "a major Southwestern > University" or "Kulturbox company of Berlin, Germany". We just completed a website for Lind-Waldock & Co. (http://www.lind-waldock.com/), the world's largest discount commodities trading firm. The site is to be used by their customers (>30,000) for live and delayed quotes, dynamic charts, and news pertaining to the futures industry, as well as access to their online order entry system. The site will take quite a beating once all of their customers transition to it from Lind's previous Windows application--plenty of live and delayed data is auto-refreshed. Scenario: Client needed to develop a website that could authenticate off their existing customer database, and many links needed to be dynamically generated to reflect the level of service that the customer subscribed to (this info also kept in the database). The customer area had to be SSL enabled, fast, and support a slew of Perl scripts that the quote vendor had already written. And of course, they needed the whole thing yesterday. They already had Netscape Enterprise Server and we investigated some NSAPI solutions but were terribly disappointed with what Netscape had to offer. We did some tests and decided to run with Stronghold and mod_perl. We wrote less than 10 lines of code to get the site authenticating off the database using Apache_DBI and just a few more to handle the dynamic URL generation. We began analysis on Dec 1, and delivered the completed site on Mar 4--with 2 weeks off for Christmas, no less! Two days after release, the site is averaging about 3 requests a second--and that is certain to grow exponentially as more customers make the switch from the old Windows application. More importantly, mod_perl allowed us to work the webserver and code around our design--not the other way around. -Fitz ___________________________________________________________________________ Brian W. Fitzpatrick [EMAIL PROTECTED] http://www.onShore.com/ =cut 1.1 modperl-docs/src/stories/www.lind-waldock.com.txt Index: www.lind-waldock.com.txt =================================================================== From: B. W. Fitzpatrick <[EMAIL PROTECTED]> Date: Fri, 6 Mar 1998 16:58:39 -0600 Subject: Modperl at the world's largest discount commodities trading firm. 30000 customers looking at live quotes, dynamic charts and news. "[...] More importantly, mod_perl allowed us to work the webserver and code around our design--not the other way around." > I'm looking for more mod_perl success stories like the one that Jeff > posted the other day. They will be used for vignettes in an > introductory chapter of the book that Doug and I are writing. If you > have a story you'd like to share (particularly one in which mod_perl > "defeats" one of its competitors) could you mail it to me or post it > to the list? For the vignettes we need some sort of identifying > information, either along the lines of "a major Southwestern > University" or "Kulturbox company of Berlin, Germany". We just completed a website for Lind-Waldock & Co. (http://www.lind-waldock.com/), the world's largest discount commodities trading firm. The site is to be used by their customers (>30,000) for live and delayed quotes, dynamic charts, and news pertaining to the futures industry, as well as access to their online order entry system. The site will take quite a beating once all of their customers transition to it from Lind's previous Windows application--plenty of live and delayed data is auto-refreshed. Scenario: Client needed to develop a website that could authenticate off their existing customer database, and many links needed to be dynamically generated to reflect the level of service that the customer subscribed to (this info also kept in the database). The customer area had to be SSL enabled, fast, and support a slew of Perl scripts that the quote vendor had already written. And of course, they needed the whole thing yesterday. They already had Netscape Enterprise Server and we investigated some NSAPI solutions but were terribly disappointed with what Netscape had to offer. We did some tests and decided to run with Stronghold and mod_perl. We wrote less than 10 lines of code to get the site authenticating off the database using Apache_DBI and just a few more to handle the dynamic URL generation. We began analysis on Dec 1, and delivered the completed site on Mar 4--with 2 weeks off for Christmas, no less! Two days after release, the site is averaging about 3 requests a second--and that is certain to grow exponentially as more customers make the switch from the old Windows application. More importantly, mod_perl allowed us to work the webserver and code around our design--not the other way around. -Fitz ___________________________________________________________________________ Brian W. Fitzpatrick [EMAIL PROTECTED] http://www.onShore.com/ 1.1 modperl-docs/src/support/commercial.html Index: commercial.html =================================================================== <html> <head> <title>Commercial Support</title> </head> <body bgcolor="white"> <p> If you need a solution the discussion lists cannot provide, or simply need quicker turnaround, commercial support for mod_perl is available from the following companies: </p> <p> If your company provides commercial mod_perl support and you would like to be listed on this page, please send email to <a href="../maillist/list-users.html">users</a> mailing list. </p> <ul> <li> <a href="http://www.covalent.net/">Covalent Technologies</a> </li> </ul> </body> </html> 1.1 modperl-docs/src/support/config.cfg Index: config.cfg =================================================================== use vars qw(@c); @c = ( id => 'support', title => 'Support', abstract => "How to get supported ", body => { top => 'index_top.html', }, chapters => [ qw( training.html commercial.html isps.html jobs.html ) ], ); 1.1 modperl-docs/src/support/index_top.html Index: index_top.html =================================================================== <html> <head> <title>mod_perl community support</title> </head> <body bgcolor="white"> <p> mod_perl is an open source project and is very successfully supported by its users and developers community. Most of the questions are answered on the <a href="../maillist/index.html">mailing lists</a>. </p> <p> You can learn mod_perl by yourself through reading its <a href="../docs/index.html">documentation</a>, by attending the technology <a href="../conferences/index.html">conferences</a> or inviting a commercial <a href="training.html">training</a>. </p> <p> If however you need a commercial level support, the following <a href="commercial.html">companies</a> are available for mod_perl contracts and support. </p> <p> The following <a href="isps.html">ISPs</a> claim to support mod_perl. </p> <p> If you are looking for a mod_perl job or someone to do the job for you, the <a href="jobs.html">jobs</a> page is for you. </p> <p> </body> </html> 1.1 modperl-docs/src/support/isps.html Index: isps.html =================================================================== <html> <head> <title>ISPs Supporting mod_perl</title> </head> <body bgcolor="#ffffff"> <h3>ISPs Supporting mod_perl</h3> If you'd like to list an ISP supporting mod_perl here, please send a name, geographic location, url, contact email address and what you specialize in to <a href="mailto:[EMAIL PROTECTED]">Ask Bjørn Hansen</a>. <p> <h3>Australia</h3> <a href="http://www.motd.com/">www.motd.com</a> (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>) <p><br> <h3>Belgium</h3> VirgoPlus (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>) <p><br> <h3>Canada</h3> <a href="http://modperl-space.com">BareMetal.com</a> <p><br> <h3>Denmark</h3> <a href="http://www.netcetera.dk/">Netcetera</a>, Copenhagen (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>) <p><br> <h3>Germany</h3> <a href="http://www.ecos.de/">ECOS</a> (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>) <br> <a href="http://www.iconsult.com/">ICONSULT</a> (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>) <br> <a href="http://hosting.devcon.net/">dev/consulting GmbH</a> <br> <a href="http://www.bsb-software.com/"> BSB-Software GmbH</a>, Frankfurt <p><br> <h3>Japan</h3> <a href="http://www.oneway.net/">OneWay Information Services</a>, Taiwan <p><br> <h3>The Netherlands</h3> <a href="http://www.maverik.net/"> Maverik Enterprises</a> <p><br> <h3>Norway</h3> <a href="http://www.dataguard.no/">DataGuard</A> (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>) <p><br> <h3>Switzerland</h3> <a href="http://www.dwc.ch/">DWC</a>, Zurich (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>) <p><br> <h3>UK</h3> <a href="http://www.aldigital.co.uk/">A.L. Digital Ltd.</a> (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>)<br> <a href="http://www.highpoint.co.uk/hosting.html">Highpoint Communications</a>, London, UK based internet company that offers amoungst other things, mod_perl intergration for client web sites <p><br> <h3>USA</h3> <a href="http://hostpro.com/hosting/shared/unix_products.html">HostPro</a>, a few data centers around USA. <a href="mailto:[EMAIL PROTECTED]">BC Publishing, Inc</a>Columbus, Ohio<br> <a href="http://www.kattare.com/">Kattare Internet Services</a>, Corvallis, Oregon (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>) - MySQL, PHP, mod_perl based ASP<br> <a href="http://www.worldserver.com/">The WorldServer</a>, San Francisco, CA<br> <a href="http://www.speakeasy.org/">The Speakeasy Cafe</a>, Seattle, WA (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>)<br> <a href="http://www.digiforest.com/">Micro P.C.'s</a>, Eugene, OR<br> <a href="http://www.2rad.net/">Two Radical Technologies, Inc</A>, Centreville, VA (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>)<br> <a href="http://www.onehost.net/">Onehost, Inc.</a>, Fairfield, IA, (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>)<br> <a href="http://www.superb.net/">Superb Internet Corp.</a>, (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>)<br> <a href="http://www.alaska.net/">Internet Alaska</a>, Anchorage, Alaska, (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>)<br> <a href="http://www.greatland.net/">Greatland Internet Services, Inc.</a>, Anchorage, Alaska.<br> <a href="http://www.ainet.com/">AiNET</a>, U.S., Hong Kong, Tokyo and London.<br> <a href="http://www.adgrafix.com/">Adgrafix, Inc.</a> (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>)<br> <a href="http://www.laker.net/">LakerNet</a>, Ft. Lauderdale, Florida (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>)<br> <a href="http://www.serve.com/">DataRealm Internet Services, LLC</a>, Philadelphia, PA<br> <a href="http://www.avatar-cs.net/">Avatar Internet Solutions</a><br> <a href="http://www.iconnet.net/">Icon CMT, Corp.</a><br> <a href="http://www.Minerva.net/">Minerva Network Systems, Inc. </a>,Chantilly, VA (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>)<br> <a href="http://www.psn.net/">Planet Systems Network of America, Inc.</a><br> <a href="http://www.visionhost.net/">Vision Imaging Communications</a>, Sunnyvale, CA <p><br> </body> </html> 1.1 modperl-docs/src/support/jobs.html Index: jobs.html =================================================================== <html> <head> <title>mod_perl jobs</title> </head> <body bgcolor="#ffffff"> To submit jobs, see more Perl jobs and search the job listings go to <a href="http://jobs.perl.org/">The Perl Job site</a>. <p> <script language="JavaScript" src="http://jobs.perl.org/rss/mod_perl.js?limit=25"> </script> <p> </body> </html> 1.1 modperl-docs/src/support/training.html Index: training.html =================================================================== <html> <head> <title>mod_perl training</title> </head> <body bgcolor="white"> <p> If you are interested in hiring someone to do mod_perl training, please refer to one of the individuals or companies mentioned on this page. </p> <p> If your company provides mod_perl training and you would like to be listed on this page, please send email to <a href="../maillist/list-users.html">users</a> mailing list. </p> <ul> <li> <a href="http://training.gbdirect.co.uk/courses/linux/customized_and_bespoke.html">GBdirect</a> </li> </ul> </body> </html>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]