46 liens privés
L'auteur explique qu'il a récemment dû mettre à jour son API vers une nouvelle version tout en maintenant l'ancienne pour les clients existants. Il a d'abord pensé à utiliser /v1/products pour la version actuelle et /v2/products pour la nouvelle, mais cette approche viole les principes REST et complique la maintenance. Les URL versionnées créent un couplage serré avec les clients, rendant difficile la gestion des versions obsolètes et entraînant une duplication de code. Une alternative RESTful consiste à utiliser les en-têtes HTTP pour négocier les versions, ce qui permet de maintenir des URI stables et de faciliter la compatibilité ascendante. Cependant, cette méthode nécessite que les clients configurent les en-têtes, ce qui peut être non trivial avec certains outils ou bibliothèques.
L'article explique comment protéger les sites WordPress contre les attaques par injection SQL, une méthode couramment utilisée par les hackers pour accéder aux bases de données. Les sites WordPress, représentant 43% des sites web, sont des cibles privilégiées en raison de leur popularité. Une injection SQL peut endommager un site, voler des données et verrouiller l'accès administrateur. Pour se protéger, il est crucial de valider les entrées utilisateur, éviter le SQL dynamique, mettre à jour régulièrement les thèmes et plugins, utiliser un pare-feu, cacher la version de WordPress, personnaliser les messages d'erreur de la base de données, limiter les permissions des rôles utilisateurs, activer l'authentification à deux facteurs, supprimer les fonctions inutiles de la base de données, surveiller l'activité du site et effectuer des sauvegardes régulières. En cas d'attaque, il faut vérifier la base de données, supprimer le code malveillant, restaurer une sauvegarde propre, changer tous les mots de passe et renforcer la sécurité du site.
L'architecture hexagonale, également connue sous les noms de Ports et Adapters, Onion Architecture, ou Clean Architecture, est un modèle architectural qui vise à protéger le code métier des dépendances externes. Elle utilise des adapteurs pour encapsuler les dépendances externes, permettant ainsi une indépendance totale du code métier. Les avantages incluent la facilité de développement et de test, la protection contre le vendor lock-in, et la possibilité de changer les implémentations externes tardivement. Cependant, cette architecture peut entraîner une phase de conception plus longue et des pertes d'opportunités d'optimisation. Elle est particulièrement adaptée aux modules de taille moyenne ou plus grands, aux projets longs, et aux environnements multiplateformes. Elle est moins adaptée aux petits modules ou aux projets nécessitant un démarrage rapide.
L'article aborde l'importance de connaître le temps de redémarrage des machines et de s'assurer que les équipements et services reprennent correctement après un reboot. Il soulève des questions sur la fréquence des redémarrages et leur impact sur la disponibilité des services. L'article met en avant la nécessité de tester régulièrement les procédures de redémarrage pour garantir la résilience des systèmes et minimiser les interruptions.
L'article explore comment intégrer l'IA dans le développement logiciel tout en maintenant des normes de qualité élevées. Il souligne que bien que l'IA puisse générer du code rapidement, la qualité, la cohérence architecturale et la maintenance à long terme restent des défis.
L'article propose d'utiliser des tests comme contrats pour guider l'IA, en s'inspirant du Test-Driven Development (TDD) et de l'architecture hexagonale. Les tests fournissent un langage formel et sans ambiguïté, permettant à l'IA de mieux comprendre les attentes. En intégrant ces tests dans le processus de développement, l'IA peut itérer sur le code jusqu'à ce que tous les tests soient réussis, assurant ainsi une meilleure qualité du produit final.
L'article conclut que l'expertise humaine reste cruciale pour utiliser efficacement l'IA dans le développement logiciel, notamment en matière de principes algorithmiques et de gestion de projet.
Tout est dans le titre
L'article présente ce que sont les transactions ACID.
Les transactions ACID sont un ensemble de principes garantissant la fiabilité des transactions dans les bases de données. ACID signifie Atomicité, Cohérence, Isolation et Durabilité. Ces propriétés assurent que les transactions sont complètes, maintenant l'intégrité des données même en cas de panne. L'atomicité garantit qu'une transaction est entièrement exécutée ou pas du tout, la cohérence maintient la base de données dans un état valide, l'isolation empêche les interférences entre transactions, et la durabilité assure que les modifications sont permanentes une fois la transaction terminée.
Les transactions ACID sont cruciales dans des domaines comme la finance et le commerce électronique, où l'intégrité des données est primordiale. Cependant, elles peuvent poser des défis en termes de performance et d'évolutivité, surtout dans les systèmes distribués. Les bases de données NoSQL, en revanche, adoptent souvent le modèle BASE (Basically Available, Soft state, Eventual consistency), privilégiant la disponibilité et la flexibilité à la cohérence stricte.
Pour optimiser les transactions ACID, il est recommandé de limiter leur portée, d'utiliser des transactions plus petites, et de choisir des niveaux d'isolation appropriés. La surveillance et l'enregistrement des transactions sont également essentiels pour maintenir les performances du système.
Tout est dans le titre
L'article traite des meilleures pratiques en matière d'authentification et d'autorisation, en particulier dans le contexte des API. Voici un résumé des points clés :
-
Authentification :
- HTTP Basic Authentication : Méthode simple mais peu sécurisée, utilisable uniquement dans des environnements très contrôlés ou pour des tests locaux.
- Clés API : Doivent être traitées comme des mots de passe, transmises via HTTPS et régulièrement renouvelées.
- JSON Web Token (JWT) : Plus sécurisé que les méthodes précédentes, mais nécessite une étape de connexion initiale. Idéal pour les applications web nécessitant une authentification utilisateur.
- OpenID Connect (OIDC) : Ajoute une couche d'authentification à OAuth 2.0, permettant une intégration sécurisée des identités sur Internet.
- Authentification Multi-Facteurs (MFA) : Renforce la sécurité en exigeant plusieurs facteurs d'authentification.
-
Autorisation :
- OAuth 2.0 : Mécanisme d'autorisation basé sur des jetons, permettant aux utilisateurs de donner accès à leurs données à des applications tierces sans partager leurs identifiants.
- Contrôle d'Accès Basé sur les Rôles (RBAC) : Assigne des permissions basées sur les rôles des utilisateurs.
- Contrôle d'Accès Basé sur les Attributs (ABAC) : Permet un contrôle plus fin en se basant sur les attributs des utilisateurs, des ressources et de l'environnement.
- Contrôle d'Accès Basé sur les Politiques (PBAC) : Combine les rôles et les politiques pour déterminer les privilèges d'accès.
-
Meilleures Pratiques :
- Utiliser HTTPS pour chiffrer les communications.
- Stocker les identifiants sensibles de manière sécurisée.
- Appliquer le principe du moindre privilège.
- Valider toutes les entrées utilisateur pour prévenir les attaques par injection.
- Limiter le nombre de requêtes pour éviter les abus.
- Surveiller et journaliser les activités pour détecter les comportements suspects.
-
Erreurs Courantes à Éviter :
- Utiliser HTTP au lieu de HTTPS.
- Stocker les clés API dans le code.
- Ne pas valider les entrées utilisateur.
- Ignorer les bonnes pratiques de sécurité.
L'article souligne l'importance de rester à jour sur les menaces de sécurité et de suivre les meilleures pratiques pour garantir la sécurité des API.
Tout est dans le titre
Tout est dans le titre
Les principes en question :
1 - Les lignes
2 - Les formes
2.1 - Les formes 3D
3 - Mise en page & Composition
3.1 - La hiérarchie
3.2 - La proximité
3.3 - Les espaces "blancs"
3.4 - L'alignement
3.5 - Les grilles
4 - L'équilibre
4.1 - “La règle des tiers”
5 - L'unité/ L’harmonie
6 - Le contraste
7 - L'emphase
8 - La répétition
9 - Les motifs
10 - Le rythme
11 - Le mouvement
12 - Les proportions
13 - La variété
L'auteur insiste sur la nécessité d'écrire : écrire pour documenter la vision, écrire pour réfléchir, écrire pour discuter, etc. C'est une compétence indispensable pour toute personne senior
Un article sur l'encapsulation et la notion d'objets anémiques
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre