Christophe Le Bot

  • Navigation rapide
Pratique de la conception numérique

Derniers commentaires

  • Une excellente thèse sur Simile Exhibit
    • Olivier Rossel | Bonjour. Malgre les annees, avez vous toujours en memoire vos usages d’Exhibit? Je serais ravi d’en discuter avec vous. Cordialement, Olivier Rossel.
  • Utiliser le planificateur de tâches OVH (crontab) avec PHP
    • Max | Bonjour, comme faire pour appeler une version de PHP qui n’est plus proposée par défaut dans le manager ? J’essaie de lancer un cron avec php 5.3 mais le log affiche No such file...
    • Christophe | @absolument Merci pour ces précisions. Je n’ai pas mis en place de tâches cron récemment, mais j’ai reçu quelques notifications étranges d’OVH il y a quelques...
  • Récupérer le dernier auto-incrément MySQL avec PHP
    • Thy | Sujet toujours *très* utile en 2015 ! Je réponds à Serge tsimba qui récupère un « Resource id ». (Et à tous ceux qui ont le même souci mais qui ne le disent pas) :)...
  • Régler l’heure de serveurs virtuels sous Debian
    • Ares_XL | Il semble que sur Débian la commande « tzconfig &ra quo; soit dépréciée et remplacée par : « dpkg-reconfigure tzdata » elle donne accès à une...
 

Bug Labs crée les « user generated devices »

BUG 2
BUG de Bugs Labs.

Après l’ère du contenu généré par l’utilisateur (user generated content) et alors que nous commençons tout juste à avoir les outils pour créer facilement nos applications (user generated applications), Bug Labs commercialise des briques matérielles bien réelles pour créer ses propres appareils électroniques. Les user generated devices sont nés.

La gamme BUG se compose de BUGbase, la brique de base sur laquelle viennent se greffer les BUGmodules, tels qu’un capteur GPS, une caméra vidéo, un écran tactile, un capteur de mouvement, des touches, etc.

BUGbase
La BUGbase…
BUGmodules
… et ses BUGmodules.

Même si Lego le fait depuis longtemps, n’allez pas croire que BUG est un simple jouet ! Vous avez un potentiel créatif sans limite, servi par une excellente utilisation de la programmation orientée objet, l’objet ayant dans ce cas une réalité matérielle peu fréquente. Pour développer les fonctions de son appareil, le « créateur-concepteur-utilisateur » dispose d’un environnement de développement (BUG SDK, fonctionnant sous Eclipse) qui repose sur des technologies éprouvées (Java + framework OSGi).

BUG SDK
Le BUG SDK en action.

C’est donc tout naturellement que Bug Labs vient de remporter un CES award 2008.

Rue89 a choisi Drupal et explique pourquoi

Rue89

Dimanche 6 mai 2007, ce sera la fin du suspens : nous saurons tous à quoi ressemble… Rue89 ! Oui, c’est la date qu’a choisi cette équipe de journalistes passionnés et téméraires pour ouvrir un site d’information d’un nouveau genre. Rendez-vous donc dimanche à 18h (pas à 20h !).

Pour en diffuser le contenu, Rue89 a sélectionné Drupal, une plate-forme de gestion de contenu libre. Ce choix est argumenté dans un article du blog Rue89 :

Parce que nous avions pris la décision de démarrer le site au plus vite et de le faire évoluer au fur et à mesure des suggestions et critiques des utilisateurs, nous avons cherché une solution flexible et prête à l’emploi.

[…]

Nous avons opté pour la plateforme LAMP (Linux, Apache, MySQL, PHP) parce qu’elle est très largement répandue sur Internet, maîtrisée par de nombreux développeurs et qu’elle sert de base technologique à plusieurs outils de gestion de contenu Open Source performants et stables.

[…]

SPIP, bien que largement déployé, nous a paru dépassé et ne répondant pas à nos attentes en terme de fonctionnalités.

[…]

En matière de performance, Drupal apporte des résultats bien plus intéressants [que Joomla] à périmètre matériel constant.

