Vue lecture

Marathon: Le retour de Bungie aux jeux de tir de science-fiction exploré

Après avoir dit au revoir à l’incroyable franchise Halo, le développeur Bungie a innové dans le domaine des services en direct avec deux titres Destiny. Il prend en charge ces deux jeux depuis près d’une décennie maintenant, mais nous avons enfin vu ce qui était en préparation. À la surprise de beaucoup, il s’agit en […]

Le post Marathon: Le retour de Bungie aux jeux de tir de science-fiction exploré est apparu en premier sur Moyens I/O.

Bungie Taquine de Nouveaux Personnages pour la Sortie de Marathon en 2025

Bungie est resté plutôt silencieux à propos de son prochain jeu de tir d’extraction Marathonqui a encore une fenêtre de sortie pour 2025. Dans une mise à jour du développeur publiée lundi, le directeur du jeu a confirmé que le jeu était toujours en préparation, mais qu’il était trop tôt pour partager plus de détails. […]

Le post Bungie Taquine de Nouveaux Personnages pour la Sortie de Marathon en 2025 est apparu en premier sur Moyens I/O.

Mockintosh

Un outil de mock que je trouve vraiment intéressant (en particulier les possibilités de faire du mock de client Kafka pour créer des conversations)


Permalink

Niquests 3.9.0 documentation

Un remplaçant de la bibliothèque Python "requests" qui n'est plus maintenue.
Personnellement j'utilise httpx depuis quelque temps. A voir laquelle est la plus utile.
Permalien

MicroPython: Cellule de charge et limite d'utlisation

Bonjour à tous,

Dans le projet Steam Belgian Knife (sbk.education), il y a l'utilisation d'une cellule de charge comme capteur de pesée ou de capteur force.
La cellule de charge est l'élément principale d'une balance électronique.

L'une des application envisagées est la mesure de la poussée d'une fusée à eau (sur un banc d'essai).
Cela ne sera malheureusement pas possible et nous verrons pourquoi

A propos de la cellule de charge

La cellule de charge est un élément mécanique prévu pour tolérer une déformation en fonction de la force qui y est appliquée.
Cette force résulte soit de la pesée d'un objet, soit d'un effort appliqué directement sur la cellule de charge (au bon endroit et dans la bonne direction).

La cellule de charge est composé d'un pont de Wheatstone, pont constitué de 4 résistances dont l'une d'entre elles est solidaire de la cellule de charge.
Lorsqu'une force déforme la cellule de charge, la résistance est également déformée et sa valeur change sensiblement.
Cela modifie l'équilibre du point de Wheatstone et modifie la tension de sortie d'un ordre de grandeur de l'ordre de quelques millivolts.

Cellule de charge

Les différences de tensions est tellement faible qu'il faut faut employer un amplificateur. Le plus connu est le hx711, un amplificateur 24 bits qui prend en charge l'alimentation et la mesure d'une cellule de charge.

HX711 avec MicroPython

Le HX711 dispose d'une bibliothèque Arduino mais comme vous le savez c'est avant tout l'utilisation avec MicroPython qui nous intéresse.

Pour commencer, voici comment brancher le capteur sur un Raspberry-Pi Pico.

Source: esp8266-upy/hx711

La bibliothèque hx711 et sa documentation (en cours de constitution) est disponible sur le dépôt esp8266-upy/hx711 .

Une fois le fichier hx711.py copié dans sur la carte MicroPython, il est possible d'exécuter l'un des programmes de test.

La tare

Les gauches de contraintes et cellules de charges n'ont pas vraiment de "point Zero".
Ces capteurs sont plus ou moins contraint au repos... et passent dans un autre état de contrainte lorsqu'une masse/force est appliquée.

Il faut donc effectuer une tare qui lit l'état du capteur au repos et mémorise la valeur comme point Zero.
Les autres mesures se feront donc par rapport à ce point Zéro. 

C'est exactement que fait une balance électronique lorsqu'elle est activée! Sa première opération consiste à réaliser une série de mesures pour déterminer le "point zéro" de repos (elle "tare").
C'est pour cela que l'affichage du "0" n'est pas immédiat sur une balance électronique.

Dans la bibliothèque la méthode HX711.tare() permet de réaliser cette opération.

test.py : mesure brute

ce simple programme de test qui affiche la valeur lue sur la cellule de charge.

from hx711_gpio import HX711
from machine import Pin
import time

pin_OUT = Pin(12, Pin.IN, pull=Pin.PULL_DOWN)
pin_SCK = Pin(13, Pin.OUT)

hx711 = HX711(pin_SCK, pin_OUT, gain=128)

hx711.tare()
while True:
	print( "---------------------------------" )
	# Raw value of load cell. Not scaled, no offset compensation
	print( "read: ", hx711.read() )
	print( "get_value: ", hx711.get_value() )
	time.sleep_ms( 500 )

Ce script retourne des "valeurs brutes".
Après avoir étalonné mes masses de test, j'ai effectué un relevé des "valeurs brutes" retournée par la fonction get_value().

Remarque: je me serais attendu à une erreur plus petite sur le poids de 1 Kg.

Si l'on reporte les valeurs dans un graphique, nous pouvons voir qu'il y a une belle relation proportionnelle.

En appliquant la règle de trois, entre les masse et get_value(), ma cellule de charge de 5Kg présente un rapport d'échelle de 404.4715 (le facteur d'échelle est calculée pour une mesure en grammes).

