Post list
![Improve Performances With Dynamic “content-visibility”](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Fmarc-olivier-jodoin-NqOInJ-ttqM-unsplash.jpg&w=1020&q=75)
Improve Performances With Dynamic “content-visibility”
Using the power of the content-visibility CSS property on dynamic sized elements
![JavaScript Spread and Rest Operators: When To, Why To, and How to Use Them](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Fscott-webb-pdlZrtuy-Dw-unsplash.jpeg&w=1020&q=75)
JavaScript Spread and Rest Operators: When To, Why To, and How to Use Them
Understand two of the most useful JavaScript features
![Loading Gists in a NextJS Application](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Froman-synkevych-wX2L8L-fGeA-unsplash.jpeg&w=1020&q=75)
Loading Gists in a NextJS Application
A tutorial on how to load GitHub Gists from inside markdown pages of a NextJS blog
![Core Web Vitals Dashboard On Google Analytics](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Fphoto-1599658880436-c61792e70672.jpeg&w=1020&q=75)
Core Web Vitals Dashboard On Google Analytics
Start a Core Web Vital Real User Monitoring on Google Analytics
![Build an Easy Popup System With React](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Fphoto-1624571033882-bf93a56b6b2e.jpeg&w=1020&q=75)
Build an Easy Popup System With React
Demystifying the way to create a simple, customisable, and accessible popup system with React
![A Discord bot for Home Assistant](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Flinus-rogge-JAn_aeGk_TM-unsplash.jpeg&w=1020&q=75)
A Discord bot for Home Assistant
How to connect a Discord bot and Home Assistant to manage a connected home
![My Journey From React to React Native](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2F0_LU6uhsVVbB9jS_o5.jpeg&w=1020&q=75)
My Journey From React to React Native
The things that changed for me switching when from web applications to native applications
![An Opinionated Way to Structure React Apps](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2F0__maZNyBAhbf1Ol2Uj.jpg&w=1020&q=75)
An Opinionated Way to Structure React Apps
Based on my experience acquired building several big projects
![Publish your Cloud Run App with GitHub Actions](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2F1__HmM__NqNjtCWw36t3Pr1DWA.jpeg&w=1020&q=75)
Publish your Cloud Run App with GitHub Actions
A very fast way to deploy your application with GitHub
![Deploy Your ZEIT Now App With GitHub Actions](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2F1__BZ__jv__xjX__FfJR5fQH__6UQ.png&w=1020&q=75)
Deploy Your ZEIT Now App With GitHub Actions
Implement custom logic without having to create an app to perform a task
![Learning expedition Zenika: Ce qu'en pensent les devs](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2F2019-07-25-zle19-0.jpg&w=1020&q=75)
Learning expedition Zenika: Ce qu'en pensent les devs
La Silicon Valley, c’est le rêve américain de beaucoup de développeurs. Zenika y est allé.
![How I dropped Redux for the Context API](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2F1__NyHpepOw2vFFKVFdeRvzWg.png&w=1020&q=75)
How I dropped Redux for the Context API
React 16 introduced a new Context API to replace the deprecated one… Here is my way to replace Redux with this new API.
![La « dirty transparency »](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Ftomas-sobek-plwud_FPvwU-unsplash.jpg&w=1020&q=75)
La « dirty transparency »
Sur un PNG-24, avec de la semi-transparence, on se retrouve confronté à un gros surplus d'informations, appelé « dirty transparency ».
![Comprendre la minification CSS](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Fpankaj-patel-6JVlSdgMacE-unsplash.jpeg&w=1020&q=75)
Comprendre la minification CSS
Comment fonctionne la minification réellement et pourquoi est-ce un vrai gain ?
![Hauteur d'un bloc de texte](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Ftim-trad-AIwlyvpQJ18-unsplash.jpeg&w=1020&q=75)
Hauteur d'un bloc de texte
La taille d'un bloc de texte est toujours plus grande que le texte lui même... Pourquoi ?
![ORDER BY avec une jointure](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Fbenjamin-lehman-GNyjCePVRs8-unsplash.jpeg&w=1020&q=75)
ORDER BY avec une jointure
Le saviez-vous ? Le choix de l'ordre du tri a un incidence sur les performance du tri
![Optimisation de boucles JavaScript](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Fclay-banks-myomBTc85dI-unsplash.jpeg&w=1020&q=75)
Optimisation de boucles JavaScript
Parfois, le code le plus simple n'est pas le plus performant. C'est le cas des boucles JavaScript.
![Load average énorme !](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Ferik-odiin-nfQk1YdGoNc-unsplash.jpeg&w=1020&q=75)
Load average énorme !
Quelles solutions pour détecter, analyser, reporter et corriger les problèmes de charge CPU ?
![Mettre en place un placeholder et son failback](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Fel-alce-web-njX7_Ixraio-unsplash.jpeg&w=1020&q=75)
Mettre en place un placeholder et son failback
Le HTML5 apporte un nouvel attribut aux champs input text et assimilés : placeholder. Mais que faire sur les vieux navigateurs ?
![Laissez votre iPhone choisir pour vous](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Frobert-stump-pQyTChJwEDI-unsplash.jpeg&w=1020&q=75)
Laissez votre iPhone choisir pour vous
Lorsque vous ne savez pas quoi choisir... Il y a une app pour ça !
![Les « includes » et les « require » de PHP](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Fmichal-balog-ci4jDRiIIYE-unsplash.jpeg&w=1020&q=75)
Les « includes » et les « require » de PHP
Vous êtes peut-être déjà tombés sur le problème suivant : lorsque l’on utilise un include, le caractère « null » coupe l’inclusion du fichier.
![Décompression de fichiers sous Linux](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Ftim-johnson-20FJ6prKm28-unsplash.jpeg&w=1020&q=75)
Décompression de fichiers sous Linux
Les formats de décompressions sous Linux sont assez compliqués à retenir, surtout étant donné le nombre de formats de compression existants.
![La vitesse facteur du classement Google](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Fkai-wenzel-06MHFfYv6YY-unsplash.jpg&w=1020&q=75)
La vitesse facteur du classement Google
Les utilisateurs du web veulent de la rapidité. Google a décidé de prendre en compte la vitesse comme facteur de référencement.
![Rendre l’URL de recherche de Google plus lisible](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Fkatie-moum-3FVeCbX6OrY-unsplash.jpeg&w=1020&q=75)
Rendre l’URL de recherche de Google plus lisible
Matt Cutts, responsable de la webspam team de google à posté sur son twitter Une méthode pour rendre les URL de recherche de Google plus jolies.
![PHP : Warning: include_once(1)](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Fbreana-panaguiton-P4vFfdGl_8s-unsplash.jpeg&w=1020&q=75)
PHP : Warning: include_once(1)
Lors de la créations de vos sites Internet, vous avez peut-être un jour obtenu l’erreur suivante : Warning: include_once(1)
![VoilaBot attaque les sites !](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Fmarkus-spiske-NctO2nqkWCY-unsplash.jpeg&w=1020&q=75)
VoilaBot attaque les sites !
Depuis quelques temps, le robot de Voila, VoilaBot Beta 1.2, se met à crawler les sites Internet... Mais un peu trop.
![Internet Explorer : Opération abandonnée](/_next/image/?url=https%3A%2F%2Fstorage.googleapis.com%2Fbrunosabot.dev%2Fimg%2Fwonderlane-V_fSbpUQSmQ-unsplash.jpeg&w=1020&q=75)
Internet Explorer : Opération abandonnée
Le message « Internet Explorer ne peut pas ouvrir le site » « Opération abandonnée ! »