Carnet Web de Poy

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

mercredi, mars 29 2006

Moteurs : qui fournit qui ?

Sébastien Billard, sur son blog Référencement, Design et Cie, nous propose, dans son billet Moteurs : qui fournit qui ? une carte au format PNG, qui montre les relations entre les principaux moteurs de recherche et portails français, ce qui permet de savoir qui fournit les résultats de recherche à tel ou tel moteur ou portail.

Cela fournit, de manière très simple, une bonne vue d'ensemble de la recherche francophone.

mardi, mars 28 2006

L'Installation Parfaite - Debian Sarge (3.1)

The Perfect Setup - Debian Sarge (3.1) est une description détaillée de la marche à suivre afin d'installer un serveur Debian, qui propose tous les services généralement attendus par un hébergeur ou un fournisseur d'accès, à savoir :

  • Serveur Web : Apache 2.0.x (avec SSL) + PHP
  • Serveur Mail : Postfix (avec SMTP-AUTH et TLS!)
  • Serveur DNS : BIND9
  • Serveur SQL : MySQL
  • Serveur FTP : proftpd
  • POP3 / POP3s / IMAP / IMAPs
  • Webalizer pour les statistiques de fréquentation
  • Quota
  • Firewall
  • etc...

Au final, vous devriez obtenir un système qui fonctionne sûrement, et qui est prêt à recevoir le panneau de commande libre pour hébergeurs web ISPConfig (qui doit fonctionner au dessus sans la moindre modification)

mercredi, mars 22 2006

Spliter une chaine sur un caractère qui peut être échappé

Prenons par exemple la chaine suivante :

AA;BBB;CC\;CC;DD

Si nous voulons spliter cette chaine avec comme séparateur le ; afin d'obtenir les chaines suivantes :

AA
BBB
CC\;CC
DD

on s'aperçoit qu'il va falloir tenir compte dans l'expression rationnelle du fait que le séparateur ; peut être précédé du caractère d'échappement \ .

Pour cela, il va nous falloir utiliser une assertion, et plus précisément une assertion arrière négative.

Une assertion est un test sur les caractères suivants ou précédents celui qui est en cours d'étude.

