Christophe Le Bot

  • Navigation rapide
Pratique de la conception numérique

Derniers commentaires

  • Installer Drupal 6 sur un serveur mutualisé OVH
    • Damien | Bravo pour ce billet, simple, efficace. J’aimerais trouver ce genre de réponse qui marche tout le temps !
  • Test d’interface : paiement d’amendes en ligne
    • Benoit | Bonjour, euh, moi je n’ai rien compris à ce stratagème pour faire oublier la clé (manquante) à l’interface de saisie. Je saisie les 14 chiffres de mon avis, le javascript saute...
  • Un bon petit rythme pour 2010
    • Christophe | @ Développeur Magento Moi aussi, j’ai hâte… mais de le finir ! C’est du boulot, beaucoup de boulot. @Maxime Merci pour le compte-rendu.
    • Maxime | Bonjour, voici un petit livrento, ou plutôt un résumendo (On croirait parler espagnol ou italien, c’est fun :-p ) de l’Apérogento qui s’est déroulé à Lyon mercredi 30...
    • Développeur Magento | J’ai vraiment hâte de lire ce livrento !
 

Archives
mars 2006

Ajouter un disque à un serveur Linux Debian

Votre petit serveur Debian fonctionne toujours à merveille (comment pourrait-il en être autrement ?). Mais un matin, tout se bloque. Un rapide tour de la machine, un petit df -h en ligne de commande et le constat est sans appel : plus de place sur le disque ! Il faut en ajouter un second.

Voici brièvement comment monter un disque ATA :

  1. Installer le disque (alimentation, connexion IDE sur le bon port, en maître ou en esclave, avec une nappe de 80 fils)
  2. Partionner le disque (bien vérifier le nom du nouveau disque pour ne pas partitionner le premier !) :
    cfdisk /dev/hdb
  3. Formater chaque partition :
    mke2fs -j /dev/hdb1
  4. Tester chaque partition :
    cd /mnt
    mkdir disque2
    chmod 777 disque2
    mount -t ext3 /dev/hdb1 /mnt/disque2
    cd /mnt/disque2
  5. Monter le disque au démarrage du système :
    cd /etc
    vi fstab

    Ajouter la ligne :

    /dev/hdb1 /mnt/disque2 ext3 defaults 1 1

    (options selon l’utilisation que vous en ferez)

Finalement, c’est plus simple qu’on ne l’imagine !

Formatage d’une durée avec PHP

PHP regorge de fonctions et de variables pour gérer le temps. Pourtant, quand on souhaite afficher une durée entre deux dates, il n’y a aucune fonction spécifique ! Voici comment s’en sortir.

Un peu de mathématiques

Le principe est d’utiliser un nombre entier, par exemple une durée exprimée en secondes. A vous de convertir la durée avec vos scripts PHP (la fonction mktime() est toute désignée).

Ensuite, quelques formules mathématiques simples donnent un tableau contenant toutes les valeurs de la durée dans les unités de temps que vous souhaitez utiliser :

$duration = 3695;

// Initialisation
$duration = abs($duration);
$converted_duration = array();

// Conversion en semaines
$converted_duration['weeks']['abs'] = floor($duration / (60*60*24*7));
$modulus = $duration % (60*60*24*7);

// Conversion en jours
$converted_duration['days']['abs'] = floor($duration / (60*60*24));
$converted_duration['days']['rel'] = floor($modulus / (60*60*24));
$modulus = $modulus % (60*60*24);

// Conversion en heures
$converted_duration['hours']['abs'] = floor($duration / (60*60));
$converted_duration['hours']['rel'] = floor($modulus / (60*60));
$modulus = $modulus % (60*60);

// Conversion en minutes
$converted_duration['minutes']['abs'] = floor($duration / 60);
$converted_duration['minutes']['rel'] = floor($modulus / 60);
$modulus = $modulus % 60;

// Conversion en secondes
$converted_duration['seconds']['abs'] = $duration;
$converted_duration['seconds']['rel'] = $modulus;

// Affichage
print_r( $converted_duration);

Ce code affichera le résultat suivant :

Array
   (
      [weeks] => Array
         (
            [abs] => 0
         )

      [days] => Array
         (
            [abs] => 0
            [rel] => 0
         )

      [hours] => Array
        (
            [abs] => 1
            [rel] => 1
         )

      [minutes] => Array
         (
            [abs] => 61
            [rel] => 1
         )

      [seconds] => Array
         (
            [abs] => 3695
            [rel] => 35
         )
   )

Vous obtenez un tableau avec le nombre de semaines, de jours, d’heures, de minutes et de secondes que vous pouvez ensuite utiliser pour l’affichage. Pour chaque unité de temps, la cellule [abs] du tableau stocke la durée totale, alors que la cellule [rel] stocke la durée restante (définie par le modulo).

Prendre la valeur absolue de la durée est capitale ! En effet, sans abs(), la fonction floor() donnera des résultats faux avec un durée négative. C’est logique puisqu’elle retourne toujours l’entier inférieur d’un nombre réel. Si la durée vaut +4.4, vous obtenez +4. Si la durée vaut -4.4, vous obtenez -5 !

Et si j’utilise une base de données ?

Si vos dates à comparer viennent d’une base de données, la conversion en timestamp peut se faire directement dans la requête SQL. Avec MySQL, les champs de type DATE, DATETIME ou TIME sont convertis par la fonction UNIX_TIMESTAMP(). Au passage, attention à la limite des champs TIME (de ‘-838:59:59′ à ‘838:59:59′) !

Si vous utilisez MySQL 5, la fonction TIMESTAMPDIFF() fera tout à votre place… sauf le formatage en PHP que je vous propose !

En guise de conclusion, consultez les pages PHP et MySQL concernant les fonctions de dates et d’heures qui vous épargneront des calculs inutiles :

Site web : les bonnes pratiques

Même si vous avez dans l’idée de créer LE site web qui va révolutionner les usages d’internet, il n’est pas inutile de rappeler (ou de découvrir…) les bonnes pratiques qui viennent de l’expérience et de l’expérimentation. C’est ce que vous propose la société Temesis avec son projet Opquast.

Quand vous maîtriserez les 153 fiches Opquast, vous aurez sûrement plus de chances de valoriser votre projet web !

Avec Retrievr, dessinez ce que vous cherchez !

Retrievr

La société autrichienne System One vous propose de tester Retrievr, un système de recherche d’images original et intuitif : pour trouver des photos, il suffit de les dessiner !

Autour d’un noyau codé en Python, Retrievr utilise Flash et le framework Javascript Helma pour l’interface utilisateur. Il est principalement basé sur les recherches conduites par Chuck Jacobs, Adam Finkelstein et David Salesin, de l’Université de Washington.

L’interface est simple et intuitive, les résultats sont étonnants !