Vue normale

Spotlight on pdfly, the Swiss Army knife for PDF files

13 octobre 2025 à 08:31

pdfly logo

Project documentation: pdfly.readthedocs.io

pdfly is the youngest project of the py-pdf organization. It has been created by Martin Thoma in 2022.

It's simply a CLI tool to manipulate PDF files, written in Python and based on the fpdf2 & pypdf libraries.

I'm a maintainer of the project 🙂

What can it do & what's next?

Find out by reading the full article


Permalien

Apparition de ROMFS dans MicroPython

Bonjour à tous,

ROMFS: une nouvelle fonctionnalité fait son apparition dans MicroPython. 


ROMFS qui est en développement depuis plusieurs années permet de stocker 

  • des utilitaires (scripts pré-compilé), 
  • des fichiers de données (fonts)
  • des programmes pre-compilés 
Au sein même d'une partition dans la Mémoire Flash (sous forme d'un système de fichiers en lecture seule).  

Le but de ROMFS est d'optimiser l'accès et la rapidité d'exécution de ressources  SANS DEVOIR RECOMPILER MicroPython à chaque fois. 

Jusqu'à maintenant, seule l'inclusion -au sein du firmware- de scripts pré-compilés avec mpy-cross permettait d'atteindre les performances nécessaires à l'exécution de code "time sensitive".

Certes, mpy-cross permet de compiler un script en byte-code (des fichiers .mpy) mais l'accès reste encore conditionné par le système de fichiers pour le chargement (ou chargements multiples). Les fichiers .mpy, bien que pré-compilé, nécessite malgré tout des vérifications de routine et du chargement d'information en RAM.

Avec ROMFS, une partition dans la mémoire Flash permet d'être accédée directement par la VirtualMachine MicroPython. Les ressources sont directement accessibles par le noyaux MicroPython qui peut aussi lancer l'exécution directement en Flash (In-Place execution)... et cela en s'évitant la lourdeur du système de fichiers, les phases de compilations et allocations de RAM. Les routines de vérifications sont elles aussi réduites au stricte nécessaire puisque celles-ci sont opérées majoritairement au moment de l'assemblage/compilation de la ROMFS.

Implémentation restreinte

Au moment de l'écriture de ces ligne (MicroPython v1.25), ROMFS n'est disponible nativement que sur certaines plateformes: PYBD-SFx (Pyboard D), ALIF-Ports, ESP8266_Generic, STM32 boards.

Sinon, il est possible de compiler le firmware en activant la flash_romfs (voir FLASH_2M_ROMFS).

Utilitaire mpremote

L'utilitaire MPRemote de MicroPython a également le nouveau mot clé romfs avec les options:

  • query: pour consulter la romfs dans la flash.
  • build: pour créer une image romfs sur l'ordinateur
  • deploy: pour déployer l'image sur la romfs dans la mémoire flash du microcontroleur.

A noter que la compilation/build d'une image romfs require l'utilitaire mpy-cross .

romfs query

La capture suivante indique le contenu de la romfs sur le microcontroleur.

mpremote romfs query


Comme l'indique le réponse de l'utilitaire, la partition n'est pas encore initialisée. La partition fait 131 Kio (32 blocks de 4 Kio chacun).

romfs build

Prenons l'exemple d'un répertoire "utilities" qui contient les sources. Celui-ci ne contient qu'un script nommé "scan_i2c.py".

L'image de la partition romfs est créé avec la commande suivante:

mpremote romfs -o utilities.img build utilities

Le nom de l'image à créer est spécifié par le paramètre '-o'.
Le contenu du répertoire à compiler est précisé après le paramètre 'build'.

romfs deploy

Une fois l'image prête sur l'ordinateur, l'option deploy permet de copier celle-ci sur le microcontroleur.

mpremote romfs deploy utilities.img


Une fois l'image déployée, il est possible de vérifier une nouvelle fois l'état de la ROMFS avec romfs query . Cette fois, la partition est initialisée.

Exploiter la ROMFS

Une fois romfs initialisé, il est très facile d'utiliser son contenu.
Utiliser Thonny IDE permet d'inspecter le système de fichiers MicroPython. 

La partition romfs est montée dans le système de fichiers MicroPython sous le répertoire 'rom'.
Il est donc possible d'en inspecter le contenu.

Comme le démontre le shell interactif, il est possible de charger et d'exécuter le contenu de scan_i2c.py (compilé en .mpy) en executant un simple "import" sous Python.

