Nouvelles techniques d’animation d’un site Internet / intranet

68
1 Nouvelles techniques d’animation d’un site Internet / intranet ENSMP/CRI, 8 décembre 2000 --- Laurent DAVERIO

description

Nouvelles techniques d’animation d’un site Internet / intranet. ENSMP/CRI, 8 décembre 2000 --- Laurent DAVERIO. Table des matières. http://sources.trad.org… 3 ht://Dig… 5 Langages de script… 8 Systèmes de génération dynamique de pages Web… 13 SGBD / Annuaires… 39 - PowerPoint PPT Presentation

Transcript of Nouvelles techniques d’animation d’un site Internet / intranet

Page 1: Nouvelles techniques d’animation d’un site Internet / intranet

1

Nouvelles techniques d’animation d’un site Internet / intranet

ENSMP/CRI, 8 décembre 2000---

Laurent DAVERIO

Page 2: Nouvelles techniques d’animation d’un site Internet / intranet

2

Table des matières

http://sources.trad.org … 3 ht://Dig … 5 Langages de script … 8 Systèmes de génération dynamique de

pages Web … 13 SGBD / Annuaires … 39 Boite à outils Perl … 48 Analyse de trafic … 64

Page 3: Nouvelles techniques d’animation d’un site Internet / intranet

3

Sources de logiciels libres

http://sources.trad.org

Page 4: Nouvelles techniques d’animation d’un site Internet / intranet

4

http://sources.trad.org Au départ, un bloc-notes personnel pour noter les

adresses de téléchargement d’un certain nombre de logiciels libres ou gratuits « intéressants ».

La notion d’ « intéressant » est assez subjective… Pour une vision plus

exhaustive, voir par exemplewww.appwatch.com

Recherche de logiciels par nom / description, catégories

Réalisation : HTML::Mason OpenLDAP

Page 5: Nouvelles techniques d’animation d’un site Internet / intranet

5

ht://Dig

Le moteur d’indexation et de recherchele plus répandu dans le domaine du

logiciel libre

http://www.htdig.org/

Page 6: Nouvelles techniques d’animation d’un site Internet / intranet

6

ht://Dig 3.2 Un moteur relativement classique :

Robot de parcours de page (htdig) Respecte évidemment les « Robot Exclusion Rules » Paramétrage du parcours via des balises <META> spécifiques

Moteur d’indexation (htmerge) Types de documents : texte ASCII, HTML, Postscript, PDF (via

xpdf ou Acrobat Reader), autres (via convertisseurs à développer soi-même)

Indexation « floue » (htfuzzy) phonétique (soundex, metaphone) par racine (à partir d’un dictionnaire) par synonymes (à partir d’une table de correspondances)

Moteur de recherche (htsearch) Utilisé sous forme de CGI

Page 7: Nouvelles techniques d’animation d’un site Internet / intranet

7

Caractéristiques

Points forts Efficacité, relative facilité de mise en oeuvre Compatible avec Windows (via bibliothèques Cygwin)

Limitations Certains types de recherche manquent

Recherche d’expressions : implémentée depuis la version 3.2 (bêta)

Recherche par proximité : en projet Personnalisation des résultats un peu malaisée

Passage obligé par le CGI htsearch, qui oblige éventuellement à un retraitement par un « wrapper » du HTML produit.

Page 8: Nouvelles techniques d’animation d’un site Internet / intranet

8

Langages de script

Perl, Python, Zend, …

Page 9: Nouvelles techniques d’animation d’un site Internet / intranet

9

Introduction

3 langages principaux : Perl, Python, Zend Caractéristiques :

Utilisables à la fois en contexte statique ou dynamique

Statique : préparation des données, mise en forme des pages à l'avance (préprocesseurs)

Dynamique : génération des pages à la volée Utilisables également comme langage de script

généraliste Administration système Traitement de données Processus lancés périodiquement par crontab

Page 10: Nouvelles techniques d’animation d’un site Internet / intranet

10

Perl 5.6 Un langage "maximaliste"

Mélange de shell, sed, awk, C, BASIC, … Plein de pièges pour les néophytes et les autres. « Il y a toujours plus d'une façon de résoudre un problème ».

Outils et types de données évolués Intérêt : résoudre en une ligne une problème qui demande

normalement 3 ou 4 lignes de code découper une chaîne, rechercher une occurrence dans une liste, …

Exemples : expressions régulières, listes, tableaux associatifs,… CPAN : "Comprehensive Perl Archive Network"

(http://www.cpan.org/, plus de très nombreux miroirs dans le monde) :

Une bibliothèque de modules très étendue. Dont un module CPAN qui automatise l’installation d’autres modules

Mais ces modules ne sont pas, en majorité, fournis dans la distribution standard.

http://www.activestate.com

http://www.perl.com

Page 11: Nouvelles techniques d’animation d’un site Internet / intranet

11

Python 2.0 Langage de type intermédiaire

Plus "propre" que les langages de scripts traditionnels … en particulier, plus propre que Perl ;-)

