Matt Biscay: développeur WordPress et WooCommerce pour SkyMinds
votre macbook surchauffe

Régler le problème de surchauffe d’un MacBook

Depuis la mise à jour vers MacOS Monterey, mon MacBook Pro est en surchauffe permanente, avec le ventilateur à fond même en simple surf.

Si vous êtes confronté au même problème, voici comment j’ai réussi à retrouver un environnement de travail avec un volume de sonore acceptable (c’est-à-dire silencieux).

Solution 1 : vérifier les options de la batterie

C’est la solution qui a réglé mon problème mais j’ai mis du temps à la trouver car elle n’est indiquée nulle part sur le site du support technique d’Apple.

Ouvrez Préférences Système et cliquez sur l’icône Batterie:

macos preferences systeme batterie
Préférences Système ⟶ Batterie

Dans Batterie ⟶ Batterie, vous devez activer l’option Mode Économie d’énergie:

Dans l'onglet Batterie, activez l'option Mode économie d'énergie
Dans l’onglet Batterie, activez l’option Mode économie d’énergie

Ensuite, passez à l’onglet Adaptateur secteur et activez également l’option Mode économie d’énergie :

macos batterie secteur economie energie
Dans l’onglet Adapteur secteur, activez l’option Mode économie d’énergie

Cela a définitivement résolu mon problème et mon MacBook est redevenu silencieux. Je peux également l’avoir sur les genoux sans me brûler, ce qui est un avantage certain pour un laptop.

Lire la suite

WordPress Using WP CLI

wp-cli : importer et exporter les utilisateurs WP

Voici une méthode simple pour exporter tous les utilisateurs d’une base de données WordPress, pour les réimporter sur un autre site, à l’aide de l’excellent wp-cli.

Nous ferons référence à la base de données source en tant que source-db et à la base de données cible en tant que target-db et je supposerai que vous avez accès aux deux instances WordPress via wp-cli.

Étape 1 : exporter les utilisateurs WordPress

Cette étape fonctionnera avec la base de données source-db:

wp db export --tables = $(wp db tables 'wp_*_users') users.sql
  • notez l’astérisque dans le nom de la table – utilisez-le pour éviter de taper le nom exact de la table pour votre base de données WordPress spécifique
  • notez le nom du fichier exporté, users.sql – cela permet d’identifier clairement le contenu de ce fichier.

Étape 2 : exporter la méta utilisateur WordPress

Cette étape fonctionnera avec la base source-db. Comme ci-dessus, notez le caractère générique et le nom de fichier:

wp db export --tables = $(wp db tables 'wp_*_usermeta') usermeta.sql

Étape 3 : sauvegarde facultative des utilisateurs et usermeta

Cette étape fonctionnera avec la base target-db. Il s’agit d’une sauvegarde facultative des utilisateurs et des tables usermeta avant d’importer les nouvelles données:

  • répétez l’étape 1 (mais en travaillant avec target-db)
  • nommez le fichier backup-users.sql
  • répétez l’étape 2 (mais en travaillant avec target-db)
  • nommez le fichier backup-usermeta.sql

Cela nous donne donc:

wp db export --tables = $(wp db tables 'wp_*_users') backup-users.sql
wp db export --tables = $(wp db tables 'wp_*_usermeta') backup-usermeta.sql

Lire la suite

WHM logo

WHM : obtenir l’accès root pour SSH

Je suis intervenu récemment sur un site qui tourne sur un serveur avec WHM (Cpanel) et j’ai eu besoin d’avoir un accès root en SSH.

Mais problème: l’hébergeur n’autorise pas l’accès root. Il faut signer une décharge de manière manuscrite qui exempte l’hébergeur de toute faute en cas de souci et met fin au support technique… ce qui n’est certainement pas ce que l’on souhaite, ni ce que notre client désire!

En cherchant un peu, j’ai trouvé un moyen très simple de circonvenir à ce problème.

Vérification de l’accès SSH de notre utilisateur

Connectez-vous à WHM.

Ensuite, allez dans Account Functions → Manage Shell Access pour vérifier que la connexion SSH est bien activée pour notre utilisateur.

Choisissez l’option Normal Shell :

WHM: configurer l'accès ssh de l'utilisateur
WHM: configurer l’accès ssh de l’utilisateur

Ajouter l’utilisateur au Wheel Group

Nous allons maintenant ajouter notre utilisateur au Wheel Group. C’est cette étape qui nous permettra d’obtenir l’accès root en SSH.

Lire la suite

linux apt packages

Apt : the following packages have been kept back

Après la mise à jour d’Ubuntu Server sur le serveur, j’ai eu cette erreur récurrente après chaque mise à jour apt :

The following packages have been kept back:
  mysql-client mysql-server

Il m’était donc impossible de mettre le serveur et client mysql à jour, ce qui n’est évidemment pas idéal.

Et si l’on essaie de les installer directement avec:

apt install mysql-client mysql-server

On obtient alors ce message:

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 mysql-common : Conflicts: mysql-client-8.0 but 8.0.29-0ubuntu0.22.04.2 is to be installed
                Conflicts: mysql-client-core-8.0 but 8.0.29-0ubuntu0.22.04.2 is to be installed
 mysql-server : Depends: mysql-server-8.0 but it is not installable
E: Unable to correct problems, you have held broken packages.

Réinstaller mysql-apt-config

On commence donc par réinstaller le package mysql-apt-config :

wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb

Et on installe le paquet:

dpkg -i mysql-apt-config_0.8.22-1_all.deb

On relance donc la mise à jour:

apt update && apt upgrade

Les nouvelles versions des paquets sont désormais installables:

9 packages can be upgraded. Run 'apt list --upgradable' to see them.
W: http://repo.mysql.com/apt/ubuntu/dists/bionic/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
Listing... Done
libmysqlclient21/unknown 8.0.29-1ubuntu18.04 amd64 [upgradable from: 8.0.29-0ubuntu0.22.04.2]
mysql-client/unknown 8.0.29-1ubuntu18.04 amd64 [upgradable from: 8.0.28-1ubuntu18.04]
mysql-common/unknown 8.0.29-1ubuntu18.04 amd64 [upgradable from: 8.0.28-1ubuntu18.04]
mysql-community-client-core/unknown 8.0.29-1ubuntu18.04 amd64 [upgradable from: 8.0.28-1ubuntu18.04]
mysql-community-client-plugins/unknown 8.0.29-1ubuntu18.04 amd64 [upgradable from: 8.0.28-1ubuntu18.04]
mysql-community-client/unknown 8.0.29-1ubuntu18.04 amd64 [upgradable from: 8.0.28-1ubuntu18.04]
mysql-community-server-core/unknown 8.0.29-1ubuntu18.04 amd64 [upgradable from: 8.0.28-1ubuntu18.04]
mysql-community-server/unknown 8.0.29-1ubuntu18.04 amd64 [upgradable from: 8.0.28-1ubuntu18.04]
mysql-server/unknown 8.0.29-1ubuntu18.04 amd64 [upgradable from: 8.0.28-1ubuntu18.04]
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  linux-headers-5.15.0-25 linux-headers-5.15.0-25-generic linux-image-5.15.0-25-generic linux-modules-5.15.0-25-generic
  linux-modules-extra-5.15.0-25-generic
Use 'apt autoremove' to remove them.
The following packages will be upgraded:
  libmysqlclient21 mysql-client mysql-common mysql-community-client mysql-community-client-core mysql-community-client-plugins
  mysql-community-server mysql-community-server-core mysql-server
9 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Résoudre le message “Key is stored in legacy trusted.gpg keyring”

Dans le message précédent, nous pouvons trouvez ce message d’avertissement:

