Comment créer une bonne API Web

Posté le Sunday, 11 October 2020 dans Programmation • Tags: api, graphql, rest, javascript, nodejs

Comment créer une bonne API Web - Partie 1

Bonjour,

Je souhaite vous parler de l'écriture d'API. Je vais découper cet article en 3 parties:

Je me limiterai au WEB et aux normes REST et GraphQL même s'il y a d'autres normes/frameworks pour écrire des API.

Commençons donc par le début ! Qu'est-ce qu'une API ? API signifie Application Programming Interface. C'est une interface de programmation prête à être consommée par un client.

Par exemple quand on développe une librairie (en C/C++, voir un module NodeJS, ...), on définit une liste de méthodes que l'on rend publique et qui sont utilisées pour appeler cette librairie. Ces méthodes sont alors utilisées par des clients. L'API c'est ce contrat entre la librairie et le client.

Dans le cadre d'un site internet, l'API est le contrat entre un site internet et le client qui l'appelle. Comme tout contrat il faut que celui-ci soit clairement défini si on veut que ça se passe bien entre les clients et les services.

Il est important pour une bonne API public:

  • d'être stable dans le temps, ceci afin qu'un client qui utilise une …

Lire la suite ...

Woodstock Backup v1.0.0

Posté le Sunday, 20 September 2020 dans Woodstock • Tags: backup, sauvegarde, btrfs, rsync, javascript, nodejs

Bonjour à tous,

Un projet s'en va et un autre commence. Je suis heureux de vous présenter ce nouveau projet: Woodstock Backup.

Genèse du projet

Mes problèmes

Pour faire des sauvegardes, j'utilisais jusqu'ici BackupPC. C'est un très bon logiciel pour effectuer des sauvegardes de plusieurs machines sur une instance centralisée.

BackupPC est écrit en Perl avec des partie en C. En effet il se base sur un fork de rsync qui permet d'enregistrer le résultat des sauvegardes dans un format qui lui est propre. Malgré qu'il fonctionne très bien j'ai eu plusieurs problèmes avec récemment.

Il permet de faire des sauvegardes lancées depuis un serveur centralisé. Ce dernier vérifie régulièrement si les différents PC à sauvegarder sont présents sur le réseau et s'y connecte pour faire les sauvegardes sur la base d'un calendrier.

Le serveur a besoin de pouvoir se connecter sur tous les clients (incovénient que je suis prêt à accepter) mais les clients n'ont du coup pas besoin de devoir se connecter au serveur (avec le risque qu'un client compromis, compromette le serveur).

BackupPC est également capable de décider de l'heure de la sauvegarde en fonction de la date de la dernière sauvegarde ainsi que de la présence …


Lire la suite ...

Fin de Passprotect

Posté le Monday, 27 July 2020 dans Passprotect • Tags: passprotect, javascript, nodejs, password, bitwarden

Bonjour à tous,

Cela fait longtemps que je n'ai pas écrit de billet de blog (3 ans et demi). Et il s'en est passé des choses. Je travaille actuellement sur un nouveau projet dont je reviendrai vous parler plus tard.

A aujourd'hui je souhaiterais surtout vous parler de la fin de service de mon propre gestionnaire de mot de passe Passprotect.

Ces dernières années, j'ai utilisé mon propre gestionnaire de mot de passe: Passprotect développé par mes soins :). Je n'avais pas trouvé mon bonheur par ailleurs (OpenSource, Client WEB, ...) et avais décidé de développer le mien.

Puis j'ai découvert Bitwarden.

La Fin

L'avantage d'utiliser un logiciel fabriqué par soi-même est la fierté de l'utiliser et de voir d'autres personnes l'utiliser également.

Malheureusement Passprotect ne possédait que deux utilisateurs actifs (et quelques Bot/SPAM) et ne proposait pas les fonctionnalités que d'autres proposaient. J'aurais pu les développer mais n'ayant pas assez d'utilisateurs, je n'avais pas assez de motivation pour le faire.

J'ai développé mon gestionnaire de mot de passe, à moi, car je ne me retrouvais pas dans les gestionnaires de mot de passe existants. Puis un jour, par hasard, j'ai découvert bitwarden.

J'ai alors décidé de le tester, (et cela …


Lire la suite ...

FindSimilarity - Trouver les différences entre plusieurs vidéos

Posté le Saturday, 10 December 2016 dans Programmation • Tags: qt, opencv, video, debian

Introduction

Bonjour,

Je souhaite vous présenter une petite expérience que je viens d'écrire.

Cela fait plusieurs années que je souhaitais m'amuser sur la librairie OpenCV mais sans jamais en avoir eu l'utilité. J'ai profité d'avoir un peu de temps libre, pour écrire un petit programme dont le but est de comparer un ensemble de vidéos.