Rue89 cite par ailleurs quelques études comparatives qui permettent d’y voir plus clair :

Les commentaires des lecteurs valent également de s’y attarder :

eZ Publish est bien une référence, mais une référence qui ne monte pas ! La faute a sa difficulté à monter en charge (cache PHP obligatoire) et à l’incapacité des développeurs à adapter le framework aux versions courantes de PHP/MySQL.

[…]

C’est un véritable plaisir que de développer sur ce framework [Drupal], notre équipe de dev est littéralement sous le charme !

Voilà beaucoup d’arguments solides en faveur de Drupal. Pour ma part, je l’avais testé sans être convaincu. C’était en 2001. La démonstration en ligne de la version actuelle m’a montré qu’il a beaucoup évolué depuis. Je le replace donc dans le peloton de tête des CMS LAMP (Content Management System sur plate-forme Linux, Apache, MySQL et PHP).

Il me reste à souhaiter bon vent à Rue89 qui aura déjà beaucoup à faire deux heures après son lancement !

Launchpad, un bon exemple de service collaboratif

Launchpad

Canonical, éditeur des solutions Ubuntu, nous propose Launchpad (version 1.0 beta), un service dédié aux développeurs open source, similaire à SourceForge.

Après une visite rapide, cet outil me laisse une impression très positive. Tout a été pensé pour faciliter le travail quotidien des développeurs et les fonctionnalités sont riches (code repositories, gestion de versions via CVS et Subversion, bugs tracker, support, gestion des traductions, etc.).

Hormis les produits développés par Canonical, Launchpad héberge quelques projets essentiels, comme Zope ou Creative Commons. J’y mettrai peut-être aussi les projets que j’ai dans mes cartons…

Il n’y a qu’un truc que je n’ai pas trouvé : la liste des projets hébergés. Cette fonction m’est très utile dans SourceForge pour suivre l’actualité des projets open source et trouver des perles rares.
Mise à jour : si, si, on peut avoir la liste de tous les projets. Merci Christian pour ton oeil de lynx !

Comment faire tourner Ubuntu Server sur un (très) vieux serveur

Depuis toujours, Linux est réputé pour sa stabilité et son efficacité, même sur des petites configurations. Alors plutôt que de jeter votre PC de 10 ans d’âge (une vraie guimbarde !), pourquoi ne pas le transformer en serveur de test sous Linux ?

C’est ce que j’ai entrepris hier avec la distribution Ubuntu Server. Je récupère donc la version en cours (la 6.10) en faisant bien attention de prendre l’image ISO qui correspond à ma vieille guimbarde (ubuntu-6.10-server-i386.iso). Je grave le cédérom, j’installe le système sans problème et je redémarre.

Ah, tiens ! Il ne redémarre pas. Linux me ferait-il des misères ? Ce n’est pas son genre… Et pourtant, le BIOS et GRUB (le système d’amorçage) se chargent bien, mais au moment du chargement du système, la machine redémarre toute seule. Evidemment, sans message d’erreur…

Une petite recherche et j’obtiens un début de réponse : le noyau d’Ubuntu Server est compilé pour les machines i686. Il faut donc au moins un processeur Intel Pentium Pro pour le faire tourner. Exit donc les Pentium I… et mon valeureux AMD K6/II 400MHz !

Sauf qu’il y a toujours moyen de ruser. Il suffit de changer de noyau, ce qui reste très abordable sans refaire l’installation :

  • Redémarrer la machine sur le cédérom d’installation.
  • Choisir le mode Rescue.
    Un système se charge en mémoire.
  • Choisir les options proposées par défaut (notamment le montage du disque racine et la console).
  • Une fois la console active, installer le noyau adéquat :
    apt-get install linux-386
  • Supprimer le noyau par défaut :
    apt-get remove linux-server
  • Retirer le cédérom et redémarrer la machine

Ouf, ça marche ! Dommage que le nom de l’ISO (ubuntu-6.10-server-i386.iso) ne soit pas en conformité avec son contenu. Cela m’aurait évité de perdre une bonne heure…

