AFPy
by AFPy - Mastodon from AFPy - Mastodon
Inscription ouverte (obligatoire et gratuite) pour la PyConFR 2025 se déroulant du 30 octobre au 2 novembre 2025Quam Facere : Nouvelle version
by seraf1 from Linuxfr.org
Quam Facere, qu'est-ce donc ?
C'est une appli web développée en Python/Flask/SQLAlchemy pour la gestion des procédures informatiques avec la possibilité de lancer des opérations basées sur ces procédures.
Fonctionnalités clés :
- Création et exécution de procédures avec variables dynamiques
- Gestion d'équipes hiérarchiques avec permissions
- Suivi en temps réel des opérations
- Export de documentation (Markdown, PDF, DOCX, etc.)
- Interface multilingue (Français/Anglais)
Quelles nouvelles ?
- Bascule de Bulma vers Bootstrap pour l'interface
- Validation du compte par mail
- Correction de nombreux petits Bug
Retour
JE suis bien évidemment preneur de tout retour que vous pourriez me faire, soit en commentaire de ce journal, soit en ouvrant un ticket sur Codeberg.
Les liens
- Sources : https://codeberg.org/spn109/Quam_Facere
- Site : https://spn109.fr/qf
- Demo : https://qf-demo.spn109.fr
Commentaires : voir le flux Atom ouvrir dans le navigateur
Chef-Cheffe de projets web applicatifs confirmé-e / Toulouse / CDD 12 mois
by makina from AFPy discuss
Makina Corpus développe des projets web ou mobiles d’envergure combinant notamment la cartographie, l’intelligence artificielle, le traitement et l’analyse de données, la dataviz. Nos applications phares sont au service de domaines tels que la randonnée et la gestion d’espaces naturels (Geotrek), l’aménagement et le développement économique de territoires (Actif), la prévention des risques naturels, la gestion de l’eau…
Notre organisation et nos prestations se construisent sur trois piliers : les logiciels libres, le respect de l’humain et l’engagement en faveur de l’environnement; trois valeurs fondamentales que nous développons et renforçons grâce à notre charte RSE.
Découvrez quelques uns de nos projets : Références | Makina Corpus, et retrouvez-nous sur Welcome To The Jungle (Makina Corpus : photos, vidéos, recrutement).
La mission
Dans le cadre du remplacement d’un chef de projet vous intégrerez l’activité « éditeur logiciel » de Makina Corpus et aurez pour mission de piloter une suite applicative open-source dédiée au suivi de la biodiversité pour les collectivités.
Vos missions consisteront à :
- Identifier et mettre en œuvre au sein des projets les besoins technico-fonctionnels des clients ;
- Formaliser, organiser, planifier et contrôler les phases de réalisation ;
- Piloter et coordonner l’équipe projet ;
- Assurer le suivi du planning et le contrôle de la qualité ;
- Gérer les engagements vis-à-vis du client et s’assurer de sa satisfaction ;
- Fidéliser, entretenir et développer le portefeuille client existant ;
- Participer aux phases d’avant-vente en relation avec le client et avec nos équipes, rédiger une proposition commerciale.
Vous devrez acquérir une connaissance fonctionnelle poussée sur l’outil pour conseiller et accompagner les clients, et travailler avec l’équipe technique.
Nous mettrons en place un accompagnement adapté et de courte durée pour vous permettre d’acquérir rapidement une très bonne connaissance de l’entreprise, son activité et son environnement.
Ce poste est basé à Toulouse et ouvert au télétravail partiel (jusqu’à 3 jours/semaine car il nécessite de venir en présentiel à l’agence au minimum 2j/semaine).
Profil
Vous maîtrisez les méthodes et outils de gestion de projets web complexes et techniques, et possédez une expérience récente de 5 ans minimum sur ce type de poste et ce périmètre de missions. Vous avez une appétence commerciale et idéalement une expérience dans la réponse à appels d’offres.
- Vous aimez comprendre les besoins du client, s’approprier son métier et lui proposer des solutions adaptées ;
- Vous êtes très à l’aise avec l’environnement du web et avec les aspects fonctionnels des applications web ;
- Votre goût du travail en équipe, votre curiosité, vos excellentes qualités relationnelles seront des atouts indispensables. Apprendre toujours plus vous stimule !
Nous ne précisons pas de diplôme ou de niveau d’études minimum car nous attachons avant tout de l’importance aux compétences et à la passion du métier.
Informations complémentaires
Dans la ruche collaborative Makina Corpus, on dit ce qu’on fait : les makiniens évoluent dans une ambiance motivante et stimulante (projets et contrib opensource, participations encouragées à des évènements/meetup, émulation entre experts passionnés, technos innovantes à tester, veille…) et contribuent aux valeurs humaines ancrées dans l’ADN de l’entreprise (environnement, équilibre vie pro/vie privée, collaboratif, télétravail…).
Mais surtout chez Makina on fait ce qu’on dit : vous avez besoin de le voir pour le croire ? Venez nous rencontrer, un.e makinien.ne pourra vous en parler ! Nos équipes sont mixtes, femmes et hommes du numérique nous vous attendons.
Écrivez-nous et racontez qui vous êtes et ce qui vous anime. Expliquez-nous en quoi vos motivations et vos compétences sont en adéquation avec nos valeurs et nos activités.
1 message - 1 participant(e)
La mécanique des imports en Python
by entwanne from Zeste de savoir - Articles
Comprendre son comportement et le personnaliserConFoo Montreal 2026: L'appel aux conférenciers est ouvert
by Yann Larrivee,Benoît Sibaud from Linuxfr.org
La conférence ConFoo est de retour pour sa 24 e édition, du 25 au 27 février 2026 à l’Hôtel Bonaventure de Montréal! Que vous soyez un développeur junior ou un CTO, venez découvrir pourquoi ConFoo est devenu l’un des événements phares pour les professionnels en hautes technologies.
Nous sommes présentement à la recherche d’experts d’expérience souhaitant joindre notre équipe de conférenciers pour l’édition 2026! De PHP à JavaScript, en passant par tous les enjeux liés à la sécurité et au développement de l’IA, ConFoo couvre chaque année l’ensemble des sujets qui font bouger l’industrie.
Offertes en français ou en anglais, nos présentations sont généralement d’un format de 45 minutes, incluant un 10 minutes de questions des participants. Nos conférenciers invités profitent aussi d’un traitement privilégié; comprenant la couverture de leurs frais de déplacement et d’hébergement, en plus de l’accès à l’expérience complète de l’événement (présentations, repas, etc.).
Vous avez jusqu’au 21 septembre prochain pour soumettre votre projet de présentation!
Vous cherchez simplement à vous inscrire? Profitez dès maintenant d’un rabais de 300$ en réservant votre place d’ici le 17 octobre!
Faites partie de l’aventure avec nous et découvrez comment l’intelligence humaine est en train de façonner le milieu des hautes technologies!
- lien nᵒ 1 : Appel au conférenciers
- lien nᵒ 2 : ConFoo Montréal 2026
Commentaires : voir le flux Atom ouvrir dans le navigateur
Problème pour réinitialiser mon mot de passe sur le CFP de PyConFR
by arruda from AFPy discuss
Bonjour,
J’ai récemment essayé de me reconnecter au CFP de PyConFR pour vérifier l’état de ma proposition. Lorsque j’ai voulu utiliser le bouton « réinitialiser le mot de passe », je n’ai reçu aucun e-mail.
Il est possible que j’aie soumis ma proposition avec une adresse e-mail erronée, car je ne reçois pas de message de réinitialisation, ni sur mon adresse personnelle, ni sur mon adresse professionnelle.
Pourriez-vous m’aider à résoudre ce problème ?
Merci d’avance pour votre aide.
8 messages - 5 participant(e)s
Comment Python est devenu une communauté, pas seulement un langage
by Camille Roux from Human coders
Cet article explique comment Python, au-delà de ses qualités techniques, s’est construit autour d’une communauté mondiale active et solidaire. Il met en lumière l’importance des contributions open source, des événements comme les conférences Python, et des initiatives éducatives qui ont façonné l’écosystème Python actuel. De simple langage de programmation, Python est devenu une culture, un réseau d’échange et de soutien, permettant à chacun de contribuer, d’apprendre, et de collaborer à l’échelle mondiale.

