Deblan blog

Développement

Menu personnalisé dans Nextcloud 🎨

Depuis avril dernier, l'application Custom menu (anciennement Side menu) a beaucoup évoluée et pas moins de 46 versions ont déjà été publiées. Custom menu est complet et très stable.

Nextcloud est une plateforme web qui se compose d'applications pour faire tout et n'importe quoi. On peut héberger et partager des documents, gérer ses calendriers et ses contacts, enregistrer ses marque-pages, lire des flux RSS, réaliser des sondages, etc.

Selon moi, quand on active beaucoup d'applications, un des problèmes principaux est le menu qui n'est pas du tout adapté.

Nextcloud

Pour résoudre ce problème, j'ai entrepris le développement d'une application dédiée à la gestion de ce menu et j'ai publiées les premières versions pendant le confinement du début d'année.

Custom menu est totalement personnalisable. On peut modifier l'emplacement du menu selon trois dispositions : dans un panneau latéral, affiché en permanance comme le menu d'Ubuntu ou via un panneau qui s'ouvre sur le dessus. Vous pouvez bien sur choisir les couleurs de tous les éléments, afficher votre logo, la photo de profil de l'utilisateur ou rien du tout, choisir la taille du texte celle des icônes, etc.

On peut aussi désigner des applications qui doivent rester affichées dans le menu original, choisir lesquelles doivent s'ouvrir dans un nouvel onglet et si l'administrateur le permet, alors chaque utilisateur pourra faire sa propre organisation.

Custom menu est compatible avec AppOrder de manière à pouvoir choisir l'ordre d'affichage des applications.

Custom menu

Si vous êtes curieux, n'hésitez pas à tester Custom menu et si vous avez des idées pour faire évoluer l'application ou que vous rencontrez un bug alors je vous invite à ouvrir un ticket sur le dépot du projet.

Enfin, si vous désirez soutenir mon travail, vous avez la possibilité de m'offrir un café 😀


Application Nextcloud : nouvel emplacement pour le menu

En ces temps de confinement, j'essaye de travailler sur les quelques idées de projet de ma todo list 📘

Aujourd'hui j'ai publié une application destinée à Nextcloud et qui permet de modifier l'affichage du menu principal pour en faire un panneau qui s'ouvre sur la gauche de l'interface : Side menu. Cette application est plutôt adaptée aux instances qui activent beaucoup d'outils 🔨

Pour l'installer, vous pouvez passer par le gestionnaire d'application de Nextcloud ou vous pouvez l'installer manuellement en suivant les instructions (en anglais) disponibles dans le dépot du projet 🧪

Une fois installée, la liste des applications du menu supérieur sera masquées et une bouton va apparaître à gauche du logo. C'est depuis ce bouton que vous pourrez afficher le menu. Fonctionne sur bureau, tablette et mobile 📱

Application side_menu Nextcloud


Monitoring d'un terrarium

Il y a quelques semaines, nous avons acheté un terrarium pour le pogona de ma chère et tendre moitié. C'est un animal qui implique un environnement particulier avec des températures de jour et de nuit à ne pas dépasser, et une hygrométrie qui ne doit pas franchir le 50%.

On a installé un thermomètre et un hygromètre analogiques mais les valeurs ne sont pas précises à la lecture. Cela a été un bon prétexte pour jouer avec un Raspberry PI et entreprendre l'installation d'une sonde pour mesurer la température et l'hygrométrie. On a en profité pour ajouter une caméra infra-rouge. Nous pouvons donc avoir des alertes quand les seuils sont dépassés et il est possible de quitter l'appartement tout en gardant un œil sur le dinosaure 🦖

Le Raspberry PI utilisé est le modèle 4 avec 2Go de RAM muni de Raspbian Lite. La vidéo s'appuie sur la caméra fisheyes à vision nocturne et le logiciel Motion combiné au frontend MotionEye. Le capteur est un AM2302 et mesure la température et l'hygrométrie.

Le Raspberry PI est dédié pour faire les mesures et gérer la caméra. Les mesures sont envoyées vers une application web développée en PHP avec Symfony pour produire de jolis graphiques 📈. Des enregistrements vidéos sont également réalisés lorsqu'un mouvement est détecté. Les captures sont récupérés périodiquement vers l'application web afin qu'on puisse les consulter quand on veut 📽

Le résultat est plutôt pas mal cool et on apprécie vraiment l'aide que ça apporte !


Analyser efficacement un fichier CSV

Je travaille régulièrement sur des traitements de fichiers CSV. J'apprécie beaucoup ce format de fichier car il se génère et se lit facilement, qu'on soit informaticien ou non. J'ai d'ailleur écrit 2 librairies PHP pour lire, générer et valider des CSV : deblan/csv et deblan/csv-validator.

Lors des mes analyses, je me confronte parfois à des fichiers qui comportent beaucoup de colonnes et c'est un enfer d'utiliser un tableur pour visualiser et filtrer ces tableaux très larges.

Après quelques recherches, j'ai découvert deux projets qui se complètent à merveille ! Le premier est un outil qui transforme un fichier CSV en une base de données SQLite : csvs-to-sqlite. Le second génère une interface web (avec un serveur web intégré) pour faire des requêtes SQL sur une base de données SQLite : datasette.

Ce sont des outils écrits en Python qui s'installent et s'utilisent en une poignée de secondes.

$ sudo pip3 install csvs-to-sqlite datasette

Pour illustrer, je vais traiter le fichier CSV de la base officielle des codes postaux disponible sur data.gouv.fr.

$ wget -O codes_postaux.csv https://datanova.legroupe.laposte.fr/explore/dataset/laposte_hexasmal/download/\?format\=csv\&timezone\=Europe/Berlin\&use_labels_for_header\=true
$ csvs-to-sqlite -s ";" codes_postaux.csv codes_postaux.db
$ datasette serve codes_postaux.db
Serve! files=('codes_postaux.db',) (immutables=()) on port 8001
INFO:     Started server process [8550]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit)

On peut maintenant accéder à http://127.0.0.1:8001 depuis un navigateur et commencer à analyer et traiter les données :

datasette

Et le plus intéressant pour moi, c'est de pouvoir écrire des requêtes SQL affiner vraiment les données affichées :

datasette

Enfin, on peut générer un nouveau fichier CSV (ou JSON) avec les données filtrées.

Simple, rapide et efficace !


Outil de création d’un espace web Apache et PHP

Dans mon activité personnelle et professionnelle, je suis amené à créer des espaces d’hébergement de sites web principalement écrits en PHP.

Il y a quelques années, j’ai écris un script en shell qui posait des questions et générait des fichiers de configuration pour Apache et PHP puis relançait ces services. Il a ensuite évolué et générait également les utilisateurs unix et affinait les permissions. Le principal problème du script est que d’un serveur à l’autre, il fallait mettre des coups de hache dans le code pour l’adapter.

Cette semaine, j’ai entamé une refonte complète du code. Au fur et à mesure du développement, j’ai rendu pas mal de choses configurables et je pense qu’il est fonctionnel sur des environnements relativement différents des miens.

Je vous présente donc vhost-manager, c'est un projet libre et est toujours orienté vers la génération de vhost Apache et de pools PHP FPM. Il faut make, gcc, wget pour l'installer et sh, whiptail et php sont nécessaires à son utilisation.

vhost-manager

Le code source est disponible ici. Le projet se configure via un fichier de variables et j'ai conservé le principe des questions/réponses pour générer les fichiers.