ROMFS est un système de fichiers

L'appel de mount() sans paramètre affiche les systèmes de fichiers déjà monté dans MicroPython.

Ainsi les lignes suivantes indique la présence de romfs:

>>> import vfs
>>> print( vfs.mount() )
[ VfsRom('rom'), VfsFat('/flash') ]
>>> 

Toutes les fonctions de manipulation de fichiers sont donc utilisable sur le système de fichiers ROMFS.

Ressources

 

Note: Utiliser python dans un Virtual Env

19 août 2025 à 08:16

Créer / Utiliser python3 avec venv, afin de ne pas pourrir votre système par l'ajout de packages pip

# Création des répertoires et scripts
python3 -m venv ./project
# Activation pour votre shell
. ./project/bin/activate
# Désactivation pour votre shell
deactivate

Vous pouvez désormais utiliser pip, les packages seront localisés dans votre projet.

Utiliser requirements.txt pour faciliter l'instalation des packages

# Setup du fichier normalisé requirements.txt
pip freeze > requirements.txt
# Installation des packets
pip install -r requirements.txt

Note: Sous debian, il vous faudra le packet python3-venv

Il existe d'autres outils similaires pyenv et pyenv:

# Avec virtualenv:
python3 -m virtualenv ./venv
. ./venv/bin/activate
deactivate
# Avec pyenv
# Il s'agit d'une gestion plus avancée vous permettant de basculer entre versions de python
# Voir https://github.com/pyenv/pyenv?tab=readme-ov-file

Permalink

Cansat v2 : Raspberry-Pi Pico et MicroPython

Bonjour à tous,

Nombre d'entre-vous savent que nous sommes impliqué dans le projet CanSat (voir précédents articles sur le sujet CanSat). 

Nous poursuivons les travaux sur Kit CANSAT version 2, l'occasion de faire le point.
Pour rappel, notre kit utilise un Raspberry-Pi Pico et du code Python sur microcontrôleur (MicroPython).


Documentation Open-Source disponible sur le Wiki de MCHobby.

A propos de CanSat

CanSat est un concours visant a stimuler l'apprentissage des sciences dans le domaine de l'AéroSpatial en réalisant un mini-satellite (la CanSat) pas plus grande qu'une boîte de Soda. Ce satellite est envoyé et éjecté à 3000m d'altitude à l'aide d'une roquette. C'est à partir de ce moment que votre projet capture les données et les envois au sol.

Si vous voulez en apprendre plus sur le concours CanSat, je vous invite à visiter la page d'accueil CANSAT sur EseroBelgium.be .

Cansat V2 : le point

100% compatible avec la version précédente (câblage code), nous avons terminé le premier round de test du prototype Alpha. Les correctifs nécessaires sont apportés et aux cartes et le prototype Beta arrive prochainement.

Outre les aspects mécaniques déjà abordés au précédent article, nous allons pouvoir nous attarder sur les caractéristiques électroniques.

Je vous présente Cansat-Pico V2

Cansat Pico V2 (source: MCHobby Wiki)

 
Cansat Pico V2 (source: MCHobby Wiki)
Note: connecteur d'antenne manquant.

Et le visite ne serait pas complète sans inspecter le dessous de la carte.

Cansat Pico V2 (source: MCHobby Wiki)

Quelques détails croustillants

Comme annoncé, nous avons cherché à faciliter les connexions en utilisant des connectiques populaires (Qwiic/StemmaQt et Groove).

LA sérigraphie reprend également de nombreuses informations pour permettre

Cansat Pico V2 (source: MCHobby Wiki)
Note: le connecteur d'antenne est manquant sur la photo

Cansat Pico V2 (source: MCHobby Wiki)

Les autres cartes permettant de créer une CANSAT complete sont également prêtes...

Cansat Pico V2 (Lettuce, Onion et Bun)

Pour l'instant, nous consacrons les efforts sur:

Bonne lecture,
Dominique

Test du robot TPBot EDU Car Kit pour micro:bit par Elecfreaks

Envie de plonger dans la robotique sans prise de tête ? Découvrez le TPBot EDU Car Kit d’Elecfreaks pour micro:bit ! Un robot accessible, ludique et bourré de potentiel, parfait pour petits et grands bidouilleurs. Montage rapide, programmation simple avec MakeCode ou Python, défis variés (suiveur de ligne, évitement d’obstacles…)… Que vous soyez enseignant, parent ou maker […]

