Le 1/1000ème de seconde est sans doute superflu, mais il illustre bien la précision qu’il est possible d’obtenir avec un microcontrôleur moderne comme le Raspberry Pi Pico. Ce projet vous propose de réaliser un chronomètre autonome, pensé pour des jeux ou activités scolaires, doté d’un écran OLED bien lisible et alimenté par une batterie LiPo. […]
Un retour d'expérience (à nuancer comme toujours) sur une migration de Python vers Node justifiée par la difficulté d'écrire du code asynchrone avec Python.
Un retour d'expérience (à nuancer comme toujours) sur une migration de Python vers Node justifiée par la difficulté d'écrire du code asynchrone avec Python.
Jeudi dernier, les actionnaires de Core Scientific ont rejeté une offre d’acquisition intégralement en actions formulée par CoreWeave, leur partenaire et concurrent. Évaluée à 9 milliards de dollars lors de son annonce, la proposition n’a pas convaincu les investisseurs qui espèrent désormais des perspectives bien plus lucratives. Le principal détenteur de parts, Sina Toussi via ... Lire plus
Je trouve ça fou qu'avec le succès phénoménal de Python il n'y ait jamais eu de manière plus simple et intégré de gérer les versions et les dépendances. virtualenv semble ne satisfaire personne.
Je trouve ça fou qu'avec le succès phénoménal de Python il n'y ait jamais eu de manière plus simple et intégré de gérer les versions et les dépendances. virtualenv semble ne satisfaire personne.
Qui dirait non à 1,5 million de dollars ? À une époque où l'open-source peine à financer sa propre sécurité, le choix de la Python Software Foundation (PSF) a de quoi surprendre. Pourtant, son conseil d'administration a voté à l'unanimité pour rejeter une aide cruciale de la part du gouvernement américain. La raison : une […]
Aujourd'hui, nous avons l'occasion de nous pencher sur le microcontrôleur MicroPython le plus rapide à ce jour.
RT1010-Py
IMXRT1010RM de NXP qui équipe la carte RT1010-Py d'Olimex, une carte de développement Cortex M7 fonctionnant à 500 MHz. soit 4 fois plus rapide que le RP2040 avec MicroPython pré-installé.
Avec un Cortex M7 et un support DSP, ce microcontrôleur sera surtout
intéressant pour les applications en besoin de réactivité et de
puissance de calcul (unité de calcul en virgule flottante à double
précision).
Nous avons travaillé/collaboré sur le manuel utilisateur et la documentation afin de rendre la carte de développement et son DevKit plus accessibles. Vous savez... dès qu'il s'agit de MicroPython, on ne se tient plus!
Nous avons apporté quelques ressources graphiques mais également étayé la documentation avec des exemples et des ressources utiles autour pour MicroPython. Nos apports les plus significatifs restant l'exemple I2S, le support WS2812/NeoPixel et la gestion du PMIC (gestion d'alimentation intégrée au RT1010) qui permet, par exemple, de maintenir la RTC à l'heure alors que le MCU est arrêté.
MIMXRT1011DAE5A running at 500Mhz
128KB de RAM RAM
2MB de FLASH SPI
3x UARTs
2x bus SPI matériel
2x bus I2C matériel
1x bus I2S (il y en a un second mais pas encore testé)
4 contrôleurs PWM (avec sorties complémentaires pour créer des circuits push-pull)
USB 2.0 OTG
Connecteur Micro SD
RTC avec cristal 32.768 kHz
Bouton RESET
Bouton BOOT (pouvant servir de bouton utilisateur)
Connecteur fUEXT (flat ribbon) avec 3.3V, GND, I2C, SPI, UART
Connecteur GPIO breadboard friendly
Dimensions: 53.34 x 25.4 mm
Cette plateforme existe depuis un moment mais le support MicroPython est maintenant mature.
MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.
Vous connaissez l’Article 175 du Code Pénal japonais ?
Non ? Hé bien croyez le ou non, mais c’est une loi de 1907 qui interdit les représentations explicites d’appareils reproducteurs. Les japonais sont des anges, ils n’ont ni zézette, ni pépette ^^. Du coup, tous les films adultes japonais sont pixelisés depuis plus d’un siècle. 118 ans que ça pixelise à tout va mais
LADA vient de sortir
et va changer cela ! En fait c’est une IA open source qui retire la pixelisation sur les vidéos.
Mais avant, revenons un peu sur cette loi bizarre. L’Article 175 date de la période Meiji, et il classe comme obscènes les représentations explicites d’organes génitaux. Cette définition légale de l’obscénité, c’est donc du contenu qui excite sexuellement, offense la pudeur, et viole les concepts moraux. Et les sanctions sont assez élevées : 2 ans de prison et 2,5 millions de yens d’amende. Du coup, tous les studios auto-censurent leurs productions à base de pixelisation, floutage, barres de censure et j’en passe. Leur traditionnelle mosaïque, n’est donc pas une coutume, mais un moyen de contourner cette loi centenaire.
C’est pour cela qu’
un dev anonyme a sorti LADA
, un outil Python open source qui retire la pixelisation des vidéos. Vous prenez une vidéo JAV censurée (Japanese Adult Video), vous la passez dans LADA, et l’IA détecte alors les zones pixelisées et les restaure. Et tout cela en temps réel si vous avez un bon GPU ou via un export si vous êtes plus patient.
Techniquement,
LADA utilise deux types de modèles IA
. Le premier pour la détection et le second pour la restauration. Plusieurs déclinaisons des modèles sont dispo si vous voulez plus de précision ou de qualité… Et pour les faire tourner, vous avez besoin d’un GPU Nvidia CUDA, idéalement une RTX 20xx ou plus récent, avec 4 à 6GB de VRAM pour du 1080p. Et pour les fans de 4K, comptez 6 à 8GB de RAM.
Après au niveau des résultats, c’est assez aléatoire. Parfois ce sera bien, parfois ce ne sera pas foufou(ne).
Et sinon comme ça s’installe ? Et bien ce sera via
Flatpak pour Linux via Flathub
, Docker en CLI si vous aimez les conteneurs, ou en décompressant l’archive .7z standalone sur Windows.
Y’a une interface CLI pour les puristes, une GUI pour les autres puis vous chargez votre vidéo, vous choisissez vos modèles de détection et restauration, vous lancez, et ça traite. Vous pouvez regarder ensuite le résultat (en temps réel si votre GPU suit).
Maintenant, concernant la légalité de la dé-censure, j’imagine que c’est OK si c’est pour une utilisation personnelle hors du Japon. Par contre, si vous êtes au japon, interdiction d’utiliser ce truc évidemment !
Merci à ce coquin de Lorenper pour la découverte 🙏
Ce serait cool si on pouvait réunir les Avengers des LLMs pour les faire bosser ensemble sur de la recherche de faille de sécurité ? OpenAI, Anthropic, X.AI et Meta ensemble contre les forces du mal, c’est maintenant possible avec
Deep Eye
, un super scanner de vulnérabilités qui transforme les quatre IA rivales en équipe de pentesteurs. Vous allez voir, c’est assez génial !
Deep Eye, c’est donc un outil Python open source qui scanne les sites web et les API pour trouver des vulnérabilités. SQL injection, XSS, command injection, SSRF, path traversal, authentication bypass, au total y’a plus de 45 méthodes d’attaque automatisées. Vous lui indiquez une URL, et il teste tout en switchant entre les services d’IA selon le contexte.
Dans le contexte d’un pentest légitime, Deep Eye a même trouvé comment parler aux IA pour qu’elles acceptent de pondre du code un peu sensible. Et ça tombe bien car chaque IA a ses forces et ses faiblesses. GPT-4 par exemple excelle sur les payloads créatifs et les contournements de filtres. Claude lui est plus méthodique, et capable de mieux analyser le contexte et de génèrer des attaques adaptées au framework détecté. LLAMA en local quand à lui est rapide et ne coûte rien en appels API. Et Grok ? Bah il a le mérite d’être dispo même s’il est loin d’être le meilleur.
Deep Eye en tout cas est capable des les utiliser toutes selon la situation. Pour l’installer, ça se passe en 3 commandes :
Vous installez ça comme ceci :
git clone https://github.com/zakirkun/deep-eye.git
cd deep-eye
Puis sous Windows :
cd scripts
./install.ps1
Ou sous macOS / Linux :
chmod +x scripts/install.sh
cd scripts
./install.sh
Ensuite, vous n’avez plus qu’à configurer vos clés API dans config/config.yaml puis à le lancer comme ceci avec Python :
python deep_eye.py -u https://example.com
Et c’est parti pour le scan ! Il commencera par de la reconnaissance passive, énumèrera les DNS, découvrira les sous-domaines, testera les fameuses 45 méthodes d’attaque, génèrera les payloads avec les IA, et vous sortira un rapport incroyable (ou pas) en PDF, HTML ou JSON.
Bien sûr, Deep Eye est conçu pour des tests de sécurité autorisés uniquement donc utilisez le uniquement sur vos propres systèmes, ou sur des systèmes pour lesquels vous avez une autorisation d’agir écrite car vous le savez, scanner un site sans permission, c’est illégal !!!
Bref, ça ne remplace pas encore de vrais pentesters mais ça peut permettre de faire un peu d’analyse en amont histoire de voir où on met les pieds.
Nous poursuivons les travaux sur Kit CANSATversion 2, l'occasion de s'intéresser à des extensions utiles. Pour rappel, notre kit utilise un Raspberry-Pi Pico et du code Python sur microcontrôleur (MicroPython).
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.
Etant donné que ce module est supposé se retrouver sur le dessus de la CanSat (pour exposer l'antenne vers le ciel), le point de connexion est reporté sous la carte.
Un simple câble Grove permettra de raccorder le GPS sur l'entrée UART de la CANSAT en deux clicks.
La carte expose également les deux signaux supplémentaires:
1pps : Pulsation à très précisément 1 Hertz (1 pulsation par seconde)
nRest : Reset du module GPS. Placer cette broche au niveau bas réinitialise le module GPS.
A propos du module GPS Ultime
C'est que le breakout GPS/GNSS produit par AdaFruit dispose d'une excellente module GPS/GNSS disposant d'une grande sensibilité et d'une antenne intégrée (dite Patch Antenna).
Même avec son antenne Patch, le démarrage à froid de ce module permet d'obtenir un fix GPS/GNSS relativement rapidement (de l'ordre de la minute). Tandis que s'il est utilisé avec un pile CR2032, le démarrage à chaud permet de réduire drastiquement le temps du fix GPS/GNSS.
Le GPS-Ultime est capable d'offrir un rafraîchissement des données jusqu'à 10 fois par secondes (10 Hz).
Il est possible de visualiser les coordonnées dans google maps en saisissant les coordonnées "50.69063 , 4.400778" (lattitude , longitude) dans la zone de recherche.
Using Google bq CLI, the following command allows to get the top Pypi keywords from the bigquery-public-data.pypi.distribution_metadata table:
bq query --use_legacy_sql=false 'SELECT keyword, COUNT(*) as keyword_count FROM `bigquery-public-data.pypi.distribution_metadata`, UNNEST(SPLIT(keywords, ", ")) as keyword GROUP BY keyword ORDER BY keyword_count DESC LIMIT 100'
Vous avez déjà passé plus de temps à configurer Sphinx qu’à coder votre projet Python ? Bienvenue au club !
Et oui, paradoxalement, parfois documenter son code devient plus compliqué que d’écrire le code… Vous voulez juste afficher vos docstrings joliment, mais avant ça il faut vous taper 200 pages de doc, choisir parmi 47 thèmes, configurer des dizaines d’extensions et comprendre la syntaxe reStructuredText. Breeeef, la flemme !
Heureusement, il existe une alternative qui va vous réconcilier avec la documentation : pdoc.
pdoc, c’est un outil de documentation Python qui ne nécessite pas de documentation. Vous tapez simple pdoc votre_module et c’est tout. Pas de fichier de config interminable, pas de choix existentiels entre différents builders, pas de migration depuis votre version de Sphinx de 2018 qui refuse de compiler.
Ça génère directement une belle doc à partir de votre code existant !!
Si vous avez déjà écrit des docstrings propres et utilisé les type annotations de Python, vous avez déjà fait 100% du boulot car pdoc se contente de prendre ce qui existe et de l’afficher élégamment. Pas de traduction, pas de réécriture, pas de fichiers .rst à maintenir en parallèle de votre code.
Votre code EST la documentation et ça c’est beau !
L’outil comprend les docstrings au format numpydoc et Google-style, fait des liens automatiques entre les identifiants, respecte votre variable __all__ et génère du HTML standalone que vous pouvez héberger n’importe où. Il y a même un serveur web intégré avec live reload pour développer votre doc en temps réel.
Pour mettre ça en place, faut installer pdoc avec
pip install pdoc
Puis vous lancez
pdoc ./votre_projet.py
ou
pdoc nom_de_votre_module
Et c’est tout !
Bien sûr si vous bossez sur un gros projet avec des besoins spécifiques, des guides utilisateurs complexes, des dizaines de pages de tutoriels et une doc multilingue, Sphinx reste le roi, mais pour la grande majorité des projets Python, ceux qui ont juste besoin d’une doc API claire et lisible, pdoc fait ça comme un chef, sans que vous ayez besoin d’un doctorat en outil de documentation.
Bref, si vous en avez marre de passer plus de temps sur votre documentation que sur votre code, pdoc mérite le détour car documenter son code devrait être aussi simple que de le coder, non ?
Une bibliothèque Python avec les principes et objectifs suivants :
Permettre la reproduction aussi simple que possible des recherches précédentes sur le dilemme du prisonnier itératif.
Créer l'outil de facto pour les futures recherches sur le dilemme du prisonnier itératif.
Fournir un moyen aussi simple que possible pour que tout le monde puisse définir et contribuer à de nouvelles stratégies originales pour le dilemme du prisonnier itératif.
-Mettre l'accent sur la lisibilité ainsi que sur une communauté ouverte et accueillante qui s'adapte aux développeurs et aux chercheurs de différents niveaux de compétence.
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).
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:
Le 2 septembre 2025 est sortie la version 2.7 du logiciel de gestion de la relation client Crème CRM (sous licence AGPL-3.0), un peu plus d’un an après Creme 2.6 (5 août 2024).
Au programme notamment, le passage à Django 5.2, les types de fiches personnalisés et un système de processus automatisés. Les nouveautés sont détaillées dans la suite de la dépêche.
Crème CRM est un logiciel de gestion de la relation client, généralement appelé CRM (pour Customer Relationship Management). Il dispose évidemment des fonctionnalités basiques d’un tel logiciel :
un annuaire, dans lequel on enregistre contacts et sociétés : il peut s’agir de clients, bien sûr, mais aussi de partenaires, prospects, fournisseurs, adhérents, etc. ;
un calendrier pour gérer ses rendez‐vous, appels téléphoniques, conférences, etc. ; chaque utilisateur peut avoir plusieurs calendriers, publics ou privés ;
les opportunités d’affaires, gérant tout l’historique des ventes ;
les actions commerciales, avec leurs objectifs à remplir ;
les documents (fichiers) et les classeurs.
Crème CRM dispose en outre de nombreux modules optionnels le rendant très polyvalent :
campagnes de courriels ;
devis, bons de commande, factures et avoirs ;
tickets, génération des rapports et graphiques…
L’objectif de Crème CRM est de fournir un logiciel libre de gestion de la relation client pouvant convenir à la plupart des besoins, simples ou complexes. À cet effet, il propose quelques concepts puissants qui se combinent entre eux (entités, relations, filtres, vues, propriétés, blocs), et il est très configurable (bien des problèmes pouvant se résoudre par l’interface de configuration) ; la contrepartie est qu’il faudra sûrement passer quelques minutes dans l’interface de configuration graphique pour avoir quelque chose qui vous convienne vraiment (la configuration par défaut ne pouvant être optimale pour tout le monde). De plus, afin de satisfaire les besoins les plus particuliers, son code est conçu pour être facilement étendu, tel un cadriciel (framework).
Du côté de la technique, Crème CRM est codé notamment avec Python/Django et fonctionne avec les bases de données MySQL, SQLite et PostgreSQL.
Principales nouveautés de la version 2.7
Voici les changements les plus notables de cette version :
Le passage à Django 5.2
La nouvelle version LTS (Long Time Support, car maintenue pendant 3 ans) du cadriciel Web est sortie en avril 2025.
Pour les personnes qui déploient Creme, cela implique de nouvelles versions minimales :
La version minimale de Python est maintenant la 3.10
Pour les systèmes de gestion de base de données (SGBD) les versions minimales sont SQLite 3.31, MySQL 8.0.11, PostgreSQL 14 & MariaDB 10.5.
Python 3.13 est désormais géré officiellement.
Les types de fiches personnalisés
Il a bien sûr toujours été possible de créer ses propres types de fiches (entités) via du code (c’est même plutôt simple, notamment grâce aux outils que fournis Django).
Mais ici il s’agit de créer des types de manière visuelle, via l’interface de configuration. Pour créer un nouveau type il suffit de lui donner un nom (genre “Boutique”), ainsi que son nom au pluriel (donc “Boutiques” dans notre exemple). Ensuite des champs personnalisés peuvent être ajoutés, comme pour n’importe quel type de fiche. Et évidemment vous pouvez utiliser derrière tous les outils de configuration classiques pour construire l’interface qui vous convient (blocs, boutons, formulaires, menu…).
Techniquement, les tables correspondant aux types sont en fait toutes créés dès l’installation (mais seuls les types activés sont visibles) ce qui permet de fonctionner sereinement même sur les SGBD ne gérant pas les transactions de schéma. C’est pourquoi le nombre de types personnalisés est limité (à 20 en l’occurrence, cela devrait être largement suffisant en pratique).
Ce nouveau système était attendu depuis longtemps, et devrait encore un peu abaisser la barrière d’entrée en permettant d’éviter d’écrire du code dans pas mal de cas.
Les processus automatisés
Ce nouveau système permet de programmer des actions qui seront effectuées de manière automatique lorsque certains évènements se produisent. Pour mieux comprendre les possibilités offertes, voici un processus créé lors de l’installation de Creme 2.7 : lorsqu’une fiche Opportunité d’affaire est modifiée et que son nouveau statut est un statut considéré comme gagné, alors la société cible de l’Opportunité devient cliente (si elle ne l’était pas déjà évidemment).
Dans cette première version, les évènements qui peuvent déclencher un processus sont :
une fiche est créée
une fiche est modifiée
une propriété (il s’agit d’une sorte de tag) est ajoutée à une fiche
une relation est ajoutée entre 2 fiches
Les actions actuellement disponibles sont :
ajouter une propriété
ajouter une relation
envoyer un courriel
Cette version initiale nous a demandé pas mal de travail afin de trouver une conception satisfaisante, mais de nombreuses améliorations sont d’ores et déjà prévues (notamment les évènements temporels & une action qui peut modifier une fiche).
Les processus automatisés étaient, à l’instar des types personnalisés, très attendus ; et combiner ces 2 nouveaux systèmes ouvre pas mal de perspectives.
La génération des numéros des Factures/Devis/Bons de commande a été entièrement revue. Elle se configure maintenant depuis l’interface (là où avant on pouvait juste rentrer des préfixes dans le fichier de configuration) et offre de nombreuses options.
La configuration des boutons peut désormais se faire par rôle (comme c’était déjà le cas avec les blocs, formulaires, etc.).
Les vues de liste & les filtres peuvent être clonés (afin de gagner du temps, plutôt que de partir de zéro).
Le calendrier a été mis-à-jour (version 6.1.18 de la bibliothèque JavaScript FullCalendar), et un nouveau bloc permet d’afficher son calendrier sur la page d’accueil.
Pas mal de code de suppression a été amélioré, que ça soit pour empêcher plus souvent la suppression à cause de dépendances (plutôt que supprimer des choses en cascade), ou pour mieux afficher lesdites dépendances bloquantes.
Le futur
La prochaine version devrait être plus courte que la 2.7 (qui a été un peu plus grosse que prévu à la base), afin de mieux coller aux sorties de Django. À l’année prochaine !
sujet principal : le langage de programmation Python
La chronique Le truc que (presque) personne n'a vraiment compris mais qui nous concerne toutes et tous de Benjamin Bellamy sur les VPNs
Une nouvelle Lecture buissonnière de Vincent Calame sur l'ouvrage d'Éric Sadin, « La vie algorithmique »
Quoi de Libre ? Actualités et annonces concernant l'April et le monde du Libre
Rendez‐vous en direct chaque mardi de 15 h 30 à 17 h sur 93,1 FM en Île‐de‐France. L’émission est diffusée simultanément sur le site Web de la radio Cause Commune.