Mensuel Shaarli

Tous les liens d'un mois sur une page.

January, 2023

Easy SVG Customization And Animation: A Practical Guide

Un excellent guide pour l'animation de SVG, avec quelques bonnes pratiques d'optimisation

Découvrir AWS Direct Connect et le peering réseau Blog Devoteam Revolve

L'auteur présente l'intérêt de AWS Direct Connect, et les bases théoriques à avoir pour l'utiliser intelligemment.

Symfony and Laravel with Vite. Vite is a build tool that aims to… | by Dmitry Tarasenko | Jan, 2023 | Medium

Un mini tuto sur l'utilisation de Vite avec Symfony. Côté Laravel, Vite est devenu le builder officiel depuis les dernières versions.

Snowcamp – Ctrl-C, Ctrl-V – riduidel's wordpress

Un résumé d'une conférence à propos de la duplication de code - généralement à éviter mais avec quelques exceptions

Invite-only Registration | Laravel.io

L'auteur présente un système de création de comptes utilisateurs sur invitation, avec Laravel (via https://happytodev.substack.com/p/quoi-de-neuf-les-devs-numero-19 )

Snowcamp -Allan Poe appliqué au data streaming – riduidel's wordpress

Les conférenciers parlent de 2 cas de collecte de données : la télérelève de la consommation électrique des trains, et la performance énergétique des bâtiments. Ces 2 cas posent des problématiques différentes, et les conférenciers expliquent les solutions retenues.

Snowcamp – Rust : forces et faiblesses après 2 ans de production – riduidel's wordpress

Il s'agit de notes prises par l'auteur à propos de l'utilisation de Rust en production : avantages et inconvénients.

Créer son propre registre helm | TheBidouilleur

L'auteur montre comment créer son propre dépôt Helm avec ses charts.

Line heights in CSS work better with ratios | Andy Bell

