L’écran blanc de la mort

03/07/2009

L’installation de Drupal est simple, surtout sous Debian : apt-get, hop hop hop, et tout va bien.

Mais dès que l’on rentre dans les subtilités, et en particulier dans la configuration multi-sites, se pose parfois un vrai problème : l’écran blanc de la mort. Concrètement : vous voulez configurer Drupal, vous accédez à l’URL de votre site depuis un navigateur, et là, tel Steevy Boulay devant son autobiographie, une page strictement blanche, strictement vide, zéro octet, rien.

En général, ce symptôme est dû à un problème de sécurité dans les répertoires de Drupal, mais reste à trouver quoi et où. Rien sur la page, rien dans les logs, ça ne simplifie pas.

Aussi, pour trouver l’origine du problème, il existe une astuce. Éditez le fichier index.php à la racine de votre htdocs de Drupal et ajoutez les lignes suivantes (en gras) au début du fichier :

<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
// $Id: index.php,v 1.94 2007/12/26...

Et là, les erreurs devraient s’afficher, de façon beaucoup plus explicite, sur la page HTML. Pensez évidemment à supprimer ces lignes après avoir donné les droits de lecture sur le fichier settings.php (un grand classique)…

Pierre-Julien Grizel CMS, Drupal

Drupal + Alfresco

20/05/2009

J’ai essayé hier ce module fantastique : alfresco module pour Drupal.

Ce module permet d’intégrer Alfresco à Drupal. Plutôt que de servir de backend à la totalité du contenu de Drupal, Alfresco se comporte comme une médiathèque : on ajoute, dans Drupal, un objet “Alfresco Item”, qui va pointer vers le contenu d’origine d’Alfresco.

On dispose également d’un champ “Alfresco node” sur chaque contenu, ce qui permet de référencer au sein d’un contenu quelconque un node Alfresco. Hyper pratique pour faire des références vers une base documentaire !

Quelques remarques :

  • Un node d’Alfresco ne peut être référencé que par un et un seul Alfresco Item dans Drupal.
  • Un utilitaire permet de faire un “bulk import” d’une arborescence Alfresco dans Drupal (sous forme de références évidemment). Hélas, quand un nouveau contenu est créé côté Alfresco, l’Alfresco Item n’est pas rajouté côté Drupal, ce qui limite un peu cette fonctionnalité.
  • Aucune écriture n’a lieu de Drupal vers Alfresco. Il n’est pas possible d’éditer le contenu Alfresco depuis Drupal, donc (fort dommage, mais c’est la vie).
  • Drupal se comporte comme un proxy envers Alfresco (pas de possibilité de transmettre l’authentification Drupal vers Alfresco, donc), mais au moment du téléchargement d’un document l’utilisateur accède à Alfresco - avec les credentials du proxy. On ne voit jamais l’URL en clair. Du coup, à moins de s’astreindre à n’utiliser que le compte “guest” pour publier sur Internet, il y a de vrais risques d’exposer par inadvertance des documents qui ne devraient pas l’être.

La bonne nouvelle,  c’est que l’on peut utiliser conjointement Drupal et Alfresco dans les cas suivants :

  • Pour gérer la documentation d’un projet : la “vie” du projet (Blog, Wiki, Forum, …) est localisée dans Drupal tandis que la partie “Documentation” est gérée par Alfresco avec Workflows, Versionning et compagnie.
  • Pour créer un site Internet qui pointerait vers de la documentation “officielle”. Exemple, un site institutionnel qui met à disposition des usagers des procédures : les procédures sont gérées par Alfresco mais référencées par Internet.
  • Etc…

C’est plutôt rassurant car, pour être honnête, les capacités d’Alfresco “out of the box” en tant que CMS (notamment avec Share) sont des années derrière celles de Drupal. Une bonne initiative, donc, et nous espérons que le module sera amélioré pour gérer des liens plus étroits avec Alfresco (authentification partagée, et, pourquoi pas, possibilité d’écrire depuis Drupal vers Alfresco !).

Pierre-Julien Grizel Alfresco, CMS, Drupal, GED

Installer Alfresco avec Debian / Tomcat / Postgres

15/05/2009

Ce tutoriel détaille le processus d’installation d’Alfresco Labs 3 sur une machine Debian Etch en se basant sur la version packagée de Tomcat.

Prérequis

