[programming] Générer automatiquement le fichier compile_commands.json

Temps de lecture: 1 minute

Hello, petite astuce pour les utilisateurs de cmake, j’ai trouvé ces trois petites lignes pour générer et copier à la racine du projet le fichier compile_commands.json. Ce fichier est ensuite consommé par de nombreuses extensions vim notamment (clang-check par exemple).

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
file(TOUCH "${CMAKE_BINARY_DIR}/compile_commands.json")
configure_file("${CMAKE_BINARY_DIR}/compile_commands.json" "${CMAKE_SOURCE_DIR}/compile_commands.json" COPYONLY)

Happy hacking !

Clang-format format only on save for Visual Studio

Temps de lecture: 1 minute

It took me some times to understand how to format only on save on visual studio. Here are the steps for posterity:


  1. Install extension « format on save »
  2. Disable all the automatic formating options (« Automatically format X when I type Y »)
  3. Set « ClangFormat execution » to « Run ClangFormat only for manually invoked formatting commands »

The 3rd one is the most obscure. Without it, formatting will continue to happen, randomly making your cursor jump in the middle of a sentence because formatting occured and the file changed under your feet. 😉

Ledger cone Android feature request

Temps de lecture: 2 minutes

Twice last year I tried to do plain text accounting. And I failed to do so because it requires using the computer regularly to sort expenses that happened during the week. « Cone » is an Android app that enables you to all entries on the go. Then a computer is only needed for analysis.

Earlier on the irc freenode#plaintextaccounting salon, I had the chance to talk with the developer of « Cone » and I had a feeling that I could contribute some ideas on how to make the data entry faster.

Lire la suite Ledger cone Android feature request

Ubuntu 16 bugfix clavier désactivé [expert]

Temps de lecture: 1 minute

Grande mésaventure l’année dernière, mon clavier ne fonctionnait plus sous Ubuntu 16, je pouvais me connecter à ma session avec le clavier visuel uniquement. Après moulte péripéties, j’ai réussi à réparer tout ça en deux étapes.

Lire la suite Ubuntu 16 bugfix clavier désactivé [expert]

Hack n°1 – Votre attention vaut de l’or

Temps de lecture: 2 minutes

Oyez ! Oyez !

Si vous lisez cet article, j’ai la chance d’avoir votre attention !

Notre temps d’attention est une ressource précieuse que nous avons tendance à sous-estimer, c’est une ressource limitée dans le temps et que nous ne pouvons ni stocker ni récupérer.

Les GAFA le savent mais ne vous le disent pas : votre attention vaut de l’or.

Rappelons que Facebook et Google font plus de 80% de leur chiffre d’affaire uniquement grâce à la publicité.

Lire la suite Hack n°1 – Votre attention vaut de l’or

Tutoriel migrer playlists itunes vers mpd [niveau confirmé]

Temps de lecture: 1 minute

Lorsque j’ai quitté le monde Apple, c’est avec regret que je pensais avoir perdu mes playlists iTunes. Comme toujours avec open source, il y a moyen de bricoler. J’ai eu beaucoup de mal a importer mes playlists itunes dans mpd. Je ne précise ici que les étapes qui ne sont pas disponibles sur le net. Si vous voulez plus d’information sur le lecteur/serveur mpd, linuxfr a une très bonne introduction sur ce sujet. Voici comment j’ai réussi :

Lire la suite Tutoriel migrer playlists itunes vers mpd [niveau confirmé]

Tutoriel de configuration pour Taskwarrior C2 Android

Temps de lecture: 2 minutes

J’utilise taskwarrior au quotidien. C’est un excellent outil de gestion de tâches en ligne de commandes. Pour synchroniser mes tâches entre les ordinateurs, j’utilise FreeCinc. Il existe un client Android sobrement intitulé Taskwarrior C2 qui est bien fait, mais difficile à configurer. Je vais vous guider de la création de compte à la synchronisation.

Lire la suite Tutoriel de configuration pour Taskwarrior C2 Android

Types de données répliquées convergentes et commutatives

Temps de lecture: 2 minutes

TL;DR

Une thèse d’informatique traite des types de données permettant de créer des applications distribuées dont les données convergent sans synchronisation à priori. J’ai traduit et vulgarisé ce papier en deux articles.

Lire la suite Types de données répliquées convergentes et commutatives

Types de données répliquées convergentes et commutatives – Partie 2 : Exemples Pratiques

Temps de lecture: 8 minutes

«La cohérence à terme vise à assurer que les répliques d’un objet partagé modifiable convergent sans synchronisation à priori.»

Ce sujet est composé de deux articles : la première partie est théorique. Elle définit les propriétés mathématiques que doivent respecter les types de données répliqués convergentes et commutatives.

La seconde partie de l’article est un portfolio d’exemples pratiques. Y sont présentés les différents types de base et d’autres types plus élaborés.

Partie 2 : Exemples pratiques


Lire la suite Types de données répliquées convergentes et commutatives – Partie 2 : Exemples Pratiques

Types de données répliquées convergentes et commutatives – Partie 1 : Théorie

Temps de lecture: 4 minutes

«La cohérence à terme vise à assurer que les répliques d’un objet partagé modifiable convergent sans synchronisation à priori.»

Ce sujet est composé de deux articles (hors introduction) : une exploration théorique de ce qu’est un type de données répliquées convergent et commutatif. Cette première partie définit les propriétés mathématiques que doivent respecter ces types de données.

La seconde partie de l’article est un portfolio d’exemples pratiques.

Partie 1 : Modèle théorique


TL;DR

Partons du principe que le réseau distribue à la longue les opérations de mises à jour entre tous les nœuds. Les nœuds sont de confiance et peuvent être déconnectés et reconnectés. Les nœuds continuent à opérer pendant les instants de déconnexion.

Plusieurs contraintes sur les opérations possibles sur les objet de ces nœuds garantissent la cohérence à terme des répliques de cet objet partagé sans synchronisation, ni consensus, à priori.

En basant le type de données sur l’état, ces contraintes sont :

  • Associativité : fusion(x, fusion(y,z)) = fusion(fusion(x,y), z)
  • Commutativité : fusion(x,y) = fusion(y,x)
  • Idempotence : fusion(x,x) = x

En basant le type de données sur l’opération, ces contraintes sont :

  • Associativité : op(x, op(y,z)) = op(op(x,y), z)
  • Commutativité : op(x,y) = op(y,x)

Lire la suite Types de données répliquées convergentes et commutatives – Partie 1 : Théorie

Logiciels open source cross platform

Temps de lecture: 1 minute

Dans ma quête du système le plus versatile possible, j’ai accumulé une liste de logiciels qui sauvegardent si possible en clair leur configuration. Cela permet d’avoir une grosse Dropbox contenant tout mon contenu, et de déployer ces applications ad-hoc sans avoir à les configurer particulièrement.

  • Photo : digikam
  • Musique : mpd + cantata + beets
  • Livres : calibre, (non free android fbreader)
  • Gestion de tâches : taskwarrior
  • Edition d’images :gimp
  • Pdf: okular
  • Communiquer: signal

Edition 2017_12_14 : ajout édition image
Edition 2018_06_07 : ajout musique beets.io
Edition 2020_03_24 : remplace krita par gimp, ajout okular, signal, fbreader