Une assertion arrière négative commence par (?<! et permet de s'assurer que le caractère en cours d'étude n'est pas précédé par le sous-masque défini par l'assertion. Dans notre cas, cela nous permet de repérer les caractères ; qui ne sont pas précédés du caractère \ .

L'expression rationnelle résultante est donc :

(?<!\\);

Ce qui nous donne le code PHP suivant :

$str = 'AA;BBB;CC\;CC;DD';
$splited = preg_split('/(?<!\\\);/', $str);

(noter les 3 \ car en PHP l'antislash est aussi un caractère d'échappement, et il faut doubler le premier pour qu'au final l'expression rationnelle en comporte 2)

En savoir plus :

mardi, mars 21 2006

www. est obsolète

Le mouvement no-www préconise depuis 2003 l'abandon du sous-domaine www. pour accéder à un site web, en conservant néanmoins une redirection transparente du sous domaine www. vers le domaine principal, ceci afin de ne pas perturber les habitudes de certains utilisateurs, tout en leur faisant prendre conscience de la nature obsolète du sous domaine www.

Pourquoi est ce que www. est obsolète ?

Par défaut, tous les principaux navigateurs utilisent le protocole HTTP. Pour cela, ils ajoutent automatiquement le "http://" à l'adresse entrée dans la barre d'URL, et se connectent au serveur web sur le port 80.

Sachant cela, comment se fait-il que de nombreux serveurs exigent que la communication avec leur site web se fasse via le sous-domaine www. ?

Les serveurs de mail ne vous obligent pas à envoyer les mails à destinataire@mail.example.com. De la même manière, les serveurs web devraient permettre l'accès à leur pages via le nom de domaine principal, à moins qu'un sous-domaine particulier ne soit sollicité.

En résumé, l'utilisation du sous-domaine www. est redondant, et une perte de temps pour communiquer.

Accéder à la classification Classe B

Classe B signifie que tout le traffic vers http://www.example.com est redirigé de manière totalement transparente pour l'utilisateur vers http://example.com.

C'est actuellement la classification préférée de no-www, vu que cette façon de faire ne perturbe pas les utilisateurs, et qu'elle permet d'indiquer clairement que l'accès au sous domaine www. n'est pas souhaité.

Pour accéder à cette classification avec le serveur web Apache, c'est très simple. Tout ce que vous avez à faire est de créer ou modifier un fichier nommé .htaccess situé à la racine du site web, et ajouter les lignes suivantes (en y adaptant le nom de domaine) :

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

Plus d'info sur :

vendredi, mars 17 2006

Liste de lecture recommandée pour PHP

IBM developerWorks a compilé une liste de lecture recommandée pour PHP, qui fournit des ressources pour les développeurs et administrateurs, couvrant toute la gamme de questions que l'on peut se poser lorsque l'on adopte PHP.

On trouve dans cette liste des tas de bonnes références, que l'on soit un débutant absolu en PHP, ou que l'on veuille aborder des sujets plus pointus, comme par exemple la création d'extensions PHP, ou bien l'écriture de code performant et sécurisé. Sont aussi recensés de nombreux livres et blog parlant de PHP.

Un must pour tout développeur PHP qui se respecte.

Génération d'un fichier RDF avec Savant3

Savant3 est un système de template "minimaliste" pour PHP5.

Contrairement à certains autres systèmes de template, Savant ne rajoute pas une couche d'abstraction au dessus de PHP, il ne "compile" pas ses templates en PHP, et ne nécessite pas l'apprentissage d'un nouveau language pour générer un template.

Au lieu de cela, Savant utilise directement PHP en tant que language natif, ce qui le rends extrèmement léger et puissant (il profite ainsi de toutes les fonctions disponibles en PHP).

A la demande de mon ami Claude, voyons comment générer, à l'aide de ce système, un fichier RDF pour XUL :

Tout d'abord, le template (rdf.tpl.php) :

<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:ANIMALS="http://www.example.com/rdf#">
  <RDF:Seq RDF:about="http://www.example.com/all-animals">
    <?php foreach ($this->animals AS $animal) { ?>
    <RDF:li>
      <RDF:Description RDF:about="http://www.example.com/<?php echo htmlspecialchars($animal['name']); ?>">
        <ANIMALS:name><?php echo htmlspecialchars($animal['name']); ?></ANIMALS:name>
        <ANIMALS:species><?php echo htmlspecialchars($animal['species']); ?></ANIMALS:species>
        <ANIMALS:class><?php echo htmlspecialchars($animal['class']); ?></ANIMALS:class>
      </RDF:Description>
    </RDF:li>
    <?php } ?>
  </RDF:Seq>
</RDF:RDF>

Maitenant, voyons le code PHP qui va nous permettre de remplir ce template avec des données provenant d'une source de données externe (base de données par ex.).

<?php

// Récupére les données qui vont venir alimenter le template

$from_db = array(
    array('name'=>'Lion', 'species'=>'Panthera leo', 'class'=>'Mammal'),
    array('name'=>'Tarantula', 'species'=>'Avicularia avicularia', 'class'=>'Arachnid'),
    array('name'=>'Hippopotamus', 'species'=>'Hippopotamus amphibius', 'class'=>'Mammal')
);

// Crée une nouvelle instance du systeme template Savant3

require_once 'Savant3.php';
$template = new Savant3();

// Assigne les données dynamiques au template

$template->assign('animals', $from_db);

// Affiche le template généré

echo $template->fetch('./rdf.tpl.php');

?>

et voilà, le tour est joué.

jeudi, mars 16 2006

Introduction au package Var_Dump

Var_Dump est un package PEAR qui étend la fonction var_dump de PHP.

La fonction var_dump de PHP affiche les informations structurées d'une variable, y compris son type et sa valeur, les tableaux et les objets étant explorés récursivement.

Var_Dump se base sur le résultat de cette fonction, mais le complête, en proposant différents modèles de rendus en sortie : texte brut, table HTML, XHTML, XML... Chaque rendu étant entièrement configurable selon les besoins.

Le rendu par défaut est "XHTML_Text" (affichage textuel, calqué sur la fonction var_dump, mais agrémenté de tags XHTML pour permettre de styler les différents composants (type, clef, valeur ...)

Utilisation basique (affichage d'une variable) :

Var_Dump::display($_GLOBALS);

Pour changer le moteur de rendu, il convient d'appeler la méthode displayInit() avant tout appel à la méthode display() :

Var_Dump::displayInit(array('display_mode' => 'XHTML_Table'));

Var_Dump::display($_GLOBALS);

Il est aussi possible d'adapter un peu plus finement la configuration du moteur de rendu :

Var_Dump::displayInit(
    array('display_mode' => 'XHTML_Table')
    array(
        'before_type' => '<em>',
        'after_type'  => '</em>',
        'start_table' => '<table class="foo">',
        'end_table'   => '</table>',
    )
);

Var_Dump::display($_GLOBALS);

Le package est disponible pour les deux versions majeures de PHP :

Fonctions Trim en Javascript

Le language Javascript ne possède pas de function trim intégrée, permettant d'enlever les espaces blancs du début et de la fin d'une chaine.

Une des utilisations les plus courante pour cette fonction est la validation de données provenant d'un formulaire, ou bien leur formattage. Cela permet par exemple de s'assurer que l'utilisateur a bien rentré quelque chose dans un champs texte.

La fonction ci-dessous est le fruit de longues séances de tests et d'optimisations au sein de la société Allaban, un grand merci à Frédéric Mélantois, Aurélien "Ienien" Benoit, Christophe "Chomp" Tran, et tous les autres...

function trim(s) {
    return s.replace(/^\s+/, '').replace(/\s+$/, '');
}

De cette fonction, on peut tirer les 2 fonctions restreintes suivantes, qui enlevent uniquement les espace en début de chaine (ltrim), ou bien en fin de chaine (rtrim) :

function ltrim(s) {
    return s.replace(/^\s+/, '');
}

function rtrim(s) {
    return s.replace(/\s+$/, '');
}

mardi, mars 14 2006

Sites web professionnels conformes aux standards

Voici une liste (non exhaustive) des sites web professionnels conformes aux standards, trouvée sur le forum du site Alsacréations :

"L'objectif de cette liste des sites conformes est de promouvoir les standards W3C au niveau professionnel. L'idée est de montrer qu'on peut faire des sites à la fois standards, accessibles et professionnels et/ou commerciaux. Les sites présent dans cette liste sont presque tous dénués de tableaux de mise en page et utilisent les CSS."

Ouverture du Toolbox PEAR Channel

Le channel PEAR Toolbox est une bibliothèque simple de classes, et une suite de composants réutilisables pour PHP5.

Pour installer des packages depuis le channel PEAR Toolbox, la manipulation est très simple, il suffit juste d'avoir un environnement PEAR 1.4 fonctionnel (pour plus d'information sur PEAR, et son installation, voir le manuel PEAR), et de suivre les étapes suivantes :

  • Pour ajouter le channel à votre installation PEAR, utiliser : pear channel-discover toolbox.aldabase.com
  • Une fois ceci fait, vous pouvez alors installer un package en utilisant : pear install toolbox/nom_du_package

- page 3 de 4 -