Tutoriel sur les serveurs

Avec le projet « Tutoriel sur les serveurs » du site Linux-France, vous avez de quoi attraper une indigestion de lecture : c’est long, avec le look « geek Linux », mais quelle richesse !

Même si j’ai beaucoup de mal à lire cette prose dégoulinante à l’écran, j’y trouve souvent les petits détails qui règlent mes gros soucis !

Régler l’heure de serveurs virtuels sous Debian

Quand des serveurs ont besoin de communiquer entre eux, il devient vite indispensable d’utiliser la même référence de temps. Cela semble évident mais, en pratique, ce petit détail est souvent négligé. Résultat : synchronisation de données défectueuses, résultats incohérents, documents écrasés par d’anciennes versions, fichiers de log illisibles… Que du bonheur !

Pourtant, mettre à l’heure un serveur est simple. Et quand le serveur accueille des serveurs virtuels ? Comme nous allons le voir, cela reste toujours simple !

Lire l’heure

L’heure d’un serveur sous Debian (comme sur d’autres distributions Linux) est gérée par la commande date. Sans paramètre, elle retourne la date et l’heure du système :

# date
mar avr 18 12:47:53 CEST 2006

On remarque au passage que le résultat est formaté selon les paramètres de localisation du système (ici en français pour l’heure locale de Paris).

Pour obtenir l’heure UTC, c’est-à-dire l’heure universelle ou heure de Greenwich, on ajoute le paramètre -u :

# date -u
mar avr 18 10:47:53 UTC 2006

On obtient bien un décalage de 2 heures par rapport à l’heure de Paris.

Modifier l’heure

Pour modifier l’heure, on utilise le paramètre --set :

# date --set 12:53:20

Et si la date n’est pas bonne, même remède :

# date --set 2006-05-18

Configuration du fuseau horaire

Si le fuseau horaire ne convient pas, inutile de réinstaller le système ! On utilise simplement la commande tzconfig et on répond aux questions :

# tzconfig
Your current time zone is set to Europe/Paris
Do you want to change that? [n]: y

Please enter the number of the geographic area in which you live:
[...]
Number: 8

[...]

Please enter the name of one of these cities or zones
[...]
Name: Paris
Your default time zone is set to 'Europe/Paris'.
Local time is now: mar avr 18 13:07:02 CEST 2006.
Universal Time is now: mar avr 18 11:07:02 UTC 2006.

Facile ! Pour information, la configuration du fuseau horaire est stockée dans le fichier /etc/timezone.

Temps système et temps BIOS

Tout semble parfait mais il y a un détail sournois : votre serveur gère deux références de temps, celle du système et celle de la carte-mère (horloge BIOS) ! Et elles peuvent très bien ne pas indiquer la même heure ! Dans certains cas, cette subtile différence peut avoir des conséquences agaçantes lors du redémarrage du serveur (par exemple, perte de l’heure système). Comme dit le proverbe, « l’homme qui a une montre sait l’heure qu’il est, celui qui en a deux n’est jamais sûr. »

Donc, autant régler une bonne fois pour toute l’heure matérielle avec la commande hwclock. Comme nous avons déjà réglé l’heure système, on utilise l’option --systohc pour la récupérer et --utc pour la définir en heure UTC :

# hwclock --systohc --utc

Synchronisation avec un serveur de temps

« Bon, tout est à l’heure, je passe à autre chose. »

Pas encore ! Car le quartz qui pilote l’oscillation de l’horloge de la carte-mère n’est jamais parfait. L’heure va donc se décaler petit à petit (parfois de plusieurs secondes par jour !). Heureusement, le protocole NTP (Network Time Protocol) vient à notre secours et offre la possibilité de synchroniser l’horloge du serveur avec un serveur de temps qui fait référence. Là encore, rien de bien méchant.

Il faut d’abord installer les paquets qui permettront d’utiliser NTP :

# apt-get install ntp-simple ntpdate

Puis, on configure NTP :

# vi /etc/ntp.conf

