La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Nouvelles techniques danimation dun site Internet / intranet ENSMP/CRI, 8 décembre 2000 --- Laurent DAVERIO.

Présentations similaires


Présentation au sujet: "1 Nouvelles techniques danimation dun site Internet / intranet ENSMP/CRI, 8 décembre 2000 --- Laurent DAVERIO."— Transcription de la présentation:

1 1 Nouvelles techniques danimation dun site Internet / intranet ENSMP/CRI, 8 décembre 2000 --- Laurent DAVERIO

2 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

3 3 Sources de logiciels libres http://sources.trad.org

4 4 Au départ, un bloc-notes personnel pour noter les adresses de téléchargement dun certain nombre de logiciels libres ou gratuits « intéressants ». La notion d « intéressant » est assez subjective… Pour une vision plus exhaustive, voir par exemple www.appwatch.com www.appwatch.com Recherche de logiciels par nom / description, catégories Réalisation : HTML::Mason OpenLDAP

5 5 ht://Dig Le moteur dindexation et de recherche le plus répandu dans le domaine du logiciel libre http://www.htdig.org/

6 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 spécifiques Moteur dindexation (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 dun dictionnaire) par synonymes (à partir dune table de correspondances) Moteur de recherche (htsearch) Utilisé sous forme de CGI

7 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 dexpressions : 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.

8 8 Langages de script Perl, Python, Zend, …

9 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

10 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) :http://www.cpan.org/ Une bibliothèque de modules très étendue. Dont un module CPAN qui automatise linstallation dautres modules Mais ces modules ne sont pas, en majorité, fournis dans la distribution standard. http://www.activestate.com http://www.perl.com

11 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

