Blog

Featured Posts

Introducing new blog on OAuth, OpenID Connect, and IAM Solutions

I'm excited to announce the launch of a new blog named CerberAuth, where I'll be exploring the world of OAuth, OpenID Connect, and IAM solutions for modern security.

MySQL Docker Image for Mac ARM M1

MySQL official Docker image is not available for Apple ARM-based M1 and M2 CPUs. But there is some options to use mysql image on Mac and more globally on ARMv8 microarchitecture.

How to deal with Docker Hub rate limit on AWS

Since 2020, DockerHub has been limited to only 200 container image pull requests per six hours. This article will help you to deal with this limitation on AWS.

How to enable Python type checking in VSCode

Python now has support for type hints. In this article, we will see how to enable better IntelliSense and type checking analysis in VSCode.

How to manage Internationalization with NextJS SSG

Staticaly generating a website with the NextJS framework in different languages is not so obvious.

All Posts

How to solve Docker compose .labels array items must be unique?

This blog post provides a clear understanding and a solution for the docker compose error `array items must be unique`.

Installing Production-Only Dependencies with Dev Dependency Hooks in Node.js

There might be situations where you want to install production dependencies only but you have npm scripts using a dev dependency command. For example it can be the case if you use the `husky` package. In this blog post, we'll look how to install production-only dependencies with hooks using dev dependency.

Collapsible sections in Markdown

Collapsible sections can help keep markdown organized and user-friendly. In this quick guide, we'll show how to create collapsible sections in a markdown.

How to construct URI with URI Template

We often use predefined variables and template string to assemble URIs but there is a better approach called URI Template. This approach enables us to create URIs on-the-fly by replacing placeholders with actual data, making our code more flexible and maintainable.

Inject HTML content into an Astro component

While working on a project within the Astro framework, I encountered a scenario where I needed to fill HTML content within a script tag.

Read Package.json file from Node.JS module

When you write a program you may want to read the content of the package.json file like what is the current package version. Here is one very simple way to read the content of this file.

Import a JSON file content from a Node.JS module

With the new Node.JS module it is possible to read the content of a JSON file with the import function but there is the right way to do it.

Configure yarn version for Cloudflare page build

With the new Cloudflare page build system, yarn package manager version can be more than version 1. But we can keep yarn version 1 configuring the build system with a package.json property.

How to pass a String Map as a Command-Line argument in Go

When building command-line interface (CLI) applications in Go, you may need to pass a string map as a command-line argument. There are different ways to accomplish this, but flag module provides an easy way.

Introducing new blog on OAuth, OpenID Connect, and IAM Solutions

I'm excited to announce the launch of a new blog named CerberAuth, where I'll be exploring the world of OAuth, OpenID Connect, and IAM solutions for modern security.

Formatting Big Numbers in JavaScript

When working with large numerical values in JavaScript, it can be challenging to display them in a way that's easy to read and understand. In this blog post, we'll explore techniques for formatting big numbers in JavaScript with built-in methods.

Changing Document Field Types with MongoDB

This article explains how to convert document field types during query execution and how to use MongoDB's built-in aggregation operators $convert. The article also provides practical examples and code snippets to demonstrate how to change field types in MongoDB.

Solve React error "Property autocomplete does not exist on type"

Sometimes, it happens that an easy-to-solve issue takes you more time than it should. The Typescript React error "Property autocomplete does not exist on type" is maybe one of them.

How to use Chakra UI Button and Link components with NextJS Link

There is some glue to add to make Chakra UI and NextJS work together. The Chakra UI components do not generate the "a" tag by default for a link. Let's see how to use the Chakra button to generate links between pages.

How to solve Envoy "Jwks remote fetch is failed" error response

A way to authenticate requests to an API is to use a Bearer JWT. If you want to make Envoy validate tokens, sometimes you may have the error `Jwks remote fetch is failed`. There are at least three reasons this error appears, so let's check them to fix this issue.

Publish on Cloudflare Pages with unsupported language versions