Pour résumer, ne pas mettre d'unité dans le code CSS suivant : line-height - cela évite bien des soucis si l'utilisateur redimensionne sa police de caractères (via https://www.hteumeuleu.fr/demain-la-veille-1/ )

Le format d'image APNG

Tout est dans le titre

More Real-World Uses for :has()

Des exemples de cas d'usages pour le sélecteur :has()

Securisation de son micro site

L'auteur montre l'utilisation de Crowdsec, un bon candidat à la succession de fail2ban

Intégration Continue avec Jenkins

L'auteur présente Jenkins, et montre comment il l'a installé.

Richard Dern - Mon RaspberryPi 4 est enfin utile

L'auteur présente BitdNET-Pi, un logiciel s'installant sur un raspberry pi et qui permet de faire de la reconnaissance de chants d'oiseaux

Libérons la culture pour cultiver la liberté

La transcription d'une conférence de Ploum contre la publicité

SQL Books For Both Beginners and Advanced Users — SitePoint

Tout est dans le titre

Le plein écran facile avec l'API Fullscreen - Alsacreations

Une petite présentation de l'API fullscreen et de ses possibilités

drakkan/sftpgo: Fully featured and highly configurable SFTP server with optional HTTP/S, FTP/S and WebDAV support - S3, Google Cloud Storage, Azure Blob

Tout est dans le titre

Symfony 6.2 : Simplifiez vos contrôleurs avec ArgumentResolver – CODE|DESIGN•fr

L'idée est de construire un objet automatiquement à partir de paramètres de l'URL... ce que permet de faire l'ArgumentResolver de Symfony (remplace le ParamConverter)

PHP 7.2: the Traps to Avoid for a Better and Cleaner Code

Dans ce vieil article, l'auteur montre les dangers de nouveautés introduites par PHP 7.2, notamment le possible mauvais usage du type "object". D'une manière générale, il insiste sur le fait de préciser au maximum la classe / interface des objets plutôt qu'un type générique ne donnant aucune information sur les champs / méthodes possibles.

How My Views on Learning Have Changed Over Time - Scott H Young

Scott Young fait une rétrospective de l'évolution de ses idées sur l'apprentissage.

CORS

Une BD humoristique sur les problèmes liés à CORS... avec quelques liens pour les résoudre

La mémoire physique

L'auteur vulgarise l'architecture de Von Neumann : comment fonctionne la RAM, sa relation avec le CPU, etc. L'article est long mais se lit très bien

Decathlon, à fond la surveillance | Pixel de tracking

Tout est dans le titre

AWS - Activez l'auto-complétion boto3 dans vscode

La librairie boto3 facilite le développement sur lambda AWS ou l'écriture de code d'infrastructure AWS. L'auteur montre l'installation d'une extension boto3 dans VSCode qui fournit l'autocomplétion

fetch with Timeout

Tout est dans le titre

Que vaut Symfony-UX/Turbo en production ?

L'auteur présente les avantages de Symfony UX / Turbo / Stimulus

Symfony service subscribers

Dans un projet Symfony, un service peut avoir besoin d'autres services, mais ce besoin varie en fonction du contexte d'exécution...Au lieu d'injecter tous les services pouvant être utilisés dans le constructeur, on peut utiliser un "service subscriber" à la place. L'auteur montre comment faire.

Optimiser les images (à la main) de manière un peu trop hardcore – l3m website

L'auteur propose 2 choses : utiliser webp, et appliquer un très léger flou gaussien aux images

DAS, SAN et NAS pour les débutants - Stockage informatique

L'auteur explique de manière synthétique les différences entre DAS, SAN, NAS et stockage cloud.

Symfony + Filebeat + Elasticsearch | by Fabien Paitry | Jan, 2023 | Medium

L'auteur montre le monitoring des logs d'une application Symfony via Monolog / Filebeat / Elasticsearch et Kibana

Afficher n'importe quel drapeau du monde avec flag-icons | Makina Corpus

Tout est dans le titre

Comment relier Domoticz à HomeAssistant (MQTT)

L'auteur montre comment envoyer dans Domoticz les données des capteurs collectés par HomeAssistant via MQTT

Exemple de gestion du volet roulant de ma cuisine | OmiTech

Suite de l'article précédent sur la gestion de volets roulants avec Home Assistant : le cas concret

winstall - GUI for Windows Package Manager

Un concurrent de Chocolatey

Git par la pratique (4) – Initialiser un dépôt Git

Il s'agit d'un tutoriel pour les débutants : l'auteur montre l'initialisation d'un dépôt git en local, et comment faire son premier commit

Comment envoyer des notifications push sur votre téléphone facilement et gratuitement ?

Korben présente ntfy, un projet open source qui permet d'envoyer une notification à votre téléphone.

PHP 7 Type Hinting: Inconsistencies and Pitfalls

L'auteur explique certaines particularités / problèmes des types en PHP7.
Il préconise l'utilisation du mode strict et de ne jamais avoir besoin de typage faible. On devrait toujours connaître le type précis de nos variables. Enfin il faut éviter au maximum le type nullable.

Nginx, Docker et Fail2ban - Paranoiaque/Paranoid

L'auteur montre comment combiner un conteneur Docker pour Nginx avec Fail2Ban.

Utiliser l’API d’OpenAI avec Symfony

L'auteur montre l'utilisation de l'API d'OpenAI dans un projet Symfony.

The Valuable Dev Principles

L'auteur présente ses principes en tant qu'auteur et développeur :

  • l'état d'esprit (mindset) précède les outils
  • la qualité est au dessus de la quantité
  • se concentrer sur les fondamentaux
  • écrire des articles qui resteront vrais dans le futurs et cohérents
  • l'expérimentation est la clef
Ne faites pas vos pompes comme ça, JAMAIS ! 10 erreurs communes à proscrire

Tout est dans le titre

L'autisme est-il un trouble sensoriel ?

L'auteur s'interroge sur la place des particularités sensorielles dans le diagnostic des troubles du spectre de l'autisme. En effet, ces particularités pourraient s'avérer bien plus déterminantes qu'on ne le pensait jusqu'à présent.

Gitea | BL-oG

L'auteur explique les raisons de son choix de Gitea comme forge logicielle Git. Il montre ensuite comment l'installer et la configurer sur son serveur

Guide de portage Oracle vers PostgreSQL

Tout est dans le titre

Redwatch | Arrêtez le TOFU, et utilisez des certificats d'hôtes

Vous tentez de vous connecter à un serveur auquel vous vous connectez sans problème d'habitude... et vous tombez sur l'erreur

The authenticity of host 'mon_super_serveur' can't be established.
RSA key fingerprint is SHA256:le_fingerprint.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Généralement, vous choisissez yes sans réfléchir. Il s'agit d'une pratique TOFU ("Trust On First Use") et ce n'est pas terrible d'un point de vue sécurité.

L'auteur montre comment utiliser plutôt des certificats SSH, qui permettent de n'avoir plus de TOFU.

A Guide To Getting Data Visualization Right — Smashing Magazine

L'auteur présente un guide pour choisir le bon type de visualisation de données.

Mon BDX I/O 2022

BDX I/O est un conférence bordelaise sur le thème de la programmation et de ses métiers annexes. L'auteur fait un compte rendu des différents talks auxquels il a assisté.

A propos de la couverture de code

Le taux de couverture de code (code coverage) est un indicateur très incomplet, dont l'auteur montre bien les limites. Il propose d'utiliser, en plus, le taux de couverture des chemins d'exécution (branch coverage) qui pallie certains défauts du code coverage.

Cerebro App - Open Source productivity booster with a brain

Un lanceur d'applications

Joplin : améliorer la sécurité du lien Nextcloud - Raven - Blog

L'auteur présente une manière de connecter Joplin à son instance Nextcloud afin de limiter l'accès au strict nécessaire

Vos applications bureautiques sur le web avec Guacamole

Apache Guacamole sert à la prise en main à distance d'applications bureautiques, via le support de protocoles tels que VNC, RDP et SSH mais aussi via le navigateur web grâce au HTML5. L'auteur détaille une procédure d'installation pour les applications suivantes :

  • Audacity
  • Blender
  • Darktable
  • Digikam
  • Doublecommander
  • Filezilla
  • Firefox
  • Kdenlive
  • Libreoffice
  • Mysql-workbench
  • Pidgin
  • Qdirstat
  • Remmina
  • Sqlitebrowser
  • Wireshark
Détectez vos API Kubernetes obsolètes avec pluto - Paranoiaque/Paranoid

Pluto est un outil cli qui vérifie si vos fichiers yaml de configuration Kubernetes sont à jour vis-à-vis de l'évolution de Kubernetes.

Document.elementFromPoint

document.elementFromPoint permet d'obtenir l'élément directement présent aux coordonnées x,y

Il existe aussi document.elementsFromPoint qui liste l'ensemble des éléments (par inclusion)

ULIDs and Primary Keys | Dave Allie

L'auteur présente une alternative aux UUID qui permet de conserver l'ordre : les ULIDs - Universally Unique Lexicographically Sortable Identifier

Débuter la cybersécurité en 2023 · 50 Nuances d'Octets

Tout est dans le titre

5 great Perl scripts to keep in your sysadmin toolbox | Enable Sysadmin

Tout est dans le titre

Choosing a Postgres Primary Key

Un article très intéressant sur le choix d'une clef primaire : depuis le simple auto incrément jusqu'aux différentes versions des UUID, l'auteur explique les avantages et inconvénients de chaque possibilité avec application pratique sur PostgreSQL

A Beginner's Guide to JavaScript async/await, with Examples — SitePoint

Tout est dans le titre

Animating CSS Grid (How To + Examples) | CSS-Tricks - CSS-Tricks

Tout est dans le titre

A Visual Guide to SSH Tunnels: Local and Remote Port Forwarding

Tout sur les tunnels SSH avec une chouette cheatsheet en prime (via https://happytodev.substack.com/p/quoi-de-neuf-les-devs-numero-19 )

Snowcamp – quelques pistes pour soigner vos traces d’exécution – riduidel's wordpress

Tout est dans le titre, sauf le mot "log" :)

Snowcamp – Ordinosaures – riduidel's wordpress

L'article survole le processus de création d'émulateurs

Snowcamp – une architecture, deux architectes, trois possibilités – riduidel's wordpress

Les notes d'une conférence sur la conception d'une architecture : le choix entre différents styles, les contraintes, etc.

A Practical Guide to fzf: Building a File Explorer

Tout est dans le titre

The yaml document from hell

Il y a pas mal de bizarreries qui peuvent arriver lorsqu'un document yaml est interprété - l'auteur recommande d'utiliser plutôt toml ou de s'imposer de toujours mettre les chaînes de caractères entre quotes

À quoi sert High Resolution Time API ? - Alsacreations

Tout est dans le titre

Solved With :has(): Vertical Spacing in Long-Form Text

Un autre cas d'utilisation de :has()

Stocker et analyser des données sur AWS avec une architecture event driven n’a jamais été aussi simple

Tout est dans le titre

Understanding rootless Podman's user namespace modes | Enable Sysadmin

Par défaut, Podman associe l'utilisateur courant avec le root du container lancé... mais il est possible de changer ce comportement

How to : Mettre en place oAuth dans une Webapp avec Laravel Passport et Vue.js • Billets • Zeste de Savoir

Tout est dans le titre

Démarrer avec l'API Mastodon en Python

Tout est dans le titre

virtualabs.fr - Twitter ou Mastodon ?

L'auteur nous explique sa réflexion sur le choix

Clean Coder Blog : Functional Classes

Uncle Bob explique sa prise de conscience qu'il ne faut pas hésiter à utiliser des structures de classe dans la programmation fonctionnelle, même quand le langage (ici le clojure) ne dispose pas de mot clef spécifique pour ça. L'idée est de bien classer les données / méthodes qui vont bien ensemble.

Une place pour toute chose, chaque chose à sa place

Petite introduction à WebAssembly

L'auteur présente WebAssembly, à travers quelques exemples de programmes.

Side Projects for Software Developers: Tools and Practices

L'auteur détaille les outils qu'il utilise et ses méthodes - voici le résumé :

  1. Noter ses idées dans Google Keep
  2. Définir les objectifs de son projet : objectifs généraux et objectifs "temporels" (court, moyen et long terme)
  3. Demander des retours au bon moment, aux bonnes personnes (définir son audience)
  4. Apprécier le temps de développement (choix des technos, frameworks, etc.) - utilisation de la méthode Pomodoro. S'il ne se sent pas motivé, l'auteur tente pendant 10 min de coder... Souvent ça suffit, mais sinon il s'arrête.
  5. Moins on s'éparpulle, mieux c'est - utilisation de Kanban avec Trello, une seule tâche "en cours" à la fois - pas d'évaluation précise du temps mais un macro sizing
  6. Prendre des habitudes - méthode "ne pas briser la chaîne" pour s'assurer de consacrer un minimum de temps chaque jour.
  7. Ne pas se mettre de pression inutile
  8. Éviter le perfectionnisme en se donnant des limites
Découverte de l'IAM de Scaleway

L'auteur présente la solution d'IAM (Identity and Access Management) de Scaleway, notamment vis à vis de son intégration à Terraform.

The DRY Principle: Benefits and Costs with Examples

L'auteur évalue les avantages et inconvénients du principe DRY - don't repeat yourself - tel qu'énoncé dans le Pragmatic Programmer. Ce principe explique surtout qu'il y a un gros avantage à avoir une seule source de vérité pour la connaissance métier. Cela n'implique pas que le code ne soit jamais dupliqué - "la duplication est bien moins coûteuse qu'une mauvaise abstraction"

Using Symfony service tags to keep code maintainable | by Leaseweb | Jan, 2023 | leaseweb

Un service Symfony a besoin d'un autre service, mais ce besoin varie selon le contexte d'exécution. L'auteur montre l'utilisation des tags pour injecter automatiquement tous les services utilisés.

Détecter les vulnérabilités dans les dépendances de son projet - Blog de Simon Vieille

L'auteur présente Open Source Vulnerability Detector aka osv-detector qui permet de détecter les vulnérabilités des dépendances de tous types de projet (utilisation de npm, de composer, etc.) Il a même créé une image docker pour l'utilisation dans une CI

OpenZFS - The Final Word in File Systems

Une explication en profondeur du fonctionnement d'OpenZFS, le système de fichier au coeur de TrueNAS

Understanding File Handling in Python, with Examples - SitePoint

La gestion de fichiers en python

Data binding in React: how to work with forms in React

L'auteur présente le data binding dans React, et donne quelques bons conseils pour éviter les quelques pièges.

Faking Min Width on a Table Column | CSS-Tricks - CSS-Tricks

L'auteur montre une astuce pour l'élément table, astuce qui permet de donner une largeur minimale à une colonne. Les commentaires de l'article donnent une autre solution (plus propre à mon avis)

Gestion des volets avec Home Assistant | OmiTech

L'auteur montre la création d'un moteur de gestion de volets génériques sous Home Assistant.

Quick Tip: How to Filter Data with PHP - SitePoint

L'auteur montre comment filtrer et assainir les données en PHP

Créer une arborescence en CSS uniquement - Dév. Web - ShevArezo`Blog

L'auteur détaille pas-à-pas la création d'une arborescence en CSS, en combinant CSS et éléments HTML bien choisis

Clever Code Considered Harmful

L'auteur développe l'idée que le code lisible est infiniment supérieur au code "intelligent". Pour juger de la lisibilité, il se demande si un junior pourrait comprendre le code sans souci...

Customizing HTML Form Validation

L'auteur montre l'existence de propriétés JavaScript sur les éléments de formulaire (validity) et comment s'en servir pour customiser l'affichage des erreurs de validation.

Que sont les blob URLS ?

Je cite l'auteur


Les blob URLs sont des URLs (Uniform Resource Locators) générées dynamiquement qui permettent d'accéder aux données binaires stockées dans un objet Blob (Binary Large OBject) en JavaScript.

Fluid Typography: Predicting A Problem With Your User’s Zoom-In

L'utilisation de clamp pour de la typographie fluide dans un contexte de design responsive n'est pas sans causer quelques problèmes d'accessibilité : le zoom peut être perturbé. L'auteur explore quelques pistes pour remédier à cela

Transform

Via Korben - https://korben.info/convertir-code.html - , un outil en ligne de conversion de code (JavaScript vers JSON, Markdown vers HTML, XML vers JSON, etc.)

AWS - Maîtrisez l'utilisation de la CLI avec quelques Tips

L'auteur explique l'installation de la CLI AWS sous Windows, Mac et Linux. Il donne ensuite quelques astuces (configuration, alias, etc.)

Free Mobile : bloquer tous les démarcheurs - Le Hollandais Volant

L'auteur explique comment filtrer les appels nuisibles via l'interface web de Free Mobile.

Git par la pratique (2) – Installation & Configuration – Le blog technique de Microlinux

Installation et configuration sous Linux, MacOS et Windows

Colonnes liées par une relation d'inégalité

L'article concerne Postgres mais il est possible que ça puisse s'adapter à d'autres SGBD. Je cite l'auteur

Lorsqu’on identifie une requête lente, on remarque parfois qu’en forçant l’utilisation d’un index (avec enable_seqscan = off), le temps d’exécution est sensiblement réduit, parfois d’un facteur 100 ou 1000. Un DBA peut alors être tenté de jouer sur le paramètre random_page_cost pour favoriser l’utilisation de l’index. Mais celui-ci ne devrait dépendre que de la performance du stockage.
Dans un cas comme celui-là, il est vraiment nécessaire de s’attaquer à la cause première, qui est l’erreur d’estimation sur le nombre de lignes retournées. Parfois, le nom des colonnes donne un indice sur la façon dont elles sont corrélées, comme ici avec freqmin < freqmax, hypothèse qu’il est nécessaire de faire valider par le métier, pour ensuite en tirer profit, avec des statistiques étendues lorsque cela est possible, ou avec une ré-écriture de la requête.

Comment utiliser l'événement hashchange ? - Alsacreations

Le hash est la partie de l'URL après le #. Sa particularité est de ne pas provoquer de rechargement de page lorsqu'il change. L'auteur montre comment utiliser l'événement hashchange.

proteger-des-fichiers [Wiki de sebsauvage.net]

Sebsauvage partage ses astuces pour faire des sauvegardes efficaces, en vérifiant l'intégrité des données.

Générer ses images Stable Diffusion sur Ubuntu 22.04

L'auteur montre comment installer Stable Diffusion en local

A tiny CI system - Christian Ştefănescu

L'auteur montre comment se créer son petit système d'intégration continue, à partir d'une machine compatible unix. L'idée est d'héberger des dépôts git "bare" et d'utiliser des hooks "post-receive" (après exécution d'un git push) pour lancer des tâches. Ces hooks passent en paramètre les "git ref" nécessaires pour connaître le contexte d'exécution (branche pushée) L'auteur propose d'utiliser redis pour stocker les messages (statut, ref, etc.)

Apache2 : comment bloquer ou autoriser certains pays ?

Dans ce tutoriel, l'auteur montre comment configurer un serveur Web Apache de manière à bloquer l'accès à notre site Web à certains pays, ou à l'inverse, autoriser uniquement certains pays à se connecter.

Creating a one api endpoint with PHP and Symfony (Part 5)

L'auteur utilise Redis et la création d'un attribut PHP (décorateur) pour marquer certains points d'entrée comme "lockables" pendant un certain temps (sémaphore).

Detect Browser Bars Visibility with JavaScript

Les navigateurs fournissent les propriétés booléennes window.personalbar, window.locationbar, et window.menubar properties

Monitoring/Gestion des performances applicatives (APM) - [ Partie 2] Jaeger | Blogs

Dans cet article, l'auteur présente une alternative à Elastic Search APM, plus légère : Jaeger. Il propose l'utilisation d'Elastic en production, et Jaeger en développement (pas de compte à gérer, etc.)

Il montre l'installation de Jaeger

Jenkins - Ecrire son premier Jenkinsfile

L'auteur poursuit son exploration de Jenkins, et montre comment le configurer via un Jenkinsfile. Il donne aussi quelques extensions VSCode utiles à cet effet.

Redwatch | La force d'un mot de passe et comment la maximiser

L'auteur démontre l'assertion selon laquelle la taille d'un mot de passe est l'élément le plus important de sa sécurité.

Borg Backup : Gérer ses backups sous Linux - Wiki - Wiki

Tout est dans le titre

Kubernetes : header based routing avec traefik et argocd | Padok

Je cite l'intro de l'article :)

Vous avez besoin de tester des features sur un environnement existant ? Ou vous avez des contraintes de certificats TLS ou de finops pour votre workflow GitOps ?
Nous allons voir comment utiliser ArgoCD et Traefik pour mettre en place une solution de header routing pour une application dans Kubernetes.

SOLID Principles with Laravel

Tout est dans le titre

Cloudfront : sécuriser votre infrastructure avec un WAF

Il s'agit d'un tutoriel montrant la création d'un WAF (Web Application Firewall) sur AWS, avec Terraform.

Snowcamp – Playwright – riduidel's wordpress

Une présentation succincte de Playwright, une solution open source de Microsoft pour l'automatisation de navigateur, dans la veine de Puppeteer

Snowcamp – Comment automatiser ses tests d’accessibilité – riduidel's wordpress

Tout est dans le titre

ip vs. ifconfig: Which do you use?

Tout est dans le titre

kuik: l'outil opensource de caching d'images de conteneurs entre vos clusters k8s et les registry

Enix présente son outil qui permet de mettre en cache les images utilisées par des clusters k8s. Cela évite les problèmes de surconsommation

Portfolio en 2023 : Guide, exemples et templates 🎨 – Alex so yes

Tout est dans le titre

Mise en place d’un déploiement progressif avec Flagger

Tout est dans le titre

SaaS et sécurité des données : comment gérer les risques à l'ère du cloud ? | Ostraca Monitoring

Un constat pas très rassurant et quelques mesures permettant d'améliorer sa sécurité

Dédoublonnez vos photos | Blog Eleven Labs

L'auteur montre l'utilisation de quelques outils comme l'empreinte sha1, le perceptual hash et l'identification des metadata. Il a même développé un outil PHP pour extraire les metadata basé sur ExifTool

Level Up Your CSS Skills With The :has() Selector — Smashing Magazine

L'auteur présente des cas d'utilisation du sélecteur CSS :has()

Clean Coder Blog : Functional Classes in Clojure

Dans la foulée de son précédent billet, Uncle Bob montre qu'il est possible d'écrire des classes dans un langage fonctionnel, le Clojure.

SwebDev - La fonction CSS clamp()

Une présentation de la fonction CSS clamp

Getting Started With SvelteKit | CSS-Tricks - CSS-Tricks

Une introduction à Svelte

Maintenant que toutes le unités SI sont définies par des constantes naturelles, vont-elles encore changer ? - Couleur-Science

Passionnant, le hollandais volant explique les implications de la définition plus précise de la seconde

Developer Side Projects: 10 Steps From Creation to Launch

L'auteur donne de bons conseils pour gérer ses side projets

Quick Tip: How To Read a Local File with PHP — SitePoint

Tout est dans le titre

Mon apprentissage du TDD (retour d'expérience)

L'auteur décrit les 7 étapes dans son apprentissage du TDD

Étape 1. Le lâcher prise : barrière psychologique
Étape 2. Petit à petit, on est moins petit : la vraie valeur de TDD
Étape 3. Abuser de son IDE
Étape 4. La liberté du refacto : la confiance en notre code
Étape 5. Ne pas refacto trop tôt
Étape 6. Tests techniques versus tests métier
Étape 7. Double loop BDD TDD <3

Gestion du cycle de charge et de décharge d'une tablette sous Home Assistant | OmiTech

Tout est dans le titre

Minimal Dark Mode Styling – Eric’s Archived Thoughts

Le code css pour avoir un dark mode minimaliste

@media (prefers-color-scheme: dark) {
    html body {filter: invert(1);}
    /* the following really should be managed by a cascade layer */
    html img, 
    html img.book.cover, 
    html img.book.cover.big, 
    html [#archipelago](./add-tag/archipelago) a:hover img {filter: invert(1);}
    html [#thoughts](./add-tag/thoughts) figure.standalone img {
      box-shadow: 0.25em 0.25em 0.67em [#FFF8](./add-tag/FFF8);
    }
}
5 tips for using oc to work faster in Kubernetes | Enable Sysadmin

Remplacer la commande kubectl de Kubernetes par oc d'OpenShift

Behat pour les tests fonctionnels d'une commande Symfony

L'auteur montre, via ce tutoriel, l'utilisation de Behat pour tester une commande Symfony. Il donne des solutions pour quelques problèmes que l'on pourrait rencontrer : utilisation du service locator, contexte d'exécution, etc.

Homelab - Quelles configurations choisir pour se former aux technos DevOps

Tout est dans le titre

Mise en place de son micro site

L'auteur explique la mise en place et le déploiement d'un site statique généré grâce à Hugo

Gluon - Develop desktop apps from websites, using system installed browsers and NodeJS.

Il s'agit d'un concurrent à Electron, qui permet de développer des applications Desktop en utilisant des technologies web

Redwatch | Franchement, tu sais d'où vient la performance de rsync ?

Une explication du fonctionnement de rsync, très ingénieux

Comment traiter des fichiers JSON volumineux en Python

L'auteur montre l'utilisation de la librairie ijson pour le traitement de gros fichiers json en python

:has is an unforgiving selector | CSS-Tricks - CSS-Tricks

:has est un sélecteur CSS3 qui "plante" en cas d'erreur sur le contenu de la sélection. Par exemple :has(h2) fonctionne alors :has(h2, ul, ::-truc-qui-rate) ne fonctionnera même pas pour h2 ou ul.

Chronique d’un retour en douceur au présentiel avec React Day Berlin, qu’attendre des conférences ? | Blog Eleven Labs

Un compte rendu de conférences auxquelles a assistées l'autrice... et un compte rendu très sympa de son expérience de bénévole

Quel langage apprendre en 2023 ?

Pour résumer, apprendre surtout à communiquer ^^ Plus on devient senior, plus on est amené à communiquer

Qualité — David Larlet

Des réflexions autour de la qualité de code et du problème de la transmission de la connaissance ayant amené au code

PHP DateTime: Create, Compare and Format Dates Easily

L'auteur explique les avantages d'utiliser DateTime plutôt que les fonctions date, mktime et autres en PHP.

How to create a Ceph cluster on a single machine

Ceph est une solution libre de stockage distribué. L'auteur montre comment créer un cluster sur une seule machine (tester, apprendre)

Binding Self-Validating Domain Models To Symfony Forms

L'auteur montre comment utiliser les formulaires Symfony, tout en gardant des entités représentant réellement des concepts du domaine métier. Le point principal est la possibilité de vérifier des contraintes sur la partie "setter" et de donner un nom métier au setter.

10 PhpStorm Shorcuts and Tricks you Should Know

Tout est dans le titre

A Guide to the Terminal, Console, and Shell

Il s'agit d'un guide complet sur le terminal : histoire, configuration et utilisation... passionnant !

Stack et Heap

L'auteur explique le fonctionnement de la pile (stack) et du tas (heap) dans le contexte de l'exécution d'un programme Rust.

yt-dlp : Télécharger des vidéos sur Internet (youtube-dl) - Wiki - Wiki

yt-dlp est le successeur de youtube-dl, qui permet de télécharger des vidéos depuis différents sites de partage dont youtube.

Guide d'installation de Bitwarden en Auto Hébergement

Bitwarden permet de gérer ses mots de passe. L'auteur montre comment l'installer via docker (image VaultWarden, plus légère)

Gérer Docker depuis une interface Web avec Portainer

Il est recommandé de gérer des conteneurs Docker directement en ligne de commande (plus rapide, conçu pour) Mais il est possible d'utiliser une interface graphique depuis le navigateur web : Portainer. L'auteur présente cet outil et son installation.

Color Formats in CSS - hex, rgb, hsl, lab

L'auteur présente les formats utilisables tels que les noms de couleur, rgb et hsl, mais aussi des formats à venir / en cours d'implémentation comme lch.
Il termine en préconisant hsl car ce format est bien plus intuitif (couleur devinable) et manipulable (facile d'éclaircir / assombrir)

Develop Faster JS Apps: the Ultimate Guide to Web Workers - SitePoint

L'auteur explique en quoi consistent les Web Workers, et quels sont leurs avantages et utilité. Il donne plusieurs contextes, côté client mais aussi côté serveur.

Ansible - Developper vos roles et collections avec des instance AWS EC2

L'auteur montre comment utiliser des instances AWS EC2 pour provisionner, par exemple, des machins de tests avec molecule pour développer des rôles et collections Ansible.

OpenAIPipe: une interface UNIX pour ChatGPT

Tout est dans le titre

The Intermediate Plateau: What Causes It? How Can We Move Beyond It? - Scott H Young

Scott Young décrit en quoi consiste l'étape d'apprentissage appelée "plateau intermédiaire". Il s'agit du moment où l'acquisition de nouvelles compétences dans un domaine est de plus en plus difficile.

Il donne 3 causes possibles à ce problème, et propose 1 solution pour chaque.

Héberger des services à la maison | Nicolas Delebecque

L'auteur explique les choix qu'il a fait en matière d'hébergement :

  • un cluster de Raspberry Pi sur lequel tournent des containers d'application
  • réseau géré via Docker Swarm
  • un stockage distribué avec Gluster
  • sauvegarde toutes les nuits sur un NAS et toutes les semaines chez un hébergeur
  • supervision avec Prometheus / Grafana
Quelques Exporters Prometheus pratiques | Rémi Tech Notes

L'auteur présente des exporters Prometheus qui peuvent s'avérer pratiques pour administrer un cluster Kubernetes.

POC of Clean Architecture with Symfony

L'auteur explore comment se conformer à la Clean Architecture en utilisant Symfony.

JavaScript print Events

Les navigateurs fournissent des événements liés à l'impression : beforeprint et afterprint

Redwatch | La récursivité terminale, c'est comme la récursivité. En mieux ?

L'un des problèmes de la récursivité est le dépassement de mémoire, chaque appel récursif ajoutant des données à mémoriser. Il est possible d'éviter cela tout en conservant la récursivité en utilisant la récursion terminale. Au lieu d'écrire

function factorielle(int n) {
  if (n <= 1) {
    return 1;
  }
  return n * factorielle(n - 1);
}