Le but est ensuite de dire si dans cet ensemble de vidéos, deux vidéos sont identiques, ou se ressemblent, ou sont trop éloignées.

J'ai souhaité faire cette expérience par amusement, je n'ai donc pas passé beaucoup de temps sur la qualité du code écrit. Ce dernier aurait pu être mieux découpé, posséder des commentaires, des tests unitaires, ... . Si vous voulez utiliser ce code pour un véritable usage production, n'hésitez pas à améliorer celui ci.

Vous pouvez trouver le code source de cette expérience à l'adresse suivante : https://gogs.shadoware.org/ShadowareOrg/find-similarity.

Le jeux de données

J'ai pris plusieurs films en DVD que je possède. Possédant un NAS, et une chromecast, j'encode ces DVD au format vidéo et je les y dépose. Malheureusement la qualité est dégradée par rapport au DVD.

Pour constituer le jeu de données, je prends ces films encodés, que je dépose …


Lire la suite ...

Passprotect 1.0.0

Posté le Sunday, 02 October 2016 dans Passprotect • Tags: passprotect, javascript, nodejs, password

Bonjour à tous,

Passprotect est un nouvel outil permettant d'enregistrer et de gérer vos mots de passe. L'idée derrière Passprotect est de pouvoir enregistrer et lire les mots de passe de vos sites Internet, de vos cartes de crédit, ou de toute autre forme de texte que vous voudriez garder en sécurité.

La concurence

La première question que l'on peut se poser est Pourquoi ne pas avoir choisi une solution existante ? ? Alors passons en revue les différents outils que j'utilise actuellement ou dont j'ai étudié la possibilité d'utiliser :

  • aWallet: Un outil pour android que j'utilise actuellement (sans la partie synchro). Même si l'utilise jusqu'à présent régulièrement, le logiciel ne me convient pas. Il est propriétaire. Je n'ai pas confiance dans la synchro cloud. Je ne peux pas l'héberger moi même.
  • LastPass: propriétaire, trop compliqué,
  • KeePass: Client lourd, je souhaitais un client léger avec potentiellement un futur client lourd sur android, et une extension chrome.
  • Encryptr: Libre :) Belle interface :) Mais basée sur un serveur crypton distant. J'aurais bien sûr pu forker le projet et le faire pointer sur un de mes serveurs, installé manuellement, mais non.

Une autre raison de vouloir faire ma version, est tout simplement pour m'amuser :D.

L'interface …


Lire la suite ...

Mon livret de messe - Site de génération de livrets au format PDF

Posté le Wednesday, 19 March 2014 dans Logiciels • Tags: dedie, livrets, mariage, bapteme

Mon livret de messe - Générateur de PDF

Bonjour,

Ce petit billet pour vous parler d'un site que j'ai développé pour ma femme et dont l'adresse est http://monlivretdemesse.fr. Ce projet que je développe depuis plusieurs années, a été mis à jours récément. Je profite de cette mise à jours pour vous parler de ce projet fonctionnellement mais aussi techniquement.

Monlivretdemesse.FR est un site permettant aux utilisateurs allant se marier de générer leur livret de messe au format PDF afin de l'imprimer directement chez eux. Les pages du livret ainsi générées sont alors ordonnées de telle manière qu'il suffit de faire une impression recto/verso puis de plier les feuilles pour avoir son livret. Je me suis chargé du développement de ce site, pendant que ma femme se charge du contenu (donc le contenu des textes, des images, mais aussi et surtout le thème de chaque produit, leur format).

La nouvelle version sortie le 11 mars 2014 permet également la création d'autres types de produits afin de générer des

Le site a été écrit à l'aide du framework Symfony2 …


Lire la suite ...

Passage du site sous Pelican

Posté le Saturday, 12 January 2013 dans Logiciels • Tags: dedie

Bonjour à tous,

Cela fait bien longtemps que je n'ai rien écrit sur ce site. Et pour cause, je suis bien occupé :D.

J'ai quand même pris un peu de temps récemment pour passer entièrement mon site sous Pelican.

C'est mon cadeau de Noël de Geek ;).

Qu'est-ce que Pelican ?

Pelican est un gestionnaire de blog statique.

Qu'est-ce que ça veut dire ?

