L'auteur donne une série de conseils pour l'écriture de regex en JavaScript, du plus basique au plus complexe : ajout de flags, groupes de capture nommés, etc.
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
L'article explique comment Docker utilise un système de stockage en couches, où chaque instruction dans un Dockerfile crée une nouvelle couche en lecture seule, avec une couche supérieure en lecture-écriture pour les conteneurs en fonctionnement. Il aborde les différents pilotes de stockage disponibles, comme overlay2, recommandé pour les distributions Linux modernes, et propose des conseils pour optimiser l'espace disque, comme l'utilisation d'images légères et la configuration de cron jobs pour le nettoyage périodique. Enfin, il souligne l'importance d'une bonne gestion des données persistantes dans un environnement de conteneurs éphémères.
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
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
L'article explore comment transformer les boîtes de dialogue HTML en éléments visuellement attrayants et cohérents avec l'identité d'une marque. En utilisant des techniques CSS avancées telles que ::backdrop
, backdrop-filter
, et des animations, l'auteur montre comment dépasser les designs génériques pour créer des expériences utilisateur uniques et mémorables. L'article met en lumière des exemples concrets, comme l'intégration de designs rétro inspirés des années 90, tout en maintenant l'accessibilité et la performance. Il encourage les designers à voir les boîtes de dialogue non seulement comme des éléments fonctionnels, mais aussi comme des opportunités pour renforcer le storytelling et l'identité visuelle d'un site web.
L'article explore l'importance des messages de commit clairs et de la documentation complète dans le processus de développement logiciel. L'auteur y décrit sa routine personnelle pour rédiger des messages de commit détaillés et structurés, en utilisant un modèle standard qui inclut le type de modification, la portée, un résumé, une description du problème, la solution apportée, et le contexte supplémentaire. Il souligne également l'impact positif de cette pratique sur la collaboration et la maintenance du code. L'article aborde aussi l'utilisation d'outils comme les hooks Git pour maintenir la qualité des commits et l'intégration de l'IA pour aider à la documentation. Enfin, l'auteur partage son approche pour gérer la documentation à travers différentes étapes du développement, soulignant que ces pratiques sont essentielles pour un développement professionnel efficace.
L'article explore les méthodes pour accéder en toute sécurité à un serveur distant via SSH depuis différents réseaux. Il aborde des concepts tels que le transfert de port, l'utilisation d'un DNS dynamique pour gérer les adresses IP changeantes, et l'établissement de connexions VPN pour sécuriser les accès distants. L'article propose également des exercices pratiques pour configurer ces solutions, comme la mise en place du transfert de port sur un routeur ou l'utilisation d'un service DDNS. En conclusion, il encourage les lecteurs à maîtriser ces techniques pour gérer efficacement les serveurs à distance, où qu'ils se trouvent.
L'article explore différentes méthodes pour gérer du code et des environnements avec Terraform. L'auteur partage ses observations et préférences évolutives. Il discute de l'utilisation des "providers" et des modules de code pré-établis, permettant de déployer simultanément chez plusieurs fournisseurs, et met en lumière la puissance et la flexibilité de Terraform. L'article aborde également des techniques variées, allant du code "hardcodé" à l'utilisation de variables, de boucles, et de "workspaces", pour optimiser la gestion des environnements. Enfin, il souligne l'importance de la gestion de l'état dans Terraform et propose des solutions élégantes pour répliquer des environnements de manière efficace et sécurisée.
Des astuces pour Google, mais aussi comment faire des recherches à partir d'images et des liens sur l'OSINT
On a 3 manières de compter les lignes en SQL :
COUNT(*) compte toutes les lignes, sans s'occuper des valeurs de celles-ci. On l'utilise souvent avec GROUP BY comme dans cette requête sur les prénoms les plus populaires.
SELECT first_name, COUNT(*) FROM people GROUP BY first_name ORDER BY COUNT(*) DESC LIMIT 50
COUNT(DISTINCT column) renvoie le nombre de valeurs distinctes, et est donc très utile si une colonne a des valeurs dupliquées. Par exemple, la requête suivante trouve le nombre d'espèces pour chaque gêne de plante.
SELECT genus, COUNT(DISTINCT species) FROM plants GROUP BY 1 ORDER BY 2 DESC
À noter que GROUP BY 1 signifie de grouper par la 1ère expression du SELECT.
SUM(CASE WHEN expression THEN 1 ELSE 0 END) permet de compter, par exemple dans la requête ci-dessous, combien chaque propriétaire a de chats, de chiens et d'autres animaux.
SELECT owner , SUM(CASE WHEN type = 'dog' THEN 1 ELSE 0 END) AS num_dogs , SUM(CASE WHEN type = 'cat' THEN 1 ELSE 0 END) AS num_cats , SUM(CASE WHEN type NOT IN ('dog','cat') THEN 1 ELSE 0 END) AS num_other FROM pets GROUP BY owner
Ça marche bien si la table a le format
owner | type |
---|---|
1 | dog |
1 | cat |
2 | dog |
2 | parakeet |
L'article décrit l'expérience de l'autrice sur Mastodon depuis 2022, après avoir quitté Twitter suite à son rachat par Elon Musk. Elle apprécie l'absence de publicité, la bienveillance des utilisateurs et la possibilité de suivre des hashtags pour découvrir du contenu intéressant. Elle utilise Mastodon pour partager des aspects de sa vie quotidienne, des photos et des réflexions professionnelles, tout en interagissant avec une communauté engagée et diversifiée. Elle gère deux comptes, un officiel et un anonyme, et passe environ une heure et demie par jour sur la plateforme, soulignant les avantages de Mastodon par rapport aux réseaux sociaux algorithmiques
.
L'auteur fait un retour d'expérience sur le scraping totalement abusif de son contenu par des entreprises spécialisées dans l'IA : au delà de la monétisation probable de son contenu dans son dos, ces entreprises rendent indisponibles sa forge logicielle par ce que l'on peut qualifier d'attaque DDoS... d'où son coup de gueule. Il donne quelques conseils pour pallier ce souci.
Cet article explique comment établir un rythme vertical harmonieux sur une page web pour améliorer l'expérience utilisateur. En définissant une "unité de rythme" basée sur la taille de la police et la hauteur de ligne, on peut créer des espacements proportionnels et prévisibles. L'auteur propose d'utiliser des multiples de cette unité pour les tailles de titres et autres éléments, facilitant ainsi la lecture et la hiérarchie visuelle. Le sélecteur CSS "hibou lobotomisé" ( + ) et les Custom Properties sont également mis en avant pour automatiser et simplifier la mise en page.
L'article présente dix commandes Git peu connues qui peuvent améliorer l'efficacité des développeurs. Parmi elles, git restore
permet d'annuler des modifications ou de déstager des fichiers, tandis que git switch
facilite le changement de branches. git sparse-checkout
permet de cloner uniquement les fichiers nécessaires dans un dépôt volumineux, et git range-diff
compare les différences entre deux séries de commits. git notes
ajoute des métadonnées aux commits sans encombrer l'historique, et git worktree
permet de travailler sur plusieurs branches simultanément. git bisect
aide à identifier les commits à l'origine de bugs, git replace
modifie l'historique sans changer les hashs, et git fsck
vérifie l'intégrité du dépôt. Enfin, git alias
permet de créer des raccourcis pour des commandes fréquentes. Ces commandes peuvent faire gagner du temps et résoudre des problèmes complexes.
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Les astuces :
- alias git
- indexation partielle
- vscode