MakeMake The Dwarf Planet is a feed agregator.

Développeur Full Stack - OTERIA

by mdk from AFPy discuss

(Full disclosure : je travaille à Oteria en tant que prof de Python et de C, je relaie ici une offre d’emploi émise par l’école. )

Développeur Full Stack - OTERIA

CDI – Gennevilliers (92) - Métro Gabriel Peri - Ligne 13 - Début: ASAP - autour de 40k€ brut annuels selon profil et expérience

À propos d’OTERIA

OTERIA est une école d’excellence dédiée aux métiers de la cybersécurité.
Elle forme des profils solides techniquement, engagés, capables d’avoir un impact réel et durable dans l’écosystème cyber.

Dans un contexte de marché du travail tendu, de révolution de l’IA et de transformation profonde de l’enseignement supérieur, nous sommes convaincus que les écoles ont une responsabilité :
former des jeunes talents capables de maîtriser des technologies de pointe, leur sécurité et l’IA, grâce à une pédagogie exigeante, ancrée dans le réel et fondée sur l’émulation humaine.

OTERIA n’est pas uniquement un programme de formation. C’est une communauté, une culture, et une vision exigeante de l’éducation, tournée vers l’action, la transmission et le réel.

L’école accueille aujourd’hui 300 étudiants, de Bac+1 à Bac+5, et s’appuie sur une équipe de 8 personnes, engagées au quotidien dans le projet éducatif et le développement de l’école. Nous faisons le choix de rester une structure à taille humaine, afin de préserver l’agilité, la proximité et la capacité d’adaptation qui font la force d’OTERIA, tant dans sa pédagogie que dans son fonctionnement, tout en capitalisant pleinement sur l’IA pour gagner en efficacité et en impact.

Nous lançons le développement d’une nouvelle plateforme pédagogique interne ambitieuse, pensée comme un environnement d’apprentissage intelligent, augmentant le présentiel grâce au numérique et à l’IA.

Cette plateforme n’est ni un LMS classique, ni un MOOC. C’est un outil pédagogique vivant, conçu pour :

  • aider les professeurs à améliorer continuellement leurs cours,
  • offrir aux étudiants des expériences d’apprentissage motivantes,
  • capitaliser sur ce qui se passe réellement en cours,
  • et créer une communauté technique autour de la plateforme.

C’est dans ce contexte que nous recrutons un développeur full stack.

LES MISSIONS

Au sein de l’équipe, vous prendrez en charge le développement de l’écosystème numérique de l’école. Votre rôle central consistera à concevoir et développer la première version du KERNEL, l’environnement pédagogique propriétaire d’OTERIA.

Pour ce projet, vous bâtirez une architecture backend modulaire en FastAPI couplée à une base SQL. Vous devrez traduire techniquement le concept d’« Expériences Pédagogiques » et développer une structure API-First intégrant des services d’IA internes pour la génération de contenu et l’analyse de données. Vous assurerez également la mise en place d’une interface unifiée et « mobile-friendly » pour les professeurs et les étudiants.

En parallèle de ce projet structurant, vous interviendrez sur l’ensemble des chantiers techniques de l’école. Vous participerez notamment au développement d’outils internes destinés à soutenir les différentes équipes (comme le marketing ou les opérations).

Vous contribuerez à l’automatisation des processus métiers (via des outils comme n8n ou du scripting) et assurerez la maintenance évolutive des applications existantes. Votre mission inclura également une veille technique pour garantir la robustesse et la sécurité de l’infrastructure, en cohérence avec les exigences d’une école spécialisée en cybersécurité.

Enfin, vous interviendrez en tant que référent pédagogique sur les enseignements liés au développement, et aurez l’opportunité de concevoir, animer et faire évoluer les cours de développement, ainsi que de produire des contenus pédagogiques structurants, notamment sous forme de projets applicatifs destinés aux étudiants.

Le KERNEL a vocation à devenir un actif central de l’école : un socle technologique structurant, au cœur des usages pédagogiques, techniques et communautaires d’OTERIA — une forme d’« OS » de l’école.

À mesure que la plateforme montera en charge (usages, utilisateurs, contributions étudiantes, intégrations IA), le rôle pourra naturellement évoluer vers des responsabilités élargies : structuration de la vision technique long terme, pilotage de la scalabilité et de la robustesse de la plateforme, encadrement de contributeurs (internes, étudiants, prestataires), prise de rôle de Lead Developer / référent architecture du produit.