W: http://repo.mysql.com/apt/ubuntu/dists/bionic/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

Je l’ai résolu en déplaçant le fichier dans le répertoire trusted.gpg.d :

mv trusted.gpg trusted.gpg.d/

Et voilà, plus d’erreur avec apt et notre système met bien tous ses paquets à jour.

portfolio bac dossier specialiite llcer anglais

Bac : le dossier en spécialité LLCER Anglais

Lors des deux années de cycle terminal, les élèves suivant l’enseignement de spécialité LLCER sont amenés à constituer un dossier personnel, dans lequel ils présentent « des documents vus en classe et choisis par eux-mêmes en lien avec les thématiques du programme » (Bulletin officiel du 22 janvier 2019, annexes 1 et 2).

Le dossier personnel de l’élève

Ce dossier personnel est enrichi par l’élève lui-même, de manière autonome, en langue cible. Il s’inspire de ses cours, de ses sorties, de ses voyages, de ses lectures ou de tout autre élément qu’il choisit et juge pertinent dans la construction de son dossier.

Le but du dossier personnel est que l’élève puisse construire par lui-même son propre patrimoine personnel, littéraire et culturel ; qu’il puisse développer son esprit critique et ses goûts esthétiques, tout en créant un lien avec les thèmes abordés en cours et les activités langagières auxquelles il aura été entraîné.

Cette collecte active de souvenirs permet à l’élève d’opérer des choix pour s’approprier les enseignements et documents vus en cours et leur conférer un sens nouveau, plus personnel.

La démarche du dossier

l s’agit de faire en sorte que les élèves s’ouvrent à l’autre et au nouveau, qu’ils lisent en dehors de la classe, qu’ils aillent chercher par eux-mêmes le sens qu’ils souhaitent donner aux cours.

Il est évident que cette démarche est fondamentalement non-prescriptive : on accepte tous les documents pertinents et les choix argumentés, que les sources proviennent d’une culture classique ou populaire.

Il est néanmoins nécessaire d’accompagner et de guider les élèves dans leurs choix de lecture, de visionnage de films, ou d’écoute de chansons, de les inciter à se rendre à une exposition ou de suggérer des sites Internet pertinents.

L’apprentissage de l’autonomie suppose un accompagnement réfléchi et personnalisé de l’enseignant. La démarche n’est également pas solitaire. C’est dans le partage et la collaboration entre pairs que la réflexion personnelle s’affine.

Trouver et présenter ses documents pour le bac

Le professeur prend soin d’intégrer didactiquement, dans le déroulé de la séquence, des moments où les élèves peuvent présenter à l’oral le fruit de leurs recherches.

Le cours est le lieu de la mise en relation et de la problématisation des documents trouvés par les élèves avec les thématiques abordées lors de la séquence.

Le travail de groupe est toujours un bon moyen pour favoriser l’entraide entre les apprenants et permettre l’échange d’informations et de connaissances culturelles.

Le professeur n’hésite pas, s’il en a la possibilité, à aller avec la classe en espace langues ou à la médiathèque afin de faire des recherches sur les thèmes abordés.

Les élèves peuvent trouver des documents en cherchant sur Internet grâce à des mots-clés, les noms des artistes et/ou des auteurs étudiés en classe, ou en accomplissant une Webquest.

La fréquentation régulière de sites d’informations anglophones sera conseillée (les sites de la BBC, du Guardian, du New York Times, du parmi tant d’autres) mais également les visites virtuelles de musées, le visionnage de vidéos éducatives (par exemple pour la géographie : Geography Now, pour le cinéma : Every Frame A Painting, ou pour les sciences physiques : minutephysics, etc.).

Il est pertinent de demander aux élèves une production personnelle inspirée par les textes et documents iconographiques étudiés en cours, ce qui leur permet de s’investir personnellement et de cibler un ou plusieurs aspects du cours dans leur production