Avant d’installer Alfresco, il faut préparer les éléments suivants :

  • Disposer d’une Debian Etch (ça va mieux en le disant :)), connectée à Internet. Nous partons du principe que la machine est vierge et que vous n’avez rien installé dessus.
  • Télécharger la version d’Alfresco Labs disponible sur le Wiki d’Alfresco et placez-la dans votre répertoire personnel (~/)
  • Prendre un papier et un stylo pour noter les paramètres qui seront utiles au moment de l’installation.

Voici les paramètres que nous allons utiliser le long de ce guide :

  • DB_HOST : La machine sur laquelle se trouve votre base de données PostgreSQL
  • DB_USER : L’utilisateur qui se connecte à la base Postgres (”alfresco” par défaut)
  • DB_NAME : Le nom de la base de données qui hébergera les données d’Alfresco (”alfresco” semble être un choix raisonnable)
  • DB_PASSWORD : Son mot de passe (”toto” dans notre cas)
  • DATA_PATH : Le chemin dans lequel vous allez stocker les données d’Alfresco. Nous utiliserons /var/lib/alfresco.
  • TOMCAT_HOST : La machine sur laquelle nous allons installer Alfresco / Tomcat
  • TOMCAT_PORT : Le port sur lequel Tomcat va tourner (8080 par défaut sous Debian)

Remarque : Pour des raisons de convenance personnelle, j’utilise sudo plutôt que de me connecter avec le compte root de la machine. Je vous invite à faire de même, mais c’est un point de détail. Je considère dans ce guide que toutes les manipulations, sauf avis contraires, sont effectuées avec le compte root.

Mise à jour des paquets

Les paquets dont nous avons besoin pour l’installation ne sont pas tous disponibles lors d’une installation par défaut de Debian Etch. Éditez donc le fichier /etc/apt/sources.list pour ajouter la possibilité de télécharger des packets pas Open-Source :

deb http://ftp.fr.debian.org/debian/ etch main non-free
deb http://security.debian.org/ etch/updates main contrib non-free

Puis mettez à jour la liste des paquets :

apt-get update

Base de données

Alfresco peut fonctionner avec un grand nombre de bases de données. La documentation officielle insiste sur MySQL, nous allons donc, par esprit de contradiction, nous intéresser à Postgres. Nous installerons la version 7.4, mais, à ma connaissance, le processus est strictement le même pour l’installation de la 8.1, qui marche tout aussi bien avec Alfresco.

Si vous disposez déjà d’une instance de Postgres sur la même machine ou sur une autre, connectez-vous sur cette machine et ignorez la ligne suivante.

apt-get install postgresql-7.4

Il faut maintenant créer un utilisateur et une base de données pour héberger les données d’Alfresco. Rappel : Si vous utilisez une autre installation de Postgres, ces manipulations doivent être effectuées depuis l’autre machine.

su - postgres
postgres:~$ createuser alfresco Le nouvel utilisateur a-t'il le droit de créer des bases de données ? (o/n) n Le nouvel utilisateur a-t'il le droit de créer des utilisateurs ? (o/n) n CREATE USER postgres:~$ createdb -O alfresco -E UNICODE alfresco CREATE DATABASE
postgres:~$ psql -d alfresco -c "ALTER USER alfresco WITH PASSWORD 'toto'"
ALTER USER

N’oubliez pas évidemment de remplacer “toto” ci-dessus par le mot de passe que vous souhaitez réellement utiliser.

Il faut maintenant préciser que la base Postgres pourra être accédée au travers du réseau. Dans /etc/postgres/7.4/main/postgresql.conf, positionnez la ligne suivante :

tcpip_socket = true

Installation de Tomcat

Nous pouvons maintenant installer le JDK de Java et Tomcat.

apt-get install sun-java6-jdk
apt-get install tomcat5.5
/etc/init.d/tomcat5.5 stop # Pour gagner du temps à l'installation 

Décompressez le .tar.gz d’Alfresco Labs dans un répertoire temporaire et installez Alfresco et Alfresco Share.

cd /tmp
tar -xzvf ~/alfresco-labs-war-3Stable.tar.gz
cp /tmp/alfresco.war /var/lib/tomcat5.5/webapps
cp /tmp/share.war /var/lib/tomcat5.5/webapps
/etc/init.d/tomcat5.5 start

À partir de ce moment, Alfresco est installé. Le plus dur reste à faire : configurer Alfresco, Alfresco Share et tous les éléments sans lesquels vous ne parviendrez pas à le faire fonctionner.

Pour vérifier que tout s’est bien passé, regardez si les répertoires “alfresco” et “share” ont été créés dans /var/lib/tomcat5.5/webapps au moment du démarrage de Tomcat.

