Image du logo montrant « WPML » avec chaque lettre dans des couleurs différentes : W en bleu, P en bleu sarcelle, M en orange et L en marron. Une bulle de dialogue stylisée gris foncé se trouve à gauche de « WPML ». Une icône de balai avec un manche en bois et des poils jaunes se trouve à droite, faisant allusion à la maintenance ou au nettoyage de WordPress.

Désinstaller proprement WPML et nettoyer la base de données avec WP-CLI

Après avoir supprimé et désinstallé les plugins WPML et ses modules complémentaires, vous devez également nettoyer la base de données.

Cette installation particulière que j’ai nettoyée lors d’un projet Codeable n’avait pas WooCommerce ni le module complémentaire WPML WooCommerce installés, donc malheureusement ce guide ne couvre pas le nettoyage spécifique à cela.

Cependant, si vous abandonnez WPML pour des raisons de performance et souhaitez de l’aide pour nettoyer votre base de données, n’hésitez pas à me contacter ici. Vous pouvez également utiliser phpMyAdmin ou Adminer pour nettoyer WPML si vous préférez.

Sauvegardez d’abord votre base de données et testez minutieusement sur un site de staging avant de continuer !

Supprimer les tables et options de base de données WPML

Dans ces sections, nous allons supprimer les lignes pertinentes de WPML de la table wp_options, puis les tables de base de données dédiées à WPML elles-mêmes.

Si vous le souhaitez, vous pouvez recueillir le nombre de données autochargées à l’aide de la commande wp doctor (voir le tutoriel) afin que nous puissions voir à quel point les données autochargées dans wp_options diminuent après avoir nettoyé les plugins WPML.

wp doctor check autoload-options-size --allow-root --skip-plugins --skip-themes

Résultats :

+-----------------------+---------+------------------------------------------------------------+
| name                  | status  | message                                                    |
+-----------------------+---------+------------------------------------------------------------+
| autoload-options-size | warning | Autoloaded options size (1.03mb) exceeds threshold (900kb) |
+-----------------------+---------+------------------------------------------------------------+

Nous dépassons déjà le seuil recommandé de 900 KB de données autochargées dans wp_options (voir ici comment nettoyer les données autochargées).

Lire la suite

Une fenêtre de terminal stylisée affiche la commande « ./WP-CLI » en grand texte blanc, indiquant un audit de profil WordPress pour les problèmes de performances. À droite, un bonhomme allumette rouge s'exécute. La fenêtre comporte une barre de titre bleue et une icône de fermeture.

Auditer les problèmes de performance WordPress avec wp profile

La commande wp profile est un peu comme une alternative à New Relic, capable d’identifier précisément quels composants ralentissent votre site WordPress. Initialement disponible en tant que package premium via runcommand, il est désormais gratuit sur GitHub.

Si vous cherchez un hébergeur compatible avec l’installation de wp profile, jetez un œil à Kinsta et FastNyx.

J’utilise régulièrement wp profile pour diagnostiquer les problèmes de performance chez mes clients sur Codeable. Tous les développeurs WordPress devraient s’en servir ! Après avoir suivi ce guide, vous serez plus proche de la résolution de la lenteur de votre site WordPress.

Installation du package wp-profile

Lancez cette commande pour installer wp profile :

wp package install wp-cli/profile-command

Vous devriez voir que le processus s’est déroulé avec succès et que la commande wp profile est maintenant disponible:

Updating /root/.wp-cli/packages/composer.json to require the package...
Using Composer to install the package...
---
Loading composer repositories with package information
Updating dependencies
Resolving dependencies through SAT
Dependency resolution completed in 0.120 seconds
Analyzed 3696 packages to resolve dependencies
Analyzed 101022 rules to resolve dependencies
Package operations: 1 install, 0 updates, 0 removals
Installs: wp-cli/profile-command:dev-master ef44df5
- Installing wp-cli/profile-command (dev-master ef44df5)
Writing lock file
Generating autoload files
---
Success: Package installed.Code language: JavaScript (javascript)

Si vous voyez une erreur concernant composer.json reverté, l’augmentation de la mémoire devrait résoudre ce problème.

Lire la suite

Une fenêtre de terminal stylisée affiche la commande « ./WP-CLI » en grand texte blanc. À côté, une flèche bleue pointant vers le bas pointe vers une barre horizontale verte, suggérant un téléchargement ou une installation via SSH. L'arrière-plan est gris foncé.