It may happen that a version of Node is not supported yet by Cloudflare and will remain not supported for some weeks. That can happen even if it is a Long Term Support (LTS) version. Here how to build even if cloudflare does not support the version.

How to fix DNS Internal Resolution inside the Nginx docker container

Sometimes, errors with Docker and some containers can become cryptic when it is about networking. Today, it was Nginx that was not able to reach another container.

Extends Express session SessionData type

Express Session allows to store a lot of different data. There is a Typescript type named `SessionData` which allow to know what contains a session but not the data you will defined after without defining them.

Keep the same Node.js version between local environment and Github Actions

It can be complicated to have the same Node version between the local environment and the CI/CD. The latest Node.js version or the latest lts is released recently and if you want to upgrade to the Node version, usually you can forget to configure one environment.

Publish multiple projects on a Monorepo on Cloudflare Pages

All the tooling provided by service providers is great and makes the developer's life much easier. Usually, those providers connect one git repository to an application. It works fine but it is not so easy when you work on a monorepo or if you want to make multiple deployments for more than one locale from only one source code.

Convert a JavaScript object to queryparams string

This post describes two very simple ways to convert a JavaScript object to a querystring both in a browser environment or server environment.

Succeeding understanding tech as a non-technical person

It exists a lot of technical terms. If you want to better understand the product team, you are at the right place.

MySQL Docker Image for Mac ARM M1

MySQL official Docker image is not available for Apple ARM-based M1 and M2 CPUs. But there is some options to use mysql image on Mac and more globally on ARMv8 microarchitecture.

ESLint Global Variables

When we use some global variables defined elsewhere, eslint throws an error saying the variable is not defined. Here is how to configure eslint to ignore those.

Extend Window type with Typescript

Some of the object properties or functions are not available in the Typescript Window type. Let see a way to extend the Window type with the missing properties.

How to deal with Docker Hub rate limit on AWS

Since 2020, DockerHub has been limited to only 200 container image pull requests per six hours. This article will help you to deal with this limitation on AWS.

Gatsby + Netlify CMS + TailwindCSS Starter

Just created a new starter coming from some of my website development and powered with Gatsby.

How to enable Python type checking in VSCode

Python now has support for type hints. In this article, we will see how to enable better IntelliSense and type checking analysis in VSCode.

How to render a React element to an HTML string?

What happens when you want to render a React string to HTML? For some reasons, you may want to have the generated HTML string from your React component instead of a mounted component and render it on the page.

How to manage Internationalization with NextJS SSG

Staticaly generating a website with the NextJS framework in different languages is not so obvious.

How to render emojis with JavaScript

For the content of your posts, emojis add some fun to your pages. This short post explains how to make that possible in JavaScript.

Git case sensitive

Today, I was wondering to know why on the CI pipeline, tests were failing due to missing files but those files are on the file system locally and push on the GIT repository. This issue came from files renamed updating from lowercase to uppercase.

MySQL Users & Permissions

Database administration includes users and permissions management. Most of the time, a UI like, MySQL Workbench or PHPMyAdmin, is available to perform users management actions. Here, we will see how to do some MySQL users and permissions management with SQL queries.

Install and configure a DNS server with Bind9 on Linux

A service DNS (Domain Name Service) allows domain name resolution to an IP Address and other resources. This service is useful for example for browsing internet websites and not have to know IPs addresses for these websites.

Partage de dossiers avec VMWare sous Ubuntu et Debian

VMWare propose de partager des dossiers entre le système hôte et la machine virtualisée. Ces dossiers permettent de partager des données entre les deux machines. Le principe est que la machine virtualisée peut accéder aux dossiers choisis de la même manière que le système hôte et en changer les fichiers selon ses besoins.

Installer les VMWare Tools sous Ubuntu et Debian

Les VMWare Tools sont des outils développés par VMWare afin d'améliorer l'intégration de la machine virtuelle avec l'hôte. Ces outils, disponibles pour différents systèmes d'exploitation, apportent le support de différentes fonctionnalités tel que le copié-collé, les dossiers partagés, l'accélération matérielle, etc ... .

