MakeMake The Dwarf Planet is a feed agregator.

Chef-Cheffe de projets web appli­ca­tifs 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 rempla­ce­ment d’un chef de projet vous inté­gre­rez l’ac­ti­vité « éditeur logi­ciel » de Makina Corpus et aurez pour mission de pilo­ter une suite appli­ca­tive open-source dédiée au suivi de la biodi­ver­sité pour les collec­ti­vi­tés.

Vos missions consis­te­ront à :

  • Iden­ti­fier et mettre en œuvre au sein des projets les besoins tech­nico-fonc­tion­nels des clients ;
  • Forma­li­ser, orga­ni­ser, plani­fier et contrô­ler les phases de réali­sa­tion ;
  • Pilo­ter et coor­don­ner l’équipe projet ;
  • Assu­rer le suivi du plan­ning et le contrôle de la qualité ;
  • Gérer les enga­ge­ments vis-à-vis du client et s’as­su­rer de sa satis­fac­tion ;
  • Fidé­li­ser, entre­te­nir et déve­lop­per le porte­feuille client exis­tant ;
  • Parti­ci­per aux phases d’avant-vente en rela­tion avec le client et avec nos équipes, rédi­ger une propo­si­tion commer­ciale.

Vous devrez acqué­rir une connais­sance fonc­tion­nelle pous­sée sur l’ou­til pour conseiller et accom­pa­gner les clients, et travailler avec l’équipe tech­nique.

Nous mettrons en place un accom­pa­gne­ment adapté et de courte durée pour vous permettre d’ac­qué­rir rapi­de­ment une très bonne connais­sance de l’en­tre­prise, son acti­vité et son envi­ron­ne­ment.

Ce poste est basé à Toulouse et ouvert au télé­tra­vail partiel (jusqu’à 3 jours/semaine car il néces­site de venir en présen­tiel à l’agence au mini­mum 2j/semaine).

Profil

Vous maîtri­sez les méthodes et outils de gestion de projets web complexes et tech­niques, et possé­dez une expé­rience récente de 5 ans mini­mum sur ce type de poste et ce péri­mètre de missions. Vous avez une appé­tence commer­ciale et idéa­le­ment une expé­rience dans la réponse à appels d’offres.

  • Vous aimez comprendre les besoins du client, s’ap­pro­prier son métier et lui propo­ser des solu­tions adap­tées ;
  • Vous êtes très à l’aise avec l’en­vi­ron­ne­ment du web et avec les aspects fonc­tion­nels des appli­ca­tions web ;
  • Votre goût du travail en équipe, votre curio­sité, vos excel­lentes quali­tés rela­tion­nelles seront des atouts indis­pen­sables. Apprendre toujours plus vous stimule !

Nous ne préci­sons pas de diplôme ou de niveau d’études mini­mum car nous atta­chons avant tout de l’im­por­tance aux compé­tences et à la passion du métier.

Infor­ma­tions complé­men­taires

Dans la ruche colla­bo­ra­tive Makina Corpus, on dit ce qu’on fait : les maki­niens évoluent dans une ambiance moti­vante et stimu­lante (projets et contrib open­source, parti­ci­pa­tions encou­ra­gées à des évène­ments/meetup, émula­tion entre experts passion­nés, tech­nos inno­vantes à tester, veille…) et contri­buent aux valeurs humaines ancrées dans l’ADN de l’en­tre­prise (envi­ron­ne­ment, équi­libre vie pro/vie privée, colla­bo­ra­tif, télé­tra­vail…).

Mais surtout chez Makina on fait ce qu’on dit : vous avez besoin de le voir pour le croire ? Venez nous rencon­trer, un.e maki­nien.ne pourra vous en parler ! Nos équipes sont mixtes, femmes et hommes du numé­rique nous vous atten­dons.

Écri­vez-nous et racon­tez qui vous êtes et ce qui vous anime. Expliquez-nous en quoi vos moti­va­tions et vos compé­tences sont en adéqua­tion avec nos valeurs et nos acti­vi­tés.

1 message - 1 participant(e)

Lire le sujet en entier

Lire la suite…

ConFoo 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!

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

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

Lire le sujet en entier

Lire la suite…

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

Lire la suite…

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