Installer WP-CLI sans accès root ni sudo via SSH sur n’importe quel hébergeur

Chaque fois qu’un hébergeur n’a pas WP-CLI installé par défaut, je suis déçu : ce puissant outil de gestion WordPress n’est pas disponible ! Heureusement, il est facile d’installer WP-CLI sans accès root ni sudo via SSH.

En suivant cette méthode, vous pourrez utiliser WP-CLI exactement comme s’il avait été installé de manière traditionnelle avec les droits root et placé dans /usr/bin ou /usr/local/bin.

Cet article vous montrera comment installer WP-CLI sur presque toutes les distributions Linux comme CentOS, Debian, Ubuntu, etc., tant que le paquet php-cli est disponible. Tout ce dont vous avez besoin, c’est d’un accès SSH et d’un moyen d’entrer ces commandes, comme le terminal Mac ou PuTTY sous Windows.

Installer WP-CLI sans accès root ni sudo

Nous avons besoin d’un emplacement pour stocker le fichier phar de WP-CLI, créons donc un dossier et entrons dedans :

mkdir -p /tmp/wp-cli<br />cd /tmp/wp-cliCode language: HTML, XML (xml)

Téléchargez la dernière version de WP-CLI phar et rendez-la exécutable :

wget -q https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -O wp<br />chmod 755 wpCode language: HTML, XML (xml)

Ou bien, téléchargez directement le fichier phar WP-CLI dans votre dossier temporaire :

mkdir -p /tmp/wp-cli<br />wget -q https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -O /tmp/wp-cli/wp<br />chmod 755 /tmp/wpCode language: HTML, XML (xml)

Ou dans n’importe quel dossier de votre choix :

cd /votre_dossier<br />wget -q https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -O /votre_dossier/wp<br />chmod 755 /votre_dossier/wp<br />Code language: HTML, XML (xml)

Pour utiliser le WP-CLI que nous venons de télécharger, il faudra ajouter ./ devant wp. Il vous faudra également le chemin d’installation de WordPress.

Lire la suite

Un logo carré rose avec la lettre « E » en blanc se trouve à gauche, symbolisant Elementor. À droite, une illustration simple d'un balai avec un manche marron signifie nettoyer complètement.

Nettoyer complètement la base de données WordPress après la désinstallation d’Elementor

Lorsque vous désinstallez des plugins WordPress, de nombreux éléments peuvent rester dans la base de données. Cela rend la base de données inutilement volumineuse et peut même ralentir les requêtes.

Il est toujours recommandé de nettoyer votre base de données WordPress après avoir supprimé des plugins. J’ai récemment migré un site d’Elementor vers GenerateBlocks pour améliorer les performances, donc naturellement j’ai dû nettoyer la base de données.

Ce tutoriel concerne le nettoyage post-désinstallation d’Elementor pour supprimer les lignes restantes des tables options, postmeta, usermeta et posts avec WP-CLI.

Dans ce tutoriel, nous allons couvrir les points suivants :

  • Supprimer les plugins et fichiers Elementor
  • Supprimer les types de publication Elementor
  • Supprimer la taxonomie Elementor
  • Supprimer les meta_keys Elementor des tables usermeta et postmeta
  • Supprimer les options orphelines Elementor de wp_options

Lire la suite

CloudFest Hackathon 2025 main room @ Kronasar Hotel, Europa Park, Germany

CloudFest Hackathon 2025 : the recap

I attended CloudFest Hackathon 2025, organised by Carole Olinger, Alain Schlesser and Lucas Radke. It was awesome to meet old friends and make new acquaintances in Europa Park, Germany. Here’s the recap of this 8th edition!

10 projects in competition for #CFHack25

This year, 10 projects were in competition – check out for yourself the diversity of the topics covered:

That’s quite broad, isn’t it? I love it when it’s so hard to choose from the list! A few projects particularly piqued my interest: CMS Cloud Manager because it was sysadmin (it would be nice to implement on FastNyx), Accessible Infographics because I would love to work with Anne-Mieke, Peer-to-peer RAG Framework because my friend Wesley is leading the project, and WP-CLI as a MCP Host since it touches WP-CLI with AI.

I finally joined the WP-CLI as a MCP Host table.

What is the Model Context Protocol (MCP)?