test_unit.py : mesure en gramme

Lorsque le facteur d'échelle est identifié (ex: 404.4715), il est possible d'obtenir la valeur de la mesure directement en grammes si e facteur d'échelle à été calculé pour une cellule de 5000 grammes (un gamme de valeur de 0 à 5000). 

Dans l'exemple ci-dessous, set_scale() est utilisé pour mentionner le facteur d'échelle.
A partir de ce instant, la valeur retournée par get_unit() sera la masse (en grammes).

from hx711_gpio import HX711
from machine import Pin
import time

pin_OUT = Pin(12, Pin.IN, pull=Pin.PULL_DOWN)
pin_SCK = Pin(13, Pin.OUT)

hx711 = HX711(pin_SCK, pin_OUT, gain=128)

hx711.tare()
hx711.set_scale( 404.4715 ) # 5000gr Gauge with 128 bit gain. Output unit will be in grams
while True:
	print( "get_units: %s gr" % hx711.get_units() )
	time.sleep_ms( 500 )

La constante de temps!

Avez-vous déjà remarqué qu'une balance réagit relativement vite mais qu'il faut  quelques secondes pour que la mesure soit stabilisée (surtout sur les balances de précision).

Ce même comportement s'applique aussi aux cellules de charges de cet article. La valeur augmente rapidement mais requière un certain laps de temps avant de se stabiliser près de la valeur finale.

J'ai ajouté un script plot_value.py qui attend la présence d'une masse pour effectuer une rafale de mesures toutes les 200ms jusqu'au retrait de la masse. En reportant les données dans un tableur, puis un graphique de l'évolution de la mesure en fonction du temps.

Source: esp8266-upy/hx711 - Cliquer pour agrandir

La forme de la courbe ressemble furieusement à la courbe de tension d'un circuit RC.

En inspectant celle-ci, nous pouvons constater:

  1. Qu'il faut environ 4 secondes pour obtenir la valeur finale.
  2. Que la section droite de la courbe présente une courbure à partir 2/3 de la valeur finale (très intéressant!).

Suivez la démonstration suivante

A partir de la valeur finale connue (400000), on calcule la valeur à 66% (soit 266666).
Le report de cette valeur de 266666 sur le tracé coupe la courbe de lecture là où celle-ci décolle de la tangente (ligne verte).

Encore mieux, il faut à peine 1077ms pour atteindre 66% de la valeur finale.

Ces 1077ms (ou 1.077 sec) est la constante de temps, temps minimal qu'il faut attendre pour avoir une idée raisonnable de la valeur finale.

Lecture rapide

En faisant une mesure à 1.077sec après que la mesure décolle du Zéro, nous obtenons une valeur indicative qu'il faut multiplier par 1.66 pour estimer le poids/force finale. 

Il suffit d'attendre 3 secondes de plus pour lire la valeur finale et éventuellement corriger la valeur finale.

Incompatibilité avec la mesure de poussée

Rappelez vous, en début d'article, nous parlions d'un banc d'essai pour mesurer la poussée d'une fusée à eau.

Il faut savoir que la majorité de la poussée se produit durant les premiers 1/500 de seconde du lancement (cf. Planète Sciences > Fusée à eau, un superbe document).

