Vol au vent minute

Ingrédients 400gr de filets de poulet 200gr de haché 300gr de champignons 100ml de lait 50ml de crème fraîche 3 c.a.s de farine fermentante 1 citron épices pour poulet Préparation confectionner de petites boulettes avec le haché découper les filets de poulet en petits dés les déposer dans le plat pour micro-ondes ajouter les épices […]

, , ,

Pas de commentaire

The Hidden Dangers of std::function and lambdas

Once upon a time, there was an active object which had callbacks using std::function.On the same day, a user of this object registered a callback function which, in its core, cancelled the registration. That callback was a lambda that aside of that took some reference in the current context.And guess what happened ? Here is […]

Pas de commentaire

Making patch files

Assume you have a library X, version 1.2.3, extracted in libX-1.2.3/ and that you have to integrate some fix in the build process. You would create a patch file that is applied before building that library. But how do you make the patch files depend on how you apply them. To start, you save the […]

Pas de commentaire

Noix de Saint-Jacques au cidre

Ingrédients 500g de coquilles Saint-Jacques, nettoyées et prêtes à cuire 50g de beurre 2 échalotes hachées menu 40g de farine 150ml de cidre brut 50ml de lait 100g de champignons émincés sel et poivre moulu 250ml de crème fraîche épaisse persil haché pour la garniture Recette Dans le plat Ultra+, mettre le beurre et les échalotes. […]

, ,

Pas de commentaire

Panic moments: Ubuntu wouldn’t boot properly after upgrade to Xenial

Xenial being released for quite some time now, I decided on a sunny Friday afternoon to do the big jump from Trusty to the latest greatest release. Used to the command line, I launch the "do-release-upgrade" command. 1500+ MB of packets to be downloaded, thousands to be upgraded, some new to be installed and about […]

,

Pas de commentaire

Untabify from the Linux command line

Every now and then, we get some source file that has those nasty relics from a distant path, namely tabs instead of spaces to make indentation. Of course, you can load the affected files one by one in your favorite editor and provided that you can specify some kind of regular expression in a global […]

Pas de commentaire

boost goodie to clamp numbers

How do you clamp a number in a given range in C++ ? Classical way to do it is: double clamped = std::min(maxValue, std::max(minValue, value)) But why repeat this magic formula when boost has clamp() for you ? From now on, do: #include double clamped = boost::algorithm::clamp(value, minValue, maxValue)

,

Pas de commentaire

Namespace, template typedef and operator overloads – The Evil trio

What an unconfortable situation ? I had the following code which would not compile. // Range.h #include <boost/numeric/interval.hpp> #include <iostream> namespace App { template <typename T> using Range = boost::numeric::interval<T>; template <typename T> std::ostream& operator<<(std::ostream &os, const Range<T> &r) { … } } // namespace App // Filter.cpp #include "Range.h" #include <iostream> namespace App { […]

Pas de commentaire

Correctly handling attached files with Poco::Net::HTMLForm

I recently had to develop an visualisation application. To make it easier to deploy, I chose to make it a C++ application with embedded web server. In that application, there is a need for the user to submit some data to be analyzed. Users have the choice to submit text directly (filling in a textarea) […]

, , , ,

Pas de commentaire

Moving an object that wraps a vector and an iterator on that vector

I recently stumbled upon code that looked very suspicious to me. Basically, it was a class which amongst other things held a vector and some iterators from that vector. Something like this: struct Wrapper {     typedef std::vector<int> Data;     Data data;     Data::iterator active;     Wrapper() :         data(),         active(data.end())     { } […]

, ,

Pas de commentaire