Utiliser Dead Letter dans RabbitMQ pour temporiser les messages en cas d'erreur

RabbitMQ est rapide, parfois un peu trop par rapport au reste de l'infrastructure. Un retard de réplication en base de donnée peut planter la consommation d'un message. Je montre mon cheminement pour gérer ce problème et l'utilisation des options dead letter exchange et dead letter routing key pour temporiser le traitement d'un message.

Lire la suite

Protéger son authentification symfony3 contre les attaques par force brute

Tout formulaire d'authentification est susceptible d'être attaqué par un hacker (enfin plus un robot) via une brute force. Cette attaque consiste à tester des couples login/password jusqu'à en trouver un qui permet de s'authentifier. Dans cette article je vais vous montrer comment se protéger facilement de ces attaques dans une application Symfony3 ou 2 via l'utilisation des Events de Symfony. C'est aussi l'occasion d'utiliser le composant cache introduit dans Symfony 3.1.

Lire la suite

Tags et CompilerPass de Symfony2 expliqués par l'exemple

Le container de dépendance est le composant central de Symfony2, tout le monde l'utilise. Moins sont les développeurs qui utilisent les tags dans la définition d'un service et malheureusement peu savent comment ça marche. C'est l'object de cet article, montrer par l'exemple l'utilité des tags et leur utilisation via le CompilerPass. Cela permet de réduire les dépendances entre les classe facilite la maintenabilité du site.

Lire la suite

Packager son code dans une archive PHP: PHAR

Dans cet article, je montre comment regrouper son code dans une archive PHP Phar. Cette étape un peu compliqué, est aujourd'hui grandement facilité par des outils disponibles sur Github. J'illustre ici, l'utilisation de clue/phar-composer.

Lire la suite

Utiliser le composant Config de Symfony2 pour valider les fichiers XML et YAML

Cet article parle du composant Config de symfony2 qui permet d'exposer sémantiquement une configuration et de la valider. Pour me casser souvent les dents dessus, j'ai décidé de compiler ici quelques trucs utiles qui n'apparaissent pas dans la documentation officielle.

Lire la suite

Comment Doctrine2 ORM a tué le bénéfice de mon cache pour soulager ma base de donnée

Aujourd'hui je vous raconte une petite histoire à propos de MariaDB et Doctrine2 en train de couler et comment Redis, venant les sauver, les coule encore plus vite. Retour d’expérience sur mes déboires avec Redis et Doctrine2 en espérant soulager un MariaDB a bout de souffle.

Lire la suite

Mettre de la couleur dans le client MySQL / MariaDB

Dans cet article je vous présente une config qui permet de mettre le client MySQL / MariaDB en couleur pour faciliter la lecture des résultats de vos requêtes SQL.

Lire la suite

Utiliser le composant Expression Language de Symfony2 dans les fichiers de services YML et XML

Cet article montre, par l'exemple, l'utilisation et la syntaxe du composant Expression Language de Symfony2 dans les fichiers de services écrit en XML ou en Yaml. Ce composant permet d'ajouter du dynamisme aux fichiers de configuration.

Lire la suite

Utiliser le compte linux pour se connecter de façon sécurisé à MariaDB et MySQL sans mot de passe

Plus besoin de se souvenir de son mot de passe pour se connecter à un serveur linux, les clées SSH assurent l'authentification. On peut avoir la même chose sur MySQL et MariaDB. Via un plugin, le serveur de bdd fait confiance aux credentials du système linux, il suffit d'avoir un compte mysql portant le même nom que le compte linux et le mot de passe disparait de la connexion. C'est idéal sur un serveur de développement avec plusieurs utilisateurs et cela facilite grandement la gestion des comptes, même si on oublie de supprimer le compte mysql, la suppression du compte linux suffit.

Lire la suite

Fix le démarrage du serveur RabbitMQ avec les logs système en RAM sur Debian

Astuce pour débloquer le lancement de RabbitMQ sur un serveur Debian, si vous avez déplacé le dossier de logs dans un montage temporaire.

Lire la suite