Supprimer l’entête server de Nginx

L’installation de Nginx par défaut laisse son identité sur l’entête des requêtes HTTP au moyen de l’entête Server. Pour des raisons de sécurités, il est important de laisser transparaître le moins d’informations possible au potentiel attaquant. Nous allons donc voir comment supprimer les informations de Nginx contenues dans ces entêtes.

Mettre en place memcached sous Ubuntu

Memcached est un système de cache permettant de stocker des données directement en mémoire. Ce système de cache permet aux sites web et aux bases de données, entre autres, d'accroître leur vitesse. Le principe de ce gain de vitesse est d'échanger des temps d'accès disque assez lents par des temps d'accès mémoire beaucoup plus rapide, le seul désavantage étant la consommation mémoire pouvant être importante selon les données stockées.

Creer un serveur Linux, Nginx, MySQL, PHP

Apache n'est pas le seul serveur HTTP existant pour desservir des applications écrites en PHP, de nombreux autre existent dont Nginx. Dans le cas de l'utilisation de Nginx pour desservir des applications PHP on appellera cela une pile LEMP pour Linux, Nginx, Mysql et PHP.

Importante mise à jour de Composer

Il semblerait que Noël soit fêté avant l'heure au sein de la communauté PHP. Le gestionnaire de paquets PHP, Composer, a reçu une importante amélioration de performance aujourd'hui.

Liens symboliques et materiels sous Windows avec Mklink

Tout comme linux, Windows permet de créer entre autre des liens matériels (**hardlink**) et des liens symboliques (**symlink**) en ligne de commande. La ligne de commande Mklink est l’équivalent sous Windows de la célèbre commande ```ln``` sous linux. Voici, plus bas, une série d’exemple de son utilisation.

Configurer la ligne de commande PHP sous windows

Lorsque vous installez PHP que ce soit avec WAMP, XAMPP, ou tout simplement en installant le binaire de php pour windows, il ne vous est pas possible d’utiliser php en ligne de commande sous windows, il vous faut obligatoirement configurer la ligne de commande.

Retirer une page supprimée de Google

Google ne voit pas d’un très bon œil les erreurs HTTP 404. Seulement, lorsque vous supprimez une page, un article, une image, … , Google ne voit plus ce qui a été supprimé et c’est l’erreur ! Pour éviter de tomber dans ce piège, il vous faut supprimer le lien dans l’index du moteur de recherche.

PHP Ternary Operator

The usage of the ternary operator is not the simplest and the most readable way to develop but can be useful for simple conditions. The implementation of the ternary operator depends on the language, let's see how to do it in PHP.

Update NodeJS with npm

New NodeJS releases are done often, so you need to keep your installation up to date. To do so, you can use your Linux distribution package manager (apt, dnf, ...) or brew for OSX. Another way is to use npm..

Créer un serveur Web Lighttpd sur Ubuntu

Lighttpd est un serveur web au même titre que le plus célèbre, Apache. Comme son nom l’indique il se veut léger. Il comporte toutefois, malgré cette légèreté, un nombre de fonctionnalités comparables à ces homologues pour des performances aussi bonnes sinon meilleurs sur les tests benchmarks réalisés.

Install SASS and Compass on Ubuntu

SASS is a CSS preprocess used by many web projects. It allows to generate a CSS style sheet from a language close to CSS syntax.

Undo a git add

An unwanted " git add " can happen. That's why there is a command to redo this " git add ". Here the command line to perform this action.

Protéger un champ MongoDB avec Mongoose

