Nouvelles techniques d animation d un site internet intranet
This presentation is the property of its rightful owner.
Sponsored Links
1 / 68

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


  • 74 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

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

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, …


Nouvelles techniques d animation d un site internet intranet

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);


Nouvelles techniques d animation d un site internet intranet

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


Nouvelles techniques d animation d un site internet intranet

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;


Nouvelles techniques d animation d un site internet intranet

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"


  • Login