The Model Context Protocol (MCP) is a standardised interface designed to enable AI models—like large language models (LLMs) or AI assistants—to interact seamlessly with external systems and applications. Rather than requiring developers or AI systems to manually parse complex documentation or adapt to a wide variety of APIs, MCP provides a unified way for AI to discover available capabilities, call specific functions or tools, and receive structured responses from the target system.

In practical terms, MCP acts as a bridge between AI and software platforms. It allows AI assistants to:

  • Discover what actions or data are available from a system (such as creating posts, retrieving content, or managing users in WordPress).
  • Call these capabilities as if they were simple functions, without needing to know the technical details of the underlying APIs.
  • Receive structured, predictable responses, making integration and automation much easier.

This approach is particularly powerful for developers and organisations looking to integrate AI into their workflows, as it removes much of the friction typically involved in connecting AI models to real-world applications.

MCP in the WordPress Ecosystem

Within the context of WordPress, MCP enables AI-powered interactions with WordPress sites through standardised interfaces. A WordPress MCP Server exposes the site’s REST API endpoints and other capabilities in a way that AI models can easily understand and use. For example, an AI assistant can:

  • Retrieve the latest posts or comments.
  • Create or edit content.
  • Manage users or plugins.
  • Chain multiple actions together (e.g., summarise GitHub issues and publish them as a blog post).

The WordPress MCP Server handles authentication, endpoint discovery, and request formatting, making it possible for AI models to interact with WordPress securely and efficiently.

Why MCP Matters for Developers

Traditionally, integrating AI with WordPress—especially in local development environments—has been challenging. While REST APIs allow for some AI interactions on live sites, local development workflows lacked seamless AI integration. MCP changes this by providing a protocol that works both locally and remotely, enabling developers to leverage AI for content creation, site management, and automation directly from their command line or development environment, without needing a live site or custom API integrations.

The Vision: a Universal “USB-C Port” for AI

A helpful analogy is to think of MCP as the “USB-C port for AI applications”. Just as USB-C provides a universal connector for hardware devices, MCP aims to standardise how AI models connect and interact with software systems. This universal approach unlocks new possibilities for automation, content generation, and intelligent site management—making advanced AI capabilities accessible to WordPress developers, content creators, and DevOps teams alike.

Lire la suite

Un logo en forme de goutte bleue avec un motif en spirale à gauche et un logo en forme d'engrenage sombre rappelant les éléments emblématiques de BitTorrent à droite, tous deux sur un fond noir. La goutte présente un dégradé et des bords nets, tandis que l'engrenage présente huit encoches et un petit point vert au centre.

Créer une seedbox BitTorrent avec deluge

Depuis la dernière mise à jour d’Ubuntu Server, le daemon transmission ne fonctionne plus correctement : il ne démarre plus de manière stable et les téléchargements ne se lancent que pendant cette période où il tente de se lancer.

J’ai passé pas mal de temps à essayer de résoudre le problème mais les mises à jour de transmission sont vraiment très espacées et il est fort probable que le projet ne soit plus maintenu dans quelques temps.

Il est donc temps de passer à un nouveau daemon bittorrent, qui se veut léger, rapide et efficace : deluge. Voici donc un tutoriel pour installer deluge sur Ubuntu Server pour créer une seedbox bittorrent.

Qu’est-ce qu’une seedbox ?

Une seedbox est un serveur informatique privé dédié au stockage, au téléchargement et à l’émission de fichiers numériques. Généralement, les seedboxes utilisent le protocole BitTorrent pour émettre et recevoir des données. Ces serveurs sont connectés à des réseaux à très haut débit symétrique, allant de 100 Mbit/s à 1 Gbit/s ou plus, selon l’option choisie.

Les principaux avantages d’une seedbox sont :

  1. Vitesse : les seedboxes peuvent télécharger et partager des fichiers à des vitesses très élevées, bien supérieures à celles d’une connexion Internet domestique classique.
  2. Sécurité : l’utilisation d’une seedbox permet de masquer votre adresse IP personnelle, offrant ainsi une meilleure protection de votre vie privée.
  3. Disponibilité : une seedbox fonctionne 24h/24 et 7j/7, même lorsque votre ordinateur personnel est éteint.
  4. Gestion de l’espace : les fichiers sont stockés sur le serveur distant, libérant ainsi de l’espace sur votre propre machine.

Dans le cadre de notre tutoriel, nous allons utiliser Deluge, un client BitTorrent open-source populaire, pour configurer notre seedbox sur un serveur Ubuntu.