[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

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

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.

Je code, je coop

É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é

Code code coop

Lire la suite…

PyLadiesCon 2025 − 5 au 7 décembre

by grewn0uille from AFPy discuss

Hello !

La PyLadiesCon 2025 a lieu en ligne, du 5 au 7 décembre.

Comme l’an dernier c’est multi-langues (anglais, espagnol, allemand, portugais, japonais, chinois) et multi-timezones.

Le CFP est ouvert jusqu’au 8 août : PyLadiesCon 2025 :: pretalx

Et l’appel à volontaires est aussi ouvert : https://portal.pyladies.com/

PyLadiesCon 2025

2025-12-05 00:00 (Europe/Paris) → 2025-12-07 23:45 (Europe/Paris)

1 message - 1 participant(e)

Lire le sujet en entier

Lire la suite…

LangExtract : Un nouvel outil Google pour extraire des données structurées via les LLMs

by Camille Roux from Human coders

Google dévoile LangExtract, une bibliothèque Python open source qui permet d’extraire des informations structurées à partir de textes bruts en utilisant les modèles de langage (LLMs). Cet outil se distingue par sa capacité de ‘source grounding’ précise et ses fonctionnalités de visualisation interactive, offrant aux développeur·se·s une solution robuste pour l’analyse et le traitement de données textuelles.


Commentaires
L'article LangExtract : Un nouvel outil Google pour extraire des données structurées via les LLMs a été posté dans la catégorie Python de Human Coders News

Lire la suite…

Lemmings : l’histoire derrière le classique de DMA Design

by Olivier Pons from Olivier Pons

Lemmings : L’histoire corrigée du jeu vidéo culte

Il y a plusieurs décennies, un jeu a captivé des millions de joueurs et reste, à ce jour, considéré comme l’un des titres les plus originaux, addictifs et exigeants de l’histoire. Nous parlons de Lemmings, un jeu qui a connu d’innombrables adaptations et qui a indéniablement marqué son époque.

L’origine des Lemmings

Pour comprendre la genèse de Lemmings, il faut se tourner vers le studio de développement écossais DMA Design et son éditeur, Psygnosis. L’idée du jeu est née d’une simple animation de petits personnages de 8×8 pixels créée par Mike Dailly, l’un des programmeurs de DMA, alors qu’il expérimentait pour un autre projet. C’est en voyant cette animation que son collègue, Russell Kay, s’est exclamé : « Il y a un jeu là-dedans ! » et a suggéré de nommer ces créatures « Lemmings ». David Jones, le fondateur de DMA Design, a ensuite dirigé le projet pour en faire le jeu que nous connaissons.

Le jeu est sorti le 14 février 1991 sur l’ordinateur Amiga, un jour de Saint-Valentin. Le succès fut immédiat et phénoménal : le jour de sa sortie, il s’est vendu à 55 000 exemplaires, un record pour l’époque. Au total, on estime que la franchise a vendu entre 15 et 20 millions d’exemplaires sur toutes les plateformes confondues.

Comment y jouer ?

Le concept de Lemmings est simple en apparence : dans chaque niveau, des créatures aux cheveux verts apparaissent via une trappe et marchent inlassablement, se dirigeant vers une mort certaine si le joueur n’intervient pas. La mission est de leur assigner des compétences spécifiques pour modifier le décor et leur créer un passage sécurisé jusqu’à la sortie.

Pour cela, le joueur dispose d’un nombre limité de huit compétences, parmi lesquelles :

  • Grimpeur (Climber) : pour escalader les parois verticales.
  • Flotteur (Floater) : pour utiliser un parachute et survivre aux chutes mortelles.
  • Bloqueur (Blocker) : pour stopper les autres lemmings et les forcer à faire demi-tour.
  • Bombe (Bomber) : pour faire exploser un lemming après un compte à rebours de cinq secondes.
  • Constructeur (Builder) : pour bâtir des escaliers.
  • Creuseur (Digger/Miner/Basher) : pour percer des tunnels à la verticale, en diagonale ou à l’horizontale.

Le jeu original proposait 120 niveaux répartis en quatre niveaux de difficulté : « Fun » (Amusant), « Tricky » (Délicat), « Taxing » (Éprouvant) et « Mayhem » (Chaos). Pour chaque niveau, il fallait sauver un certain pourcentage de lemmings dans le temps imparti.

Qu’est-il arrivé aux Lemmings ?

L’immense succès du jeu a entraîné une vague de portages sur la quasi-totalité des systèmes de l’époque : PC (MS-DOS), Super Nintendo, Game Boy, Mega Drive et bien d’autres. Des suites et extensions ont rapidement vu le jour, comme Oh No! More Lemmings dès 1991, qui ajoutait 100 niveaux inédits.

Mais que sont devenus ses créateurs ? DMA Design a continué sur sa lancée pour créer une autre franchise légendaire : Grand Theft Auto (GTA). Le studio a finalement été racheté et est aujourd’hui connu sous le nom de Rockstar North, un pilier de l’industrie du jeu vidéo.

Et qu’en est-il de la propriété intellectuelle (IP) du jeu ? Contrairement à une idée répandue, les droits n’ont pas été conservés par DMA Design. C’est l’éditeur, Psygnosis, qui détenait l’IP. Psygnosis a ensuite été racheté par Sony en 1993. C’est la raison pour laquelle les remakes et nouvelles versions de Lemmings sont apparus sur les consoles PlayStation, notamment sur PSP en 2006, sur PS Vita et même sur mobile, assurant ainsi la pérennité de ces créatures attachantes.

Lire la suite…