To display the most relevant entries to you in priority,
vote for the stories you are interested in
()
and reject those that you are not interested in
()
Le titre de ce billet est inspiré du titre d’un article très connu de
Jakob Nielsen nommé « Flash 99% bad ». Je ne
prétends pas être aussi pertinent que Jakob Nielsen dans mes analyses mais je
trouvais l’idée des 99% très appropriée. En effet, je trouve que
dans 99% des cas, les CMS sont à chier !
Très récemment, j’ai eu une expérience relativement malheureuse avec
un CMS (SilverStripe pour ne pas le citer) et comme
je l’avais déjà
laisser entendre sur Twitter, j’ai décidé d’en faire une note car
je trouve le sujet relativement important (toutes proportions gardées).
Je ne sais pas si vous réagissez comme moi mais personnellement, quand un nouveau CMS sort
et commence à buzzer sur le Web, je m’emballe vite et je pense avoir trouvé
la perle rare, le CMS parfait que j’attends depuis longtemps… Au début, tout
à l’air beau et génial mais au final, après avoir trempé ses
mains dedans un certain temps, il y a toujours une grosse quantité de trucs qui ne nous
conviennent pas et qui deviennent carrément insupportables sur la durée !
Mais repartons à zéro et définissons le terme CMS…
CMS est l’acronyme de « Content Management System » ce qui veut dire
« système de gestion de contenu » dans la langue de Molière.
Ce site se compose en général de deux parties. La première est le
« frontend », il s’agit du site public, accessible au monde entier.
La deuxième partie est privée. On l’appelle le
« backend » ou « admin » et elle permet aux
administrateurs du site (via un login/password) d’en modifier le contenu, de façon
plus ou moins sophistiquée. Ils sont devenus très populaires aujourd’hui car
ils constituent un argument commercial de poids ! En effet, une fois le site terminé, le
client ne devra plus faire appel à l’agence/webmaster pour faire la maintenance. Il
peut se débrouiller tout seul ! En général, ça ne se passe jamais
vraiment comme ça, mais c’est une autre histoire…
Et alors, pourquoi c’est si merdique un CMS ?
Pour moi, la grande faiblesse des CMS, c’est son élément central et
indispensable : l’éditeur WYSIWYG. Un éditeur WYSIWYG (acronyme
de « What You See Is What You Get ») permet, sans aucune connaissance
d’HTML, de pouvoir structurer et mettre en forme le contenu. Il s’agit d’un
outil puissant et complexe mais qui a ses limites. Il est en effet difficile d’assurer la
qualité du code source généré par un éditeur WYSIWYG. Pour un
accro aux standards du Web comme moi, c’est un véritable cauchemar !
Mais le pire ennemi de l’éditeur WYSIWYG se cache ailleurs, il s’agit de
Microsoft Word ! Même si vous faites le backend le plus ergonomique du monde, la plupart
des clients éditeront d’abord leur texte dans Word et le copieront ensuite dans
votre éditeur… Et là, c’est l’hécatombe… En effet,
Word génère un code HTML propriétaire merdique qui va foutre en l’air
tout votre beau travail. Au mieux, le site s’affichera correctement mais la validation HTML
ne sera plus au rendez-vous. Au pire, votre interface sera totalement explosée !
C’est en général à ce moment là que le client vous
téléphone (et que vos ennuis commencent)… Certains éditeurs WYSIWYG
proposent une fonction « Paste from Word » qui arrange le problème. Encore
faut-il que le client l’utilise en lieu et place du classique Ctrl+V…
L’éditeur WYSIWYG est malheureusement incontournable. Imposer au client
d’éditer directement en HTML ou via une syntaxe alternative (WIki, Markdown, Textile, etc.) est rarement envisageable.
Personnellement, j’utilise TinyMCE, en limitant
les fonctionnalités au strict minimum (paragraphes, gras, italique, liens et listes).
Une autre raison pour laquelle je n’aime pas les CMS est leur lourdeur, pas tellement au
niveau des performances mais surtout en ce qui concerne le nombre de fichiers. On peut
considérer cette situation comme normale car les CMS essayent de couvrir le plus de
besoins possibles et ont généralement des possibilités assez larges mais
ça me fait toujours mal au coeur de devoir mettre plusieurs dizaines de méga-octets
de fichiers en ligne, tout ça pour un formulaire de contact et un forum… Ca me donne
une sensation de bordel et de perte de contôle total de l’outil… Je
déteste ça !
Et puis, même si, comme je viens de le dire, les CMS proposent de nombreuses
fonctionnalités dont la plupart ne vont vous servir à rien (souvenez vous de
la loi de
Pareto qui dit que 20% des fonctionnalités sont utilisées par 80% des
personnes), il y en a toujours une ou deux que vous auriez bien aimé avoir mais qui
manquent à l’appel. C’est super frustrant !
La plupart des CMS Open Source sont au départ
des CMS destinés à un usage personnel qui sont devenus tellement aboutis que le
développeur a décidé de le mettre à disposition sur le Web. Environ
un développeur sur deux développe son propre CMS (et parmi eux, un
sur dix le finira un jour). Le problème, c’est qu’il s’agit en
général d’un CMS dont les idées viennent du cerveau d’un seul
mec (le développeur) et destiné au départ à n’être
utilisé que par un seul mec (toujours lui). Pour le mec en question, c’est
génial mais ce n’est peut-être pas comme ça que l’aurait fait un
autre développeur. Dix développeurs vont aborder de dix manières
différentes un problème et le résoudre de dix manières
différentes, pour arriver au final au même résultat. Ce que je veux dire par
là c’est qu’utiliser le CMS d’un autre, c’est un peu comme si on
allait dormir dans un autre lit que le sien. Ca peut être super confortable mais
rien de tel que son propre lit ! Même si c’est Open Source, se
plonger dans le code d’un autre (qui a un autre style et d’autres conventions) et le
modifier est une chose que je déteste car je considère (à tort, bien
évidemment) que mon style et mes conventions sont meilleurs (c’est très
subjectif).
Et n’allez pas croire que les CMS payants sont meilleurs ! Je connais quelques CMS en .NET
(dont je ne citerai pas les noms) qui coutent un porte-avion et qui ne valent rien (façon
de parler).
Bref, tout ça pour dire que les CMS et moi, ça n’a jamais été
le grand amour et que je suis partisan du full custom. Le seul CMS que j’aime encore bien
est WordPress qui répond parfaitement à mes
besoins de bête blogueur qui se croit influent. J’essaye d’éviter
Drupal, CMS Made
Simple et SilverStripe si je veux rester de bonne
humeur.
Si j’ai le choix, je préfère donc utiliser un framework comme symfony qui me permet d’écrire mes propres
composants réutilisables. Sur le long terme, ça permet de gagner du temps et
d’avoir des sites plus facilement maintenables et qui tiennent la route !
Ca fait maintenant presque qu’un mois que je n’ai plus rien écrit ici ! Ne
pensez pas que je vous délaisse ou que je commence à en avoir assez de
bloguer… La raison de ce long silence est simple : je n’ai vraiment pas eu
le temps…
Je sais, ça fait bien de dire « j’ai pas l’temps » mais
je ne me la joue pas homme d’affaire pour un sou (je n’ai pas le temps pour
ça).
Et pendant que je n’avais pas le temps, il s’est passé plein de choses…
Je tenais d’abord à féliciter Cherry
& Cake pour la banner très originale qu’ils affichent en ce moment sur mon
blog (on peut aussi la voir chez Ced et
Mich). Il s’agit d’une publicité pour
la ligue des impatients,
présidée par Alex
Desmedt.
C’est dit…
Pour en revenir à mes problèmes de temps, sachez qu’une partie de mon silence
vient du fait que mes soirées et week-ends de ces dernières semaines ont
été occupés à concevoir, avec quelques camarades de jeu, le site
Free Your Mind pour Kia.
Il s’agit d’un site destiné à promouvoir le nouveau modèle de
Kia : la SOUL. Pour reprendre les propos du site :
Les préjugés peuvent avoir la dent dure et se propager à toute allure.
Ils ne touchent pas seulement les êtres humains. Les objets de la vie courante, comme une
voiture, en sont parfois la cible.
Durant ce mois, j’ai aussi eu la chance d’être deuxième lors d’un concours
organisé par la DH ayant pour but de décerner la
palme du meilleur blog. Christophe Logiste a gagné
car il a soudoyé plus de gens que moi (merci à eux)… De toute façon,
je m’en fous car je suis encore tout émoustillé d’avoir eu droit
à un passage à l’antenne !
Je profite de ce billet fourre-tout pour vous parler aussi de Betagroup, une initiative
lancée par Jean Derely et qui a lieu
une fois par mois à l’ULB. Le but de ces mini-conférences est de
présenter de nouvelles startups du Web (belge, en général). Lors de mes
trois passages, j’ai pu y voir les présentations de Lovely Charts, Tweetag,
Doxys, iStockCV et bien
d’autres. Malheureusement, j’ai la plupart du temps été
déçu par les projets présentés… Les idées sont souvent
excellentes mais la réalisation tout aussi souvent désastreuse… Dommage !
Sur ce, je vous laisse, on me dit que WordPress
2.7 est disponible. Tant que j’y pense, je vais faire une petite mise à jour !
(Et il serait temps que je mette le nouveau design de ce blog en ligne…)
A bientôt
PS : Et si on ne se voit pas d’ici là, je vous souhaite un joyeux
Noël et une excellente année !
Voici quelques liens utiles si vous voulez commencer à concevoir des applications
Web pour iPhone. On ne parlera pas ici d’Objective-C mais uniquement de sites Web (XHTML,
CSS et JavaScript) s’éxécutant dans le navigateur Safari de l’iPhone.
iUI : librairie JavaScript
d’éléments et effets visuels pour iPhone.
Developing
for the iPhone : Présentation qui peut servir de bonne introduction au
développement Web sur iPhone (l’auteur déconseille d’ailleurs
l’utilisation de iUI mais je vous laisse seul juge).
Vous avez très certainement déjà rencontré cette
fonctionnalité sur certains sites : la possibilité d’agrandir et
rétrécir le texte via une suite de lettres “A” de tailles
différentes (disposées un peu à la manière des Daltons).
Si vous ne pigez pas ce que je veux dire (car c’est un peu dur à expliquer), vous
pouvez aller jeter un coup d’oeil, au hasard, sur le site de KBC. Ce dont je parle se trouve dans la zone supérieure
droite…
Même si l’intention est louable, je trouve que cette pratique est totalement
inutile pour plusieurs raisons :
Premièrement, je n’ai pas les chiffres mais je suis convaincu que moins de
1% des internautes recourt à l’agrandissement du texte… Pour 99% des
gens, ces boutons sont donc inutiles et encombrent l’écran pour rien !
Troisièmement, derrière ces boutons se cachent généralement une
fonction JavaScript qui va aller chipoter au pourcentage de la propriété CSS
font-size de l’élément body (dans le meilleur des cas… si toutes les
tailles de polices ont été définies en em). Si JavaScript est
désactivé, cela ne fonctionnera plus ce qui est un comble pour une
fonctionnalité qui est censé améliorer l’accessibilité…
Les raccourcis clavier vont, quant à eux, toujours fonctionner !
J’ai été voir sur des sites de référence à propos de
l’accessibilité et je ne vois cette fonctionnalité nulle part :
Je propose donc qu’on arrête cette pratique qui ne sert à rien ! Vous
êtes vivement encouragé à donner votre avis à ce propos (je suis
peut-être complètement à côté de la plaque) !
Je voulais juste vous avertir qu’en ce moment même, une conversation très
intéressante a lieu sur un
vieux billet (du 13 septembre 2007). On y parle d’Emakina, de qualité, de standards du Web,
d’accessibilité, d’optimisation, et toutes ces choses merveilleuses. Les
hostilités commencent au commentaire n°11.
Si vous vous sentez d’attaque pour amener votre pierre à l’édifice,
n’hésitez pas à aller commenter là-bas
(j’ai fermé les commentaires sur ce billet) car je suis convaincu qu’il y a
encore beaucoup de choses à dire sur le sujet…
On s’étonne souvent du nombre de langages de programmation que j’ai
placé dans mon CV et on m’accuse presque de
mensonge en prétextant qu’il est impossible d’en connaître autant…
OK, j’avoue, je ne pratique pas chacun d’eux tous les jours et il y en a que je
maîtrise beaucoup mieux que d’autres… Néanmoins, j’ai
déjà goûté (à l’unif, dans d’anciens jobs ou tout
simplement par plaisir) à tout ce qui se trouve dans ce modeste document et je
pourrais, si on me le demande, réaliser de vrais projets avec
chacune de ces technologies.
Pour moi, apprendre la programmation, c’est comme apprendre à
conduire.
Une fois qu’on a appris le code de la route, compris le mécanisme d’embrayage
et la façon dont il faut passer les vitesses, assimilé la façon de tourner
son volant, de freiner et d’utiliser les principaux boutons, on est prêt à
conduire n’importe quelle voiture. Il faudra évidemment un petit
temps d’adaptation lorsqu’on passera d’une Opel Astra à une Mini Cooper
car tous les boutons ne se trouvent pas au même endroit et le comportement
général de la voiture n’est pas exactement pareil mais une fois qu’on a
compris comment il fallait conduire une voiture, on sait toutes
les conduire !
La programmation, c’est pareil. Une fois qu’on a acquis l’algorithmique
générale, le paradigme orienté objet et tous les concepts lié
à la programmation (objet ou non), le langage de programmation n’est plus une
barrière. Evidemment, la syntaxe et certaines caractéristiques diffèrent
d’un langage à un autre mais il ne faut absolument pas tout réapprendre
à chaque fois ! Pour moi, quelqu’un qui connait Java ne devra pas faire beaucoup
d’efforts pour maîtriser l’ActionScript 3, quelqu’un qui connait le PHP
apprendra JavaScript en 2h, etc.
Voilà l’explication du mystère qui plâne autour de mon curriculum vitae
et qui semble passionner plein de gens (enfin… au moins deux personnes).
Depuis quelques temps, j’ai l’impression que les jeux vidéos sont la
cause de tous les malheurs du monde. On leur attribuait le massacre de Columbine (et
tous les autres du même genre), maintenant on dit que c’est une des principales cause
d’obésité chez les enfants… J’ai découvert cette formidable
abbération à la vision de cette pub sur Euronews
ce matin :
Je ne sais pas si vous avez déjà essayé de manger un jeu vidéo, mais je suis
pratiquement persuadé qu’il y a 0% de matières grasses et 0% de sucre
là-dedans. Certes, vous risquez de vous couper la gorge et l’oesophage avec les petits
morceaux de la pochette en plastique et du disque, mais si vous passez le tout au mixer, cela ne devrait poser absolument aucun problème
(même si, honnêtement, ça ne doit pas être très bon).
Trève de plaisanterie, j’aimerais qu’on arrête d’accuser
l’industrie des jeux vidéo de tous les maux de la planète. Je ne suis
personnellement pas un grand joueur et je ne me sens donc pas personnellement visé (de plus,
je ne suis pas obèse) mais ça m’énerve qu’on trouve de faux coupables
à des problèmes très graves de notre société ! C’est
peut-être une infime partie de la cause, mais certainement pas la cause
principale.
Si on faisait un effort pour éduquer les gens à manger moins gras, moins sucré et
moins salé, on ferait déjà un énorme pas en avant. De plus, si on encouragait
les jeunes à faire plus de sport, notamment à l’école, on verrait
d’énormes progrès très rapidement (et un pays comme la Belgique pourrait
peut-être décrocher plus de deux médailles aux JO…). Tout ça
n’est évidemment pas incompatible à la pratique de jeux vidéos. Surtout que
la tendance actuelle est de faire bouger les gens. Wii
Fit, Dance Dance
Revolution, etc. en sont de parfaits exemples.
Quelle est la prochaine étape à présent ? Accuser les jeux vidéos
d’être les responsables du réchauffement de la planète et de la crise
économique ? Pitié, arrêtons les amalgames !
S’il fallait ne garder que trois services Web, lesquels garderiez-vous ?
Attention, il ne s’agit pas ici de citer ceux que vous préférez ou ceux que
vous utilisez le plus… Je vous demande lesquels il serait le plus utile
de conserver, en sachant que tous les autres n’existent plus…
Un exemple de réponse pourrait-être (mais ce n’est pas ma réponse !) :
MySpace
Wikipédia
Twitter
Je ferai un récapitulatif quand j’aurai assez de réponses…
PS : cette idée de billet m’a été soufflée par kedis ! Merci
Cela faisait un bail… Certains liens sont un peu vieux mais ils valent encore la peine !
Si vous souhaitez partager des morceaux de code source sur des forums ou des listes de
discussion, Pastie est l’outil qu’il vous faut. Dans
le même genre mais en moins bien, il existe aussi pastebin.
Cela fait désormais un an et demi que j’ai switché définitivement de
Windows à Mac. Durant tout cette période, j’ai eu le temps de tester une
multitude de logiciels et d’en sélectionner les meilleurs. Tout récemment, un
ami (qui vient de commander un MacBook et va donc faire le grand switch lui aussi) m’a
demandé de lui faire une liste des applications Mac indispensables. Je me suis donc
exécuté et je me suis dit que ça pourrait vous intéresser
aussi…
J’ai mis en italique les logiciels payants et en bleu marine les logiciels qui
sont fournis par défaut dans les dernières versions de Mac OS X.
Adobe Creative Suite 4 :
Suite indispensable pour le designer Web. Comprend Photoshop, Illustrator, Flash, InDesign,
etc.
ImageWell : Logiciel de retouche
d’images et photos.
Seashore : Logiciel de retouche d’images
et photos.
Timeline : Logiciel pour
réaliser des lignes du temps en 3D.
Keywurl : Plugin Safari qui permet de taper un
mot-clé dans la barre d’adresse au lieu d’une URL. D’autres plugins
pour ce navigateur se trouvent sur Pimp My Safari.
Je vous propose aujourd’hui un bon vieux post technique pour briser cette longue
période de silence…
Il y a peu, j’ai eu besoin de récupérer le contenu textuel
d’un tag HTML. Concrètement, je voulais lire le texte se trouvant dans un fil
d’Ariane, sans récupérer le contenu HTML de ce tag. Pour faire simple,
à partir de ceci :
<ol id="breadcrumb"> <li><a href="index.php">Accueil</a>
»</li> <li><a href="news.php">News</a> »</li>
<li>Le point sur la crise financière...</li> </ol>
Je voulais obtenir quelque chose comme :
Accueil » News » Le point sur la crise financière...
En passant, et comme je vous vois déjà venir, je suis au courant que mon markup
n’est pas sémantique… Je devrais virer les » et les remplacer par un
background sur le a (ou mieux : utiliser la pseudo-classe CSS :after mais c’est encore loin
d’être supporté sur tous nos navigateurs…)
Bref, ce dont j’avais besoin n’était pas quelque chose comme innerHTML (qui
m’aurait donné tout le contenu HTML du ol, ce qui inclut les tags li et a) mais
plutôt quelque chose comme innerText.
Est-ce que innerText existe ?
Oui et non… A vrai dire, cela fonctionne partout sauf sur les navigateurs dont le moteur de
rendu est Gecko, c’est-à-dire Mozilla Firefox, principalement… Gecko fait le
même boulot via la propriété textContent et il a raison car
c’est le standard
W3C.
Pour pouvoir récupérer le contenu textuel d’un tag, de façon
cross-browsers, il faut donc tester si textContent existe, l’utiliser si ce test
s’avère positif et utiliser innerText dans tous les autres cas.
Comment tester que innerText (ou textContent) existe ?
Simplement en testant sur un élément qui est toujours présent dans un
document, l’élément body, par exemple :
var hasInnerText = !!document.getElementsByTagName('body')[0].innerText;
Maintenant, vous pouvez tester et vérifier la valeur de hasInnerText avant
d’utiliser innerText ou textContent.
Mais cela me semble un peu laborieux… Pourquoi ne pas créer une fonction qui
renverra toujours le bon résultat, quel que soit le navigateur utilisé ? Le top du
top est d’ajouter une méthode directement sur Element via le prototypage :
Vous pouvez désormais utiliser cette expression, elle donne le résultat
espéré :
document.getElementById('breadcrumb').text();
Cela résout ce problème dont je suis sans doute un des seuls sur terre à
m’être posé (quoique).
Pendant que vous êtes en train de paniquer à propos de la crise, de votre argent en
banque, de vos investissements et du pouvoir d’achat, j’essaye de m’occuper
comme je peux…
Après une édition 2007 totalement réussie (à
laquelle j’avais assisté), l’équipe stratégique
d’Emakina remet ça dans ce qui sera encore une fois une soirée très
instructive et très riche en rencontres. On y parlera sans doute encore de Bastien & Scapin et de plein d’autres choses
Avec Gabriel de Tourisme
Mauricie, j’ai quitté l’Auberge du Trappeur dans la brume d’un
vendredi matin, direction le musée du bûcheron !
Situé dans le charmant village de Grandes-Piles, berceau de l’exploitation
forestière québécoise en Mauricie, ce village forestier demeure le plus
important du Québec. Il retrace et perpétue l’histoire des
bûcherons et draveurs de la
Mauricie de 1850 à 1950. Le musée fête cette année ses 30
ans !
Nous y avons été accueilli par un authentique bûcheron (avec le look qui va
avec) qui nous a guidé et expliqué tout ce qu’il fallait savoir dans les
moindres détails.
Après ça, un repas dans la Cookerie du musée du
bûcheron s’imposait ! Après avoir goûté au caribou, nous avons eu droit à un
vrai repas de bûcheron dont je retiendrai surtout la soupe aux pois qui en est un
classique !
Pour digérer tout ça, rien de tel qu’un petit bout de route vers Shawinigan, splendide ville située dans un
crochet de la rivière Saint-Maurice (qu’on appelle la baie de Shawinigan). La ville
abritait une usine de pâtes et papier, nommé Belgo car elle a été mise
sur pied grâce à un investisseur belge. Malheureusement, l’usine a du être fermée
récemment ce qui fut une petite catastrophe pour Shawinigan… Notre temps de
visite là-bas a été très court mais j’ai pu monter tout en haut
de la tour de la Cité de
l’énergie où la vue était tout simplement splendide. On a
même pu apercevoir Trois-Rivières au loin, alors
que les deux villes sont séparées de plus de 30 kilomètres !
La route nous appelant à nouveau, nous avons gagné Saint-Alexis-des-Monts qui compte parmi ses bonnes
adresses la microbrasserie Nouvelle-France.
Là-bas, nous avons pu visiter les installations où la bière est
fabriquée et bien entendu en goûter quelques unes : l’Ambrée de
Sarrasin, la Blonde d’Epeautre, la Claire Fontaine et la Messagère.
En fin de journée, j’ai rejoint le petit paradis sur terre où j’allais
loger et me divertir : la Pourvoirie du Lac
Blanc. Je pense que je n’ai jamais vu un lieu si beau de toute ma vie. Je m’y
serais bien installé. Je recommande à quiconque d’y passer quelques jours.
Les activités qu’on peut y réaliser sont nombreuses, aussi bien en hiver
qu’en été. J’ai pu y observer des ours et des castors, faire du quad,
pêcher la truite, tirer au pigeon d’argile, etc.
Cela finissait en beauté mon petit tour de Mauricie,
merci encore à toutes les personnes qui ont rendu cela possible !