Lire la suite

Trois icônes sur fond vert : une base de données bleu foncé représentée par des cylindres empilés à gauche, symbolisant les options de base de données WordPress ; une loupe avec une poignée noire et une lentille bleu clair au centre ; et un engrenage gris avec un centre blanc à droite, faisant allusion à l'intégration polyvalente de plugins.

Identifiez les options de base de données liées à vos plugins WordPress

Découvrez quelles options de base de données WordPress appartiennent aux plugins

Cet article vous montrera comment identifier quelles options de plugins WordPress dans la table  wp_options  appartiennent à un plugin spécifique.

Normalement, les développeurs recherchent manuellement dans la table wp_options avec phpMyAdmin ou Adminer (version plugin WordPress), mais cela peut souvent être très fastidieux car vous devez paginer parfois des centaines de pages !

Lorsque nous disposons d’outils de ligne de commande Linux via SSH comme WP-CLI et grep, nous pouvons efficacement identifier quelles options dans la base de données WordPress appartiennent à un plugin spécifique et gagner un temps précieux !

Dans cet article, je vais montrer les techniques que j’utilise habituellement pour trouver ces options afin de pouvoir corriger les paramètres, les sauvegarder, etc. en faisant correspondre le option_name WordPress au plugin.Veuillez noter que ces deux approches nécessiteront un terminal et un accès SSH de quelque sorte à votre installation WordPress.

Je supposerai que WP-CLI et grep sont déjà installés sur le système Linux. Kinsta, WPEngine et FastNyx fournissent un accès SSH avec WP-CLI et grep disponibles.

Lire la suite

Graphique textuel comportant les mots « MyISAM » et « InnoDB » en grandes lettres, de style bleu et orange. Un symbole de flèche circulaire bleu foncé les relie, faisant allusion à une conversion ou une intégration dans les environnements WordPress.

Convertir des tables de base de données WordPress de MyISAM à InnoDB avec WP-CLI

Dans cet article, je vous montre comment convertir facilement vos tables de base de données WordPress du moteur MyISAM au moteur InnoDB avec WP-CLI.

Si vous vous demandez pourquoi vous voudriez effectuer cette conversion de base de données, je vous avais déjà parlé des améliorations d’InnoDB par rapport à MyISAM (tirer parti de plusieurs cœurs est assez impressionnant). On constate d’énormes améliorations du temps de réponse et une réduction de la charge du serveur après la conversion de MyISAM à InnoDB. Il existe également des différences d’index MySQL intéressantes entre les deux moteurs.

Commençons !

Conversion des tables WordPress de MyISAM à InnoDB avec WP-CLI

Vérifiez si certaines de vos tables utilisent MyISAM au lieu d’InnoDB:

wp db query "SHOW TABLE STATUS WHERE Engine = 'MyISAM'" --allow-rootCode language: JavaScript (javascript)

Si vous n’obtenez aucune sortie, il n’y a pas de tables MyISAM. Si vous obtenez une sortie, elle ressemblera à ceci :

+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+---------------------+--------------------+----------+----------------+---------+
| Name     | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time          | Collation          | Checksum | Create_options | Comment |
+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+---------------------+--------------------+----------+----------------+---------+
| wp_posts | MyISAM |      10 | Dynamic    | 2579 |           1916 |     443644 | 28147497610655 |      4224000 |         0 |          11861 | 2017-08-19 21:56:47 | 2017-09-07 03:55:17 | 2017-08-19 21:56:48 | utf8mb4_unicode_ci |     NULL |                |         |
+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+---------------------+--------------------+----------+----------------+---------+Code language: PHP (php)
Faites une sauvegarde de votre base de données avant de commencer !

Lire la suite

Un fond vert présente « Jetpack » dans une police élégante et stylisée à gauche, associée à une icône de balai à droite pour une touche de fantaisie. Au dessus du texte, un logo WordPress circulaire arbore un éclair audacieux à l'intérieur, offrant une ambiance électrique à votre expérience de désinstallation.

WordPress : désinstaller Jetpack proprement avec WP-CLI

Des fonctionnalités de Jetpack maintenant payantes

J’ai utilisé Jetpack pour les statistiques de mes sites WordPress site depuis 2004, soit 20 ans… mais voilà que Jetpack demande maintenant de payer pour avoir accès aux statistiques mensuelles et annuelles. Cela ne va pas être possible.

