Carnet Web de Poy

Aller au contenu | Aller au menu | Aller à la recherche

vendredi, avril 21 2006

Diagramme de la base information_schema

La base information_schema contient toutes les métadonnées sur le serveur MySQL. Les métadonnées sont les informations sur les données, telles que la liste des bases de données, des tables, le type des données, des colonnes, les procédures stockées, ou bien les droits d'accès. On appelle aussi ces données le "dictionnaire de données" ou le "catalogue système", et toutes ces informations sont accessibles à l'aide de requêtes SQL classiques.

Roland Bouman maintient depuis juin 2005 un diagramme de la base information_schema, disponible sous forme d'image GIF.

jeudi, avril 20 2006

JSMin, le réducteur Javascript

JSMin, The JavaScript Minifier, de Douglas Crockford, est un filtre qui enleve tous les commentaires et les espaces blancs inutiles de programmes Javascript. En moyenne il permet de diviser la taille d'un fichier par deux, permettant de diminuer d'autant le temps de téléchargement du fichier sur le serveur.

JSMin n'est pas un assombrisseur de code ("obfuscator"), il ne modifie pas la structure même du code, ni même le nom des variables, il se limite juste à enlever tout ce qui est inutile, et le programme ainsi compressé fonctionne exactement de la même façon que le programme original.

Le code source est disponible en différentes saveurs, C, C#, Java, Python, Ruby, et PHP.

mercredi, avril 19 2006

Moteur de stockage transactionnel SolidDB pour MySQL

MySQL risque de bientôt avoir à disposition un nouveau moteur de stockage transactionnel, grâce au moteur de stockage SolidDB de la société Solid Information Technology.

En octobre dernier, Oracle a racheté la société Innobase, et son moteur de stockage InnoDB, qui était un composant essentiel pour la base de données libre MySQL. Puis, en février, Oracle a ensuite racheté la société Sleepycat Software, et son moteur de stockage Berkeley DB. Ces rachats ont fait beaucoup couler d'encre, les intentions de Oracle n'étant pas très claire sur le sujet, même s'il ne faut pas être très futé pour voir que le géant veut clairement mettre des batons dans les roues de la petite société suédoise.

Enfin, une petite lueur d'espoir apparait, car Solid va développer un moteur de stockage transactionnel pour MySQL, en utilisant un modèle de distribution en double-licence en partie identique à celui de MySQL : GPL (pour l'internaute lambda), et licence commerciale pour les sociétés qui veulent disposer du support sur le produit.

Le premier prototype devrait être disponible fin avril, pour la conférence des utilisateurs MySQL. Une version béta, accompagnée de son code source sera disponible pour le mois de juillet, et la version finale est prévue pour la fin de l'année.

Voir aussi :

Vérifier son code JavaScript avec JavaScript Lint

JSlint, The JavaScript Verifier de Douglas Crockford est un validateur de syntaxe Javascript en ligne. Il permet de repérer les erreurs au sein du code, à commencer par les erreurs de syntaxe, mais aussi les constructions pouvant poser des problèmes (comme les if() sans accolades), Javascript étant relativement permissif à ce niveau là.

Depuis peu, un autre validateur Javascript a vu le jour, JavaScript Lint de Matthias Miller. Il reprends le même principe que son ainé, à savoir un validateur en ligne, mais la spécificité de l'outil est d'être construit autour d'une extension de SpiderMonkey (le moteur Javascript de Firefox), ce qui lui permet de venir s'intégrer très facilement dans l'environnement de développement sur le poste client (par ex. de l'intégrer dans SciTE en tant que compilateur externe). A l'usage, on s'apercoit qu'il signale les erreurs de manière plus complète et plus pertinente que le JSLint original.

mardi, avril 18 2006

S5: Un système de slide show basé sur les standards

S5 de Eric Meyer est un système de slide show entièrement basé sur des technologies standards : XHTML, CSS et Javascript. Dans un seul fichier, vous disposez d'un slide show parfaitement opérationnel, ainsi que de sa version imprimable. Le code XHTML utilisé est extrêmement simple, sémantique et complètement accessible. Quiconque ayant un minimum de connaissances en XHTML peut adapter le code à ses propres besoins, et quiconque ayant un minimum de connaissances en CSS peut créer son propre thème pour les présentations. Ce système est d'une simplicité à toutes épreuves, et repose totalement sur les standards du web actuels.

Pour voir S5 en action, voir le slide show d'introduction à S5.

vendredi, avril 14 2006

Pagination des résultats dans l'interpréteur de ligne de commande MySQL

Lorsque l'on utilise MySQL en ligne de commande, il arrive parfois que l'on soit confronté à des requêtes renvoyant (beaucoup) plus de lignes que ne peut en contenir l'écran. Souvent, même, lorsque le nombre de colonnes est trop élevé, les enregistrements sont présentés sur plusieurs lignes, ce qui nuit grandement à la lisibilité.

Dans un cas comme dans l'autre, on attends en général devant un écran qui défile à vitesse grand V, jusqu'à ce que tous les enregistrements soient enfin affichés, sachant que le buffer du terminal n'a gardé en mémoire que les X dernières lignes (en général 1000) ce qui fait qu'il est parfois très difficile de s'y retrouver.