12 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 larchitecture (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, dimages, de boites à lettres IMAP, de SGBD (MySQL, …), dannuaires LDAP, gestion de sessions… Avantage : tout est intégré en standard Inconvénient : il ny a pas la notion de modules comme en Perl Comme Perl, ce nest pas un vrai langage à objets Notion de classes PHP, qui encapsulent variables et méthodes Zend, un « sous Perl » ? http://www.zend.com

13 13 Systèmes de génération dynamique de pages Web CGI, ASP, ePerl, PHP, ASP, Mason, Coldfusion, …

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

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

16 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

17 17 CGI - Exemple en Perl (variante 1) 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 "Content-type:text/html\n\n"; print " "; print " "; print " CGI qui dit bonjour à $nom "; print " "; print " "; print "Bonjour $nom !"; print " "; print " ";

18 18 CGI - Exemple en Perl (variante 2) 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 "Content-type:text/html\n\n", " ", " ", " CGI qui dit bonjour à $nom ", " ", " ", "Bonjour $nom !", " ", " ";

19 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 CGI qui dit bonjour à $nom Bonjour $nom ! FIN

20 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( CGI qui dit bonjour à {$nom} Bonjour {$nom} ! FIN

21 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 daccès, dont Free (http://www.free.fr) et Multimania.http://www.free.fr 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

22 22 PHP - Exemple http://www.serveur.org/exemple.php?nom=Laurent PHP qui dit bonjour à

23 23 ePerl 2.2 Modification du parser standard Perl Extension de lapproche 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 sutiliser 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/

24 24 ePerl - Exemple http://www.serveur.org/exemple.phtml?nom=Laurent param("nom"); !> ePerl qui dit bonjour à

25 25 Mod_perl 1.24 Mod_perl associe un interpréteur Perl résident à Apache Possibilité de paramétrer le comportement dApache 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 linterpréteur Perl à chaque requête utilisateur Inconvénients : Complexité dutilisation la persistance de linterpré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 dune requêtre SQL, …) http://perl.apache.org

26 26 HTML::Mason 0.89 Approche de développement par composants Découpage dune 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 dinclusion 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 dutilisation (date/heure, navigateur, adresse source, …) Debugger / Profiler pour loptimisation de code http://www.masonhq.com/

27 27 HTML::Mason - Exemple http://www.serveur.org/exemple.html?nom=Laurent Mason qui dit bonjour à # Corps du document (commentaire Perl) $m->out ("Bonjour $nom !"); $nom =>

28 28 HTML::Embperl 1.3 Une approche qui séloigne encore plus que Mason dun « 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 à lutilisation 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 à lutilisation de mod_perl http://perl.apache.org/embperl/

29 29 HTML::Embperl - Exemple http://www.serveur.org/exemple.html?nom=Laurent [- $nom = $fdat{nom} -] Embperl qui dit bonjour à [+$nom+] [# Corps du document (commentaire Embperl) #] [+ "Bonjour $nom !" +]

30 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 dutilisation 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/

31 31 ASP - Exemple en Perlscript http://www.serveur.org/exemple.asp?nom=Laurent querystring("nom")->item; %> ASP qui dit bonjour à write("Bonjour $nom !"); %>

32 32 ColdFusion 4.0 Allaire : http://www.allaire.comhttp://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 ( ) ou LDAP ( ) Applications de messagerie : envoi ( ) et réception ( ) de courrier électronique Interaction avec dautres serveurs (, ) Dans les autres cas, langage moins expressif quun langage de script « classique » comme Perl Et lisibilité du code moins bonne (conflit entre les indentations HTML et les indentations CFML)

33 33 ColdFusion - Exemple http://www.serveur.org/exemple.cfm?nom=Laurent CFML qui dit bonjour à #nom# Bonjour #nom# :

34 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/

35 35 Roxen – Exemple de RXML http://www.serveur.org/exemple.rxml?nom=Laurent RXML qui dit bonjour à #nom# Bonjour #nom# !

36 36 Quid dun « Embedded Python » ? Il ny a pas à lheure 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 dinformationshttp://sources.trad.org Il existe par contre un système performant, mais complexe, à base dobjets Python : Zope

37 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/

38 38 Zope – Exemple de DTML http://www.serveur.org:8080/exemple?nom=Laurent DTML qui dit bonjour à Bonjour !

39 39 SGBD / Annuaires GDBM, Berkeley DB, MySQL, PostgreSQL, OpenLDAP

40 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

41 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

42 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 dun SGBD relationnel 1 clé + 1 valeur = 2 colonnes … Pas de notion dintégrité référentielle Exemples GDBM : implémentation GNU, libre. Berkeley DB (http://www.sleepycat.com) : implémentation très performantehttp://www.sleepycat.com SDBM : la seule implémentation de DBM disponible sous NT.

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

44 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)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/

45 45 PostgreSQL 7.0.3 LE challenger de MySQL ? Comble lessentiel 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

46 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é daccès en lecture De plus en plus souvent utilisé comme "Lightweight Database Access Protocol".

47 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), (Coldfusion), (Roxen), ZopeLDAP (Zope) … http://www.openldap.org/

48 48 Boite à outils Perl Petite sélection de modules utiles

49 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

50 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 linvite qui saffiche, taper : install HTML::Parser

51 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 dappel 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é

52 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 len-tête dun document HTML::LinkExtor : extraction des liens dun document HTML::TokeParser : interface dutilisation simplifiée

53 53 HTML::TokeParser Exemple : extraction de liens 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"; }

54 54 Bundle::LWP (libwwwperl) Collection des modules gérant les requêtes HTTP, notamment : LWP::Simple : interface simplifiée LWP::UserAgent : simulation dun navigateur LWP::Robot : variante du précédent spécialisée pour limplé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 !

55 55 LWP::Simple Exemple : récupération dun document use LWP::Simple; get (http://www.admi.net);

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

57 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

58 58 Net::* Famille de modules implémentant des fonctionnalités réseau Net::FTP : interaction avec un serveur FTP Net::LDAP : interrogation dun serveur dannuaire LDAP Net::SMTP : envoi de-mails …

59 59 DBI / DBD::* Module daccè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 dinterfaçage avec un SGBD donné Oracle, Sybase, MySQL, …

60 60 DBI/DBD::* : exemple Consultation dune 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;

61 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)http://www.imagemagick.org

62 62 Text::Template Module permettant d'inclure du code Perl dans des fichiers modèles (« templates ») Lancêtre des approches « embedded Perl » Exemple : use Text::Template; $nom = "Scherer"; $email = "scherer@paris.ensmp.fr"; $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 CRI FIN open MAIL, "|mail $email"; print MAIL $texte; close MAIL;

63 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

64 64 Analyse de trafic Exemple d'Analog

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

66 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

67 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

68 68


Télécharger ppt "1 Nouvelles techniques danimation dun site Internet / intranet ENSMP/CRI, 8 décembre 2000 --- Laurent DAVERIO."

Présentations similaires


Annonces Google