Compétences

Techniques

  • Développement Backend : Maîtrise approfondie de Python et du framework FastAPI pour construire une architecture performante et modulaire.
  • Base de données : Expertise en SQL et en modélisation de données.
  • Architecture API-First : Capacité à concevoir une API documentée et sécurisée, destinée à alimenter l’interface web et, à terme, une application mobile native.
  • Intégration IA : Expérience technique dans l’intégration d’APIs d’Intelligence Artificielle local pour des fonctionnalités de génération de contenu et d’analyse de données.
  • Frontend & Mobile : Compétence en développement d’interfaces web responsives (Mobile-friendly), respectant la contrainte d’une interface unique pour les vues “Professeur” et “Étudiant”.

Professionnelles & Méthodologie

  • Gestion de projet technique : Capacité à respecter le périmètre d’un MVP (Minimum Viable Product) en se concentrant sur les fonctionnalités critiques (création, diffusion, évaluation) et en écartant les développements hors-scope.
  • Exigence qualité : Rigueur dans l’écriture du code et la documentation (usage de Gitlab Interne pour mise à disposition Open Source aux étudiants), en cohérence avec le positionnement d’excellence d’OTERIA dans le domaine de la cybersécurité.
  • Collaboration : Aptitude à travailler au sein d’une équipe opérationnelle de 8 personnes et à dialoguer avec des profils non-techniques (équipe pédagogique) pour ajuster les fonctionnalités.

Atouts appréciés

  • Expérience avec les outils d’automatisation de workflow (type n8n / make).
  • Appétence pour la pédagogie et le contexte d’une école.

L’environnement de travail

  • Présence sur le campus de l’école:
    • c’est là que se passent les échanges clés,
    • c’est là que vivent les usages réels,
    • c’est là que le projet prend du sens.
  • Télétravail occasionnel
  • Contact direct avec :
    • Le responsable technique de l’école
    • le directeur général,
    • les professeurs,
    • les étudiants.

:backhand_index_pointing_right: La plateforme n’est pas un projet “en chambre”, elle se construit sur le terrain.

Ce que nous recherchons avant tout

Nous recherchons une personne engagée, curieuse et motivée, désireuse de s’investir dans un environnement où le projet technique a un sens pédagogique fort.

Le candidat devra :

  • manifester un intérêt réel pour le monde de l’enseignement, et plus largement pour les enjeux de transmission des savoirs ;
  • être sensible aux questions de pédagogie, d’impact et d’amélioration continue, au-delà de la seule dimension technique ;
  • apprécier le fait de travailler sur un produit utilisé en conditions réelles, dont le code est appelé à être lu, compris, challengé et enrichi par d’autres — notamment par des étudiants ;
  • faire preuve d’un esprit d’ouverture, tant dans ses choix techniques que dans sa manière de collaborer, documenter et partager.

Nous attachons plus d’importance à la qualité du raisonnement, à la capacité à apprendre et à s’adapter, qu’à un empilement de technologies ou à un profil strictement senior.

Rémunération

Rémunération selon profil et expérience (autour de 40k€ brut annuel) en cohérence avec le stade actuel du projet et la taille de la structure. Le poste est conçu comme une trajectoire d’évolution : la montée en compétences, l’élargissement des responsabilités et la prise de rôle structurants sur la plateforme ont vocation à s’accompagner d’une revalorisation progressive.

Ressources et moyens à disposition

Ressources techniques

  • Infrastructures de l’école (serveurs, capacités GPU, réseau) adaptées aux besoins du projet et aux usages liés à l’IA.
  • Mise à disposition des outils de développement nécessaires, incluant notamment des licences professionnelles (Cursor ou équivalent).
  • Possibilité de s’appuyer ponctuellement sur une agence spécialisée en UI/UX pour la conception et le développement des interfaces front-end, afin de garantir une expérience utilisateur de qualité.