Cet article Test du robot TPBot EDU Car Kit pour micro:bit par Elecfreaks a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française.....

Cansat v2 : Raspberry-Pi Pico et MicroPython

Bonjour à tous,

Nombre d'entre-vous savent que nous sommes impliqué dans le projet CanSat (voir précédents articles sur le sujet CanSat). 

Nous faisons actuellement évoluer notre Kit CANSAT vers une version 2 .
Pour rappel, notre kit utilise un Raspberry-Pi Pico et du code Python sur microcontrôleur (MicroPython).


Documentation Open-Source disponible sur le Wiki de MCHobby.

A propos de CanSat

CanSat est un concours visant a stimuler l'apprentissage des sciences dans le domaine de l'AéroSpatial en réalisant un mini-satellite (la CanSat) pas plus grande qu'une boîte de Soda. Ce satellite est envoyé et éjecté à 3000m d'altitude à l'aide d'une roquette. C'est à partir de ce moment que votre projet capture les données et les envois au sol.

Si vous voulez en apprendre plus sur le concours CanSat, je vous invite à visiter la page d'accueil CANSAT sur EseroBelgium.be .

Les retours d'expériences

Des précédents tirs et expériences utilisateurs, voici ce qu'il serait utile d'améliorer sur le kit actuel:

  • Améliorer la robustesse globale (meilleure résistance aux chutes).
  • Réduire le diamètre des cartes (l'actuel 1mm pour réaliser une paroi semble trop contraignant pour de nombreux débutants).
  • Connecteur FPC (pour le ruban) reste "fragile".
    Les manipulations avec brusqueries peuvent facilement déboîter la fermeture.
  • Pour les débutants, il serait préférable d'insérer un Pico dans un connecteur plutôt que le souder directement sur la Cansat-Base. Il sera ainsi plus facile à remplacer.
  • Souder le module radio et le chargeur Lipo sont des opérations fastidieuses (surtout si c'est la première fois).

Cansat : améliorations mécaniques


1) Les 3 points d'ancrage externes

Ces trois points restent exactement aux mêmes endroits. Cela permet d'assurer une retro-compatibilité mécanique avec les kits déjà distribués.

Autour de ces trois points, le diamètre extérieur reste à 64mm.
Les trous font toujours 2.75mm (pour du Métrique 2.5).
 
2) Diamètre extérieur
 
Excepté pour les 3 points d'ancrage, le diamètre extérieur est passé à 60mm.
Cela laisse donc assez de place pour réaliser des parois de 3mm (contre 1mm précédemment) autour de la CanSat.

3) Axe central
 
Toutes les cartes, y compris la carte contrôleur, présentent en trou central de 6.4mm de diamètre.
Cela permet de placer un axe central (ou tige filetée M6) sur toute la hauteur de la CanSat.
Cette axe permet de décupler la résilience mécanique de la CanSat (meilleure résistance mécanique à l’atterrissage).
Cette axe permet aussi la réalisation d'une attache parachute ancrée jusqu'à la base de la CanSat (limite le risque de bris à l'ouverture du parachute).
 

Cansat : améliorations électroniques

 
Un travail de fond très important a été réalisé sur la carte de contrôle de la CanSat.
Sans aucun changement de raccordement (par rapport à la version 1), la carte contrôleur a été entièrement redessinée. 
 
Carte contrôleur (PICO-CANSAT-BASE v2)

1) module LIPO

Le module de charge Lipo est maintenant intégré à la carte.
Le connecteur J108 (en bas) permet de brancher l'accu.
Le Pico est directement alimenté par l'accu tandis qu'un circuit de régulation permet d'obtenir 3.3V @ 600mA.

Les points VBat/GND (sous le libellé "Pico Facing this side") permettent de brancher un second circuit de régulation si cela était nécessaire (ex: produire une tension de 5V pour une expérience).

Bien que l'électronique du module Lipo se trouve principalement sous la carte, les composants pratiques sont restés accessible sur le dessus de la carte.
Par exemple, la LED CHG (orange) est allumée pendant la charge de l'accu Lipo (qui se fait par l'intermédiaire du connecteur USB du Pico).
La résistance R_PROG permet d'ajuster le courant de recharge de l'accu (fixé à 250mA par défaut).

