Facilitez-vous le Javascript avec jQuery

jQuery est une sympathique bibliothèque Javascript. Elle permet de manipuler la page assez facilement via un système de requêtage des éléments reprenant les sélecteurs CSS. Du coup c'est assez simple et nettement plus court que de travailler avec du DOM.

Par ailleurs elle permet d'ajouter des effets aux différents événements sans écraser ceux qui seraient déjà présents, d'appliquer des effets de masquage/affichage progressif aux éléments, etc
Des extensions proposent différents éléments d'interface évolués comme des zones redimensionnables, un datepicker, des onglets...

Mais surtout l'ensemble est multi-navigateur, ce qui évite d'avoir à se préoccuper trop souvent d'Internet Explorer qui constitue un véritable cauchemar dès qu'on veut faire quelque chose d'un peu évolué.

J'ai fait quelques tests ces derniers jours sur le script de mes forums et c'est plutôt concluant : un code nettement plus court et vachement plus propre !

Bref, une bibliothèque qui vaut qu'on lui consacre un peu de temps.


Gérez vos feuilles de styles perso avec Stylish

Cet article est marqué comme contenant des informations dépassées depuis le 21/10/2018.
Stylish a été banni de Firefox et Chrome parce qu'il collectait des données d'historique. Utilisez plutôt Stylus qui propose les mêmes fonctionnalités (et même plus).

Une feuille de style, qu'est-ce que c'est ?

Pour ceux qui ne s'y connaitraient pas trop en développement web, la feuille de style est un fichier qui permet de définir l'apparence d'une page web. Idéalement, lorsqu'on développe un site, la sémantique du contenu est indiquée par le code HTML qui le met en page (par exemple telle ligne est un titre, telle autre est une définition, etc) et on le décore ensuite via une feuille de style. Le langage utilisé pour écrire ces feuilles de style est CSS.

Des feuilles de style personnalisées ?

