nouvelles techniques d animation d un site internet intranet
Download
Skip this Video
Download Presentation
Nouvelles techniques d’animation d’un site Internet / intranet

Loading in 2 Seconds...

play fullscreen
1 / 68

Nouvelles techniques d’animation d’un site Internet / intranet - PowerPoint PPT Presentation


  • 110 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Nouvelles techniques d’animation d’un site Internet / intranet' - munin


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
nouvelles techniques d animation d un site internet intranet

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

ENSMP/CRI, 8 décembre 2000

---

Laurent DAVERIO

table des mati res
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
sources de logiciels libres

Sources de logiciels libres

http://sources.trad.org

http sources trad org
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 plusexhaustive, voir par exemplewww.appwatch.com
  • Recherche de logiciels par
    • nom / description,
    • catégories
  • Réalisation :
    • HTML::Mason
    • OpenLDAP
ht dig

http://www.htdig.org/

ht://Dig

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

ht dig 3 2
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
caract ristiques
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.
langages de script

Langages de script

Perl, Python, Zend, …

introduction
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
perl 5 6

http://www.perl.com

Perl 5.6

http://www.activestate.com

  • 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.
python 2 0
Python 2.0

http://www.python.org

  • 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, …
slide12
Zend

http://www.zend.com

  • 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 » ?
syst mes de g n ration dynamique de pages web

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

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

introduction1
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)
cgi common gateway interface
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, …)
cgi principe de fonctionnement
CGI - Principe de fonctionnement
  • Le client Web (navigateur) envoie une requête HTTP au serveur Web
  • 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)
  • 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), …
  • La sortie standard (STDOUT) du programme CGI est redirigée vers le logiciel serveur Web, qui la retransmet à l\'utilisateur
cgi exemple en perl variante 1
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>";
cgi exemple en perl variante 2
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>";
cgi exemple en perl variante 3 avec syntaxe here document
CGI - Exemple en Perl (variante 3, avec syntaxe « here document »)
  • 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 << FIN;Content-type:text/html<HTML><HEAD><TITLE>CGI qui dit bonjour à $nom</TITLE></HEAD><BODY>Bonjour $nom !</BODY></HTML>FIN
cgi exemple en perl variante 4 avec module text template
CGI - Exemple en Perl (variante 4, avec module Text::Template)
  • http://www.serveur.org/cgi-bin/exemple.cgi?nom=Laurent
    • #! /usr/local/bin/perluse 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
php 4 0
PHP 4.0

http://www.php.net

  • 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
php exemple
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>
eperl 2 2
ePerl 2.2

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

  • 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
eperl exemple
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>
mod perl 1 24
Mod_perl 1.24

http://perl.apache.org

  • 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, …)
html mason 0 89
HTML::Mason 0.89

http://www.masonhq.com/

  • 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
html mason exemple
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>
html embperl 1 3

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

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
html embperl exemple
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>
asp active server pages

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

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)
asp exemple en perlscript
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>
coldfusion 4 0
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)
coldfusion exemple
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>
roxen challenger
Roxen Challenger

http://www.roxen.com/

  • 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.
roxen exemple de rxml
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>
quid d un embedded python
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
zope z object publishing environment
Zope (Z Object Publishing Environment)

http://www.zope.org/

  • 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).
zope exemple de dtml
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>
sgbd annuaires

SGBD / Annuaires

GDBM, Berkeley DB, MySQL, PostgreSQL, OpenLDAP

des bases de donn es pour le web
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
fichiers texte
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
fichiers db xdbm
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.
sgbdr syst me de gestion de bases de donn es relationnelles
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 …
mysql 3 23
MySQL 3.23

http://www.mysql.com/

  • 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
postgresql 7 0 3
PostgreSQL 7.0.3

http://www.postgresql/org

  • 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, …
serveur d annuaire ldap
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".
openldap 2 0 7
OpenLDAP 2.0.7

http://www.openldap.org/

  • 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) …
boite outils perl

Boite à outils Perl

Petite sélection de modules utiles

le cpan http www cpan org
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
bundle cpan
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
bundle cgi
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é
html parser
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
html tokeparser
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";}
bundle lwp libwwwperl
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 !
lwp simple
LWP::Simple
  • Exemple : récupération d’un document
    • use LWP::Simple;get (http://www.admi.net);
slide56
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);
www robot
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
slide58
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
dbi dbd
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, …
dbi dbd exemple
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;
slide61
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)
text template
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 à FontainebleauLes membres du CRIFINopen MAIL, "|mail $email";print MAIL $texte;close MAIL;
digest md5
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
analyse de trafic

Analyse de trafic

Exemple d\'Analog

gestion des fichiers de logs
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, …
statistiques de consultation
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
analog 4 13
Analog 4.13

http://www.analog.cx

  • 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"
ad