Avec une constante de temps de 1.077 sec pour l'obtention d'une mesure approximative... durant le lancement d'une fusée à eau il sera impossible d'effectuer plus d'une mesure avec la cellule de charge!

Il faudra se tourner vers un dynamomètre dont le temps de réponse est de l'ordre de la milliseconde pour effectuer des mesures pertinentes avec une fusée à eau.

Note: pour une fusée à combustible solide, la poussée dure plusieurs secondes (une dizaine), de sorte que la constante de temps à un impact moins important sur la mesure (mais quand même pas négligeable). La cellule de force sera appropriée dans ce cas.

Conclusion

La cellule de charge est un excellent outil permettant de mesurer force statique ou une masse.

Ce capteur ne conviendra pas pour la mesure de force dynamique (comprenez: qui change rapidement).

Note: il me faudra aussi poursuivre la documentation du pilote HX711 qui reste très embryonnaire.
Note 2: la documentation du pilote HX711 est maintenant complétée.

Ressources

PyConFR 2024, planning et inscriptions

La PyConFR 2024 a lieu du jeudi 31 octobre au dimanche 3 novembre à l’UFR Mathématique et d’Informatique de Strasbourg. Le planning est disponible et les inscriptions sont ouvertes !

Comme toujours, la PyConFR est un évènement gratuit et l’inscription est obligatoire.

Les deux premiers jours de la conférence seront occupés par les sprints. Et les deux jours suivants seront dédiés aux conférences (longues et courtes) et ateliers.

Trois keynotes sont également au programme :

  • De villageoise à l’itWoman… Quelles actions pour faire de mon rêve TECH une réalité ?, par Houleymatou Baldé
  • Recherche des bonnes pratiques de packaging, par Françoise Conil
  • Reality is not an end-to-end prediction problem: Applied NLP in the age of Generative AI, par Ines Montani

Cette année, un espace enfants (de 3 ans à 12 ans) est mis à disposition gratuitement sur inscription. Vous pouvez inscrire vos enfants jusqu’au 15 octobre.

Durant cette édition, c’est aussi le retour du déjeuner PyLadies. Un des objectifs est de tisser des liens entre la communauté PyLadies et le reste de la communauté Python francophone.
Les inscriptions au déjeuner PyLadies sont ouvertes jusqu’au 27 octobre.

Le dimanche matin, l'AFP y tiendra son assemblée générale. Si vous souhaitez y voter, assurez vous d'être à jour de cotisation.

Commentaires : voir le flux Atom ouvrir dans le navigateur

PicoTamachibi : créer un animal virtuel/Tamagotchi avec Raspberry-Pico 2

Bonjour à tous,

01 sept 2024: Ajout d'une petite étude des niveaux, des actions utilisateurs et actions tamagotchi sur le Wiki.

Pour ce week-end, je vous propose un chouette projet MicroPython à base de Raspberry-Pi Pico 2, d'un écran OLED 128x64 I2C et de trois boutons poussoir.

Kevin McAleer nous propose de créer un animal virtuel appelé Tamachibi.
Sorti tout droit de notre enfance ces animaux virtuels se nommait Tamagotchi.

Ce que j'adore dans la vidéo de Kevin ce sont les animations de "Baby".

écran OLED 128x64 I2C

La disposition des composants sur la carte est également bien pensé.

Source: vidéo de Kevin McAleer

Les graphiques sont stockés dans des fichiers au format BPM que nous avions déjà abordé dans l'article "Lecture d'image PBM sous MicroPython".

Quelques informations pratiques

Je reprend ci-dessous quelques captures de la vidéo où l'on retrouve des informations utiles pour d'autres projets similaire (merci Kevin pour ce partage).

Composition générale de l'interface

Les différentes icones de la barre d'outils (toolbar) propose les fonctionnalités décrites ci-dessous

L'icone sélectionnée dans la Toolbar (barre à outil) est affiché en négatif!

Les ressources/icones graphiques sont disponibles sous forme de fichier BPM, un format facile à lire pour un microcontrôleur

La documentation sur les animations est aussi instructive.
Je me suis demandé quel pouvait être l'intérêt d'une séquence REVERSE mais a bien y réfléchir, cela permet de déplacer Baby à un endroit puis, plus tard, de revenir à sa position initiale.