C'est là que Firefox intervient ! En effet, ce génial navigateur a une fonctionnalité qui bien que peu connue du grand public ouvre d'énormes possibilités : il permet à l'utilisateur averti de définir des feuilles de styles personnelles appliquées soit à tous les sites qu'il affiche, soit à un site, groupe de sites ou même une page en particulier (plus d'explications ici).

De base c'est masqué et pas facile d'accès mais l'extension Stylish permet de les définir très facilement. On peut ainsi modifier soi-même l'affichage des sites que l'on visite (bien entendu, cette modification ne vaut que pour votre navigateur à vous et n'est visible par personne d'autre).

On peut par exemple réorganiser les éléments en occupant l'espace inutilisé par un design prévu pour une résolution plus base, remplacer certaines couleurs insupportables, supprimer certains blocs d'affichage, etc.

Comment ajouter une feuille de style ?

  1. Installez Stylish et relancez Firefox.
  2. Lancez l'outil de gestion des feuilles de style :
    Stylish - lancement
  3. Cliquez sur le bouton "Écrire" :
    Stylish - écrire*
  4. Indiquez d'abord un titre (1) qui vous servira uniquement à reconnaitre cette feuille quand vous en aurez ajouté plein d'autres. Puis copiez/collez le code CSS que vous voulez appliquer dans le cadre texte (2) et enfin cliquez sur "Enregistrer" (3).
    Stylish - définition du style
  5. C'est prêt. Il peut cependant s'avérer nécessaire de rafraichir la page pour que les modifications apparaissent.

Tout ça c'est bien mais moi j'utilise IE...

Alors ça c'est ballot ! Parce que ça m'étonnerait fortement qu'IE gère un truc pareil, mais bon, on ne peut pas en même temps utiliser un navigateur totalement dépassé, ou plus généralement un produit Microsoft, et espérer qu'il soit à la pointe de l'innovation...

Et je n'en ai pas entendu parler pour les autres navigateurs tels qu'Opera ou Safari... Cela dit, rien ne vous empêche de chercher et de faire part de vos découvertes.


Quelques trucs sur PHP #1

Quelques petits trucs que je n'ai appris que récemment. Peut-être étais-je le seul à les ignorer... ou peut-être pas, donc dans le doute...

Sortir de plusieurs boucles à la fois

Classiquement l'instruction break; s'utilise telle quelle pour sortir de la boucle ou du switch courant. Cependant en PHP (et sans doutes dans d'autres langages également), on peut lui adjoindre un paramètre entier permettant de sortir de plusieurs boucles à la fois. Ceci est à utiliser avec parcimonie car ce n'est pas forcément des plus lisible mais ça peut aider à accélérer une recherche dans un tableau multi-entrées par exemple :

// Supposons que $array est un tableau à double-entrée contenant des entiers
// et que l'on en cherche un supérieur à 10.
$result = null;
foreach ($array as $subArray)
{
	foreach ($subArrayas $item)
	{
		if ($item > 10)
		{
			$result = $item;
			break 2;
		}
	}
}

Paramètre de la fonction die

C'est plus une instruction qu'une fonction mais bon, passons. Elle peut prendre en argument un entier ou une chaine de caractère mais cet argument n'est affiché à l'écran que s'il s'agit d'une chaine. Ça n'a l'air de rien mais c'est bon à savoir...

DOM ou SimpleXML ?

SimpleXML c'est bien gentil et comme son nom l'indique, c'est « simple » (du moins dans son interface qui compte très peu de méthodes), mais à l'usage c'est quand même des plus limités. Et c'est plutôt chiant à utiliser parce qu'il faut caster pas mal de choses pour obtenir des chaines de caractère au lieux de nœuds XML (sans compter le bug dont je parlais il y a quelques temps). D'autant qu'il existe une alternative...

En effet, j'en étais resté à PHP4 où l'API DOM se cantonnait l'extension DOM XML non-incluse par défaut, ce qui n'était pas bien pratique... Mais en PHP5, elle a été remplacée par une nouvelle implémentation incluse en natif dans PHP sous le nom de DOM. Bref, en ce qui me concerne, SimpleXML va direct à la poubelle et je n'utilise plus que DOM, avec l'avantage supplémentaire d'être similaires aux bibliothèques DOM présentes dans d'autres langages tels que JavaScript, puisque DOM est un standard, ce qui raccourcit d'autant l'apprentissage.


Finalement...

Après une petite promenade dans le code de FSB (cf Rester sur phpBB ?), même s'il comporte de bonnes choses, il en comporte aussi des moins bonnes, dont :

  • Commentaires des méthodes, classes et fonctions ne respectant pas la syntaxe (inspirée de la syntaxe javadoc) utilisée par les principaux outils de génération automatique de documentation tels que phpDocumentor.
  • L'intégration des modules reste moyenne et semble se résumer principalement à une modification automatique du code, similaire à ce que fait EasyMod, mais intégré au forum. C'est déjà pas mal mais j'espérais mieux avec une réelle exploitation de l'extension des classes par exemple ou des fonctionnalités d'import/export de données...
  • Pas mal de choses telles que l'ajout de champs au profil sont présentes, mais pas aussi puissantes que ce que j'ai déjà développé pour phpBB2 et demanderaient donc d'être revues, voire re-codées complètement.

Donc au final, même si ça constituerait un mieux, c'est pas encore ça... De plus, à la réflexion, migrer l'intégralité de mes modules prendrait un temps fou (plusieurs mois), pendant lequel je serais forcé de geler tout nouveau développement.

Une autre solution s'offre donc : rester sur phpBB2 et le modifier encore plus en profondeur, sans rester proche de l'original. En effet, jusque-là, pour bénéficier des mises à jour et pouvoir publier des mods rapides à installer et ne cassant pas la compatibilité, je faisais en sorte de rester proche des habitudes de codage de phpBB et de cantonner les modifications à des zones les plus restreintes possibles.

Maintenant comme phpBB2 est en fin de vie, ne bougera plus de masses et sera de moins en moins utilisé, l'intérêt de faire cela s'amenuise. Du coup afin de pouvoir migrer plus progressivement les mods vers quelque chose de plus propre, je pense partir de ma version actuelle et la "démonter" progressivement en re-codant les mécanismes plus proprement, jusqu'à obtenir un script totalement différent et exploitant diverses briques externes telles que PHPTAL.

Cela fera au final probablement plus de boulot, mais d'une part pour un résultat qui me conviendra sans doute mieux (puisque codé entièrement selon mes idées) et d'autre part avec des améliorations progressives qui permettront d'avoir en cours de route un résultat utilisable plutôt que de devoir attendre des mois d'avoir rattrapé l'existant...


Rester sur phpBB ?

Cela fait maintenant plus de 5 ans que mes forums tournent sous phpBB2 (et à part EDForum qui a commencé en phpBB1 pour ses premiers mois, je n'ai jamais utilisé que ça).

Ce script étant tout de même en fin de vie avec la sortie prochaine de phpBB3, se pose pour moi (comme pour surement pas mal de monde, vue la popularité de phpBB) la question de savoir vers quoi se tourner pour la suite.

Ayant quelques dizaines de mods plus ou moins imposants à mon actif sur phpBB2, j'ai eu l'occasion d'en relever les limites principales qui sont :

  • un code trop peu orienté objet (après un an passé à coder intensivement en objet au boulot, le retour à une architecture impérative et fortement séquentielle me rebute quelque peu).
  • de trop nombreuses redondances de code.
  • découlant de ces deux premiers points : une grande difficulté à développer des modules approchant un tant soit peu du plug and play.

J'ai donc regardé ce qu'on pouvait trouver actuellement comme scripts de forums pour voir ce qu'on pouvait avoir, puisque quitte à migrer quelques dizaines de mods, autant que ce soit dans de bonnes conditions.

Voilà ce que j'ai brièvement testé :

  1. phpBB3 : fort logiquement j'ai d'abord regardé là puisque c'est la suite logique... Mais même si les fonctionnalités ajoutées sont assez nombreuses et pour certaines vraiment bien pensées niveau interface, niveau code, c'est franchement pas terrible : toujours très séquentiel et pauvre en objets. C'est évidemment bien mieux que phpBB2 globalement mais c'est pas encore ça... Faut dire que les débuts des devs datent de 4-5 ans déjà, donc forcément...
  2. punBB : il a bonne réputation comme étant rapide, donc j'ai regardé un peu... Mais c'est pas mieux que phpBB3, voir moins bien avec un certain nombre de trucs codés en dur que même phpBB2 ne mettait pas en dur... Alors j'ai peut-être raté quelque chose avec le peu de temps que j'y ai consacré mais ça m'a franchement pas convaincu, d'autant que le code n'est pas plus objet que phpBB.
  3. Fire soft board, alias FSB : c'est alors que je me suis souvenu du script développé par Genova (ancien moddeur phpBB2), je suis donc allé voir ce que ça devenait et apparemment il a fait du bon boulot avec sa version 2 (proche de la sortie, puisqu'en RC4 déjà) : il a pensé au développement de mods, codé en objet, tout ça \o/ Apparemment il avait vu les mêmes défauts que moi dans phpBB2... Bref ça m'a l'air pas mal. Puis c'est développé par une équipe francophone pour une fois, ce qui ne gâche rien.

Après ces quelques investigations (pas très poussées, j'en conviens, vu que je n'ai regardé que 3 scripts différents et pas trop en détails...), mon choix se porte plutôt vers FSB. J'ai pas encore vraiment commencé à travailler avec, donc peut-être de mauvaises surprises en perspective... Rendez-vous dans quelques temps pour en savoir plus.