2) module radio

 
Le module radio est également intégré à la carte. Ce dernier est soudé sous la carte (à gauche du trou central. Emplacement repérable par les deux rangées verticales de 8 contacts).
 
Le connecteur d'antenne est accessible près du trou central (aussi bien par au-dessus que par en-dessous. Il est possible d'y souder un fil d'antenne ou un connecteur µFl .
 
Le module radio utilise l'interface SPI connectée par l'intermédiaire de cavalier sécables. Il est donc possible de sectionner les pistes pour désactiver le module radio et récupérer les GPIO.

3) carte MCU remplaçable

 
La carte microcontrôleur (MCU) s'insère perpendiculairement à la carte afin de respecter les contraintes CanSat tout en permettant la présence du trou central.
 
Le  microcontroleur s'insère sur le connecteur 2x20 broches visible jusque au dessus du connecteur Lipo (J108). Il est encadré par les libellés "USB" et "Pico Facing this side".
 
L'utilisation d'une connectique simple permettra le remplacement du MCU  en un tour de main. Grâce à ce dispositif, il sera possible - à l'avenir - d'envisager une mise-à-niveau matérielle du microcontrôleur.
 
Bien que le contact entre les deux cartes sera ferme, les connexions restent sensibles aux vibrations (ce qui ne manque pas dans une fusée).
L'usage de colle ou souder directement le MCU sur la carte de base reste toujours possible pour les plus exigeant d'entre nous.
 

4) Connecteurs Grove

 
Afin de faciliter les raccordements, 5 connecteurs Grove à la verticale (J101 à J105) permet de réaliser des connexions/déconnexions rapidement et facilement.
Ces connecteurs Grove proposent une alimentation 3.3V et les signaux sont tous en logique 3.3V.
 
Ces 5 connecteurs Grove offrent:
  • J102 : connecteur UART (port série) très pratique pour un GPS. 
  • J101 : connecteur Analogique pour 2 entrées analogiques (ou numériques). 
  • J104 et J105 : 2 connecteurs pour un total de 4 entrées/sorties numériques.
  • J103 : connectique I2C très pratique pour les capteurs en tout genre. 

Bien que je ne sois pas fan de la connectique Grove, je dois reconnaître:

  1. qu'ils sont plus facile a manipuler du fait qu'il sont plus encombrant.
  2. qu'il est facile de sectionner le câble, de scinder les 4 fils de cette connectique et d'y souder directement votre propre matériel.

5) Connecteur Qwiic/StemmaQt

 
Déjà présent à la première version de la carte, ce connecteur transporte le même bus I2C que le connecteur J103 (alimentation 3V3 et logique 3V3).
Ce connecteur est utilisé pour brancher le capteur BMP280 (température et pression atmosphérique).
 

6) breakout Pico

 
Tous les GPIOs ne sont pas exposés via les connecteurs Grove et Qwiic.
Besoin de plus de GPIO?
Pas de problème, toutes les broches du Pico sont disponibles en breakout sur les deux connecteurs situés de part et d'autres du connecteur Analogique (J101).
Il suffit de sortir votre fer à souder et réaliser vos connexions nécessaires.
 
Note: avez-vous remarqué l'identification des GPIOs sur la sérigraphie.

7) Gestion de l'alimentation 

Le haut de la carte reprend les points de connexion "PWR Enable".
Soudez y un interrupteur pour contrôler le circuit d'alimentation. Sans interrupteur, le circuit reste activé jusqu'à la décharge complète de l'accumulateur.

Une fois fermé, le circuit de régulation du Lipo est désactivé. Par effet de cascade, le régulateur 3.3V du Pico est aussi désactivé et le Pico s'éteint. 

La suite ...

Les premières cartes prototype sont commandées et le montage ne tardera plus.
A tout bientôt pour la suite...

TypeError/secure: Lightweight modern Python library to add security headers (CSP, HSTS, etc.) to Django, Flask, FastAPI, and more. Secure defaults or fully customizable.

14 juin 2025 à 17:17

Voici un module Python bien pratique pour injecter les entêtes HTTP de sécurité, avec des valeurs par défaut et strictes qui font bien le travail (cf HSTS, COEP, COOP, CSP, Cache-Control, Server, Permissions-Policy, Referrer-Policy, X-Content-Type-Options, X-Frame-Options, et custom).

Et il prend en charge quasiment tous les framework web actuels !


Permalink
❌