En vidéo

Je vous propose de découvrir la vidéo de Kevin (YouTube).

Kevin prend le temps de présenter les concepts utilisés et les éléments de programmation exploités.


Amélioration possibles

Je vois quand même quelques possibilités d'amélioration (électronique et logiciel).

  • Prévoir de l'autonomie (avec un Accu Lipo) et recharge
  • Prévoir du son (du moins un minimum).
  • Diminuer la quantité de fichiers BPM (regrouper les ressources dans un fichier commun)
  • Envisager des personnages différents (et comportements différents)...
    d'où l'intérêt de regrouper les ressources.
  • Clarifier les relations entre état psychologique et paramètres vitaux (état émotionnel, actions et leurs conséquences).
    J'ai trouvé ce point un peu confus dans l'implémentation de Kevin.
     
J'ai pris un peu de temps pour réaliser un petite étude des des niveaux, des actions utilisateurs et actions Tamagotchi sur le Wiki.

Bon visionnage,
Dominique

uv – L’installateur Python ultra-rapide

Vous en avez assez d’attendre des heures pour installer vos dépendances Python ? Et la nuit, dans vos draps humides, vous rêvez d’un outil qui rendrait ce processus ultra-rapide et indolore ?

Ne cherchez plus, uv est là pour vous !

Écrit en Rust par les mêmes qui ont fait Ruff, uv est un installateur Python et un résolveur de dépendances d’une rapidité époustouflante. Conçu comme une alternative à pip et pip-tools, il offre des performances jusqu’à 100 fois supérieures et il est aussi facile à utiliser que pip. Vous pouvez l’installer en un clin d’œil avec curl, pip, pipx ou même Homebrew. Une fois en place, créez votre environnement virtuel avec uv venv, activez-le, et vous voilà prêt à installer des packages en un temps record grâce à des commandes intuitives comme

uv pip install flask

uv gère également la génération de fichiers de dépendances verrouillés, pour garantir la reproductibilité de votre environnement sur n’importe quelle plateforme.

Avec

uv pip compile

vous pouvez générer un fichier requirements.txt à partir de diverses sources : requirements.in, pyproject.toml, setup.py ou même l’entrée standard. Et pour synchroniser votre environnement avec ce fichier, rien de plus simple :

uv pip sync requirements.txt

Mais ce n’est pas tout. uv regorge de fonctionnalités avancées pour répondre à tous vos besoins. Vous pouvez définir des overrides de versions de dépendances, choisir entre différentes stratégies de résolution, gérer les dépendances Git avec une authentification simplifiée, et même installer dans des environnements Python arbitraires grâce à l’option --python.

Côté performances, le secret d’uv réside dans son utilisation intelligente du cache. Les dépendances déjà téléchargées sont stockées de manière optimisée, et uv se base sur des informations comme les en-têtes de cache HTTP ou les hachages Git pour déterminer si une dépendance doit être retéléchargée. Vous pouvez contrôler finement le comportement du cache avec des options comme --refresh ou --no-cache.

Autre avantage indéniable d’uv : sa gestion avancée de l’authentification. Que ce soit pour les dépôts Git privés ou les registres de packages, uv vous permet de vous authentifier de multiples façons : SSH, HTTPS avec nom d’utilisateur et mot de passe ou token, fichier netrc, et même le keyring de votre système !

C’est également un outil multi-plateforme qui fonctionne de manière optimale sur macOS, Linux et Windows, avec un support de premier ordre pour les architectures x86_64. Et si vous utilisez une plateforme plus exotique, il y a de grandes chances qu’uv soit également disponible grâce à une compatibilité étendue.

C’est vraiment à tester si vous faites du python.

A découvrir ici : https://github.com/astral-sh/uv

TrinKey QT2040 sous MicroPython: carte USB super compacte à base RP2040

Le Trinkey est une mini-clé USB produite par AdaFruit et équipée d'un microcontrôleur RP2040 (le même que le Raspberry Pico) ainsi que de 8 Mio de mémoire Flash QSPI. 

TrinKey QT2040 par Adafruit
Le Trinkey QT2040 est équipé:

  • du MCU RP2040 @ 133 MHz, 264 Kio RAM, 8 Mio Flash
  • d'une LED NeoPixel (RGB)
  • d'un connecteur Stemma QT/Qwiic
  • d'un bouton utilisateur (sert aussi au lootloader)
  • Une alimentation 3.3V @ 600mA.