subversion svn banner

MacOS : Subversion (SVN) ne répond plus

Aujourd’hui, je mets à jour un de mes plugins WordPress sur le dépôt officiel et subversion ne répond plus sous MacOS:

svn stat
-bash: svn: command not found

Ah tiens, il y avait longtemps. Cela doit être dû à une des mises à jour Mac ou alors d’homebrew.

Installer Subversion avec homebrew

On installe donc subversion avec homebrew:

brew install subversion

Une fois subversion installé, je relance la commande:

svn stat
-bash: svn: command not found

Oh! Je le réinstalle une nouvelle fois. Nouveau message d’erreur:

svn stat
dyld[62247]: Symbol not found: _apr_crypto_block_cleanup
  Referenced from: /usr/local/Cellar/subversion/1.14.2/lib/libsvn_subr-1.0.dylib
  Expected in: /usr/lib/libaprutil-1.0.dylib
Abort trap: 6

La solution de cette erreur est toute simple, il faut réinstaller le paquet apr-util :

brew reinstall apr-util

Résultat:

==> Downloading https://ghcr.io/v2/homebrew/core/apr-util/manifests/1.6.1_3
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/apr-util/blobs/sha256:4459e0d3d15a973db35fb64b1da85d2185afc41e77d2989186db5574d3c75234
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:4459e0d3d15a973db35fb64b1da85d2185afc41e77d2989186db
######################################################################## 100.0%
==> Reinstalling apr-util
==> Pouring apr-util--1.6.1_3.monterey.bottle.tar.gz
🍺  /usr/local/Cellar/apr-util/1.6.1_3: 54 files, 851.6KB
==> Running `brew cleanup apr-util`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

Si l’on relance de nouveau notre commande svn, tout fonctionne:

svn stat
M       trunk/better-comments.php
M       trunk/changelog.txt
M       trunk/composer.lock
M       trunk/includes/options.php
M       trunk/readme.txt
M       trunk/vendor/composer/ClassLoader.php

Et voilà, problème réglé – subversion est de nouveau opérationnel.

ubuntu 2204 jammy jellyfish

Serveur: migration d’Ubuntu 20.04 à 22.04 LTS

Aujourd’hui, nous mettons le serveur à jour et passons d’Ubuntu Server 20.04 (Focal Fossa) à la version 22.04 LTS (Jammy Jellyfish).

Chaque nouvelle mise à jour d’Ubuntu en version LTS (Long Time Support) permet de bénéficier des mises à jour de sécurité et de maintenance pendant 5 ans, c’est à dire jusqu’en 2027 pour la version Jammy Jellyfish.

Lecture des changements apportés

Je vous conseille fortement de lire le changelog de la version 22.04 pour avoir un aperçu des changements apportés au niveau du kernel, openSSL, certains services.

Sont maintenant disponibles:

  • Apache 2.4.52
  • BIND 9.18
  • Linux kernel v5.15.0-25
  • MySQL 8.0.28
  • NetworkManager 1.36
  • nftables est le backend par défaut pour le parefeu
  • Perl v5.34.0
  • PHP 8.1.2
  • PostgreSQL 14.2
  • Python 3.10.4
  • Ruby 3.0
  • ssh-rsa est maintenant désactivé par défaut dans OpenSSH.

Cela donne aussi une idée des potentielles complications qui pourraient subvenir à la suite de la mise à jour, ainsi que leur remédiation.

Sauvegarde des données du serveur

Je ne vous apprends rien : il va falloir sauvegarder les données importantes du serveur avant de commencer la mise à jour de l’OS.

Pensez-donc au dossier /home et /var/www mais aussi aux fichiers de configuration dans /etc et /root.

Vérification des pré-requis

Vérification de la version actuelle

On vérifie notre noyau actuel:

uname -mrs

> Linux 5.4.0-109-generic x86_64

On vérifie notre version actuelle:

lsb_release -a


No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.4 LTS
Release:	20.04
Codename:	focal

Mise à jour des paquets de la version actuelle

On met à jour la version actuelle avec les derniers paquets et les derniers noyaux:

apt update && apt upgrade

Redémarrage du serveur

On redémarre le serveur pour appliquer les changements et partir sur une base propre:

shutdown -r now

Lire la suite

bac oral epreuve de specialite llcer anglais

Bac : épreuve orale de spécialité LLCER Anglais

Nature de l’épreuve orale de LLCER Anglais au bac

La partie orale de l’épreuve de spécialité compte pour 50% de la note finale et se tient en mars (en mai pour la session 2022). L’épreuve dure 20 minutes, sans temps de préparation.

Le support autorisé est le « dossier personnel présenté par le candidat et visé par son professeur de l’année de terminale ». Le dossier n’est pas évalué, il sert d’appui à la prise de parole.

Le candidat remet un exemplaire de son dossier à l’examinateur au début de sa prise de parole et en conserve un qu’il utilise selon ses besoins durant l’évaluation.

Le candidat présente son dossier dans la langue cible pendant 10 minutes au plus pour en justifier les choix et en exprimer la logique interne, puis interagit avec l’examinateur dans la langue cible pendant 10 minutes.

Rappel de la structure de l’épreuve orale :

  • Expression Orale en Continu (EOC) : présentation du dossier et de sa logique interne (maximum 10 minutes)
  • Expression Orale en Interaction (EOI) : interaction avec l’examinateur (maximum 10 minutes)

Le niveau attendu est B2/C1 (C1 pour LLCER anglais, monde contemporain).

Si le candidat ne présente pas de dossier, l’examinateur lui remet trois documents de natures différentes en lien avec une des thématiques du programme de première. Le candidat commente ces documents.

Le portfolio pour l’épreuve de LLCER Anglais du bac

Le dossier à présenter doit être construit en lien avec une ou plusieurs des thématiques des programmes de première et de terminale.

Il ne s’agit pas simplement de présenter les documents les uns après les autres, il faut les relier par une problématique.

Afin de formuler la problématique, vous devez prendre appui sur vos connaissances. Votre problématique évoluera au fur et mesure de la constitution du dossier.

Attention, le nombre de documents a changé depuis le BO du 13 juillet 2021, il faut maintenant 4 à 6 documents en Anglais LLCER (ce changement ne concerne pas Anglais Monde Contemporain).

Lire la suite

Group photo of all devs at Cloudfest Hackathon 2022

Le Hackathon du CloudFest 2022

Cette année, j’ai eu la chance et le grand honneur d’être invité au CloudFest 2022 pour le hackathon: 3 jours de code sur un projet web en mode open-source pour faire avancer les choses.

Le Cloudfest

Le Cloudfest est une convention de développeurs et d’acteurs du web qui peuvent être extrêmement variés: cela va des hébergeurs web aux plateformes comme Codeable mais aussi avec de gros acteurs comme Airbus, Intel, Automattic, HP, Cpanel, Plesk…

Les conférences sont très variées: intelligence artificielle, business… et il est très facile de rencontrer des gens très connus sur le web pour se faire un réseau.

Le Cloudfest se tient à Rust, en Allemagne, à l’Europa Park.

Le Hackathon

Cette année le hackathon proposait plusieurs projets mais j’ai opté pour travailler sur wp-cli pour ajouter une nouvelle commande qui permettre de sécuriser 80% des attaques contre les instances WordPress, en appliquant simplement les meilleures pratiques de sécurité courantes.

Les devs du Hackathon 2022
Les devs du Hackathon 2022

Concrètement, nous avons identifié les problèmes de sécurité courants et nous avons développé une extension de l’interface de ligne de commande WordPress (wp-cli) pour offrir une alternative sécurisée et facile à utiliser aux plugins de sécurité WordPress généralement non sécurisés.