Langage à objets plus simple à utiliser que Java Syntaxe simplifiée Langage "interprété" (compilation en bytecode à la volée) Passerelle avec Java : Jpython (interpréteur 100% pure Java)

Possibilité de réaliser des Applets Java en JPython Une bibliothèque de modules standard très complète

Modules réseau (sockets, FTP, HTTP, …) Tkinter : une bibliothèque graphique basée sur Tcl/Tk

portable sous X11 et Windows

Langage jeune, en pleine expansion Plusieurs outils significatifs sont déjà écrits en Python

Zope, BSCW, scripts d'installation et de configuration de RedHat Linux, …

http://www.python.org

Page 12: Nouvelles techniques d’animation d’un site Internet / intranet

12

Zend Zend est le langage de PHP 4

Réécriture complète du langage de PHP3 Amélioration importante des performances (précompilation) Modification de l’architecture (allocation mémoire, …) Meilleur découpage des tâches

PHP 4 devient multi plate-formes (IIS, Apache, NS, Roxen, …)

Syntaxe proche de celle de C ou de Perl Zend est un langage extrêmement riche en fonctions de toutes

sortes Exemples : manipulation de fichiers, d’images, de boites à lettres

IMAP, de SGBD (MySQL, …), d’annuaires LDAP, gestion de sessions… Avantage : tout est intégré en standard Inconvénient : il n’y a pas la notion de modules comme en Perl

Comme Perl, ce n’est pas un vrai langage à objets Notion de classes PHP, qui encapsulent variables et méthodes

Zend, un « sous Perl » ?

http://www.zend.com

Page 13: Nouvelles techniques d’animation d’un site Internet / intranet

13

Systèmes de génération dynamique de pages Web

CGI, ASP, ePerl, PHP, ASP, Mason, Coldfusion, …

Page 14: Nouvelles techniques d’animation d’un site Internet / intranet

14

Introduction Classés par flexibilité décroissante, et vitesse de

développement croissante : Génération par script de bout en bout