Le connecteur QWiic (SparkFun) / StemmaQT (Adafruit) est un connecteur 4 pôles JST SH4 permettant de transporter un bus I2C avec une alimentation. Le bus I2C étant chainnable par nature, ce qui permet de brancher facilement capteurs et périphériques I2C (voir les connecteurs et câbles de raccordement compatibles).

Le TrinKey permet de créer des rapidement des solutions simples et efficaces... branchez là et le projet qu'elle contient est prêt à l'emploi. 

Le TrinKey est un produit qui m'excite beaucoup, j'aime l'idée d'avoir une clé USB compacte que l'on peut adapter à ses besoins. Son connecteur I2C permet de chaîner capteur I2C et actionneur mais il est aussi possible de détourner ce connecteur pour exploiter les deux GPIOs ou un UART.

Le récent déploiement d'USBDevice permet maintenant d'écrire des pilotes USB en MicroPython... une autre raison de trouver le TrinKey vraiment très attractif.

Brochage du TrinKey QT2040

Détail des GPIOs du TrinKey (Source: Adafruit TrinKey QT2040)

Utiliser avec MicroPython

Bien entendu, c'est sous MicroPython que le Trinkey m'intéresse le plus.

J'ai détaillé l'installation et utilisation du TrinKey QT2040 sous MicroPython dans le Wiki de MCHobby.

Je vous invite à suivre le lien ci-dessus.

Ressources

Sortie de Crème CRM en version 2.6

Le 5 août 2024 est sortie la version 2.6 du logiciel de gestion de la relation client Crème CRM (sous licence AGPL-3.0), environ 11 mois après Creme 2.5 (11 septembre 2023).

Icône de Crème CRM

Au programme notamment, un système de notification, des améliorations pour le calendrier ou des filtres réservés aux rapports. Les nouveautés sont détaillées dans la suite de la dépêche.

Sommaire

Description du logiciel

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.6

Voici les changements les plus notables de cette version :

Le nouveau système de notification

Depuis toujours Crème possède un système de Mémentos (Reminders), qui permet de recevoir des e-mails pour vous prévenir d’une échéance. Ce système est utilisé par les Alertes & les ToDos ; par exemple vous recevez un e-mail lorsqu’une Alerte qui vous est attribuée va expirer dans 30 minutes. Et comme vous pouvez créer des Alertes dont la date d’expiration est un champ date de la fiche associée, cela permet par exemple d’être prévenu qu’une activité importante à laquelle vous participez va bientôt avoir lieu.

Le nouveau système de notification qui a été introduit amène 2 avancées principales :

  • les notifications envoyées ne sont pas limitées à des e-mails, vous pouvez aussi les voir dans votre navigateur (donc sans quitter Crème).
  • si les mémentos ont été retravaillés pour utiliser ce nouveau système, d’autres parties de Crème en profitent aussi. Par exemple, une notification vous est envoyée si un administrateur a changé votre mot de passe ; ou bien quand un job d’import CSV vient de s’achever.

Une notification web est arrivée

Chaque notification est associée à un canal, et vous pouvez configurer les canaux pour savoir si la notification est envoyée dans le navigateur, par e-mail ou bien les 2. Si le canal n’est pas obligatoire, vous pouvez aussi choisir de ne pas recevoir les notifications du tout. Chaque utilisateur peut utiliser sa propre configuration si la configuration générale du canal ne lui convient pas.

La configuration des canaux

Améliorations du calendrier

  • Le composant JavaScript FullCalendar est passé à la version 5. Même si ce n’est pas la toute dernière version (il faut dire qu’il y a pas mal de changements cassants entre chaque version), on profite de pas mal d’améliorations diverses.
  • Il est maintenant possible de configurer graphiquement le calendrier (premier jour de la semaine, plage horaire, jour travaillés…). Il y a une configuration globale utilisée par tout le monde, mais comme presque toujours dans Creme, il est possible de créer des configurations par rôle.

La configuration des calendriers du module « Activités »

Filtres spécifiques aux Rapports

Les Rapports utilisent généralement un filtre, afin d’affiner leurs résultats. Ces filtres sont les mêmes que ceux qu’utilisent les vues en liste ; par exemple si vous faites un Rapport sur les Devis, il peut utiliser les filtres disponibles sur la liste des Devis.