Cela signifie que je vais écrire mes billets avec mon éditeur de texte préféré (kwrite), au format Markdown (ou restructuredText), et que je génère mon blog au format HTML avant publication. (De la même manière que l'on compilerait un programme).

Le serveur n'a alors besoin de servir que des fichiers statiques, il n'y a donc pas de surplus de mémoire, ou de délai dû à la nécessité de générer les pages.

Les pages n'étant pas modifiées tous les jours, il n'y a de toute façon pas d'intérêt de générer les pages à chaque accès.

Les avantages indéniables sont les suivants :

  • Pas de base de données, pas de page générée à la volée : donc pas de temps de latence. La page est servie dés qu'elle est demandée. De plus il existe un plugin permettant de générer les pages au format …

Lire la suite ...

Cross-Compilation - Compiler un programme pour MS/Windows sous Gnu/Linux

Posté le Sunday, 01 July 2012 dans Programmation • Tags: qt

Qu'est que la cross-compilation1 ?

La cross compilation est la possibilité sur une machine avec un matériel spécifique (architecture) et avec un système d'exploitation donné, de compiler des programmes pour une autre architecture, ou pour un autre système d'exploitation.

Cela peut être utilisé par exemple pour compiler un programme sur votre ordinateur de tous les jours (sous Gnu/Linux, avec une architecture i386) à destination de votre téléphone mobile, qui lui est sous Symbian avec un processeur ARM.

Les raisons de faire de la compilation croisée peuvent donc être multiples :

  • Éviter de redémarrer votre machine pour compiler vos binaires.
  • Disponibilité des outils sur votre machine / Indisponibilité des outils de compilation sur la machine de destination (on trouve rarement des outils de compilation sur des téléphones portables2).
  • Puissances des calculs (la compilation prendra moins de temps sur votre PC de bureau que sur votre appareil mobile3).
  • Licence : Vous voulez compiler à destination d'un système d'exploitation que vous ne possédez pas

Attention: La compilation croisée ne garantie pas que programme fonctionnera, vous devrez toujours faire quelques tests à partir d'un émulateur ou à partir du système d'exploitation final.

Bref, à partir du moment où vous avez besoin de compiler un …


Lire la suite ...

KMDAlert - Logiciel de surveillance de périphérique RAID - Version pour KDE 4.0

Posté le Sunday, 14 August 2011 dans KMDAlert • Tags: kde, qt, kmdalert, raid

Présentation

Possédant chez moi des disques durs en RAID logiciels sous Gnu/Linux, en 2007 (cela fait déjà 4 ans), j'avais écrit un petit logiciel dont le but était de faire du monitoring RAID.

En cas de reconstruction du RAID ou de disque défectueux, le logiciel affiche une notification à l'utilisateur, et change le statut affiché dans la barre de notification (systray). L'icône change bien sur en fonction de l'état du RAID :

  • dégradé (avec un point d'exclamation)
  • en cours de synchronisation (avec une barre de progression)
  • disque RAID dans un état normal

Ce logiciel ne tournait que sous KDE 3.X.

Voici donc une nouvelle version (qui a mis le temps de sortir) qui est un portage de l'application sous KDE 4.X. Elle utilise donc le nouveau système de notification de KDE (pour l'instant en passant uniquement par les notifications standard). Quelques améliorations y seront apportées plus tard.

Requis

Pour fonctionner KMDAlert nécessite que le dossier /sys soit monté et que /sys/block/ soit renseigné pour chaque volume RAID (exemple /sys/block/md0, /sys/block/md1, ...). KMDAlert observe ensuite les modifications faites sur les fichiers pour informer l'utilisateur des modifications faites sur le volume RAID ou sur les disques …


Lire la suite ...

qGenConfig - Générateur de classe

Posté le Saturday, 06 August 2011 dans QGenConfig • Tags: qgenconfig, qt

Présentation

Ce logiciel permet de générer des objets Qt héritant de QConfig à partir d'un fichier écrit au format XML.

Lors de la sauvegarde de paramètres avec Qt, il faut généralement écrire des choses ainsi :

QSettings settings("MaBoite", "MonLogiciel");

settings.beginGroup("Ma fenêtre");
settings.setValue("Taille", win->size());
settings.setValue("Pleine écran", win->isFullScreen());
settings.endGroup();

Puis pour récupérer les mêmes paramètres, il faut écrire :

QSettings settings("MaBoite", "MonLogiciel");

settings.beginGroup("Ma fenêtre");
QSize size = settings.value("Taille").toSize();
bool fullscreen = settings.value("Pleine écran").toBool();
settings.endGroup();

Si les valeurs doivent être récupérées dans toute l'application et qu'un jour l'un des paramètres change de nom, de type, ou de groupe, il ne sera pas possible d'être sûr que tous les endroits de l'application sont bien modifiés lors de la compilation.

C'est là qu'intervient qGenConfig.

Le but est d'écrire un fichier XML représentant la configuration du logiciel et possédant une certaine structure (des groupes, et des valeurs). Le programme parcourt ensuite ce fichier et génère une classe permettant de lire et d'enregistrer la configuration à l'aide de qGenConfig. Le contenu des données est alors stocké dans une structure C, et permet l'accès facile aux données de configuration. Si une donnée …


Lire la suite ...