Avec la simple commande wp secure all, les meilleures pratiques courantes sont appliquées automatiquement à votre instance WordPress, et en moins de 60 secondes, vous attenuez la grande majorité des vecteurs d’attaque WordPress actuels : permissions de fichiers et de dossiers, entêtes de sécurité, bloquer l’accès aux fichiers sensibles…

Lire la suite

retrouver son nas synology

Retrouver son NAS Synology sur le réseau local

Aujourd’hui, j’ai rebranché mon vieux Synology DS212, pour récupérer des fichiers dont les liens avaient expirés sur Internet et que je voulais remettre en ligne sur mon article Sons of Anarchy Wallpapers.

Le DS212 a été configuré du temps de la Freebox Révolution, qui gère les adresses IP locales depuis 192.168.0.x. Le problème est qu’aujourd’hui, avec la Freebox Pop, les adresses sont en 192.168.1.x.

Résultat: le DS212 est inaccessible car son DHCP a été configuré manuellement: il possède l’IP 192.168.0.12 alors que sur le réseau, ce devrait être 192.168.1.12. Impossible de le joindre donc.

Voici comment retrouver son NAS Synology sur le réseau local et changer son IP dans le DHCP de DSM, sans y avoir accès.

Trouver son Synology

Vous pouvez facilement trouver vos Synology depuis votre navigateur à l’adresse find.synology.com

Trouver son NAS Synology avec l'assistant web
Trouver son NAS Synology avec l’assistant web

Si l’IP du DHCP du NAS avait été correcte, j’aurais pu me connecter sans problème avec le bouton Connecter, mais ce n’est pas le cas.

Utiliser Synology Assistant pour changer les paramètres réseau du Synology

La solution est toute simple: nous devons utiliser l’utilitaire Synology Assistant, à installer sur votre machine, pour éditer la configuration réseau du Synology et lui assigner la bonne adresse IP.

Lire la suite

tableau vert à craies

Éducation Nationale : le NUMEN en détail

Le NUMEN (NUMéro d’identification Éducation Nationale) est un identifiant associé à tout employé de la fonction publique dépendant du Ministère de l’Éducation nationale française (enseignants, inspecteurs, administration, services, etc.).

Le NUMEN a été créé durant le mandat de René Monory en tant que Ministre de l’Éducation nationale (1986 – 1988).

Il a été utilisé comme identifiant principal dans les fichiers de gestion interne en 1992, à la suite de l’action entreprise par la CNIL pour dissuader les administrations de recourir au NIR ou convaincre celles qui l’utilisaient sans y être autorisées de se doter d’un numéro spécifique.

Obtenir son NUMEN