Concernant les serveurs NTP, choisissez sans hésiter ceux du projet pool.ntp.org qui optimisent les requêtes NTP par l’utilisation de clusters répartis dans le monde entier. Une rapide visite de ce site vous indiquera les serveurs NTP à utiliser dans votre zone géographique. Si votre serveur est en France, on ajoute donc les lignes suivantes dans ntp.conf :

server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.org

Avant de mettre en place le démon qui synchronisera l’heure automatiquement, il faut le faire manuellement (ici, avec le serveur principal de pool.ntp.org) :

# ntpdate pool.ntp.org

Maintenant que l’heure système est bonne, reste à mettre à jour celle de l’horloge BIOS :

# hwclock --systohc --utc

Pourquoi choisir l’heure UTC ? Pour éviter de perdre l’heure si les serveurs NTP ne sont pas accessibles au redémarrage de votre serveur.

Il reste à charger nos modifications et la synchronisation automatique est en place :

# /etc/init.d/ntp-server restart

On termine par le redémarrage du serveur qui est obligatoire pour éviter quelques mauvaises surprises (par exemple, les tâches cron qui se déclenchent à l’heure UTC ou les fonctions de temps de PHP qui perdent deux heures…). Si le redémarrage n’est pas possible, il faut relancer tous les services actifs.

Si vous souhaitez mettre à jour l’heure manuellement, le paquet ntp-server n’est pas utile. Gardez simplement le paquet ntpdate et utilisez directement la commande ntpdate. Vous pouvez aussi désactiver le chargement du démon NTP au démarrage :

# update-rc.d ntp remove

Et pour le remettre en place :

# update-rc.d ntp defaults

Régler l’heure d’un serveur virtuel (vserver)

« Et les serveurs virtuels dans tout ça ? Faut-il faire toutes ces opérations pour chacun des 100 vservers installés sur ma machine ? »

Non, heureusement ! Pour que le système de fichiers fonctionne correctement, tous les vservers utilisent la même référence de temps, celle du serveur principal. On ne peut donc pas modifier l’heure d’un vserver. Par contre, un vserver peut avoir sa propre configuration de fuseau horaire, très utile pour proposer des services à des utilisateurs de zones géographiques différentes.

Comme nous l’avons vu plus haut, la commande tzconfig permet de définir le fuseau horaire pour calculer le décalage horaire entre l’heure UTC du serveur principal et celle du vserver. On remarque au passage la nécessité d’utiliser l’heure UTC comme référence de temps sur un serveur.

Les puristes (ou plutôt les administrateurs qui ont la responsabilité d’exploiter des serveurs de production en toute sécurité) se pencheront sur les nombreuses options de configuration de NTP : installation d’un serveur NTP local, filtrage des adresses IP, portée des requêtes, périodicité de la synchronisation, etc. A chacun sa cuisine !

Ease of use

La mode est aux « livres blancs » consacrés aux interfaces utilisateurs. Tout le monde semble découvrir les bienfaits de l’ergonomie et réclamer la simplicité d’usage. Il faut dire que les utilisateurs ont beaucoup grognés et insistés pour que les applications évoluent !

IBM nous propose sa version, joliment baptisée « Ease of use ».

Très pragmatique à défaut d’être simple, la documentation concernant l’interface utilisateur du projet Gnome a le mérite de poser tous les principes et définitions d’une classique interface 2D.

Krugle, un moteur de recherche pour les développeurs

Krugle

Encore en phase de test, Krugle est un moteur de recherche dédié aux développeurs. « Et un moteur de plus ! » Oui, mais celui-là fait bien plus que de donner une liste d’adresses web : il plonge dans le cœur des applications.

Vous voulez connaître les paramètres d’une méthode de Tomcat ou l’utilisation d’une variable d’environnement dans Apache ? Krugle affiche la liste des scripts concernés et leur code source ! Vous pouvez placer des marqueurs sur le code et partager les résultats avec d’autres développeurs.

Pour financer ce service, Krugle mise dans un premier temps sur la publicité. la société devrait à terme proposer des services pour les entreprises grâce à l’indexation de leurs projets internes.

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 !