Comme pour toute application, nous ne voulons pas que certains champs de nos bases soient visibles aux yeux de tous. [Mongoose](https://mongoosejs.com/), ODM écrit en Javascript pour requêter les bases NoSQL MongoDB, permet simplement de mettre en place une protection sur certains champs que nous voulons laisser cachés.

Connecteurs ODBC et PHP

Comme vous le savez sans doute déjà, Windows met à disposition des développeurs un moyen simplifié de connexion aux bases de données. Ce moyen s'appel ODBC pour Open DataBase Connectivity et est notament beaucoup utilisé par les outils BI. Cependant, il peut vous être utile de les utiliser au cours de votre développement web pour vous connecter à des bases de données sans avoir à rentrer certaines informations.

Chrome version 35 : nouvelles APIs et intégration du chromecast

La version 35 du célèbre navigateur de Google vient d'être passée sur la chaîne stable. Au programme de cette mise à jour, de nouveaux outils pour les développeurs, des correctifs de sécurité, et une meilleur intégration de Chromecast.

Améliorations de performance pour PHP

Dimitry Stogov, ingénieur chez Zend Technologies, a annoncé il y a quelques jour par un post sur les news du site officiel du langage PHP des améliorations effectuées sur le moteur. Ces améliorations sont le fruit d'intenses travaux de refactoring sur celui-ci. Pour rappel le moteur interne de PHP est tenu par la société Zend qui a donné son nom au moteur.

Créer un serveur LAMP

La plupart des serveurs Web tournent avec ce qu'on appelle la pile LAMP, c'est à dire avec Linux, Apache, MySql, et un des trois langages de développement que sont Perl, Python et PHP. La combinaison de ces technologies vous permet de mettre en place un environnement pour propulser vos applications web codées dans l'un des trois langages cités précédemment. Cet environnement se met en place simplement et c'est ce que nous allons montrer aujourd'hui.

Collections de librairies graphiques

Parce qu'il est important pour son site ou son tableau de bord d'avoir des graphiques, il faut pouvoir trouver la librairie graphique qui nous convient en fonction de nos besoins et des librairies déjà existants sur la page (jQuery, YUI, ...).

Dropplets, le CMS sans base de données

Dropplets est un CMS sans base de données ecrit en PHP par Jason Schuller. Vous pouvez retrouver les sources de celui-ci sur github. Vous pouvez l'installer sur n'importe quel serveur supportant le PHP. L'écriture des articles se fait hors-ligne en langage MarkDown.

Créer votre propre Serveur NodeJS

Aujourd'hui, nodeJS est une des technologie Javascript la plus utilisé dans le monde. Elle permet d'écrire en JavaScript le backend de n'importe laquelle de vos applications web comme la plateforme de blogging toute nouvellement découverte Ghost. Ainsi, vous pouvez écrire vos sites de A à Z en JavaScript, trop cool !

Enneiger votre site avec JavaScript

Vous l'avez sans doute vu sur certains sites que vous visitez, la période est à la neige (ça ne se voit pas en France en tout cas ^^) ! Je vous présente donc quelques script pour mettre une animation de neige sur votre site et ainsi émerveiller vos visiteurs.

Désactiver des plugins wordpress en SQL

Il est parfois nécessaire pour des raisons diverses, tel que l’impossibilité de se connecter à son espace admin, de vouloir désactiver des plugins directement en SQL. Pour ce faire nous allons voir la requête qui permet de le faire.

Migrer des liens internes Wordpress

Nous avions vu dans un précédent article les étapes à suivre pour migrer son site wordpress simplement. Cette migration faîte, votre site peut toutefois encore contenir des liens divers vers d'autre pages de votre site, ce sont des liens internes. Ces liens internes n'ont pas été changés automatiquement lors de la migration et votre site peut contenir beaucoup de pages et donc beaucoup de liens à changer, il convient donc de voir comment les changer rapidement et sans trop se fatiguer.

Google sort spark, une chrome app de développement

Dans le but de démontrer l'étendu des possibilités offertes par les applications intégrées au sein de chrome, google a décidé de développer un environnement de développement nommé Spark.

Migrer son Wordpress simplement

Il n'est pas rare de développer son site en local par soucis pratique ou bien dans le cas d'une attente d'hébergement. Il peut arriver, de la même manière, de changer d'hébergement ou tout simplement changer de nom de domaine. Dans ce cas, une migration du site wordpress est nécessaire et s'accompagne souvent de manipulation différentes que d'habitude. Nous allons donc voir comment faire pour faire migrer son site wordpress proprement et en toute simplicité.

Google utilisé pour effectuer des injections SQL

Le cabinet de sécurité Securi a découvert dernièrement que Google pouvait être utilisé pour effectuer des attaques de type SQLI. Daniel Cid, PDG de la société, explique la manière de procédé ci-dessous.

Optimiser son référencement avec le partage de ses pages sur les réseaux sociaux

Les réseaux sociaux constituent une grande source de diffusion pour tout site web et entreprise. Cependant, cette source a ses règles et ses méthodes qui sont bonnes à connaître pour pouvoir exploiter au mieux le partage. Nous allons donc voir comment optimiser nos pages web pour permettre un bon partage sur les réseaux sociaux.

reCaptcha plus simple pour les humains

' reCaptcha est devenu plus simple mais seulement si vous êtes humain ' a déclaré google dans son post. En effet, le mécanisme de protection de google permettant de lutter contre le spam et les robots a eu le droit à un coup de jeune.

Créer un plugin Wordpress

Nous avons vu dans les derniers cours comment manipuler quelques fonctionnalités importantes pour personnaliser votre site au maximum. Aujourd’hui nous allons nous intéresser à la base de la création d’un plugin wordpress. Il est en effet important, de savoir manipuler les fonctionnalités de base, mais ce qui nous intéresse généralement est de pouvoir intégrer de façon propre et en click vos ajouts ou changements sur n’importe quel site.

Créer une sidebar sous wordpress

Si vous voulez personnaliser au maximum vos pages, vous avez normalement recours aux widget. Maintenant si vous voulez avoir une serie de widget sur un type de page particulier, ça commence à devenir plus difficile. Le recours de sidebar devient une nécessitée mais il n’en existe que deux sur le wordpress de base et cela peut faire peu. Nous allons donc voir la manière de créer de nouvelles sidebar et de les placer là où vous le souhaitez.

Gotcha pour remplacer le Captcha

Le captcha serait-il près de la porte de sortie ? Il semble en effet que face à la puissance et l'intelligence croissante des bots, la sécurité du captcha est mis à mal. C'est à se problème que des élèves de la Canergie Mellon University (CMU) ont tenté de s'attaquer en mettant en place le système GOTCHA.

BigDump

Lorsque vous travaillez sur de gros sites, il peut vous arriver d'avoir des bases de données assez volumineuses. Enfin, tant que ça reste sur le serveur, cela ne pose pas trop de problèmes.

Personnaliser un widget Wordpress

Durant le dernier tutoriel, nous avons appris à créer notre propre widget. Aujourd’hui nous allons apprendre à le faire changer en fonction de ce que peut rentrer l’utilisateur. En effet, si le widget est à usage unique alors il est clair que ce tutoriel ne présente pas grand interêt mais si vous voulez réutiliser votre plugin utlérieurement mais de manière légèrement différente alors là ça devient intéressant.

Mozilla prépare le remplacement de Flash par Shumway

Après avoir annoncé le blocage par défaut de tout les plugins sur firefox le mois dernier et l'implémentation de pdf.js il a quelques mois, mozilla s'attaque au remplacement de Flash par Shumway.

Mise à jour de Dart SDK

L'éditeur du langage de google, Dart, a été mis à jour. Parmis les nouveautés et améliorations de l'éditeur on peut souligner une amélioration de la rapidité de génération du JavaScript. En effet, l'outil intégré dart2js permettant la transcription de Dart en JavaScript a subit des améliorations de rapidité. On peut voir aussi une meilleur intégration de l'édition de HTML et CSS avec l'autocomplétion et un meilleur surlignage sémantique.

Google introduit Web Designer

Google a lancé aujourd'hui Web Designer, un logiciel de création de bannières publicitaires. Ce logiciel, destiné aux web designers et aux publicitaires afin de leur donner des outils de création de bannières simplement, est pourvu d'une interface simple et intuitive et est surtout gratuit.

Connaître le nombre de partage de ses pages en JavaScript

Si vous avez déjà essayé de récupérer le nombre de partages de vos pages via uniquement JavaScript, vous avez sûrement dû vous rendre compte que l'affaire n'était aisée.

Créer un widget Wordpress

Lors de l’utilisation de wordpress, il peut s’avérer, dans certain cas, être frustré qu’un widget n’existe pas. Une première solution est de chercher si un plugin pouvant générer votre widget n'a pas déjà été créé par la communauté. Seulement si votre besoin est spécifique vous avez très peu de chance de trouver votre bonheur, besoin spécifique demande développement spécifique. Mais, heureusement, wordpress offre la possibilité de créer ses propres widgets et cela en tout simplicité.

Plugins bloqués par défaut sous mozilla

Dans le but d'améliorer la sécurité de son navigateur firefox, mozilla a décidé, à titre préventif, de bloquer par défaut tout les plugins tiers. Cette décision intervient seulement quelques jours après l'annonce de google concernant la suppression du support des NPAPI.

Ajouter un bloc HTML sous Prestashop

Malgré le grand nombre de modules existant sous prestashop, tous les contenus que l'on peut retrouver potentiellement sur un site web e-commerce ne sont pas forcément représentés.

Sortie de TogetherJS

Mozilla a présenté dernièrement sa plateforme de développement collaboratif en temps réel. A l'origine présenté sous le nom de TowTruck, le projet JavaScript de la fondation mozilla prend désormais le nom de TogetherJS.

Le support des plugins NPAPI abandonné sous Chrome

L'annonce a été faite hier sur le blog officiel de Chromium, Netscape Plugin API ne sera plus supporté à partir de Janvier 2014 sur le navigateur Chrome. Justin Schuh, ingénieur sécurité chez google, explique que cette décision a été prise en raison de problèmes de sécurité et de maintient du code.

Changement de moteur de rendu pour QT

Digia abandonne le port de WebKit pour chromium au sein de son framework Qt. Depuis son intégration en 2007, le célèbre moteur de rendu a beaucoup évolué. Porté principalement par le projet Chromium (Google), Apple et Nokia, il est devenu un des moteur de rendu les plus utilisé au monde étant intégré au sein de Safari et anciennement Chrome, Opera et Qt.

Créer un template Wordpress

Il peut arriver que le template par défaut de wordpress ne suffise pas et que vous soyez obligé d’en créer un de toute pièce. En effet, si vous souhaitez avoir une page sur votre site web qui se démarque des autres ou alors vous avez besoin d’un agencement de votre page plus particulier, vous allez devoir passer par la création d’un nouveau template. Pour ce faire rien de plus simple avec wordpress, nous allons le voir tout de suite.

Changement de barre et de logo pour Google

Google a publié hier un renouveau de l'interface utilisateur de son moteur de recherche. Ce renouveau se caractérise par la disparition de la barre traditionnelle noire située en haut de page et d'un léger changement de son logo.

Install a Chrome Extension outside from the Webstore

You may already encounter the case when you see a Chrome extension source code but you don't know how to install it. In this case, you may want to follow the steps below.

reCAPTCHA (le captcha de google)

De nos jours le spamming constitue un réel fléau. Il empoisonne nos réseaux, nos boîtes mail et nos sites web. En ce qui concerne les sites web, cela se caractérise par des inscriptions non désirées de robots dans le but de capturer des informations d'utilisateurs (souvent des adresses mails).

Google introduit Web Speech API

L'arrivé de la dernière version de Google Chrome signe l'arrivé de la reconnaissance vocale dans les pages web. En effet, le navigateur Google inclut depuis la version 25 le Web Speech API, une interface de programmation permettant la reconnaissance vocale.

De la sécurité dans nos applications web

Vous le savez sans doute déjà, tous les internautes ne sont pas des gens de confiance. Certains pirates tentent de contourner les sécurités de vos applications web. C’est pourquoi, la sécurité sur Internet n’est plus un sujet à prendre à la légère. Et nous allons prendre ça au sérieux, justement !