Ressources humaines

  • Les étudiants: Les étudiants d’Oteria, utilisateurs directs de la plateforme, constituent une ressource centrale à la fois pour recueillir des retours d’usage concrets et pour contribuer activement à l’amélioration continue de la plateforme, notamment au travers d’analyses techniques et d’audits de sécurité encadrés.
  • Les professeurs:Le corps professoral d’Oteria est composé de plus de 80 experts professionnels couvrant l’ensemble des champs de l’informatique et de la cybersécurité offrant un cadre privilégié au développeur pour l’échange de bonnes pratiques, le conseil technique et la montée en compétence continue

Pourquoi rejoindre OTERIA

  • Participer à un projet central pour une école de référence
  • Une forte liberté d’initiative et de construction pour construire une école d’avenir
  • Un environnement pédagogique pour monter en compétences aux côtés d’experts
  • Un projet éducatif aligné avec les enjeux technologiques et sociétaux actuels
  • Une communauté d’étudiants engagés, passionnés et moteurs
  • En vidéo ça donne ça: cérémonie de remise des diplômes

Pour candidater:

Envoyez votre CV, quelques lignes expliquant votre motivation, ainsi qu’un lien vers vos projets (GitHub / GitLab) à : contact@oteria.fr

Merci d’indiquer en objet du mail : « Candidature offre développeur », et de préciser votre point de contact avec OTERIA (étudiant, alumni, recommandation, candidature externe, etc.).

1 message - 1 participant(e)

Lire le sujet en entier

Lire la suite…

CDI Dev Senior FullStack Back/Front/Ops - Nouvelle Aquitaine

by flovea from AFPy discuss

Flovea recherche une personne pour un rôle de Developpeur fullstack senior

Contexte

Flovea, société leader dans les solutions de plomberie préfabriquée et connectée, recherche une personne pour un rôle de “développeur sénior” pour prendre en charge la maintenance et l’évolution de sa solution Predictive Flowbox, solution de gestion de réseaux d’eau dans le but d’économiser de l’eau, de l’argent et de protéger les bâtiments contre les fuites et les dégâts des eaux. Flovea est basé à Saint Paul Lès Dax (Landes, à proximité de Dax).

La personne sera en charge du développement, du déploiement et de la gestion de l’infrastructure sous-jacente de la plateforme Predictive Flowbox. Cela inclus également le
support de nos clients lors des phases d’appairage ou lors d’incident ou de dysfonctionnement de la plateforme ou de la flowbox en tant que telle.

La solution Predictive Flowbox est composée de deux ensembles :

  • La Predictive Flowbox : périphérique installé sur le réseau d’eau privatif de nos clients - il est composé d’une vanne, d’un débitmètre, d’une sonde de température et d’une carte
    permettant la connexion à notre plateforme, la remontée des métriques et les envois
    d’ordre d’ouverture/fermeture de vannes.
  • La Plateforme Predictive Flowbox : elle est composée d’une API, d’une WebApp et d’un
    broker MQTT, de bases de données relationnelles et orientée séries temporelles et d’un
    module de machine learning pour les consommations anormales. Cette plateforme
    assure l’ingestion, le stockage, l’analyse et la restitution des données ainsi que la gestion
    des alertes.

Missions & Attributions

La personne avec pour role de développeur sénior :

  • Conçoit tous les aspects techniques et fonctionnels du front-end et back-end d’un site
    web ou d’une application (architecture, stockage des données, interface utilisateur,
    sécurité, traitements et processus, …).
  • Veille au respect des normes et standards en vigueur.
  • Rédige la documentation technique et forme les utilisateurs.
  • Effectue la maintenance corrective et évolutive du produit après développement.
  • Résout les problèmes techniques.
  • Configure et maintient en bon état de fonctionnement les serveurs d’hébergement et les
    différents composants
  • Améliore/Optimise de manière continue l’expérience utilisateur.Effectue une veille technologique régulière afin de rester à jour sur les dernières
  • innovations et identifier les éléments opportuns pour Flovea
  • Assure le support de nos clients lors des phases d’appairage, de prise en main et
    d’utilisation de la plateforme.

Technologies

  • Backend & API : Python 3.13/FastAPI, MQTT, Warp 10 (series temporelles), Postgresql
    14+
  • WebApp: VueJS (Vue 3), TailwindCSS, Vite
  • Machine Learning: Python 3.12, Scikit-learn, Darts, KMeans
  • Ops: Traefik, Ansible, Docker, Docker Compose
  • Code: Gitlab, Gitlab-CI,
  • Tests : Pytest, Cypress, Vitest
  • Lint: Ruff, Eslint
  • Package Manager : Poetry, Pnpm
  • Hébergement : OVHCloud (Serveurs dédiés & VMs)

