Idées & Perspectives

Explorer le développement AI-first, les garde-fous de code et l'architecture de la jetabilité.

Vos dépendances peuvent lire n'importe quel fichier sur le disque. cap-std les force à demander la permission.

La bibliothèque standard de Rust accorde une autorité ambiante sur le système de fichiers à chaque dépendance. cap-std la remplace par des APIs basées sur les capabilities qui forcent le code à prouver qu'il a le droit d'accéder à un chemin avant de l'ouvrir.

N'importe quelle crate dans votre arbre de dépendances peut ouvrir , écrire dans votre répertoire , ou énumérer chaque fichier de votre projet. La bibliothèque…

Votre service est un complice involontaire : comment fonctionnent les attaques par député confus

Une attaque par député confus trompe un service privilégié pour qu'il utilise son autorité contre lui-même. Voici comment les attaquants exploitent la confiance implicite, et pourquoi la sécurité basée sur les capabilities est la solution.

Votre service dispose d'une clé API pour votre stockage cloud. Un utilisateur envoie une requête. Votre service écrit fidèlement un fichier. Le fichier…

Et si chaque fonction devait recevoir une autorisation au lieu de la supposer ?

La plupart du code s'exécute avec une autorité ambiante : chaque fonction peut toucher à tout. La sécurité basée sur les capacités renverse ce modèle en obligeant les fonctions à recevoir des permissions explicites et limitées.

Votre fonction a accès à la base de données, à la passerelle de paiement et au journal d'audit parce qu'elle se trouve par hasard dans le même processus. Si un…

Arrêtez de lancer des erreurs que votre vérificateur de types ne peut pas voir

Les exceptions lancées masquent les chemins d'échec à votre système de types. Voici pourquoi les retours d'erreur explicites rendent votre code plus honnête, et comment les adopter sans vous détester.

La signature de votre fonction dit qu'elle retourne un . C'est faux. Elle retourne un ou elle explose. Le système de types ne connaît simplement pas la seconde…

Les instructions switch laissent passer des bugs à la compilation

Les instructions switch TypeScript vous laissent silencieusement oublier des cas. Voici comment les remplacer par des patterns avec exhaustiveness checking qui font échouer le build au lieu de l'exécution.

Vous avez refactorisé un type de forme, ajouté une nouvelle variante, et TypeScript est resté vert. Votre CI a passé. Votre déploiement est parti. Puis un…

Le compilateur doit détecter les cas manquants, pas votre équipe QA

Ajouter un nouvel état à votre machine est facile. Se souvenir de mettre à jour chaque switch ne l'est pas. Voici comment faire en sorte que TypeScript refuse de compiler quand vous oubliez un cas.

Les state machines commencent propres. Trois valeurs, trois branches switch. Puis la logique de retry ajoute un quatrième état. L'échec partiel ajoute un…

Oui, mais votre système de types doit savoir ce qu'est un dollar

TypeScript considère tous les nombres comme identiques. Voici comment lui apprendre la différence entre USD et EUR pour que le compilateur détecte les bugs de conversion de devises avant qu'ils n'atteignent la production.

En 2022, une grande plateforme fintech a traité un virement groupé de 32 700 000,00. Le montant était stocké sous forme de brut. Un service en aval supposait…

Un nombre n'est pas qu'un nombre : comment faire en sorte que le compiler détecte les bugs d'unité

Passer des millisecondes là où des secondes étaient attendues est un bug qui passe tous les tests. Voici comment encoder les unités directement dans le système de types de TypeScript pour que les confusions échouent à la compilation, sans aucun coût à l'exécution.

Une fonction demande un timeout en millisecondes. Vous passez . Plus tard, une autre fonction demande un timeout en secondes. Vous passez . Entre les deux,…