La solution, vue sur PHPCult, consiste à définir le pageur qui va être chargé de l'affichage des résultats :

mysql> \P less
mysql> PAGER set to 'less'
mysql> select foo from bar;

Et voilà ! Maintenant les résultats apparaissent à travers la commande less, ce qui est bien plus lisible que la sortie standard sur stdout, il faut l'avouer.

Pour désactiver le pageur, il suffit d'utiliser la commande :

mysql>

La documentation officielle MySQL précise que l'on peut utiliser n'importe quelle commande Unix pour le pageur, parmi lesquelles on peut trouver less, more, cat [> filename], et ainsi de suite (on peut même y passer des options, ou bien utiliser des pipes). Il faut tout de même savoir que cette option ne marche que sur Unix, et qu'elle ne fonctionne pas en mode batch.

jeudi, avril 6 2006

Premier brouillon des spécifications XMLHttpRequest au W3C

L'élément fondamental de la technologie AJAX, à savoir l'objet XMLHttpRequest, vient de faire un petit pas sur le chemin de sa standardisation : le premier brouillon des spécifications (working draft) a été publié sur le site du W3C.

2006-04-05: The Web API Working Group has released the First Public Working Draft of The XMLHttpRequest Object. The draft documents features of the XMLHttpRequest object based on existing implementations. The interface allows scripts to perform HTTP client functions, such as submitting form data or loading data from a remote Web site. Read about the Rich Web Clients Activity.

Le Javascript et le XML sont d'ores et déjà des standards, il ne manquait plus qu'une version standardisée de XMLHttpRequest pour que la technologie AJAX devienne un standard. En effet, à l'heure actuelle, cet objet javascript est implémenté de manière totalement différente selon les navigateurs.

Nous sommes donc sur la bonne voie, et si tout se passe bien, le Web APIs Working Group, qui s'occupe de définir des interfaces de programmation pour les clients Web, devrait accoucher dans un futur proche d'un nouveau standard, ce qui va à n'en point douter simplifier la vie des développeurs.

dimanche, avril 2 2006

WebOnorme, l'annuaire francophone sur les standards du web

WebOnorme est un annuaire de ressources, principalement francophones, sur les standards du web, l'accessibilité, la sémantique, l'utilisabilité , l'ergonomie, les CSS, l'Ecmascript, le XML...

Cet annuaire a été développé afin de palier à la difficulté de trouver des ressources francophones sur les standards du web, et l'on peut d'ores et déjà y trouver l'essentiel de ce que tout bon developpeur web se doit de connaire.

Une ressource à ne pas manquer !

Envoi de mails avec la Classe Sendmail

La classe Sendmail est une surcouche aux classes Mail et Mail_Mime de PEAR, permettant d'envoyer des mails, de manière relativement simplifiée. Ainsi, pour envoyer un mail au format texte/HTML, il suffit juste de faire :

$mail = new Sendmail($driver, $params);
$mail->setFrom($from);
$mail->setSubject($subject);
$mail->setRecipients(array('to' => $to, 'cc' => $cc, 'bcc' => $bcc));
$mail->setText($text_version);
$mail->setHtml($html_version);
$mail->send();

où $driver et $param sont les paramètres passés à la méthode factory() de la classe PEAR::Mail.

De plus, il est possible d'attacher à un objet Sendmail des objets observateurs, qui vont être prévenus par l'objet Sendmail dès qu'un mail est en cours d'envoi. Cela peut par exemple servir pour enregistrer le mail dans une base de données, ou à le stocker dans un fichier mbox :

$mail = new Sendmail($driver, $params);
$mail->attach(new Sendmail_Mbox('/tmp/mbox'));
$mail->attach(new Sendmail_DB($db, 'INSERT INTO mail VALUES (null,?,?,?,?,?,?,?)'));

Qui a dit qu'envoyer des mails était compliqué ?

jeudi, mars 30 2006

MySQL nativement en UTF-8

Quand on veut produire des pages web en utilisant le jeux de caractères UTF-8 d'un bout à l'autre de la chaine (des tables de la base de données en UTF-8, jusqu'à l'encodage des pages (X)HTML en UTF-8), on se retrouve confronté au problème suivant, qui est que la connection entre PHP et MySQL s'effectue par défaut en latin1 standard.

Pour y remédier, la solution la plus propre est de changer, au niveau du serveur, le jeux de caractère utilisé pour la connection, en rajoutant la ligne suivante dans la section [mysqld] du fichier de configuration de MySQL (généralement /etc/mysql/my.cnf) :

[mysqld]
init-connect = 'SET NAMES utf8'

Mais si vous n'avez pas accès à ce fichier, ou que vous ne voulez utiliser ce paramétrage que de manière ponctuelle sur certaines bases, l'autre façon d'indiquer à MySQL quel jeux de caractère doit être utilisé peut se faire indépendamment à chaque connection : après avoir établi une connection avec le serveur (hôte, utilisateur, mot de passe), effectuer la requête suivante dans votre application :

SET NAMES utf8;

Cette solution est celle qui est généralement donnée, mais elle nécessite que l'on change l'application pour que cela fonctionne.

- page 2 de 4 -