La personne va travailler dans un premier temps sur les sujets backend/frontend/ops ; la partie datascience/machine learning se fera dans un second temps ou via l’arrivée d’un profil complémentaire.

Localisation

La personne doit pouvoir se rendre facilement à Saint Paul Lès Dax pour travailler avec
l’équipe Flowbox sur site. Elle est idéalement localisée en Nouvelle Aquitaine.

Des voyages au Moyen Orient sont possibles (Dubai, Egypte, Jordanie, etc) pour travailler
avec nos partenaires et clients.

Compétences

La personne doit avoir les compétences suivantes :

  • Concevoir et modéliser des solutions à un besoin exprimé
  • Savoir travailler en autonomie tout en collaborant avec les salariés / partenaires de
    l’entreprise
  • Maitrise des méthodologies « agile » (Kanban, revue de code, pair programming, etc)
  • Capacité à apprendre de nouvelles technologies et de développer de nouveaux usages
  • Maitrise et mise en œuvre d’architecture applicative et système (Architecture 3 tiers, API,
    etc)
  • Maitrise de plusieurs langages de programmation frontend et backend et des principes
    de programmation associés
  • Mise en œuvre des outils et méthodes nécessaires au bon déroulement d’un projet
    (gestion des sources, tests (unitaires, intégration, etc), intégration continue (CI),déploiement continu (CD), etc)
  • Stockage, traitement et analyse de données (base de données / stockage fichiers,
    traitement batch/streaming, datascience / statistique)
  • Administration système (Linux) et connaissances réseaux
  • Connaissance des principes de scalabilité (horizontale et verticale) et être en mesure de
    les déployer
  • Cybersécurité (notions de base)

En plus de ces compétences techniques :

  • La maitrise de l’anglais, tant à l’oral et à l’écrit, doit être courante pour être en mesure de
    travailler avec nos partenaires et clients. La gestion du code se fait en anglais également
    (issues, code, etc)
  • La personne doit être capable de communiquer avec des personnes non expertes dans
    les domaines IT (simplification, vulgrarisation)

Expérience et Salaires

La personne doit disposer d’une expérience solide pour prendre en main le projet et
travailler en autonomie et en relation direct avec des profils fonctionnels / non techniques.

La personne sera hiérarchiquement rattachée au fondateur de Flovea.

Le salaire est entre 45K€ et 60K€ brut, selon le profil.

Le poste est à pouvoir immédiatement.

Processus de recrutement

Il se fera en deux entretiens :

  • Entretien technique et présentation du projet avec le DSI/CTO de Flovea
  • Entretien global avec le fondateur de Flovea

En savoir plus

Flovea : https://www.flovea.fr/

Predictive Flowbox :

Contact

Nicolas Steinmetz - ns@flovea.fr - 0762381324

2 messages - 1 participant(e)

Lire le sujet en entier

Lire la suite…

Comment nous avons rendu la bibliothèque packaging de Python 3× plus rapide

by Camille Roux from Human coders

Découvrez comment les mainteneur·se·s de pip et packaging ont optimisé la bibliothèque packaging de Python, utilisée par presque tous les outils de gestion de paquets. Grâce au nouveau profiler statistique de Python 3.15 et aux métadonnées de tous les packages PyPI, iels ont amélioré les performances de lecture des versions et des spécificateurs. Les résultats sont impressionnants : jusqu’à 2x plus rapide pour les Versions, 3x pour les SpecifierSets, et même 5x dans certains cas, tout en gardant le code lisible et simple.


Commentaires
L'article Comment nous avons rendu la bibliothèque packaging de Python 3× plus rapide a été posté dans la catégorie Python de Human Coders News

Lire la suite…

10 ans après, Modoboa est toujours là pour prendre soin de votre serveur de messagerie

by mirtouf from Linuxfr.org

