L'Application du confinement pour se déplacer

Posté le Saturday, 14 November 2020 dans Programmation • Tags: android, programmation, java, confinement

Préambule: A cause du temps de validation du PlayStore, je publie cet article avec une semaine de retard.

Cela fait plus d'une semaine (quand j'écris ces lignes) que le re-confinement à commencé. Quand je vais courir, je dois me cantonner à 1km autour de chez moi. Mais quand je cours j'aimerais que mon téléphone intelligent me prévienne quand j'approche du rayon de 1km ou quand je le dépasse. Je ne souhaite pas avoir le nez sur une carte de mon téléphone.

Je regarde ce qui se fait. J'ai trouvé l'application suivante sur le play store : 1km. L'application m'avait l'air de répondre à mes critères mais ne fonctionnait pas lors de mon utilisation (en plus il y avait de la pub).

Une autre application 1km pourrait répondre à mon besoin mais je ne l'ai pas testé.

Beaucoup d'applications ont pour but de dessiner un cercle sur une carte.

J'ai finalement décidé d'écrire ma propre application (en plus elle sera open source).

Voici ce dont j'ai besoin:

  • une application open source
  • un gros bouton pour démarrer la surveillance (à partir de mon point de départ)
  • un avertissement quand on approche du rayon max des 1km.
  • un avertissement régulier qand on dépasse les …

Lire la suite ...

Comment créer une bonne API Web - Partie 2

Posté le Monday, 02 November 2020 dans Programmation • Tags: api, graphql, rest, javascript, nodejs

Bonjour,

Cet article fait partie d'un ensemble:

Qu'est qu'une API REST

REST est une norme dont voici les grandes lignes. Il n'est pas dans mon but de faire un cours sur REST (et il y en déjà de très bons sur internet). Je souhaiterais surtout parler des points qui me semblent importants. N'hésitez pas à venir me dire si vous pensez qu'il manque des points importants. Je viendrai alors compléter mon article.

Le principe de REST est de séparer l'API en différentes ressources logiques qui peuvent être manipulées par les verbes HTTP (GET, POST, ...). La réponse de son côté se base également sur les codes http.

Le contenu de la requête et de la réponse peut être dans le format objet de votre choix (json, yaml, xml, ...). On utilise alors le header Content-Type pour définir le contenu. Une API peut d'ailleurs gérer plusieurs formats et répondre au client le bon format en fonction de la demande du client.

Basé sur des ressources

Quand on parle de REST, il faut penser ressources. Mais qu'est qu'une ressource ?

Une ressource c'est un concept abstrait de REST. Une …


Lire la suite ...

Comment créer une bonne API Web - Partie 1

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

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 API puisse continuer à l'utiliser sans devoir tout …

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 ...