Ports and Adapters at compile-time for Rust
Dans ce dépôt, je propose une façon simple et efficace de mettre en œuvre une inversion de dépendances avec Rust. Plus particulièrement lorsque le besoin est de substituer les dépendances lors de la compilation et d'éviter le Dynamic Dispatch. Très u…
Elixir amqp 1.2 et confirm handler
RabbitMq permet de recevoir des confirmations de ventilation des messages par l'exchange. Le client Elixir, amqp (> 1.2) permet d'attendre de manière bloquante ces confirmations, mais ne propose pas d'API pour enregistrer un handler. Ce qui m'a do…
Du dosage de la rouille
Parlons de la rouille, cette délicieuse sauce qui accompagne nos soupes de poisson. Le bon dosage des ingrédients ravira le palais vos convives ! Pour faire une portion de rouille les ingrédients sont : 1/2 gousse d'ail dégermée 1/8 petit piment…
J'ai une dette technique et c'est mon choix ! ™
Derrière cette métaphore financière que l’on utilise régulièrement dans notre métier, se cache la mesure de difficulté à ajouter de nouvelles fonctionnalités et correctifs sur un logiciel. Elle se traduit par un surcoût sur les temps de développement…
Le contrôle de droit d'accès et la sécurité de vos systèmes
Sur la quantité d’applications et systèmes d’information que j’ai pu développer, analyser et auditer, une grande majorité présentaient des défauts de sécurité majeurs. C’est un constat assez effarant. Le plus inquiétant est que la gestion des droits …
Initiation au développement de plugins Redmine
Redmine est un outil de gestion de projet que j’affectionne pour sa simplicité et son accessibilité. Dans sa version originale il permet de gérer un éventail très large de types de projets, pas uniquement a destination des équipes de développement, m…
Polymer, vers un composant plus dynamique
Dans le précédent article nous avions réalisé un composant simple et inerte, aujourd’hui nous allons le rendre un peu plus intéressant. Nous allons d'abord faire un petit nettoyage. Ensuite, nous utiliserons les « data binding » pour avoir un compteu…
Premiers pas avec Polymer
Polymer est un ensemble de bibliothèques permettant de créer des éléments et applications reposant sur le principe des « Web Components » que j’ai introduit dans mon précédent article. Pour cette introduction nous allons nous concentrer sur la réalis…
Web Components, l'avenir du web aujourd'hui
Peut être avez-vous déjà souhaité pouvoir définir de nouveaux éléments HTML que vous pourriez réutiliser ou partager avec d’autres ? AngularJS avec ses directives vous a sûrement apporté un élément de réponse. Si on pousse le raisonnement un peu plus…
Bintje an OpenObject XMLRPC ruby client
Few month ago, I released Bintje, a minimal interface to OpenERP's xmlrpc API. It is available on github, as a ruby gem, and can be included in the ruby class of your choice (as a Rails model for example). It still an early version, but is usable in …
Acessing AngularJS Scope from browser console
Times to times, one needs to interact with AngularJs at runtime (for debugging purpose ...). My Teamates frequently ask me "how do I ... check this directive isolated scope structure" for example ... I think the simple answer is : Select the directi…
Adavanced Rails authorizations with pundit
Pundit is a realy simple Ruby Gem, that does nothing more that you could have done yourself. Here is the power ! When updating to Rails 4 in it's early days, you had no compliant authorization solutions. Ryan Bates's Cancan was the most used due to i…
Airbrake fix
After installing airbrake gem my collection's request Rspec.specs stoped working as expected. I encounterd this error: RuntimeError: can't add a new key into hash during iteration Since Ruby 1.9(.3?) you cant modify Hash within iteration (even i…
Disabling Rails sessions and airbrake gem
After installing airbrake gem and disabling your rails sessions (for example with the session_off gem), you may experiment this kind of errors : undefined method `data' for nil:NilClass This is because airbrake read the session.data property to …