Category: Coding
-
Beware of C++11 `auto`
Here’s a puzzler for you: given the code below, what does the for loop print? using HandlersMap = std::map<std::string, std::function<std::string(const std::string&)>>; using MetaMap = std::map<std::string, HandlersMap>; void insert(MetaMap& meta, const std::string& key, const std::string& sub) { auto handlers = meta[key]; handlers[sub] = [=](const std::string& msg) { return “The response for ” + sub + ” […]
-
Detection of Fast-Moving Objects (FOM) using OpenCV
A “fast-moving object” (FOM) in the world of image detection is defined as one whose motion is faster than can be captured by a single image, and will result in a blurred “streak”. This poses some challenges when trying to detect its speed and trajectory, as well as estimating future trajectory and impact. Typical examples […]
-
File Encryption Utility now offers file sharing
With the 0.5.0 version just released, crytto now allows file sharing (e.g., via email) by sharing public keys: encrypt_send -o /tmp/my-secret.enc \ -p /home/marco/.ssh/my-key.pub \ ./my-secret.doc This generates an encrypted file (in the location specified with the -o option) and an equally encrypted “passphrase” which can then be sent (ideally via a separate sharing mechanism; although, as […]
-
Gossip-based Failure Detectors – 0.8.0 released
We have just released version 0.8.0 of our distlib C++ library that implements a number of popular distributed systems algorithms. This concludes a first iteration of the “SWIM Gossip Protocol” for failure detection: the implementation is now fully thread-safe and can scale up to many servers with minimal process overhead. The gossip_example.cpp toy server shows how a client […]
-
File Encryption (and Decryption) Made Easy
A new release of the Crytto library (0.4.0) has just been published, which greatly simplifies encrypting (and decrypting) files The new release adds the decrypt script which, when combined with the existing automatic retrieval of the encryption key from the keystore, makes it a breeze to decrypt files. For example, if you had encrypted your […]
-
Using `notify-send` and `yagmail` to send an alert if /boot partition is about to run out of space
Sometimes, you need to send both a visual and email alert for something that is checked using a background process (for example, running a `crontab` job): `notify-send` and `yagmail` provide a more user-friendly alternative on Ubuntu Linux desktop than scraping logs.
-
HOW-TO Generate an SSL Certificate with letsencrypt.com
There is a wealth of documentation about how to generated a Certificate using letsencrypt, the EFF free tool. However, if you are using g-suite to manage your main website or want an SSL certificate to do some testing during development, and may not have shell access to the WWW server (and, further, you are unable […]
-
A better mousetrap (or, how to improve on Java 8 Optional)
Overview The java.util.Optional class is a great addition in Java 8 as it enables a more expressive way of conveying the concept of a library API return value that may not be there. While it is not meant to replace the use of null values in code (and you will get warnings not to use […]
-
HOW-TO Publish a Pyton Package on PyPi
Create a setup.py file The arguments for setup() are documented here and are non-trivial: a good example is my filecrypt‘s setup.py file. NOTE Do not confuse setuptools with distutils – this is the correct import for setup.py: from setuptools import setup The trickiest part is figuring out the packages, modules and the script files: probably […]
-
Docker for Mac and insecure registries
If you are using a private registry with a self-signed certificate, and need to connect to it from a macOS laptop, you are likely to incur in the following error: $ docker-compose up -d Pulling search (docker.registry.mydomain.io:5000/image:2.0.1)… ERROR: Get https://docker.registry.mydomain.io:5000/v1/_ping: x509: certificate signed by unknown authority it turns that (a) there is not much of […]