Jetpack est une extension couteau suisse, mais qui utilise vraiment tous les outils du couteau suisse? J’ai donc fait le tour des fonctionnalités de Jetpack que j’utilisais réellement et elles sont somme toute peu nombreuses: Stats, Related Posts, Publicize, et Protect.

Au lieu de Stats, j’utilise depuis quelques semaines Koko Analytics : vos statistiques sont dans votre base de données WordPress, donc chez vous, et le plugin respecte le RGPD (pas de cookies, pas d’informations personnelles). J’utilise également Plausible Analytics qui tourne sous Docker et dont je vous avais parlé il y a quelques mois.

Publicize permet d’envoyer vos posts sur les réseaux sociaux, je trouverai bien une alternative plus tard. Protect, le module de sécurité, n’est pas vraiment essentiel puisque la sécurité est en grande partie gérée par le serveur et le WAF.

Pour Related Posts, j’ai modifié le plugin qui j’utilise depuis des années pour qu’il génère des miniatures à la mode Jetpack mais sans le tracking. Car oui, tous les services de Jetpack (comme WooCommerce d’ailleurs) téléphonent les informations du site et du serveur chez Automattic. Mettons-y un terme.

Je vous propose donc un tutoriel pour désinstaller Jetpack proprement et supprimer les enregistrements Jetpack de la base de données car ils ne sont pas retirés à la suppression du plugin. Ainsi, vous aurez une base de données plus propre et donc un site plus rapide.

Lire la suite

Un homme portant des lunettes et une chemise bleue est assis sur un canapé jaune à motifs, les jambes croisées, concentré sur la correction de ses notes dans un cahier. L'arrière plan présente un mur sombre et texturé.

La correction de la traduction avec les points-fautes

La traduction est un art subtil qui requiert non seulement une excellente maîtrise des langues, mais aussi une compréhension approfondie des nuances culturelles et linguistiques.

Dans cet article, nous allons explorer en détail le système de correction utilisé dans le milieu académique pour évaluer les traductions, en mettant l’accent sur la méthode des points-fautes. Cette approche vous aidera à mieux comprendre les attentes des correcteurs et à affiner vos compétences en traduction.

Le système de points-fautes : une approche équitable et objective

Le système de points-fautes est conçu pour évaluer les traductions de manière objective et équitable. Voici comment il fonctionne :

  1. Vous commencez avec une note parfaite de 20/20.
  2. Des points sont déduits pour chaque erreur identifiée dans votre traduction.
  3. Le nombre total de points-fautes détermine votre note finale.

Calcul de la note finale

La détermination de la note finale implique un processus statistique :

  1. Un écart-type est calculé à partir des nombres de points-fautes les plus bas et les plus élevés de l’ensemble des copies.
  2. Cet écart-type sert à établir la moyenne de la classe.
  3. Les copies sont classées en fonction de leur nombre de points-fautes.

Il est important de noter que :

  • Si votre nombre de points-fautes est inférieur à l’écart-type, votre note sera supérieure à la moyenne.
  • Même avec quelques erreurs, vous pouvez obtenir 20/20 si vous avez le moins de points-fautes de la classe.

Barème détaillé des points-fautes

Chaque jury peut avoir son propre barème, mais voici un exemple typique des pénalités appliquées :