Si vous ne connaissez pas votre Numen, adressez-vous au secrétariat de votre établissement, ou à votre service gestionnaire, seuls habilités à vous le transmettre.[

Structure du NUMEN

Chaque NUMEN se compose de 13 caractères, toujours en majuscules, qui ont tous une signification.

Voici le NUMEN fictif que nous allons utiliser et découper en quatre blocs distincts : « 17 E 05 01234ABC ».

  1. « 17 » : les deux premiers caractères représentent un code géographique caractérisant l’académie d’immatriculation : la numérotation va de 01 à 33 – mais notez le 26 et 33 n’existent plus, à la suite de plusieurs modifications.
01 Paris02 Aix-Marseille03 Besançon04 Bordeaux05 Caen
06 Clermont-Ferrand07 Dijon08 Grenoble09 Lille10 Lyon
11 Montpellier12 Nancy-Metz13 Poitiers14 Rennes15 Strasbourg
16 Toulouse17 Nantes18 Orléans-Tours19 Reims20 Amiens
21 Rouen22 Limoges23 Nice24 Créteil25 Versailles
27 Corse28 Réunion29 Détachés (TOM)31 Martinique32 Guadeloupe
33 Guyane43 Mayotte
Liste des codes des académies

2. « E » : une lettre caractérisant le système d’information:

  • G pour le premier degré,
  • E pour le second degré public (collège, lycée, enseignant(e), AESH…)
  • P pour le second degré privé,
  • A pour les agents administratifs, gestion par Agora
  • B pour les bibliothécaires
  • S pour les universitaires
  • N : gestion par SIRHEN
  • I : gestion par Imag’in
  • K : KHEOPS
  • : ITRF

3. « 05 » : année du 1er recrutement, sur les deux derniers chiffres (ici 2005 donc). Tous les personnels recrutés avant 1992 ont obligatoirement 92 comme année de recrutement (le NUMEN date de 1992).

4. « 01234ABC » : suite alphanumérique aléatoire de 8 caractères, dont cinq chiffres et trois lettres, attribué à l’agent au sein de son système de gestion initial, pour générer un code-identifiant unique et individuel à chaque personnel.

Un numéro personnel et confidentiel

Attention: vous gardez toujours le même NUMEN même si vous avez déjà été fonctionnaire d’état (AED…) dans un autre département ou une autre académie.

Il s’agit d’un numéro considéré comme confidentiel : il ne doit jamais apparaître dans vos courriers-courriels y compris avec les autorités administratives comme l’IEN, la DSDEN, le Rectorat ou votre service gestionnaire.

Speech Bubble Vector

CSS : des notes de bas de page sous forme de popup

Lorsque nous écrivons de longs articles, nous avons souvent besoin d’ajouter des notes de bas de pages – footnotes en anglais – pour donner une référence ou apporter un complément d’informations.

Il existe un moyen d’ajouter une note de bas de page en CSS, avec un effet popup.

Survolez le numéro qui s’affiche ici à pour voir la démo: ¹Voici un example de note de bas de page qui apparaît dans une popup, grâce à CSS :)

Une popup CSS pour vos notes de bas de page

Code HTML

Commençons par le code HTML. Nous avons besoin principalement d’un lien HTML et d’une balise span qui contiendra le contenu de notre footnote :

   <p>Voici un premier paragraphe avec une note de bas de page. <a class="footnote">&sup1<span>Coucou, je suis la note de bas de page numéro 1</span></a>
   </p>

   <p>Voici un deuxième paragraphe avec une note de bas de page. <a class="footnote">&sup1<span>Coucou, je suis la note de bas de page numéro 2 :)</span></a>
   </p>

Code CSS

Et voici notre code CSS pour créer la popup et afficher le contenu de nos notes de bas de page à l’intérieur, au survol de la souris:

a.footnote {
   text-decoration:none;
   background-color: #FEF6BB;
   padding-left: 2px;
   padding-right: 2px;
   margin-right: 2px;
   transition: all 2s ease;
} 

a.footnote span {
   z-index: -1;
   opacity: 0;
   position: fixed;
   left: 15px; 
   bottom: 20px;
   margin-left: 0px;
   margin-right: 18px;
   padding:14px 20px;
   border-radius:4px; box-shadow: 5px 5px 8px #CCC;
   border:1px solid #DCA;
   background-color: #FEF6BB;
   transition: all 2s ease;
}

a.footnote:hover span {
   z-index: 9;
   opacity: 1;
   transition: all 2s ease;
}

Dès que la souris n’est plus au-dessus du numéro de la note de bas de page, cette dernière disparaît avec un effet de fondu.

Résultat

Voilà ce que le code nous donne:

Voici un premier paragraphe avec une note de bas de page. ¹Coucou, je suis la note de bas de page numéro 1

Voici un deuxième paragraphe avec une note de bas de page. ²Hello World, je suis la note de bas de page numéro 2 :)

Matt

Et voilà, c’est très simple, en CSS pur mais c’est efficace et ne prend pas de ressources externes (pas de JS) – cela peut toujours servir!