L'article explore l'utilisation des animations SMIL (Synchronized Multimedia Integration Language) dans les SVG pour enrichir les conceptions web. Contrairement aux idées reçues, SMIL n'est pas obsolète et offre des moyens simples et sémantiques d'ajouter des animations aux designs. L'auteur, Andy Clarke, démontre comment SMIL peut être utilisé pour créer des animations complexes, synchroniser plusieurs animations et contrôler les transformations et les chemins de mouvement. Il met en lumière les avantages de SMIL, notamment sa capacité à fonctionner sans dépendre de JavaScript ou de frameworks, et son intégration directe dans les fichiers SVG, ce qui le rend idéal pour des effets d'animation compacts et portables.
L'article offre des conseils pratiques pour ceux qui souhaitent se lancer dans le bricolage. Il recommande d'acquérir progressivement du matériel de base, en privilégiant la qualité, et suggère des endroits où acheter des outils, comme les grandes surfaces de bricolage et les boutiques pour professionnels. L'auteur met en avant l'importance de regarder des vidéos éducatives pour apprendre des techniques et se familiariser avec le vocabulaire technique. Il liste également des outils essentiels, tels qu'un coffret de douilles, des pinces, un marteau, un tournevis plat, et des consommables comme le WD-40 et des joints de plomberie. Pour l'électroportatif, il conseille de choisir des outils de marques professionnelles et mentionne la perceuse-visseuse Bosch Pro GSR 12V-15 FC comme un outil polyvalent et indispensable. Enfin, l'article rappelle les limites du bricolage, notamment pour les travaux liés au gaz, au feu, et à la structure des bâtiments, et encourage à se former en électricité pour réaliser des travaux en toute sécurité.
L'article présente des astuces pour optimiser l'utilisation de Docker Compose. Il propose d'utiliser des profils pour activer des services de manière conditionnelle, de gérer les variables d'environnement avec des fichiers .env, et d'optimiser les builds avec le cache. Il aborde également l'utilisation des vérifications de santé pour gérer les dépendances entre services, la personnalisation des logs pour une meilleure lisibilité, l'utilisation de volumes nommés pour la persistance des données, et l'extension des fichiers de configuration pour une meilleure modularité. Ces techniques permettent de rendre les workflows de développement plus efficaces et flexibles.
L'article traite des problèmes courants liés au DNS dans Kubernetes, en se concentrant sur trois principaux problèmes :
- Problème des ndots : Kubernetes tente d'être intelligent en essayant plusieurs suffixes DNS pour résoudre les noms, ce qui peut entraîner une charge accrue sur le serveur DNS et une latence plus importante. La solution consiste à utiliser des noms de domaine complets (FQDN) ou à ajuster la valeur de ndots.
- Problème de Lameduck : Lors de la suppression d'un pod, il peut y avoir un délai avant que kube-proxy ne mette à jour les règles iptables, ce qui peut entraîner des erreurs de connexion. La solution consiste à configurer un délai de grâce (lameduck) pour permettre à kube-proxy de se réconcilier.
- Problème de conntrack : Il existe un bug non corrigé dans kube-proxy en mode iptables qui provoque une perte de trafic UDP lors de la suppression d'un pod, affectant particulièrement le DNS. Les solutions partielles incluent l'ajout d'un timeout DNS ou la limitation du redémarrage des pods CoreDNS.
L'article souligne que ces problèmes peuvent avoir un impact significatif sur les performances et la fiabilité des clusters Kubernetes, en particulier ceux hébergés sur des plateformes comme AWS EKS.
L'article présente une liste de conseils pour les tests avec PHPUnit, certains spécifiques à Laravel et d'autres non. J'en retiens :
- assertEqualsCanonicalizing qui permet de vérifier que 2 tableaux sont "égaux", sans tenir compte de l'ordonnancement des valeurs
- l'attribut #[\PHPUnit\Framework\Attributes\DoesNotPerformAssertions] qui permet de dire à PHPUnit qu'un test ne vérifie aucune assertion (ce qui déclenche normalement une erreur dans PHPUnit)
- l'attribut #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] permet de préciser à PHPUnit d'exécuter les tests dans plusieurs processus... ça permet par exemple de définir une même constante dans 2 méthodes de tests de la même classe.
- la méthode $this->markTestSkipped('test are skipped because ...'); permet de sauter l'exécution d'un test, $this->markTestIncomplete('test are incomplete but not in error'); permet d'indiquer qu'un test est incomplet (??) et $this->fail('test are failed !'); permet de marquer un test comme échoué quoi qu'il arrive.
- phpunit --order-by=random permet de lancer les tests dans un ordre aléatoire - c'est très pratique pour détecter les dépendances implicites entre les tests. phpunit --order-by=random --random-order-seed=1234 permet même de rejouer le même ordre aléatoire, notamment pour reproduire un échec.
- phpunit --stop-on-failure --stop-on-error permet de stopper l'exécution des tests dès la première erreur rencontrée
- enfin en utilisant l'attribut #[\PHPUnit\Framework\Attributes\Group('mon_super_groupe')], on peut exclure les tests de ce groupe vendor/bin/phpunit --exclude-group mon_super_groupe ou au contraire ne jouer que les tests de ce groupe vendor/bin/phpunit --group flaky
Symfony dispose de fonctionnalités sur les chaînes de caractères depuis longtemps (Symfony 5) avec plein d'utilitaires très pratiques : gestion de l'unicode, enchaînement de méthodes (interface fluente), prise en charge de l'internationalisation, etc.
L'article présente 5 scripts Bash dont on peut s'inspirer pour construire les nôtres.
- Création d'un backup
- Surveillance du CPU, de la mémoire et de l'espace disque disponible avec alerte en cas de besoin
- Audit de sécurité rapide
- Vérification rapide de la réponse des sites
- Partitionnement de disque dur
L'article présente 10 fonctionnalités récentes des CSS :
- Min, max and clamp - min et max se passent de commentaires, et clamp permet de combiner les deux - une valeur minimale, une valeur préférée, et une valeur maximale
- Container queries - les container query font que les éléments répondent à la taille du conteneur de leur parent plutôt qu'à celle du viewport
- text-wrap: balance & pretty - cette propriété contrôle comment le texte est réparti entre les lignes pour améliorer la lisibilité, la valeur "balance" crée des lignes de longueur égale, alors que "pretty" évite les orphelines (mots se retrouvant seuls sur la dernière ligne)
- CSS Relative Color Syntax - la syntaxe "from" permet d'extraire et de modifier des composants individuels pour toute source de couleur
- Margin Block/Inline Properties - ces propriétés de marge et de padding (margin-block, margin-inline, padding-block, padding-inline) répondent aux besoins induits par différents modes d'écriture et de direction de lecture en CSS, remplaçant les propriétés left / right / top / bottom
- @starting-style - permet d'animer des éléments depuis display:none, en définissant des styles initiaux quand un élément apparaît
- :has() - permet de sélectionner des éléments parents, en se basant sur leurs enfants
- Media Query Ranges - simplifie la syntaxe pour définir des intervalles min/max - light-dark - est un raccourci pour définir différentes valeurs basées sur les préférences de l'utilisateur sur le mode (sombre / light)
- color-scheme - est utile en combinaison avec light-dark, pour informer le navigateur quel jeu de couleurs est supporté par un composant, ce qui permet aux éléments natifs de correspondre automatiquement aux préférences de l'utilisateur
- Nesting - permet d'écrire des CSS en imbriquant les sélecteurs enfants dans leurs parents
- Units - de nouvelles unités comme dvh sont apparues (pour les navigateurs mobiles)
- @layer - permet de gérer des conflits de spécificité en ordonnant explicitement les groupes de styles.
10 commandes linux méconnues et pourtant bien utiles : renommage de fichiers en masse, afficher la progression d'une copie de fichier, afficher les numéros de ligne, etc.
L'autuer partage 13 astuces pour le terminal : répéter, corriger, etc. Je ne les connaissais pas toutes
Dans cet article, on voit :
- Les formats de certificats
- Manipulation des certificats avec OpenSSL
- Visualiser le contenu d’un certificat
- Convertir entre différents formats
- Extraire des éléments d’un fichier PKCS#12
- Créer et gérer des clés privées
- Vérifier une clé privée et un certificat
- Vérifier la chaîne de certificats
- Générer une demande de signature de certificat (CSR)
- Créer un certificat auto-signé
- Examiner une demande de signature de certificat (CSR)
- Vérifier et tester un site web TLS
- Bonnes pratiques pour la gestion des certificats
L'article propose une approche pragmatique pour mettre en place un design system en trois mois. Il s'appuie sur des outils concrets comme le Design System in 90 Days Canvas de Dan Mall, un modèle FigJam qui aide à structurer les discussions avec les parties prenantes, identifier les composants clés et évaluer les besoins des équipes. L'article présente également des ressources pratiques telles que les Design System Tactics de Ness Grixti et une checklist PDF de Nathan Curtis pour guider les ateliers d'équipe. Une lecture utile pour toute organisation souhaitant lancer ou améliorer son design system de manière structurée et collaborative.
Une liste d'outils d'IA sans inscription
Plus de 700 applications en auto-hébergement déployables via Docker Compose
Des thèmes GRUB avec quelques explications pour les customiser
Ce dépôt Github liste des intégrations de LLM dans PHP. Chaque intégration doit être open source (licence), être stable ou en développement actif et être installable via composer.
L'article explore diverses applications et outils utilisant la technologie WebRTC. Il aborde des sujets tels que le débogage avec test.webrtc.org, les outils de ligne de commande pour STUN et TURN, et les bibliothèques comme PeerJS et Yjs pour des applications collaboratives. L'article mentionne également des serveurs WebRTC comme Janus, Kurento, et Mediasoup, ainsi que des applications spécifiques telles que Jitsi, Pion, et Screego pour le partage d'écran sécurisé. Il souligne l'importance de WebRTC dans les communications en temps réel et les défis associés à son implémentation
.
Dans son article, Scott H. Young partage ses lectures et ses réflexions sur le sommeil, thème du septième mois de son projet annuel "Foundations". Il souligne l'importance du sommeil pour la cognition, l'humeur et le système immunitaire, et critique la valorisation culturelle de la privation de sommeil. Il explique que le sommeil est régulé par deux processus : l'accumulation de la pression de sommeil (Processus S) et le cycle jour-nuit (Processus C), qui peuvent être perturbés par la caféine et la lumière artificielle. Il résume plusieurs livres sur le sommeil, abordant des sujets tels que l'insomnie, les rythmes de sommeil historiques, la neuroscience du sommeil et des rêves, et les effets des siestes. Il mentionne également les effets du café et l'importance de la lumière pour réguler le rythme circadien.
Tout est dans le titre
L'article présente dix fonctions Python moins connues mais très utiles pour améliorer l'efficacité et la lisibilité du code. Voici un résumé des fonctions abordées :
- bisect : Permet de maintenir des listes triées et de trouver des points d'insertion efficacement.
- itertools.pairwise : Génère des paires consécutives dans une séquence, utile pour l'analyse des tendances.
- statistics.fmean : Calcule la moyenne plus rapidement et avec une meilleure précision que
mean()
. - itertools.takewhile : Traite les séquences jusqu'à ce qu'une condition ne soit plus remplie.
- operator.attrgetter : Simplifie l'extraction d'attributs d'objets, utile pour le tri.
- itertools.chain.from_iterable : Aplatit les structures imbriquées de manière efficace.
- functools.cache : Met en cache les résultats de fonctions pour accélérer les calculs répétitifs.
- contextlib.suppress : Permet de gérer les exceptions de manière plus propre sans code superflu.
- pathlib.Path.glob : Recherche des fichiers correspondant à un motif spécifique dans un répertoire.
- dataclasses.asdict : Convertit facilement des objets en dictionnaires pour une manipulation ou une sérialisation JSON simplifiée.
Ces fonctions permettent de simplifier des opérations complexes et d'améliorer la performance du code.