Puisqu'il n'est jamais trop tard pour écrire sur DLFP, voici donc une note de journal concernant Modoboa une application écrite en python qui, près de 11 ans après la dernière dépêche à son sujet concernant la version 1.2.0 (nous sommes en version 2.6.5, la version 2.7.0 pointe le bout de son nez) continue de toujours être une solution adaptée pour avoir rapidement un serveur de messagerie fonctionnel et bien doté.
Le logiciel est toujours développé par @anguyen et je l'en remercie.

Rappel des fonctionnalités offertes

Une interface d'administration

Celle-ci vous permet de gérer les comptes voire de déléguer la gestion d'un domaine, définir des quotas par domaine ou compte, de définir des relais et d'autres choses.
Il est à noter que l'interface a visuellement bien changé depuis la version 1.2.0.
Réglages
Comptes utilisateurs
Statistiques
Informations du domaine
Accueil

Cette interface permet une multitude de réglages et notamment pour celles et ceux qui le souhaitent, d'intégrer rspamd ou amavis, de signer ses messages sortants avec dkim, de valider les enregistrements DNS d'un domaine, de s'interfacer avec un annuaire LDAP, etc.

Un webmail

Pratique pour lire ses messages et y répondre si l'envie nous en prend.

Des filtres sieve

Établir des règles sieve pour son tri automatique des messages est clairement le must-have pour s'épargner une tâche rébarbative.

Une gestion des calendriers

Le logiciel propose via radicale et un petit module à installer via pip une gestion des calendriers

Un gestion des carnets d'adresse

C'est toujours mieux de pouvoir enregistrer ses contacts n'est-ce pas ?

Un répondeur automatique

Le meilleur outil pour annoncer ses vacances à la Terre entière (ou pas).

Quels changements depuis 11 ans ?

Plein de choses, je vais donc les citer pêle-mêle:

  • l'ajout d'un service de notification pour prévenir de l'arrivée d'une nouvelle version
  • une modularisation de Modoboa puis le retour à un fonctionnement quasiment monolithique
  • l'implémentation d'un contrôle de la robustesse des mots de passe
  • l'implémentation d'une API REST
  • la vérification des enregistrements DNS pour un domaine
  • la fin du support de python 2.x
  • un démon policy et le support de Redis (Valkey sans doute prochainement)
  • le support de TOTP (oui !)
  • une nouvelle interface telle que montrée plus haut
  • la possibilité de créer et gérer ses clefs DKIM dans Modoboa
  • la fin programmée des cronjobs (RQ se chargera de tout cela prochainement)
  • OAUTH2 est supporté (très bien pour intégrer des applications externes)
  • un service d'auto-configuration pour permettre aux clients lourds de savoir comment se connecter au serveur mail

Pourquoi continuer à utiliser modoboa face à l'alternative X, Y ou Z ?

Voici une question qui se pose et à laquelle j'ai quelques éléments de réponse. Étant utilisateur depuis plus de 12 ans et ayant même testé la version 0.9.0 sans être convaincu à l'époque, j'ai pu voir le logiciel évoluer avec toujours la possibilité de garder le contrôle de son installation car Modoboa s'installe avec soit un script fourni par les développeurs soit manuellement et à l'heure où certains développeurs ne jurent plus que par docker (pour ne pas le citer), c'est toujours appréciable car cela permet aux personnes comme moi de tuner leur installation plus facilement même si cela implique de bien conserver la trace de ce que l'on fait. En outre, je trouve le logiciel bien pensé et rationnel dans son approche, les fonctionnalités proposées sont souvent celles les plus utiles pour les utilisateurs.
J'ai pu migrer de la version 1.2.0 à la version 2.6.5 avec assez peu de problèmes et c'est fort appréciable de ne pas devoir repartir de zéro.

Les ressources utiles

La documentation
Le site web
Le dépôt github du projet

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

Sur Grenoble - Meetup le 27 janvier 2026

by Pierre-Loic from AFPy discuss

Bonjour à tous,

On organise à Grenoble mardi 27 janvier 2026 un Meetup Python avec un quiz sur les nouveautés et les avancées marquantes de l’année 2025. On aura aussi des questions sur le documentaire sur Python sorti en août 2025 : https://www.youtube.com/watch?v=GfH4QL4VqJ0

Grand Quiz Python de l'Année 2025
January 27, 2026 7:00 PM (Europe/Paris) → January 27, 2026 9:00 PM (Europe/Paris)