Type d’erreurPoints de pénalitéExemple
Omission (OM)10 à 200Oublier de traduire une phrase entière
Non-sens (NS)10“The dog barked at the moon” → “Le chien a aboyé à la lune” (correct) vs “Le chien a aboyé sur la lune” (non-sens)
Barbarisme (Barb)10“He went” → “Il alla” (correct) vs “Il allat” (barbarisme)
Grammaire (G)10“The cats are playing” → “Les chats jouent” (correct) vs “Les chats joue” (faute de grammaire)
Syntaxe (Syn)6 à 8“I often go there” → “J’y vais souvent” (correct) vs “Je vais souvent là” (syntaxe maladroite)
Temps (Tps)6 à 8“I have been living here for 10 years” → “J’habite ici depuis 10 ans” (correct) vs “J’habitais ici depuis 10 ans” (faute de temps)
Contresens (CS)6 à 8“He missed the point” → “Il n’a pas compris” (correct) vs “Il a raté le point” (contresens)
Calque (C)4 à 6“It’s raining cats and dogs” → “Il pleut des cordes” (correct) vs “Il pleut des chats et des chiens” (calque)
Très mal dit (TMD)4“He’s a jack of all trades” → “Il est touche-à-tout” (correct) vs “Il est un jacques de tous les métiers” (très mal dit)
Très inexact (Tinex)4“She’s a brilliant scientist” → “C’est une scientifique brillante” (correct) vs “C’est une scientifique intelligente” (très inexact)
Faux sens (FS)2 à 6“He was blue” → “Il était triste” (correct) vs “Il était bleu” (faux sens)
Sous-traduit/Sur-traduit (ST)2 à 4“He ran quickly” → “Il courut” (sous-traduit) ou “Il courut à toute vitesse comme s’il avait le diable aux trousses” (sur-traduit)
Mal dit (MD)2“It’s a piece of cake” → “C’est du gâteau” (correct) vs “C’est une pièce de gâteau” (mal dit)
Inexact (Inex)2“She’s pretty” → “Elle est jolie” (correct) vs “Elle est belle” (inexact)
Orthographe/Ponctuation (o/p)1 à 3“Il était une fois” → “Il étai une fois” (faute d’orthographe)

Lire la suite

Un fond orné d'adjectifs anglais comme "CAPTIVATED" et "JOVIAL" en blanc et jaune sur une surface bleue. Le texte français superposé se lit comme suit : « Adjectifs en anglais : Tout est une question de bon sens et ordre des adjectifs !

L’ordre des adjectifs en anglais

L’ordre des adjectifs en anglais est un aspect essentiel de la grammaire qui peut poser des défis même aux étudiants avancés. En anglais, les adjectifs suivent un ordre spécifique lorsqu’ils sont utilisés pour décrire un nom. Comprendre et maîtriser cet ordre permet de produire des phrases plus fluides et naturelles.

Cet article vise à clarifier ces règles et à offrir des exercices pratiques pour vous aider à éviter les erreurs courantes.

L’ordre des adjectifs en détail

L’ordre typique des adjectifs en anglais suit cette séquence :

  1. Quantité ou nombre (Quantity or Number)
  2. Opinion (Opinion)
  3. Taille (Size)
  4. Âge (Age)
  5. Forme (Shape)
  6. Couleur (Color)
  7. Origine (Origin)
  8. Matière (Material)
  9. But ou type (Purpose or Type)

1. Quantité ou nombre

Les adjectifs de quantité ou de nombre précèdent tous les autres adjectifs et indiquent combien d’objets sont décrits.

Exemples :

  • Five interesting books
  • Several large houses

2. Opinion

Les adjectifs d’opinion sont subjectifs et expriment ce que l’on pense du nom.

Exemples :

  • A fascinating story
  • A terrible mistake

3. Taille

Les adjectifs de taille décrivent la dimension physique du nom.

Exemples :

  • A huge elephant
  • A tiny insect

4. Âge

Les adjectifs d’âge indiquent l’ancienneté du nom.

Exemples :

  • An ancient relic
  • A young child

5. Forme

Les adjectifs de forme décrivent la configuration physique du nom.

Exemples :

  • A rectangular table
  • A round mirror

6. Couleur

Les adjectifs de couleur décrivent la teinte du nom.

Exemples :

  • A blue sky
  • A green apple

7. Origine

Les adjectifs d’origine indiquent la provenance géographique ou culturelle du nom.

Exemples :

  • An Italian dish
  • A Chinese vase

8. Matière

Les adjectifs de matière décrivent de quoi est fait le nom.

Exemples :

  • A wooden chair
  • A silk scarf

9. But ou type

Ces adjectifs décrivent le but ou le type spécifique du nom.

Exemples :

  • A sleeping bag
  • A racing car

Lire la suite

php 8.4 ubuntu

Installer PHP 8.4 sur le serveur

PHP 8.4 est tout beau, tout chaud: la nouvelle version est sortie le 21 novembre, comme prévue. Pas mal de nouveautés ont été intégrées. Si vous lisez ces lignes, sachez que le site tourne déjà dessus.

Faisons un petit tour d’horizon de PHP 8.4 avec ses changements, améliorations et nouveautés, avant de l’installer sur notre serveur Ubuntu.

Les nouveautés de PHP 8.4

PHP 8.4 ravira les utilisateurs avec de nombreuses fonctionnalités et améliorations impactantes. Par exemple, ils peuvent utiliser intelligemment de nouvelles fonctions de tableau, telles que :

  • array_find()
  • array_find_key()
  • array_any()
  • array_all()