Un problème que cela entraîne est que beaucoup d’utilisateurs créent des filtres un peu spécifiques afin de les utiliser dans leurs Rapports, mais ces filtres viennent « polluer » la vue en liste correspondante (car la sélection de filtres proposent de nombreux filtres non pertinents). Afin de corriger ce souci, il est désormais possible de créer des filtres utilisables uniquement dans les Rapports. Les Rapports peuvent bien sûr continuer à utiliser les filtres classiques, mais les filtres spécifiques aux Rapports ne sont pas utilisables dans les vues en liste évidemment.

La création d’un rapport avec un filtre spécifique sélectionné

Quelques autres améliorations notables

  • Python 3.12 est officiellement géré.
  • Dans le module facturation, vous pouvez maintenant configurer les statuts sélectionnés par défaut (dans les formulaires), ainsi que les statuts utilisés par les Factures lorsque leur numéro est généré.
  • Un nouveau bouton, qui peut être mis sur la vue détaillée des Contacts, est disponible: « Créer un appel non abouti » (détails).
  • La configuration des blocs d’un rôle peut maintenant être créée en clonant la configuration d’un autre rôle (les rôles pouvant avoir des configurations assez proches, ça peut être un gain de temps appréciable).
  • Les blocs basés sur OpenStreetMap sont maintenant utilisés dans l’installation par défaut (à place de ceux basés sur GoogleMaps).
  • Un rôle «Utilisateur normal» est créé dans les nouvelles installations. Dans la mesure où c’est une bonne chose que tout le monde ne soit pas connecté en tant que super-utilisateur, ce rôle devrait permettre de gagner du temps et servir au moins de base de travail.
  • Un bouton permettant de transformer un simple Contact en utilisateur a été ajouté. Auparavant il fallait fusionner ce Contact avec le Contact automatiquement créé à la création d’un utilisateur.
  • Les Graphes ont reçu de nombreuses améliorations : plus de champs sont disponibles en abscisse, plus de champs sont disponibles pour le filtrage, les couleurs associées aux petits modèles auxiliaires (du genre « Statut ») sont utilisées…
  • La validation des URLs est désormais moins stricte dans les champs informatifs. Cela posait pas mal de problèmes notamment lors des imports, les gens mettant rarement le « http:// » dans leur base de données.

Le futur

La prochaine version marquera notamment le passage à Django 5.2, la future LTS qui sortira en avril 2025. À l’année prochaine !

Commentaires : voir le flux Atom ouvrir dans le navigateur

Anavi Handle : transformez une manette de jeu Nunchuk en souris ou en joystick

La console de jeu Wii utilise des manettes appelées Nunchuk, baptisées ainsi à cause d’une lointaine ressemblance avec le nunchaku… De forme ergonomique, elles comprennent deux boutons (C et Z), un joystick analogique et un accéléromètre 3 axes. Le souci c’est qu’elles sont équipées d’une prise spécifique, qui sort un bus I2C, vers la Wii. […]

Cet article Anavi Handle : transformez une manette de jeu Nunchuk en souris ou en joystick a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française.....

ConFoo Montreal 2025 : l’appel à conférences est ouvert

La conférence ConFoo est de retour pour sa 23ᵉ édition, du 26 au 28 février 2025 à l’Hôtel Bonaventure de Montréal ! Venez découvrir pourquoi ConFoo est devenu l’un des événements phares pour les développeurs et développeuses en Amérique du Nord et de partout à travers le monde.

Nous sommes présentement à la recherche de conférenciers et de conférencières avides de partager leur expertise et leur savoir dans une multitude de domaines des hautes technologies ; PHP, Ruby, Java, DotNet, JavaScript, Intelligence Artificielle, et plus encore !

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 et conférencières invitées profitent d’un traitement privilégié ; avec notamment 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 22 septembre prochain pour soumettre votre projet de présentations !

Si vous souhaitez simplement vous inscrire en tant que participant, profitez dès maintenant d’un rabais de 300$ en réservant votre inscription d'ici au 18 octobre !

Faites partie de l’aventure avec nous et découvrez comment l’intelligence humaine façonne le milieu des hautes technologies !

Commentaires : voir le flux Atom ouvrir dans le navigateur

❌