Configuration d’Alfresco

Configuration de la base de données

Avant de nous attaquer à la configuration de la base de données, il faut déjà installer le driver Postgres pour Java. C’est relativement simple.

apt-get install libpg-java

Fichiers de configuration d’Alfresco

Les fichiers de configuration d’Alfresco ne sont pas déployés lors du démarrage de Tomcat. Il faut donc le faire à la main.

mkdir /var/lib/tomcat5.5/shared/classes/alfresco
cp -r /tmp/extensions/* /var/lib/tomcat5.5/shared/classes/alfresco
chown -R tomcat55:nogroup /var/lib/tomcat5.5/shared/classes/alfresco

Il va maintenant falloir éditer les fichiers de configuration pour faire fonctionner correctement Alfresco. Éditez le fichier /var/lib/tomcat5.5/shared/classes/alfresco/extension/custom-repository.properties et éditez / modifiez le lignes suivantes (attention, lisez attentivement le fichier pour ne pas doubler les lignes) :

dir.root=/var/lib/alfresco
db.username=alfresco
db.password=toto
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://localhost:5432/alfresco

Replacez “localhost” par DB_HOST et “alfresco” par DB_NAME s’il y a lieu. Vérifiez que le numéro du port de Postgres est correct (c’est bien 5432 par défaut).

Certaines des lignes ci-dessus étaient commentées (précédées par “#”) : dé-commentez-les. Commentez la partie “Derby connexion”. Seules les lignes mentionnées ci-dessus doivent être non commentées !

Dans le même répertoire, éditez custom-hibernate-dialect.properties. Commentez tout le fichier sauf les deux lignes suivantes (elles se trouvent normalement à la toute fin du fichier) :

hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.query.substitutions=true TRUE, false FALSE

Il faut penser à modifier le fichier /var/lib/tomcat5.5/webapps/alfresco/WEB-INF/classes/log4j.properties pour assurer un log correct des opérations d’Alfresco :

log4j.appender.File.File=/var/log/alfresco/alfresco.log



Et bien sûr créez le répertoire adequat :

mkdir /var/log/alfresco
chown tomcat55:nogroup /var/log/alfresco

Création du répertoire de données

Créez le répertoire DATA_PATH :

mkdir /var/lib/alfresco
chown tomcat55:nogroup /var/lib/alfresco 

Configuration des options de démarrage de Tomcat

Les options de démarrage de Tomcat ne permettent pas de faire fonctionner correctement Alfresco. Il faut donc modifier /etc/init.d/tomcat5.5 et modifier les lignes suivantes pour débrayer le Security Manager de Tomcat et pour augmenter la mémoire mise à disposition du Alfresco :

TOMCAT5_SECURITY=no
# ...
        CATALINA_OPTS="-Djava.awt.headless=true -Xmx1024M -XX:MaxPermSize=256m"
# ... 

Les valeurs de gestion de la mémoire doivent être en tous les cas inférieures à la mémoire physique disponible sur votre machine (sinon tomcat va swapper sans arrêt et Alfresco sera inutilisable). L’option “MaxPermSize” permet d’éviter certaines erreurs de mémoire que j’ai pu rencontrer en faisant cohabiter Alfresco et Jira.

Installation des programmes additionnels

En théorie, Alfresco devrait fonctionner comme cela. Mais pour en profiter pleinement, il faut installer les programmes et librairies sur lesquels il se base notamment pour effectuer des conversions de documents.

apt-get install imagemagick
apt-get install xfvb xfonts-base

(TODO : ÉCRIRE LA PROCÉDURE POUR pdf2swf ET POUR Open-Office)

Il faut indiquer à Alfresco où se trouvent ces programmes. Éditez /var/lib/tomcat5.5/webapps/alfresco/WEB-INF/classes/alfresco/repository.properties :

dir.root=/var/lib/alfresco
img.root=/usr
img.dyn=${img.root}/lib
img.exe=${img.root}/bin/convert
swf.exe=./bin/pdf2swf

On en profite pour modifier une autre option dans ce fichier qui permet de reconstruire automatiquement l’index en cas d’erreur :

index.recovery.mode=AUTO

Test de l’interface

Vous pouvez maintenant vous connecter avec votre navigateur : http://localhost:TOMCAT_PORT/alfresco

L’accès par défaut est admin/admin ; Changez-le immédiatement !

CIFS

Pour configurer les protocoles additionnels tels que CIFS/SMB (qui permettent un accès au repository Alfresco comme s’il s’agissait d’un filesystem) ou FTP, éditez le fichier suivant :

Comme Tomcat s’exécute avec un utilisateur non privilégié, vous ne pouvez pas utiliser le port standard (445) pour faire tourner votre serveur CIFS. Il faut, à la place, décommenter les lignes suivantes dans /var/lib/tomcat5.5/webapps/alfresco/WEB-INF/classes/alfresco/file-servers.xml :

<tcpipSMB port="1445" platforms="linux,solaris,macosx"/> 
<netBIOSSMB sessionPort="1139" namePort="1137" datagramPort="1138" platforms="linux,solaris,macosx"/>

Pour accéder au serveur, utilisez depuis Windows : \\server:1445\Alfresco. Il ne reste plus qu’à “mapper” le port 445 vers le port 1445 (avec iptables par exemple) pour se débarrasser du “:1445″ dans la chaîne de connexion - mais c’est une autre histoire.

Configuration Alfresco Share

Pour configurer Alfresco Share, il faut simplement indiquer à Share un moyen de communiquer avec Alfresco : il faut renseigner le nom d’hôte (localhost dans notre cas) et surtout le numéro du port sur lequel se font les échanges avec Alfresco. Éditez le fichier /var/lib/tomcat5.5/webapps/share/WEB-INF/classes/alfresco$ sudo vi webscript-framework-config.xml et remplacez toutes les instances de 8080 par le numéro du port sur lequel Tomcat tourne (en général : 8080 ou 8180, c’est le premier par défaut sous Debian, de mémoire).

Vous vous connectez ensuite à Alfresco Share par l’URL suivante :

http://localhost:ALFRESCO_PORT/share

Et maintenant ?

Et voilà, Alfresco est installé !

Ce guide est légèrement incomplet (manque la partie OpenOffice et PDF2SWF) et il me reste quelques problèmes techniques à résoudre (problème du port de CIFS), mais cela devrait vous mettre le pied à l’étrier.

N’hésitez pas à me dire si vous remarquez des erreurs dans ce guide ou souhaitez préciser certains points.

Bonne installation !

Référence

Voici une liste de liens utiles, pour référence ou pour aller plus loin :

Pierre-Julien Grizel GED , ,

Précédent | Suivant

15/05/2009

La notion de pagination (ou “batch” en anglais) n’est pas récente. Elle est largement éprouvée, puisqu’elle est notamment utilisée dans la production d’écrits depuis au moins une petite vingtaine de siècles.

Et pourtant, il se trouve encore quelques irréductibles qui estiment que c’est un concept trop novateur pour être appliqué dans un site web. Je peste à chaque fois que j’en vois un et j’oublie toujours de le retenir pour le dénoncer ensuite, mais là, j’en ai pris un la main dans le sac :

Le site de VoodooPad propose des copies d’écran de leur (par ailleurs très bon) produit (voir ci-dessous). Il offre la possibilité de cliquer sur une vignette pour l’afficher en grand. Et là, c’est le drame : 

  • Il y a 5 copies d’écran en haut du site ;
  • Aucune de ces copies d’écran ne possède de titre visible sans survol de la souris ;
  • L’utilisateur va donc devoir cliquer sur une vignette pour en observer le contenu (d’une part parce qu’il est plus rapide de faire un clic que d’attendre qu’une info-bulle s’affiche ; d’autre part parce que la consultation d’une image est une action très peu engageante, finalement)
  • Là, il voit la vignette en lightbox (très joli), mais il n’a aucune possibilité de passer à l’image suivante ou à l’image précédente : il ne peut que fermer la lightbox, se souvenir quelle était l’image sur laquelle il était positionné, passer la souris sur la suivante/précédente, cliquer à nouveau pour voir le détail.

Je voulais ré-installer VoodooPad et ça m’a tellement “fatigué” de parcourir les vignettes que, finalement, j’ai abandonné. Quel dommage… Voici les vignettes en question :

Attention, cela ne veut pas dire non-plus que l’on peut faire n’importe quoi avec les boutons précédent / suivant : trop souvent, une volonté certes louable mais souvent maladroite de travailler le design pousse les concepteur à proposer des boutons qui ne sont pas utilisables. Voici les erreurs fréquemment rencontrées dans la conception de boutons de pagination :

  • Soit ils sont trop petits ;
  • Soit ils sont trop gros et masquent carrément une partie de l’image (!!) ;
  • Soit ils n’apparaissent qu’au survol, et là, il faut que l’utilisateur ait le réflexe (parfaitement naturel bien sûr) de déplacer sa souris partout sur l’image comme un malade jusqu’à trouver les fameux boutons cachés ;
  • Soit ils n’existent carrément pas :)

Voici quelques exemples, plus ou moins réussis (voyez la galerie ci-dessus pour plus de détails) :

  • Apple a raté son coup : pas de boutons précédent/suivant dans le parcours de la galerie de l’iPod. L’alternative a consisté à mettre les vignettes de la galerie sous l’image zoomée. Dommage, l’interface aurait été sans doute plus fluide et pas tellement alourdie avec une pagination (en plus des vignettes).
  • Wulffmorgenthaler présente une interface lisible, discrète mais efficace. Les boutons Previous / Next s’intègrent bien à la charte du site et sont placés à l’endroit auquel on aurait naturellement tendance à venir les chercher.
  • Flickr est une vraie réussite de ce point de vue. Le parcours précédent/suivant est ici mis en valeur de façon efficace, précise, riche (puisqu’on sait tout de suite ce que l’on va voir, que l’on a en fait un double niveau de navigation : la vignette qui permet d’afficher l’image concernée et les flêches qui permettent de faire défiler les vignettes), et c’était tellement pratique qu’ils en ont mis deux (un défilement contextuel et un défilement global).

Pour être efficace, on peut donc résumer le propos comme suit :

 

  • Lorsqu’un site présente une énumération d’éléments qui peuvent être individuellement consultés, il faut prévoir une pagination.
  • La pagination doit proposer des boutons “Précédent / Suivant” (ou “Previous / Next” en anglais).
  • Le bouton “Précédent” ne doit pas être affiché sur le premier élément (forcément), ni le bouton “Suivant” sur le dernier. En somme, il ne faut pas afficher des boutons qui n’ont pas d’utilité.
  • Les boutons ne doivent pas changer de place, pour permettre le “clic en série”, notamment sur le premier et sur le dernier élément (la disparition de bouton “précédent” sur le premier élément ne doit pas décaler pour autant le bouton “suivant”).
  • Les boutons doivent être visibles sans survol, sinon ils ont peu de chances d’être utilisés.
  • Dans tous les cas, un numéro d’image a peu de chance de signifier quoi que ce soit. Il ne faut pas utiliser de numéros pour permettre l’accès rapide à un élément, mais soit des vignettes (comme Apple), soit rien du tout s’il n’y a pas énormément d’éléments à parcourir.

 

Dans la série du cordonnier mal chaussé, vous noterez que ce blog ne respecte même pas ces règles de base ! En effet, j’ai voulu jouer avec la galerie de Wordpress plutôt que d’afficher les images les unes à la suite des autres au moment où elles étaient pertinentes. Moralité : je n’aurais pas dû :)

Et vous, avez-vous d’autres exemples à soumettre ?

Pierre-Julien Grizel Ergonomie

Quelques liens sur l’ergonomie

15/04/2009

Illustration

Illustration


Voici quelques liens à retenir sur le thème de l’ergonomie :

  • Ergolab : Une ressource, francophone, indispensable ! De nombreux articles liés à l’ergonomie web. À consulter absolument !
  • Superfiction, le blog : Le blog d’un chef de projet interactif dans une web-agency. Une mine d’informations régulièrement actualisée.
  • User Interface Ingeneering : Un site destiné aux ergonomes, anglophone. Intéressant.
  • Smashing Magazine : Un blog anglophone plutôt orienté designers interactifs, parlant de photo, de design web et aussi bien sûr d’ergonomie.

Nous nous efforcerons de mettre à jour ces liens dans le blog.

Pierre-Julien Grizel Ergonomie

Écrire pour Internet

15/04/2009

Pour être efficace, un écrit destiné à Internet doit pouvoir être parcouru rapidement, en utilisant :

  • La mise en valeur de mots-clés
  • Des titres lisibles
  • Des listes à puces
  • Une idée par paragraphe
  • Une écriture en “pyramide inversée”
  • La moitié des mots en moins par rapport à une écriture sur support papier

Évidemment, nous n’inventons rien, puisque ces conseils ont été prodigués par Jakob Nielsen dans son article de 1997 (!!) intitulé Reading on the Web.

Ces conseils relèvent à la fois du bon sens et de l’expérience. Allez faire un tour sur le site useit.com, vous verrez que ces informations sont toujours d’une actualité brûlante…

Pierre-Julien Grizel Ergonomie