Commentaires
L'article Comment Python est devenu une communauté, pas seulement un langage a été posté dans la catégorie Python de Human Coders News
Piloter firefox, mais pas que, avec DBUS
by purplepsycho from Linuxfr.org
Sommaire
Intro beaucoup trop longue
Sur ma liste de choses à faire[1], j'avais marqué "apprendre dbus" il y a bien longtemps.
Sur mon PC, j'écoute de la musique via deezer, et parfois, c'est long quand je veux passer un morceau ou retourner sur le dernier --car j'aime écouter certains trucs en boucle, toi même tu sais-- :
- il faut retrouver firefox,
- il faut retrouver le bon onglet,
- il faut cliquer au bon endroit dans la page.
Bref une perte de temps.
J'ai donc commencer à me demander comment piloter firefox autrement. L'idée, c'est de faire un programme qui va bien et de le lancer via une combinaison de touches (ou dans un bash, ou même un vim).
deezer-cli permet de piloter Safari sur un Mac. L'idée est bonne : exécuter une commande js dans l'ongle deezer.
Bon, c'est pas ce que je cherche, mais l'idée me plaît.
Et pourquoi pas lancer un serveur udp depuis un script greasemonkey pour faire la même chose ?
Je me voyais déjà ajouter la fonctionnalité manquante à firefox, devenir un nouveau gourou du logiciel libre, à moi la gloire, le succès et tout le reste.
Et pis, j'ai repensé à mon vieux casque bluetooth qui est capable de faire ça, ">*/×@)! Quelqu'un avait déjà eu l'idée. Il y avait même un touche sur mon clavier pour mettre le flux audio en pause…
Après quelque recherche[2], j'ai trouvé ce que je cherchais : Piloter une interface mediaplayer2 via dbus
Quoi
Vas plutôt lire wikipedia, mais en gros, DBUS est un bus qui permet aux applications de proposer leurs services à qui en veut.
Par exemple, on peut allumer ou éteindre le bluetooth, éteindre l'ordinateur, envoyer une notification…
Et donc, on peut piloter un lecteur multimédia, via l'interface MPRIS[3].
Comment
Un peu de lecture plus tard, je trouve ce qui m'intéresse : l'interface MediaPlayer2.Player qui implémente --entre autres-- les méthodes
-
Next, -
Previous, -
PlayPause.
Donc, c'est bon, j'ai ce qu'il faut maintenant ? Non, il manque l'objet à manipuler. Et cet objet n'a pas forcement un nom unique, il faudra donc le chercher…
Chaque objet dbus a un nom qu'il demande sur le bus, si un lecteur multimédia veut implémenter l'interface qui va bien doit avoir un nom qui commence par org.mpris.MediaPlayer2.
Il faut donc chercher les noms sur le bus qui commence par le motif indiqué.
Pour cela, on utilise l'interface org.freedesktop.DBus implémentée par l'objet org.freedesktop.DBus sur laquelle on doit appeler ListNames.
C'est bon on a tout pour commencer ??
Non, et le chemin alors ?
Le chemin (path dans la langue des Spices Girls) correspond plus au moins à la notion de classe. En simple, c'est comme l'interface, mais dont on replace . par des /, et que l'on fait commencer par /.
Donc, l'interface "org.freedesktop.DBus" sera associé au chemin "/org/freedesktop/DBus".
Là, on a tout.
On va donc commencer par chercher la liste des objets dont le nom suit un certain motif.
Si cet objet est unique, on peut appeler les fonctions qui nous intéressent, comme "Next" et les autres cités plus haut.
Implémentations
Il y a plein de binding de dbus. J'ai commencé avec un test en python, pour voir si ça marchait, puis en C par ce qu'on se refait pas et en bash, parce que je savais pas si c'était possible.
python
J'aime pas python --pas le langage en lui même, mais la gestion des versions et des dépendances-- mais il faut bien lui reconnaître qu'il est facile d'accès et que sa bibliothèque dbus est bien documentée.
C'est facile et rapide, tellement que je peux mettre ici (réduit au minimum, c'est :
#! /usr/bin/env python3
import sys
from dbus import SessionBus, Interface
# On récupère le bus de session
bus = SessionBus()
# On récupère l'objet qui nom permet d'énumérer les objets sur le bus de session
session = bus.get_object( "org.freedesktop.DBus", "/org/freedesktop/DBus")
# Et on appelle ListNames sur cet objet
names = session.ListNames()
# Dont on récupère les objets dont le nom commence par ...
players = [x for x in names if 0 == x.find('org.mpris.MediaPlayer2')]
# On veut un seul objet
if 1 != len(players):
if 0 == len(players) :
sys.stderr.write('No player found\n')
else:
sys.stderr.write('More than one player found\n')
sys.exit()
# On récupère l'objet associé au nom
player = bus.get_object(players[0], '/org/mpris/MediaPlayer2')
# Ainsi que l'interface
interface = Interface(player, dbus_interface='org.mpris.MediaPlayer2.Player')
# Et on appelle la méthode qui va bien.
interface.PlayPause()
C
En C, j'ai voulu utiliser la bibliothèque officielle (libdbus), mais j'ai lu :
If you use this low-level API directly, you're signing up for some pain. —official API documentation
Donc, je suis parti sur glib, parce que c'est rigolo de cherche de la doc sur la manipulation des GString sur internet.
C'est du même tonneau, mais avec des appels moins simples :
On récupère le bus avec la fonction qui va bien :
GDBusConnection *con = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, NULL);
Et on appelle les méthode avec un gros pâté :
GVariant *result = g_dbus_connection_call_sync(
con, // connexion au bus
"org.freedesktop.DBus", // nom
"/org/freedesktop/DBUS", // chemin
"org.freedesktop.DBus", // interface
"ListNames", // methode
NULL, // parametre
G_VARIANT_TYPE("(as)"), // sortie attendue: tableau de chaines
G_DBUS_CALL_FLAGS_NONE, // pas de drapeau
3000, // timeout
NULL, // cancellable
NULL); // error
La partie pénible est de parcourir les résultats pour trouver l'objet qu'on veut car on doit faire attention à libérer explicitement la mémoire. Un fois l'objet voulu trouvé, on peut appeler la méthode voulue :
GVariant *result = g_dbus_connection_call_sync(
con,
player_name,
"/org/mpris/MediaPlayer2",
"org.mpris.MediaPlayer2.Player",
"PlayPause",
NULL,
NULL,
G_DBUS_CALL_FLAGS_NONE,
3000,
NULL,
NULL);
Le code était un peu plus touffu, il est lisible ici
Shell
Et pour bash, il existe dbus-send qui fait en gros ce que je veux en un seul appel (que j'aurais pu appeler en python ou en C si j'étais pervers)
#! /usr/bin/env bash
# à la recherche du player
PLAYER=$(dbus-send --print-reply --session --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames | grep org.mpris.MediaPlayer2 | sed s'/.*"\([^"]*\)".*/\1/')
# Meh, what if PLAYER is empty? wc -l will return 1
# should also test for PLAYER emptyness
COUNT="$(wc -w <<< "$PLAYER")"
if [ 0 -eq "$COUNT" ] ; then
echo "no player found"
exit
elif [ 1 -ne "$COUNT" ] ; then
echo "More than one player found"
exit
fi
# appel de la méthode voulue
1>&2 dbus-send --print-reply --session --dest="$PLAYER" /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
C'est moins lisible, mais ça fait le job.
Comparaison
Avec GNU time, je me suis amusé à comparer les trois implémentations (qui font la même chose, hein)
Quoi | python | C | shell
--------------+---------+--------+------
taille code | 0.8kB | 5kB | 0.6kB
RAM | 13MB | 5MB | 3MB
Vitesse | ~30 ms | <10 ms | ~10ms
Sans surprise, python est plus lent et occupe plus en mémoire que l'implémentation en C, mais les ordres de grandeurs sont les mêmes et restent très raisonnables sur des architectures modernes (surtout comparé aux 3GB accaparés par firefox)
Je suis étonné le shell prenne si peu de RAM, faut peut être que je vérifie comment les pipes sont prises en compte par time…
La suite
Je suis content, après avoir copié les exécutables dans ~/.local/bin, je n'ai plus à utiliser la souris pour changer de piste, et j'ai un peu appris un truc. La suite serait d'ajouter un filtre pour ne piloter que certains logiciels, soigner le rangement des sources python… mais ça sera pour la prochaine fois.
Repo git
Le code, c'est là
[1]: Aussi appelée liste des trucs que je ferai jamais
[2]: Oui, au singulier, c'était pas vraiment caché
[3]: Media Player Remote Interfacing Specification
Commentaires : voir le flux Atom ouvrir dans le navigateur
Je code, je coop
by Éloi Rivard <eloi@yaal.coop> from Yaal
Chez Yaal Coop, nous proposons régulièrement des temps d'échange informel avec des gens qu'on ne connaît pas encore, mais avec qui on pense partager des centres d'intérêt ou des valeurs. Souvent ce sont des contributeurs de logiciels libres ou bien d'autres coopératives dans l'informatique. Parmi elles, le mois dernier nous rencontrions Hizkia une SCOP de Bayonne qui développe des outils industriels et de gestion, Hashbang, une SCOP de Pythonistes à Lyon, et nos voisins de Noesya à Bordeaux, qui se spécialisent dans l'éco-conception et la réalisation de sites légers et accessibles. De belles rencontres chacune.
Noesya développe le projet « Je code, je coop », qui recense des interviews de développeurs dans des coopératives.
Éloi a joué le jeu de l'interview, que vous pouvez consulter ici :
Et d'ailleurs en octobre 2024 on répondait à une interview écrite pour le site codecode.coop, qui est un projet similaire porté par Codeurs en liberté