De plus, il y a d’autres fonctionnalités incroyables de PHP 8.4 qui attireront l’attention des utilisateurs dès le départ, notamment :

  • Hooks de propriétés
  • Visibilité asymétrique
  • MyClass()->method() sans parenthèses
  • Changements JIT
  • Support HTML5
  • Autres fonctionnalités de PHP 8.4 à surveiller

Hooks de propriétés

Les propriétés dans les objets PHP ont offert divers avantages comme l’implémentation des validations de valeurs. Pour cette raison, les types de propriétés à partir de PHP 7 ont grandement aidé à cela.

Néanmoins, le fait que la validation doive, par nécessité, se faire via une méthode a conduit à beaucoup de code répétitif sous forme de getters et setters ou à l’abus des méthodes magiques __get et __set.

En réalité, les propriétés en lecture seule dans PHP 8 résolvent de nombreux problèmes pour les développeurs. Ils peuvent protéger les valeurs via le constructeur et offrir toujours des propriétés entièrement typées pour un accès direct.

Les Hooks de propriétés offrent également une fonctionnalité robuste pour travailler avec les propriétés de classe PHP. Les propriétés peuvent optionnellement expliquer un ou plusieurs hooks, actuellement limités à “get” et “set”, vous permettant d’intervenir dans le cycle de vie de la propriété. Voici un exemple tiré du RFC :

class User implements Named
{
    private bool $isModified = false;
    public function __construct(private string $first, private string $last) {}
    public string $fullName {
        // Override the "read" action with arbitrary logic.
        get => $this->first . " " . $this->last;
        // Override the "write" action with arbitrary logic.
        set {
            [$this->first, $this->last] = explode(' ', $value, 2);
            $this->isModified = true;
        }
    }
}Code language: PHP (php)

Visibilité asymétrique

La visibilité asymétrique est une fonctionnalité innovante qui aide les développeurs à expliquer une visibilité différente pour diverses opérations sur une propriété. Cela leur permet de contrôler intelligemment la visibilité des membres de classe, tels que les propriétés et les méthodes.

Par exemple, vous pouvez indiquer que vous souhaitez autoriser un accès public en lecture à une propriété, mais ne permettre les modifications qu’en interne :

public private(set) string $bar = 'baz';Code language: PHP (php)

La visibilité asymétrique fonctionne en parallèle avec les changements présentés avec les hooks de propriétés, y compris la possibilité de décrire la visibilité dans les interfaces.

MyClass()->method() sans parenthèses

Une pratique courante en PHP est d’instancier une classe et d’accéder immédiatement à une méthode ou une propriété. Voici un exemple ci-dessous :

$request = (new Request())->withMethod('GET')->withUri('/hello-world');Code language: PHP (php)

Nous devions entourer la classe de parenthèses lors de son instanciation, ce qui était une exigence du moteur PHP. Avec PHP 8.4, les utilisateurs peuvent omettre ces parenthèses, offrant une utilisation plus conviviale :

$request = new Request()->withMethod('GET')->withUri('/hello-world');Code language: PHP (php)

Changements JIT

PHP 8.4 a modifié la façon dont le JIT est activé. Auparavant, les utilisateurs devaient définir opcache.jit_buffer_size à 0 pour désactiver le JIT. Cependant, vous pouvez maintenant le désactiver comme décrit ci-dessous :

opcache.jit=disable
opcache.jit_buffer_size=64m

Ce changement affectera les utilisateurs s’ils avaient spécifié un opcache.jit_buffer_size mais n’avaient pas spécifié opcache.jit. Dans cette situation, les utilisateurs devront incorporer opcache.jit=tracing pour activer à nouveau le JIT. De plus, les utilisateurs constateront des améliorations du JIT, le rendant plus fluide et rapide.

Support HTML5

PHP 8.4 inclut une classe \Dom\HTMLDocument qui peut analyser efficacement le code HTML. L’ancienne classe \DOMDocument est toujours accessible pour la rétrocompatibilité.

$doc = \Dom\HTMLDocument::createFromString($contents);Code language: PHP (php)

Pour les développeurs qui analysent ou construisent du HTML en utilisant l’extension DOM, cette version fournira diverses fonctionnalités innovantes et orientées résultats, ainsi qu’un support robuste pour HTML5.

Lire la suite