| |||||
| © Perl Mongers Italia. Tutti i diritti riservati. | |||||
| |||||
Inoltre Nondimeno In questa puntata analizzeremo alcuni tra i più importanti e diffusi framework
basati su | |||||
| |||||
Fra i sistemi avanzati basati su L'idea di base di La sintassi a componenti di
PerlRequire /home/web/mod_perl/mason/handler.pl
Alias /mason "/home/web/mod_perl/mason/www"
<Location /mason>
SetHandler perl-script
PerlHandler HTML::Mason
</Location>
Con tale configurazione lanciamo lo script Perl handler.pl (Esempio 1) per
avviare e configurare Esempio 1. handler.pl, script di avvio di
#!/usr/bin/perl
package HTML::Mason;
# Usa il package Mason
use HTML::Mason;
use HTML::Mason::ApacheHandler (args_method=>'mod_perl');
use strict;
# Elenco di tutti moduli che verranno usati nei componenti
{
package HTML::Mason::Commands;
use DBI;
use LWP;
}
# Crea gli oggetti Mason
my $parser = new HTML::Mason::Parser;
my $interp = new HTML::Mason::Interp (
parser => $parser,
comp_root => '/home/web/mod_perl/mason/www',
data_dir => '/home/web/mod_perl/mason/data');
my $ah = new HTML::Mason::ApacheHandler (interp => $interp);
chown (Apache->server->uid, Apache->server->gid, $interp->files_written);
sub handler {
my ($r) = @_;
my $status = $ah->handle_request($r);
return $status;
}
1;
__END__
Come esempio di funzionamento di Esempio 2. env.html, semplice componente top-level
<%perl>
my @column_names = ("Chiave", "Valore");
</%perl>
<CENTER><H2><% $titolo %></H2>
<TABLE WIDTH="90%" BORDER="0">
<TR BGCOLOR="#CCCCCC">
<TH><% $column_names[0] %></TH>
<TH><% $column_names[1] %></TH>
</TR>
% foreach my $key ( sort keys %{$r->subprocess_env} ) {
<TR <& .bgcolor &>>
<TD><B><% $key %></B></TD>
<TD><% $r->subprocess_env($key) %></TD>
</TR>
% }
</TABLE><CENTER>
<& footer.comp &>
<%def .bgcolor>
BGCOLOR="#<% $row_colors[$i] %>"\
% $i = !$i;
</%def>
<%init>
my $titolo = "Variabili di ambiente";
$i= 0;
</%init>
<%once>
my $i;
my @row_colors = ("FFFFFF","DDDDFF");
</%once>
In un componente Il codice Perl può essere eseguito anche in altre due speciali
sezioni All'interno di un componente è possibile richiamare un altro componente tramite la sintassi: <& component_path &> Nel nostro esempio signature.comp è stato salvato nella stessa directory del componente top-level env.html e cioè /home/web/mod_perl/mason/www. Esiste infine un componente speciale chiamato autohandler che, se presente nella directory, viene sempre invocato prima di ogni altro componente top-level. Con il metodo Esempio 3. footer.comp, semplice componente <HR> <ADDRESS> Enrico for Linux&C - <% scalar localtime %> </ADDRESS> Esempio 4. autohandler, lo speciale componente
<HTML>
<HEAD>
<TITLE>HTML::Mason test</TITLE>
</HEAD>
<BODY>
<% $m->call_next %>
</BODY>
</HTML>
Lanciamo con nostro browser la URL http://localhost/mason/env.html e otterremo
la videata di Figura 1. Figura 1. Output della pagina
| |||||
| |||||
L'implementazione in Esempio 5. env.asp, semplice pagina
<!--#include file="header.inc"-->
<%
my @column_names = ("Chiave", "Valore");
my @row_colors = ("FFFFFF","DDDDFF");
%>
<CENTER><H2><%= $titolo %></H2>
<TABLE WIDTH="90%" BORDER="0">
<TR BGCOLOR="#CCCCCC">
<TH><%= $column_names[0] %></TH>
<TH><%= $column_names[1] %></TH>
</TR>
<%
my %i =0;
foreach my $key ( sort keys %{$Request->ServerVariables()} ) {
%>
<TR BGCOLOR="#<%= $row_colors[$i] %>">
<TD><B><%= $key %></B></TD>
<TD><%= $Request->ServerVariables($key) %></TD>
</TR>
<%
$i = !$i;
}
%>
</TABLE><CENTER>
<!--#include file="footer.inc"-->
In una pagina <!--#include file="nome_file"--> includiamo file esterni nei quali è ancora possibile scrivere codice
Esempio 6. header.inc
<%
use vars qw($titolo);
$titolo = "Variabili di ambiente";
%>
<HTML>
<HEAD>
<TITLE>Apache::ASP</TITLE>
</HEAD>
<BODY>
Esempio 7. footer.inc <HR> <ADDRESS> Enrico for Linux&C - <%= scalar localtime %> </ADDRESS> </BODY> </HTML> Per attivare
PerlModule Apache::ASP
Alias /asp "/home/web/mod_perl/asp"
<Directory /home/web/mod_perl/asp >
<Files ~ (\.asp)>
PerlSetVar StateDir /tmp/asp
SetHandler perl-script
PerlHandler Apache::ASP
</Files>
</Directory>
Salviamo i tre file in /home/web/mod_perl/asp e lanciamo con il browser la
URL http://localhost/asp/env.asp: otterremo una pagina simile a quella di
figura 1. Esula da questo articolo fare un corso di programmazione
| |||||
| |||||
Della stessa famiglia di
<TABLE BORDER="1">
[-
my @cols_array = ("A","B","C");
-]
<TR>
<TD>[+ $cols_array[$row] +]</TD>
</TR>
</TABLE>
La nuova versione (2.0), anche se ancora in beta, promette nuove ed interessanti funzionalità come il caching dell'output, la possibilità di estendere la sintassi, una gestione delle sessioni integrata, oltreché, essendo il motore completamente scritto in C, risulta molto performante. | |||||
| |||||
Se l'XML è la tecnologia con la quale avete a che fare allora | |||||
| |||||
Terminiamo questa breve carrellata accennando ad altri framework che ci mettono a disposizione complessi ambienti di sviluppo e di web publishing. Il primo, come si evince dal nome, è il software utilizzato da
http://slashdot.org, il celeberrimo portale di news alimentato dagli
utenti stessi della rete. Il progetto, nato nel 1997, si è talmente evoluto e
diffuso (sono tantissimi i siti che lo usano) che è stato pure oggetto di un
libro O'Reilly ("Running Weblogs with Slash"). Oltre al pannello di
controllo che permette di amministrare la maggior parte delle funzioni via Web,
Slash ha una propria API, un sistema di template (basato su Figura 2. Home page del progetto Slash, http://www.slashcode.org
OpenInteract è un giovane ed innovativo application server opensource che, oltre alle funzioni di content management, offre un completo ambiente di sviluppo per complesse applicazioni web. Tutta la parte di gestione dei contenuti del sito viene fatta via web tramite un amichevole pannello di amministrazione che consente di definire nei minimi particolari tutte le componenti del sito anche da parte di chi non ha una preparazione necessariamente tecnica. Come supporto di memorizzazione (dati, templates, utenti, ecc) OpenInteract utilizza database relazionali e al momento solo MySQL e Sybase sono supportati. Come detto, il progetto è relativamente giovane, ha un'architettura modulare e dispone già di un discreto supporto della comunità caratteristiche che in definitiva lo rendono pari a software ben più blasonati quali PHPNuke. Terminiamo il paragrafo accennando brevemente ad | |||||
| |||||
Ci avviamo alla conclusione e non poteva mancare un paragrafo dedicato ad
elencare brevemente alcuni tra i più importanti siti, chiamiamoli così 'di
successo', che utilizzano l'accoppiata Apache/ http://www.macromedia.com: il nome dice tutto, la grande software house
utilizza Adobe (http://www.adobe.com) utilizza da anni Apache/ Di Slashdot (http://slashdot.org) ne abbiamo già parlato. http://www.imdb.com: con i suoi 2 milioni di hits giornalieri, Internet Movie DataBase è il più completo sito al mondo dedicato al cinema. Ricordiamo anche il sito della Ducati che utilizza Recentemente Amazon ha annunciato il completo rifacimento del sito
http://www.amazon.com utilizzando http://www.redhat.com ( Ed in Italia? Molti dei canali del portale Libero sono realizzati utilizzando
| |||||
| |||||
La versione stabile della serie 2.0 di Apache è stata rilasciata più di un anno
fa. Numerose sono le nuove caratteristiche di Apache che hanno avuto impatto
sulla revisione di
Il progetto Una delle nuove caratteristiche più interessanti di
| |||||
| |||||
Ho avuto in passato l'occasione di valutare praticamente ogni ambiente di
sviluppo Web disponibile e E soprattutto, ricordiamoci, In questa serie di articoli abbiamo illustrato le principali caratteristiche di
| |||||
| |||||
| |||||
| |||||
Le seguenti convenzioni tipografiche sono stato utilizzate in questo articolo: Corsivo
Negli articoli ci sono molti esempi di codice Perl: alcuni sono solamente pezzi
di codice, altri invece programmi completi che possono essere individuati poiché
iniziano tutti con la linea #!/usr/bin/perl Tutti gli esempi che illustrano procedure a linea di comando usano %> perl -e 'print "Hello world\n"'
Hello word
Occasionalmente viene utilizzato #> perl -e 'print "Hello world\n"'
Hello word
| |||||