680 likes | 832 Views
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
E N D
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 • Boite à outils Perl … 48 • Analyse de trafic … 64
Sources de logiciels libres 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
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 • 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 • 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 Perl, Python, Zend, …
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
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 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, …
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 CGI, ASP, ePerl, PHP, ASP, Mason, Coldfusion, …
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 • 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 • 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) • 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) • 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 ») • 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) • 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 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 • 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 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 • 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 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 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 • 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>
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 • 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>
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 • 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 • 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 • 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 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 • 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 » ? • 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) 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 • 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 GDBM, Berkeley DB, MySQL, PostgreSQL, OpenLDAP
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 • 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 • 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 • 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 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 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 • 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 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 Petite sélection de modules utiles
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 • 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