E Apache Mod_perl
Perl.com: Buildling a Large-scale E-commerce Site with Apache and mod_perl 2001Apache/mod_perl/CPAN
By Perrin Harkins (Translated by Tatsuhiko Miyagawa
e C++ Java () e
Perl CGI Perl Programming Perl O'Reilly Perl Perl
Apache mod_perl
Perl Apache Perl Java Perl
Apache, mod_perl CPAN (Comprehensive Perl Archive Network)
making you limited only by your team's abilities.
1999 eToys MySQL CGI CGI Perl4
MySQL
Oracle DBA
Apache::PerlRun
CGI mod_perl
CGImod_perl
() Apache::DBI
mod_perl
Oracle
8
Media Metrix eToys eBay, Amazon 3 e
2000
HTML
Perl Randal Schwartz Damian Conway
3
1 3e-
Intel
Web ( ) f5 Networks
mod_perl
Linux Linux Linux
IMB NUMA-Q DYNIX/ptx
mod_perl
Apache Apache Apache Cookie mod_session 1 400 Apache HTTP Network Appliance filer NFS
mod_perl
( ) mod_perl
mod_perl
http://perl.apache.org/guide/
mod_perl
Berkeley DB Perl Web HTML NetApp filer NFS CPU 1GB RAM
1
C++ Perl ID HTML Web
ID Perl
Oracle Perl CPAN Search::InvertedIndex
DBIx::FullTextSearch
ID
1
``sticky'' f5 cookie
通関業者になる方法e
SmallTalk Web Model-View-Controller MVC 3
Model API HTTP HTML cron Web
Controller Web Model Model View HTML
View HTMLController Model View View Web Template Toolkit Perl
``time-to-live'' Berkeley DB CPAN Storable
IP C 1 2000 99%
Expires NFS
mod_proxy
URL
mod_proxy
1If-Modified-Since mod_proxy
HTTP cookie ID mod_session
ID ID ``sticky'' -- --
e
``!'' SSL ``''( ID) cookie Message Authentication Code (MAC) CPAN Digest::SHA1
seed MAC cookie ID
HTML URL CPAN Crypt::
Crypt::CBC
Randal Schwartz Stonehenge::Throttle
NFS 1
MAC Web O'Reilly CGI Programming with Perl, 2nd Edition Writing Apache Modules with Perl and C
Java Perl Java CPAN Graham Barr Error Perl
Perl Error syntactic sugar
try { do_some_stuff(); } catch My::Exception with { my $E = shift; handle_exception($E); };
1DBI DBI RaiseError try Error DBI Error
try { $sth->execute(); } catch Error with { # roll back and recover $dbh->rollback(); # etc. };
DBI
try{}
HTML CPAN Template Toolkit Perl
Template Toolkit HTML Perl HTML !
Template Toolkit Perl Mason Apache::Registry
mod_perl
& co-branfing
Template Toolkit :
マーケティングの定義は何ですか[% FOREACH item = cart.items %] name: [% item.name %] price: [% item.price %] [% END %]
Model-View-Controller Hello World Controller
package ESF::Control::Hello; use strict; use ESF::Control; @ESF::Control::Hello::ISA = qw(ESF::Control); use ESF::Util; sub handler { ### my $class = shift; my $apr = ESF::Util->get_request();
### model my $name = $apr->param('name');
# Model::Hello my $hello = ESF::Model::Hello->new(NAME => $name);
### view my $view_data{'hello'} = $hello->view();
# process_template() # ESF::Control $class->process_template( TEMPLATE => 'hello.html', DATA => \%view_data); }
ESF::Control
ESF::Control->run()
try{}
handler()
process_template()
Template Toolkit
HTTPController Last-Modified
Expires
Model
package ESF::Model::Hello; use strict; sub new { my $class = shift; my %args = @_; my $self = bless {}, $class; $self{'name'} = $args{'NAME'} || 'World'; return $self; }
sub view { # view return shift; }
Model Model ID load()
Model save()
Perl OO new()
load()
new()
bless
load()
load()
:
sub load { my $class = shift; my %args = @_; my $id = $args{'ID'}; $self = _fetch_from_cache($id) || _fetch_from_database($id); return $self; }
save
私のアカウントにメールアドレスを追加する方法 Model view()
Model Facade view()
Hello World View :
Hello, My Oyster [% PROCESS header.html %] Hello [% hello.name %]! [% PROCESS footer.html %]
0 コメント:
コメントを投稿