3 messages - 2 participant(e)s

Lire le sujet en entier

Lire la suite…

Sur Lyon − Meetup le 21 janvier

by grewn0uille from AFPy discuss

Bonjour tout le monde,

Le prochain meetup sur Lyon a lieu le mercredi 21 janvier à 19h, dans les locaux de GenyMobile (métro Saxe-Gambetta).

Pour ce meetup de rentrée, @CyrillePontvieux nous parlera de la gestion de changelog quand on est plusieurs :spiral_notepad:

Comment gérer un changelog facilement quand on est plusieurs ?
January 21, 2026 7:00 PM (Europe/Paris) → January 21, 2026 10:00 PM (Europe/Paris)
https://www.meetup.com/fr-fr/python-afpy-lyon/events/312861081/

1 message - 1 participant(e)

Lire le sujet en entier

Lire la suite…

Sur Paris - Meetup le 29 janvier

by Chadys from AFPy discuss

On commence l’année avec un nouveau meetup, logés et nourris :slight_smile:

Sur Paris - Meetup le 29 janvier
January 29, 2026 7:00 PM (Europe/Paris) → January 29, 2026 10:00 PM (Europe/Paris)
Octopus Energy France - 87 Rue de Richelieu, 75002 Paris

Lieu : Octopus Energy France - 87 Rue de Richelieu, 75002 Paris
Lien meetup : Meetup Python, Thu, Jan 29, 2026, 7:00 PM | Meetup

On alterne entre moment conviviaux et talk. Il reste un spot pour un court talk si quelqu’un en a l’envie !

7 messages - 3 participant(e)s

Lire le sujet en entier

Lire la suite…

sphinxcontrib-run: exécuter du code pendant la génération d'une documentation

by nlgranger from Linuxfr.org

Je commence l'année par une petite contribution open-source pour les documentations de projets python: sphinxcontrib-run.

TLDR; une directive qui permet d'exécuter du code à la volée pendant la génération d'une doc.

Cette extension au générateur de documentation sphinx concerne la partie des documentations d'API générées automatiquement à partir des commentaires dans le code source, les "docstrings". Les docstrings sont rédigées au format reStructuredText qui est un peu plus évolué que markdown et permet d'appeler des directives avec des arguments pour désigner un bloc de code, une référence, un argument de fonctions, etc.

L'extension sphinxcontrib-run ajoute une nouvelle directive .. run:: qui prend un morceau de code python en argument et l'exécute immédiatement pendant la construction de la documentation. Plus précisément, un interpréteur python est démarré pour chaque page de documentation traitée par sphinx et, à chaque fois que sphinx insère dans la page un nœud correspondant à la directive .. run::, le code est exécuté dans cet interpréteur.

Au passage, ce que le code écrit sur la sortie standard est inséré dans la documentation.

Voici un exemple pour un module python jouet:

"""
.. run::

    from example import square_text_50

    lorem = (
        "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
        + " Pellentesque faucibus vestibulum est id consequat."
        + " Cras sed enim sed ex maximus blandit."
    )
"""


def square_text_50(text):
    """Wrap text to 40 columns.

    .. run::

        print("::")
        print("")
        for line in square_text_50(lorem):
            print("    " + line)
        print("")
    """
    for i in range(0, len(text), 50):
        yield text[i : i + 50]

Si l'on utilise automodule, sphinx va traiter toutes les docstrings à la suite dans la même page, et donc sphinxcontrib-run exécutera les morceaux de code dans le même interpréteur.
La première directive .. run:: fait les imports et instancie une variable globale qui pourra servir plusieurs fois.
La seconde directive intervient dans la documentation de la fonction, elle génère dynamiquement la sortie de la fonction pour faire un exemple.

Dans la documentation, le résultat ressemble à ceci: screenshot de la documentation sphinx générée

Je vais personnellement utiliser ce projet pour générer automatiquement des figures à insérer dans la doc d'un autre projet, ça m'évitera de les ajouter au dépôt git et d'avoir à les tenir à jour.

Au passage, je note que l'API sphinx pour ajouter des directives est très bien faite et bien documentée.
Enfin, il faut aussi mentionner un projet similaire au mien: https://github.com/sphinx-contrib/eval

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…