CGI (Common Gateway Interface) Java Servlets (avec serveur d'applications Java)

Inclusion d'un script dans une page HTML ASP (Active Server Pages) PHP (PHP : Hypertext Processor) ePerl (Embedded Perl) et équivalents (Mason / EmbPerl / EP)

Extension "HTML-like" côté serveur CFML : ColdFusion Markup Language (ColdFusion) RXML : Roxen Macro Language (Roxen Challenger) DTML : Document Template Markup Language (Zope)

Page 15: Nouvelles techniques d’animation d’un site Internet / intranet

15

CGI - Common Gateway Interface Le premier système généralisé de génération

dynamique de pages Avantages : généralité, flexibilité

Flexibilité dans le choix du langage C, Perl, Python, shell Unix, Visual Basic, …

Flexibilité dans les types de contenus HTML, image fixe ou animée, …

Flexibilité dans le choix du serveur HTTP Inconvénients :

"fork" : chaque appel crée un nouveau process Solutions : variantes "persistantes" (PCGI, FastCGI, …)

"stateless" : pas de mémoire d'un appel à l'autre L'application doit gérer elle-même les sessions d'utilisation

(paramètres URL, cookies, …)

Page 16: Nouvelles techniques d’animation d’un site Internet / intranet

16

CGI - Principe de fonctionnement

1. Le client Web (navigateur) envoie une requête HTTP au serveur Web

2. Le logiciel serveur Web (Apache, IIS) détermine qu'il s'agit non pas d'une requête de service de fichiers, mais d'une requête CGI (exécution de programme) Mécanismes : chemin d'accès (cgi-bin), extension (.cgi)

3. Le logiciel serveur Web démarre le programme CGI sur la machine hôte (création de processus), lui transmet un certain nombre de variables d'environnement et de paramètres utilisateur (champs de formulaire, …) Le programme CGI génère typiquement du code HTML, une

image GIF (compteur), …

4. La sortie standard (STDOUT) du programme CGI est redirigée vers le logiciel serveur Web, qui la retransmet à l'utilisateur

Page 17: Nouvelles techniques d’animation d’un site Internet / intranet

17

CGI - Exemple en Perl (variante 1)

http://www.serveur.org/cgi-bin/exemple.cgi?nom=Laurent

#! /usr/local/bin/perluse CGI; # module perl CGI.pm$q = new CGI; $nom = $q->param("nom"); print "Content-type:text/html\n\n";print "<HTML>"; print "<HEAD>";print "<TITLE>CGI qui dit bonjour à $nom</TITLE>"; print "</HEAD>"; print "<BODY>"; print "Bonjour $nom !"; print "</BODY>"; print "</HTML>";

Page 18: Nouvelles techniques d’animation d’un site Internet / intranet

18

CGI - Exemple en Perl (variante 2)

http://www.serveur.org/cgi-bin/exemple.cgi?nom=Laurent

#! /usr/local/bin/perluse CGI; # module perl CGI.pm$q = new CGI; $nom = $q->param("nom"); print

"Content-type:text/html\n\n", "<HTML>", "<HEAD>", "<TITLE>CGI qui dit bonjour à $nom</TITLE>", "</HEAD>", "<BODY>", "Bonjour $nom !", "</BODY>", "</HTML>";

Page 19: Nouvelles techniques d’animation d’un site Internet / intranet

19

CGI - Exemple en Perl (variante 3, avec syntaxe « here document »)

http://www.serveur.org/cgi-bin/exemple.cgi?nom=Laurent #! /usr/local/bin/perl

use CGI; # module perl CGI.pm$q = new CGI; $nom = $q->param("nom"); print << FIN;Content-type:text/html

<HTML><HEAD> <TITLE>CGI qui dit bonjour à $nom</TITLE></HEAD><BODY> Bonjour $nom !</BODY></HTML>FIN

Page 20: Nouvelles techniques d’animation d’un site Internet / intranet

20

CGI - Exemple en Perl (variante 4, avec module Text::Template)

http://www.serveur.org/cgi-bin/exemple.cgi?nom=Laurent #! /usr/local/bin/perl

use CGI; use Text::Template;$q = new CGI; $nom = $q->param("nom"); print Text::Template->fill_this_in(<<FIN);Content-type:text/html

<HTML><HEAD> <TITLE>CGI qui dit bonjour à {$nom}</TITLE></HEAD><BODY> Bonjour {$nom} !</BODY></HTML>FIN

Page 21: Nouvelles techniques d’animation d’un site Internet / intranet

21

PHP 4.0 Un langage "enfoui" (embedded) dans le HTML

Possibilité d'utiliser des outils visuels (Dreamweaver 3) Avantages :

Tout intégré (cf. Zend) mod_php : accélération du démarrage des pages PHP sous

Apache Souvent préinstallé. Exemples :

php fait partie des principales distributions Linux. php est disponible chez plusieurs fournisseurs d’accès, dont Free

(http://www.free.fr) et Multimania. Inconvénient :

Langage spécifique Zend présente de nombreuses similitudes, vraies ou fausses, avec

Perl Langage moins extensible que Perl ou Python

Très à la mode en ce moment, notamment en France

http://www.php.net

Page 22: Nouvelles techniques d’animation d’un site Internet / intranet

22

PHP - Exemple http://www.serveur.org/exemple.php?nom=Laurent

<HTML><HEAD> <!–- lecture du paramètre (commentaire HTML)--> <? $nom = $HTTP_GET_VARS["nom"]; ?> <TITLE> PHP qui dit bonjour à <?php echo $nom; ?> </TITLE></HEAD><BODY><? # Corps du document (commentaire php)

echo "Bonjour $nom !";?></BODY></HTML>

Page 23: Nouvelles techniques d’animation d’un site Internet / intranet

23

ePerl 2.2 Modification du parser standard Perl

Extension de l’approche du module Text::Template : Inclusion de code Perl dans des fichiers texte

Inversion de la dépendance code / texte Au départ, pas de lien obligé avec le Web

ePerl peut s’utiliser depuis la ligne de commande comme langage de script généraliste

Utilisation pour le Web Intégration de Perl dans des pages HTML (.phtml, .epl)

Intérêt : temps d'apprentissage nul quand on connaît Perl Utilisable comme CGI ou via mod_perl (handler Apache::ePerl)

Démarche très proche de celles des CGI classiques Très grande simplicité conceptuelle

Mais des incertitudes sur son avenir Pas d’évolution depuis la version 2.2 de 1998

Possibles problèmes de compatibilité avec les nouvelles versions de Perl

http://www.engelschall.com/sw/eperl/

Page 24: Nouvelles techniques d’animation d’un site Internet / intranet

24

ePerl - Exemple http://www.serveur.org/exemple.phtml?nom=Laurent

<HTML><HEAD> <? use CGI; # module perl CGI.pm $q = new CGI; $nom = $q->param("nom"); !> <TITLE>ePerl qui dit bonjour à <?=$nom!></TITLE></HEAD><BODY><? # Corps du document (commentaire Perl)

print "Bonjour $nom !";!></BODY></HTML>

Page 25: Nouvelles techniques d’animation d’un site Internet / intranet

25

Mod_perl 1.24 Mod_perl associe un interpréteur Perl résident à Apache

Possibilité de paramétrer le comportement d’Apache depuis Perl Comme le ferait un module Apache classique, écrit en C

Emulation du fonctionnement des CGI en Perl (Apache::Registry) Avantages : performances accrues

Pas de création de processus, ni de lancement de l’interpréteur Perl à chaque requête utilisateur

Inconvénients : Complexité d’utilisation la persistance de l’interpréteur interdit les mauvaises habitudes de

programmation normalement autorisées par Perl Variables non déclarées ni initialisées, variables globales, …

Extension des possibilités par rapport aux CGI classiques Partage de variables entres sessions Gestion de sessions au niveau du serveur (Apache::Session) Gestion de caches persistants

Préchargement de modules Perl Cache de code (précompilation de scripts) et de données (variables de

session, résultat d’une requêtre SQL, …)

http://perl.apache.org

Page 26: Nouvelles techniques d’animation d’un site Internet / intranet

26

HTML::Mason 0.89 Approche de développement par composants

Découpage d’une page en « briques » Chaque composant est converti en une fonction Perl

Il peut donc recevoir des paramètres et/ou renvoyer une valeur Plus évolué que la notion d’inclusion de ePerl ou ASP.

Système de génération dynamique étroitement lié à Apache Un bon compromis pour utiliser mod_perl :

Gain de vitesse sensible par rapport au même code CGI De nombreux garde-fous pour ne pas tomber dans les pièges de

mod_perl (programmer « propre ») Gestion de caches pour le code et les données Gestion de versions (production / développement) Prévisualiseur permettant de simuler diverses conditions

d’utilisation (date/heure, navigateur, adresse source, …) Debugger / Profiler pour l’optimisation de code

http://www.masonhq.com/

Page 27: Nouvelles techniques d’animation d’un site Internet / intranet

27

HTML::Mason - Exemple http://www.serveur.org/exemple.html?nom=Laurent

<HTML><HEAD> <TITLE>Mason qui dit bonjour à <%$nom%></TITLE></HEAD><BODY><%perl> # Corps du document (commentaire Perl)

$m->out ("Bonjour $nom !");</%perl></BODY></HTML>

<%args> $nom => ’’</%args>

Page 28: Nouvelles techniques d’animation d’un site Internet / intranet

28

HTML::Embperl 1.3 Une approche qui s’éloigne encore plus que Mason d’un

« embedded Perl » simple tel que ePerl ou ASP. Exemples :

Délimiteurs : [+… +] : blocs à afficher [- … -] : blocs à exécuter, mais à ne pas afficher [$ … $] : méta-commandes Embperl

if/endif, while/endwhile, do/until, foreach/endforeach, … Raccourcis pour générer des tables HTML ($row, $col)

Des possibilités étendues, liées essentiellement à l’utilisation de mod_perl

%fdat, @ffld : paramètres de la requête (formulaire) Gestion de sessions (Apache::Session)

Paramètres sauvegardés par utilisateur (%udate) ou par page (%mdat)

Des performances liées également à l’utilisation de mod_perl

http://perl.apache.org/embperl/

Page 29: Nouvelles techniques d’animation d’un site Internet / intranet

29

HTML::Embperl - Exemple http://www.serveur.org/exemple.html?nom=Laurent

<HTML><HEAD> [- $nom = $fdat{’nom’} -] <TITLE>Embperl qui dit bonjour à [+$nom+]</TITLE></HEAD><BODY> [# Corps du document (commentaire Embperl) #] [+ "Bonjour $nom !" +]</BODY></HTML>

Page 30: Nouvelles techniques d’animation d’un site Internet / intranet

30

ASP - Active Server Pages Un système essentiellement propriétaire…

Version Microsoft des systèmes de type "Embedded xyz" Langages préconisés au départ : VBScript, Jscript (variante de Javascript)

Un système très simple d’utilisation Inclusion de blocs d'instructions de programme dans une page HTML

Possibilité d'utiliser des outils visuels (Dreamweaver 3) Un environnement accessible par le biais d'objets spécialisés

Request, Response, Server, Session, … Interface ISAPI : pas de création de processus pour traiter les requêtes

Meilleurs temps de chargement qu'un CGI a priori Gestion de caches de pages et de variables de sessions

Plate-forme typique : IIS sous Windows NT Intel Un portage commercial sous Unix existe (par Chili!Soft)

… mais pas totalement incompatible avec l'emploi de logiciels libres Point commun : Perl !

Sous Unix/Apache/mod_perl : module Apache::ASP Sous WinNT/IIS : PerlScript (composant de ActivePerl)

http://www.apache-asp.org/

Page 31: Nouvelles techniques d’animation d’un site Internet / intranet

31

ASP - Exemple en Perlscript http://www.serveur.org/exemple.asp?nom=Laurent

<%@ language=perlScript %><HTML><HEAD> <!–- lecture du paramètre (commentaire HTML)--> <% $nom = $Request->querystring("nom")->item; %> <TITLE>ASP qui dit bonjour à <%=$nom%></TITLE></HEAD><BODY><% # Corps du document (commentaire Perl)

$Response->write("Bonjour $nom !");%></BODY></HTML>

Page 32: Nouvelles techniques d’animation d’un site Internet / intranet

32

ColdFusion 4.0 Allaire : http://www.allaire.com Le moteur dynamique le plus utilisé aux Etats-Unis

4% des sites (ASP : 2%) Utilisation de balises supplémentaires : CFML (Cold Fusion Markup

Language) Syntaxe conforme à celle de HTML/XML -> utilisation possible dans des éditeurs

HTML, par exemple Dreamweaver Développement extrêmement rapide quand on se trouve dans les cas

prévus : Interrogation de bases de données SQL (<CFQUERY>) ou LDAP (<CFLDAP>) Applications de messagerie : envoi (<CFMAIL>) et réception (<CFPOP>) de

courrier électronique Interaction avec d’autres serveurs (<CFFTP>, <CFHTTP>)

Dans les autres cas, langage moins expressif qu’un langage de script « classique » comme Perl

Et lisibilité du code moins bonne (conflit entre les indentations HTML et les indentations CFML)

Page 33: Nouvelles techniques d’animation d’un site Internet / intranet

33

ColdFusion - Exemple http://www.serveur.org/exemple.cfm?nom=Laurent

<HTML><HEAD><CFOUTPUT><TITLE>CFML qui dit bonjour à #nom#</TITLE></HEAD><BODY>Bonjour #nom# :</TITLE></CFOUTPUT></BODY></HTML>

Page 34: Nouvelles techniques d’animation d’un site Internet / intranet

34

Roxen Challenger Un serveur Web modulaire et flexible

Interprété (écrit en Pike, langage proche de C) Administrable graphiquement (https://… via SSL) De nombreux modules

Gestion de la sécurité et des droits d'accès. Connections à des bases de données (SQL, LDAP, …). Génération dynamique de graphiques (texte graphique , diagrammes).

Un langage de macros, RXML. RXML est assez similaire à CFML (ColdFusion)

Limitations RXML doit souvent être complété par de l’ « embedded Pike » Les avantages de Roxen par rapport à ses concurrents touchent

surtout à l'accessoire (opinion personnelle). Génération de graphiques, module "Wizard", … CFML est plus aisé à utiliser en règle générale.

http://www.roxen.com/

Page 35: Nouvelles techniques d’animation d’un site Internet / intranet

35

Roxen – Exemple de RXML http://www.serveur.org/exemple.rxml?nom=Laurent

<HTML><FORMOUTPUT><HEAD> <TITLE>RXML qui dit bonjour à #nom#</TITLE></HEAD><BODY>Bonjour #nom# !</BODY></FORMOUTPUT></HTML>

Page 36: Nouvelles techniques d’animation d’un site Internet / intranet

36

Quid d’un « Embedded Python » ?

Il n’y a pas à l’heure actuelle de système à la fois simple et performant pour incclure du Python dans du HTML

Différents systèmes existent pourtant : ASPy, PMZ, ePython, … mais sont essentiellement du domaine expérimental

Voir http://sources.trad.org pour plus d’informations

Il existe par contre un système performant, mais complexe, à base d’objets Python : Zope

Page 37: Nouvelles techniques d’animation d’un site Internet / intranet

37

Zope (Z Object Publishing Environment) Un système de publication d'objets écrit en Python

Tous les fichiers sont remplacés par des objets gérés par une base de donnée objets, ZODB.

Ces objets sont tous manipulables via une interface Web. Possibilité toutefois d'utiliser les outils usuels (éditeurs, …)

Un serveur FTP intégré assure l'import/export des objets vers des fichiers.

Objet = meilleure réutilisabilité des développements. Modèle de sécurité et de délégation puissant

Conçu pour un travail collaboratif entre développeurs, administrateurs, responsables de contenu, …

Un système tout intégré Peut être servi par Apache ou par son propre serveur HTTP,

Zserver. Intègre un SGBDR léger, gadfly (écrit en Python), et un

système d'indexation (Zcatalogs).

http://www.zope.org/

Page 38: Nouvelles techniques d’animation d’un site Internet / intranet

38

Zope – Exemple de DTML http://www.serveur.org:8080/exemple?nom=Laurent

<HTML><dtml-let expr="REQUEST.form['nom']"><HEAD> <TITLE> DTML qui dit bonjour à <dtml-var nom> </TITLE></HEAD>

<BODY>Bonjour <dtml-var nom> !</BODY></dtml-let></HTML>

Page 39: Nouvelles techniques d’animation d’un site Internet / intranet

39

SGBD / Annuaires

GDBM, Berkeley DB, MySQL, PostgreSQL, OpenLDAP

Page 40: Nouvelles techniques d’animation d’un site Internet / intranet

40

Des bases de données pour le Web

Pourquoi ? Assurer le stockage des données associées à un site

dynamique Exemple : catalogue d'articles

Quel type de base de données ? Fichiers texte Fichiers DB / DBM Bases de données relationnelles (SGBDR) Serveurs d'annuaires LDAP

Page 41: Nouvelles techniques d’animation d’un site Internet / intranet

41

Fichiers texte Qu'est-ce que c'est ?

Fichiers texte (ASCII) ordinaires Caractéristiques

Facilité d'édition et de mise à jour (éditeur de texte) Mécanisme d'accès : lecture séquentielle

Certains systèmes permettent d'appliquer des requêtes SQL (relationnelles) aux fichiers texte.

Module DBD::CSV (Perl) Drivers ODBC

Performances modestes Initialisation : nécessité de lire la totalité du fichier en

mémoire. Se limiter à quelques dizaines d'enregistrements. Aucun mécanisme de contrôle d'intégrité référentielle Utilisation de préférence en lecture seule

Page 42: Nouvelles techniques d’animation d’un site Internet / intranet

42

Fichiers DB / xDBM Qu'est-ce que c'est ?

Famille de formats de stockage "clé -> valeur". Un algorithme de hachage permet d'accéder efficacement aux valeurs

à partir des clés. Caractéristiques

Formats standard sous Unix. Correspondance transparente avec le type "tableau associatif"

dans certains langages de script (Perl, Python). Mal adapté pour représenter l’équivalent d’un SGBD relationnel

1 clé + 1 valeur = 2 colonnes … Pas de notion d’intégrité référentielle

Exemples GDBM : implémentation GNU, libre. Berkeley DB (http://www.sleepycat.com) : implémentation très

performante SDBM : la seule implémentation de DBM disponible sous NT.

Page 43: Nouvelles techniques d’animation d’un site Internet / intranet

43

SGBDR - Système de Gestion de Bases de Données Relationnelles Qu'est-ce que c'est ?

Une base de données où les entités modélisées ainsi que leurs associations sont représentées sous forme de tables

Ligne = une instance de l'entité Colonne = un attribut de l'entité

Caractéristiques Modèle sous-jacent : algèbre relationnelle, ensembliste Un langage d'interrogation normalisé : SQL

Ensembliste, non procédural Des mécanismes garantissant la cohérence des données

Contraintes d'intégrité référentielle, transactions, … Exemples

Commerciaux : Oracle, Sybase, SQL Server … Libres : PostgreSQL, MySQL, mSQL, Bureautiques : Access …

Page 44: Nouvelles techniques d’animation d’un site Internet / intranet

44

MySQL 3.23 SGBDR léger et extrêmement répandu

Client/serveur, multi-utilisateurs, multi-thread, SQL Logiciel libre (été 2000), multi plate-forme

Souvent utilisé ou proposé en conjonction avec PHP Exemple : Free (http://www.free.fr)

Rapide et robuste Un modèle de sécurité très riche

Granularité des permissions très fine (utilisateur, machine, table, colonne, …) De très nombreux outils et bibliothèques

API (Perl, C, php, ODBC, Java/JDBC, …) Interfaçable avec Apache, POP3, … Clients graphiques (X11, Win32)

Limitations / lacunes Pas de sous-requêtes, ni de vues

Impossibilité de faire des mises à jour sur plusieurs tables simultanément Pas de transactions (explique en partie la rapidité de MySQL) Pas de procédures stockées

http://www.mysql.com/

Page 45: Nouvelles techniques d’animation d’un site Internet / intranet

45

PostgreSQL 7.0.3

LE challenger de MySQL ? Comble l’essentiel des lacunes de MySQL…

Vues / sous-requêtes, transactions, procédures stockées

Meilleure conformité avec SQL/92 Meilleur comportement en contexte multi-utilisateur

… au prix toutefois de : Performances inférieures dans certains cas Relativement moindre universalité

Interfaçable cependant avec Perl, Python, Java, PHP, Coldfusion, Pike, …

http://www.postgresql/org

Page 46: Nouvelles techniques d’animation d’un site Internet / intranet

46

Serveur d'annuaire LDAP Qu'est-ce que c'est ?

"Lightweight Directory Access Protocol" Version simplifiée du protocole DAP de X.500

Spécification à plusieurs niveaux : structuration (nommage des données, arborescence) protocole d'interrogation en réseau des données Distribution, réplication et sécurité des données Format LDIF (ASCII) : import / export d'informations

Caractéristiques : Adapté au stockage d'un grand nombre d'entrées contenant

chacune une faible quantité d'informations. Optimisation de la lecture par rapport à l'écriture.

Très grande rapidité d’accès en lecture De plus en plus souvent utilisé comme "Lightweight

Database Access Protocol".

Page 47: Nouvelles techniques d’animation d’un site Internet / intranet

47

OpenLDAP 2.0.7 Un (le ?) serveur LDAP v3 libre

Dérivé de UMich LDAP (Université du Michigan), première implémentation libre de LDAP

Support de LDAP v3 depuis la version 2 Caractéristiques

Cohérence et sécurité : schémas LDAP, ACLs Supporte réplication et distribution Stockage des données : DBM (par défaut)

Stockage dans un SGBDR (Oracle, …) possible Et, naturellement, support de tous les outils LDAP standard

Browsers / éditeurs LDAP API : Net::LDAP (Perl), JNDI (Java), fonctions ldap_* (PHP),

<CFLDAP> (Coldfusion), <LDAPOUTPUT> (Roxen), ZopeLDAP (Zope) …

http://www.openldap.org/

Page 48: Nouvelles techniques d’animation d’un site Internet / intranet

48

Boite à outils Perl

Petite sélection de modules utiles

Page 49: Nouvelles techniques d’animation d’un site Internet / intranet

49

Le CPAN (http://www.cpan.org)

Le site où sont regroupés tous les développements ayant trait à Perl (versions, portages, modules, …)

De nombreux miroirs existent dans le monde, par exemple :

ftp://ftp.lip6.fr/pub/perl/cpan La liste et la documentation des modules est

consultable en ligne, notamment sur : http://theoryx5.uwinnipeg.ca/CPAN/by-module

Page 50: Nouvelles techniques d’animation d’un site Internet / intranet

50

Bundle::CPAN

Module de la bibliothèque standard Installation automatisée de modules Perl

Gère les téléchargements (FTP) et les dépendances entre modules

Utilisation : Sur la ligne de commande :

perl –MCPAN –e shell A l’invite qui s’affiche, taper :

install HTML::Parser

Page 51: Nouvelles techniques d’animation d’un site Internet / intranet

51

Bundle::CGI Module de la bibliothèque standard Simplification de l’écriture de programmes CGI

Moins utile avec des sytèmes des type « embedded Perl » Inutile avec mod_perl (ASP, Mason, Embperl) qui propose un

mécanisme plus efficace (Apache::Registry) Exemples :

use CGI;$q = new CGI;

print $q->param; # liste des paramètres présents dans le requête d’appel

print $q->param(‘nom’); # la/les valeur(s) du paramètre ‘nom’ print $q->dump; # dump HTML des paramètres de la requête,

et de leur(s) valeur(s) print $q->hidden(‘nom’); # transmission de la valeur actuelle

du paramètre nom sous forme de champ caché

Page 52: Nouvelles techniques d’animation d’un site Internet / intranet

52

HTML::Parser

Analyse syntaxique de documents HTML HTML::Parser inclut également une collection

de sous-modules plus spécialisés : HTML::Entities : encodage/décodage des entités

HTML HTML::HeadParser : analyse de l’en-tête d’un

document HTML::LinkExtor : extraction des liens d’un document HTML::TokeParser : interface d’utilisation simplifiée

Page 53: Nouvelles techniques d’animation d’un site Internet / intranet

53

HTML::TokeParser

Exemple : extraction de liens <A HREF=…>

use HTML::TokeParser;

$p = HTML::TokeParser->new(shift||"index.html");

while (my $token = $p->get_tag("a")) { my $url = $token->[1]{href} || "-"; my $text = $p->get_trimmed_text("/a"); print "$url\t$text\n";}

Page 54: Nouvelles techniques d’animation d’un site Internet / intranet

54

Bundle::LWP (libwwwperl) Collection des modules gérant les requêtes

HTTP, notamment : LWP::Simple : interface simplifiée LWP::UserAgent : simulation d’un navigateur LWP::Robot : variante du précédent spécialisée pour

l’implémentation de robots HTTP::Request : encapsulation de requêtes HTTP HTTP::Response : encapsulation des réponses HTTP HTTP::Status : traitement des codes de retour HTTP

Une introduction intéressante : http://www.w3j.com/6/s3.wong.html

Attention, le module HTML::Parse est obsolète !

Page 55: Nouvelles techniques d’animation d’un site Internet / intranet

55

LWP::Simple

Exemple : récupération d’un document

use LWP::Simple;get (http://www.admi.net);

Page 56: Nouvelles techniques d’animation d’un site Internet / intranet

56

URI

Module de traitement des URI / URL Décomposition d'un URI, conversion relatif <->

absolu, … Exemple : conversion relatif -> absolu

use URI;

$u1 = URI->new("http://www.perl.com");$u2 = URI->new("foo");$u3 = $u2->abs($u1);

Page 57: Nouvelles techniques d’animation d’un site Internet / intranet

57

WWW::Robot

Le module LWP fournit tous les éléments nécessaires pour construire des robots de parcours du Web

WWW::Robot s'appuie sur LWP pour proposer un tel robot personnalisable

La personnalisation se fait au moyen de fonctions utilisateurs, qui sont reliées (« hooks ») au robot

Page 58: Nouvelles techniques d’animation d’un site Internet / intranet

58

Net::*

Famille de modules implémentant des fonctionnalités réseau

Net::FTP : interaction avec un serveur FTP Net::LDAP : interrogation d’un serveur d’annuaire

LDAP Net::SMTP : envoi d’e-mails …

Page 59: Nouvelles techniques d’animation d’un site Internet / intranet

59

DBI / DBD::*

Module d’accès à des bases de données SQL Le fonctionnement est architecturé en deux

couches : DBI (« Interface ») : fonctions de haut niveau,

indépendantes du SGBD DBD (« Driver ») : bibliothèques d’interfaçage avec

un SGBD donné Oracle, Sybase, MySQL, …

Page 60: Nouvelles techniques d’animation d’un site Internet / intranet

60

DBI/DBD::* : exemple Consultation d’une table via SQL

use DBI;$dbh = DBI->connect( "DBI:mysql:database=scott;host=localhost", "scott", "tiger");$sth = $dbh->prepare("SELECT ename FROM emp");$sth->execute;while (($nom) = $sth->fetchrow_array) { print "$nom\n";}$sth->finish;$dbh->disconnect;

Page 61: Nouvelles techniques d’animation d’un site Internet / intranet

61

GD

Module de génération et de manipulation d'images JPEG ou PNG

GIF n'est plus supporté par les nouvelles versions (problème de licence)

Intérêt : génération d'images / graphiques / … à la volée

Modules apparentés : Famille Graph:: PerlMagick : interface avec ImageMagick

(http://www.imagemagick.org)

Page 62: Nouvelles techniques d’animation d’un site Internet / intranet

62

Text::Template Module permettant d'inclure du code Perl dans des fichiers

modèles (« templates ») L’ancêtre des approches « embedded Perl »

Exemple : use Text::Template;

$nom = "Scherer";$email = "[email protected]";$texte = Text::Template->fill_this_in(<<FIN);Cher Monsieur {$nom},

Vous venez de gagner le droit de passer la journée à Fontainebleau

Les membres du CRIFINopen MAIL, "|mail $email";print MAIL $texte;close MAIL;

Page 63: Nouvelles techniques d’animation d’un site Internet / intranet

63

Digest::MD5

Module réalisant l'encryptage d'une chaîne de caractères en une signature MD5

Exemples d'utilisation : Signer un e-mail Signer un fichier Signer une URL

Page 64: Nouvelles techniques d’animation d’un site Internet / intranet

64

Analyse de trafic

Exemple d'Analog

Page 65: Nouvelles techniques d’animation d’un site Internet / intranet

65

Gestion des fichiers de logs Choix du format de log (access_log)

Format COMMON date, heure, IP du client, requête HTTP, code de retour. On peut créer aussi les fichiers referrer_log et agent_log.

Format COMBINED : le plus riche pour les statistiques Format COMMON, combiné avec "referrer" et "user-agent". C'est le format qui permet d'approcher au plus près la notion

de session, absente de HTTP. Administration :

Découpage périodique des logs 1 Mo de log pour 5000 lignes environ (format COMBINED) Découpage et archivage (.gz) automatisable (logrotate, …)

Exploitation des logs Application d'un outil de statistiques : Analog, Webalizer, …

Page 66: Nouvelles techniques d’animation d’un site Internet / intranet

66

Statistiques de consultation Volume global de consultation

"hit" (requête HTTP) : souvent vide de sens Grandeur directement proportionnelle à la complexité des pages

"pages HTML" : déjà plus parlant Attention : L'appel d'un "frameset" représente 3 ou 4 pages…

"visite" : est encore mieux… Mais plus difficile à appréhender (pas de sessions en HTML)

Détail des consultations Pages les plus consultées : optimisation (images), … Points de blocage : voir error_log, …

Référencement du site Référencements statiques (liens "fixes" depuis un autre site) Référencements dynamiques (liens "générés" par un moteur)

Quels moteurs ? Quels termes de recherche ? Navigateurs et systèmes d'exploitation

Permet de cibler le niveau de HTML à utiliser dans le site

Page 67: Nouvelles techniques d’animation d’un site Internet / intranet

67

Analog 4.13 Outil d'analyse de logs extrêmement flexible

De nombreux types de rapport sélectionnables Rapports chronologique : mois, semaine, jour, heure, … Rapports non-chronologiques

Hôtes, organisations et domaines Référencement

Analyse des requêtes des indexeurs Systèmes d'exploitation

De nombreuses options de personnalisation Format(s) du ou des fichier(s) source(s) Choix de la langue du rapport Choix des grandeurs représentées (requêtes, pages,

octets) "utilisé par 25% des webmasters dans le monde"

http://www.analog.cx

Page 68: Nouvelles techniques d’animation d’un site Internet / intranet

68