Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

Argos Panoptès : la supervision de sites web simple et efficace

Il y a un nouveau venu parmi les logiciels de supervision : Argos Panoptès !

Loin de la complexité des Nagios, Centreon, Icinga et autres mastodontes qui font le café, Argos Panoptès (on l’appellera Argos dans la suite de ce texte) ne surveille que des sites web, ce qui lui permet d’être bien plus simple et léger.

Argos a été développé par Alexis Métaireau pour Framasoft dans le cadre de Framaspace (du Nextcloud fourni gracieusement par Framasoft aux associations et collectifs militants).
Framasoft a fait appel à un prestataire, faute de temps disponible pour développer nous-même l’outil.

Sommaire

Pourquoi cet outil ? Lorsque l'on prévoit de créer plein d’espace Nextcloud, il semble pertinent de les surveiller.
Et comme Framasoft prévoit de déployer jusqu’à 10 000 espaces, il fallait quelque chose qui tienne la route… ce que le Shinken de l’association ne permettait pas : trop de sondes à exécuter, trop peu de temps pour le faire et on se retrouve avec des coups de sondes pas assez fréquents, laissant les sites avec des problèmes avec de trop longs délais de détection.

Sans compter que Shinken est en Python 2, qui est obsolète depuis déjà bien longtemps.

Le passage à une nouvelle solution de supervision complète (nous lorgnons sur Icinga) étant trop chronophage pour le temps que nous avons à lui consacrer pour l’instant, nous avons préféré partir sur une solution de surveillance de sites web, suivant l’adage UNIX « un logiciel qui fait une seule chose, mais qui la fait bien ».

Mais enfin, y a déjà des outils pour ça !

Anakin : « J’ai besoin d’un logiciel de supervision ». Padme, tout sourire : « Donc tu vas en prendre un qui existe ? ». Anakin ne dit rien et la regarde avec un rictus. Padme, inquiète : « Tu vas en prendre un qui existe, hein ? »

Bien sûr ! Nous avons testé statping-ng et Uptime Kuma mais avec nos très nombreux sites à surveiller, cela les mettait à genoux… ou alors c’est le navigateur qui ne tenait pas : ces deux solutions affichent sur la page d’accueil l’état de tous les sites à surveiller, et avec un historique de leur état en plus. Lorsque l'on veut surveiller des centaines de sites avec au moins trois coups de sondes chacun (un pour vérifier que le site HTTP redirige bien vers la version sécurisée, un pour vérifier que la version sécurisée répond bien, et un pour vérifier l’expiration du certificat du site), ça fait énormément d’appels AJAX au serveur quand on consulte le site et soit c’est le serveur qui a du mal, soit c’est le navigateur qui peine.

Ainsi est née l’idée du développement d’une solution qui remplisse notre cahier des charges

Le nom

Argos Panoptès fait référence au géant aux cent yeux de l’antiquité grecque, « Panoptès » signifiant « celui qui voit tout ».

Le cahier des charges

Il était simple mais toutefois complet, rédigé par votre serviteur (étant adminSys et développant aussi, j’avais mon idée sur ce que je voulais déployer et ce que j’aurais voulu coder moi-même) :

  • un langage simple, qui peut attirer du monde pour les contributions : Python ;
  • un langage moderne : la cible était Python 3.11, à savoir la version de Debian Bookworm ;
  • le support d’une base de donnée robuste : PostgreSQL ;
  • une architecture agents / serveur, permettant d’ajouter des agents pour les coups de sondes au fur et à mesure de l’augmentation des besoins. Ceci pour éviter le goulot d’étranglement constaté sur Shinken (l’ajout de plus d’agents Shinken n’étant pas possible puisque Python2) ;
  • une configuration simple et automatisable : l’infrastructure de Framasoft étant gérée via Salt, de même que la configuration des sondes de Shinken, il était vital de pouvoir créer la configuration des sites à surveiller de façon programmatique. Le YAML fut choisi pour cela ainsi que pour sa simplicité de lecture par un humain ;
  • divers moyens de notifications, courriel et Gotify a minima.

Quelqu’un susurre « PostgreSQL » à l’oreille d’une autre personne, on voit un bras couvert de chair de poule

Le code

Le code d’Argos est sur la forge logicielle de Framasoft : https://framagit.org/framasoft/framaspace/argos/.

Une suite de tests est exécutée en intégration continue, ainsi que du linting, ce qui permet d’éviter autant que possible les régressions et de maintenir un style de code uniforme.

Pour les dépendances, rien d’exotique (et c’est tant mieux !) :

  • Click pour l'interface en ligne de commande ;
  • FastAPI est le cadriciel qui nous permet d'exposer l'API HTTP ;
  • HTTPX est utilisé pour émettre des requêtes asynchrones dans les agents ;
  • Jinja gère la mise en page ;
  • Pydantic est utile pour s'assurer que les données correspondent à nos attentes ;
  • SQLAlchemy est l'ORM que nous utilisons pour nous connecter à notre base de données et lancer des requêtes ;
  • Alembic est utilisé pour les migrations de bases de données ;
  • Tenacity un petit utilitaire pour réessayer une fonction en cas d'erreur ;
  • Uvicorn est l'outil utilisé pour faire tourner notre serveur ;
  • Gunicorn est le serveur WSGI HTTP recommandé pour la production.

Pour aider les potentiels contributeurs, une partie du site officiel est dédiée au développement.

L’API d’Argos est auto-documentée : en installant Argos, vous aurez des pages de documentation aux formats Swagger et Redoc.

Le fonctionnement en production

Si Argos a été annoncé sur le Framablog mi-mai 2024, cela faisait déjà plusieurs mois que la version de développement était en production.

Capture d’écran de la page de statut d’Argos

Le moins qu’on puisse dire, c’est qu’Argos tient ses promesses ! Il est rapide… très rapide !

Lors du dernier démarrage à vide d’une version de développement, Argos a lancé ses 2145 tests configurés à une vitesse impressionnante : il ne lui a fallu qu’une minute et 15 secondes pour tous les effectuer.

L’API présentant un point permettant de connaître le nombre de sondes dans chaque état (les classiques ok, warning, critical et unknown), nous avons ajouté une sonde à notre Shinken pour intégrer les résultats d’Argos dans celui-ci.

En effet, avoir un outil dédié, c’est sympa, mais si ça fait une page web de plus à consulter, c’est enquiquinant. La centralisation de la supervision au sein de Shinken permet de contourner ce problème.

Le futur

Depuis la première version et une version de micro-changements, la majeure partie des modifications s’est concentrée sur l’amélioration de la documentation, ainsi que sur la simplification de la configuration et de l’installation.

Quelques nouvelles fonctionnalités seront de la partie, réduisant quelques frictions rencontrées depuis la mise en production de la dernière version.

Les contributions sont les bienvenues (peut-être quelqu’un intégrera-t-il les notifications via Apprise ?) 😉

One more thing

Framasoft est actuellement en pleine campagne de collecte de fonds dans le cadre de la démarche de soin de nos services en ligne « Dorlotons Dégooglisons » (mais ça, vous le saviez peut-être déjà).

Merci de nous soutenir si vous le pouvez ! 🙂

Commentaires : voir le flux Atom ouvrir dans le navigateur

Data to Fish: Data Science Tutorials using Python, SQL and more!

14 juillet 2020 à 11:01

Data To Fish was born in an effort to facilitate the application of data science using various tools such as Python, R, Julia and SQL.

We are passionate about data, and strive to provide you the most up-to-date and accurate information about common data-related problems.

The content provided on this website is constantly reviewed. Yet, if you do come across any errors in the content, please feel free to reach us at datatofish@gmail.com. Please note that due to the high volume of requests, we can no longer accommodate personal requests of code reviews. Please also refrain from including any email attachments.


Direct link

Mise à jour de VenC en version 3.2.2

VenC

VenC, un générateur libre (GPLv3) de site statique en python qui avait déjà été présenté dans une dépêche précédente, est de retour en version 3.2.2 avec tout un tas de nouvelles fonctionnalités cool qu’on va voir ici.

Sommaire

Auto-rafraîchissement lors de la prévisualisation

Quand vous prévisualisez votre site avec venc -s vous n’avez plus besoin de tuer le processus du serveur HTTP local et de régénérer manuellement le site à chaque modification. Le mécanisme est à présent automatique et détecte lui-même un changement pour vous présenter la version à jour de votre contenu ! La cache du navigateur étant parfois capricieux, VenC vous notifie dans la sortie standard de ses actions si jamais vous avez un doute.

Assignation d’un thème par défaut

Si vous utilisez le thème par défaut concrete ou tout autre thème installé en dehors de votre projet il est possible de l’indiquer dans votre fichier de configuration. Ainsi venc -s sait comment régénérer votre site si nécessaire, et vous n’avez plus besoin d’indiquer le nom du thème installé sur votre système lorsque vous utilisez la commande venc -xb ou venc -xftp.

Amélioration des fonctionnalités FTP

Transfert en parallèle

De nombreuses améliorations ont été apportées, en voici quelques-unes !

Transfert parallèle

Vous pouvez maintenant définir un nombre arbitraire de connexions FTP simultanées pour le transfert de votre site en ligne. Pour un petit site, ça ne fait pas de grosse différence, mais quand comme moi votre site comporte plusieurs centaines de pages, ça fait gagner un temps fou !

Verbosité accrue

  • Affichage du prompt FTP
  • Affichage des commandes FTP associées à leur numéro de session

Transfert intelligent

Pour économiser de la bande passante, VenC compare les fichiers locaux avec ceux en ligne. Ce faisant, il ne réalise que les opérations d’I/O strictement nécessaires.

Configuration FTP plus fine

Vous pouvez maintenant paramétrer les options suivantes :

  • ftp_encoding : VenC affichant à présent le prompt FTP du serveur, il est maintenant possible d’avoir des informations sur celui-ci, et notamment l’encodage. Avec l’option ftp_encoding, il est donc possible de configurer l’encodage de la session pour être en phase avec le serveur distant et éviter de mauvaises surprises.
  • ftp_sessions : comme on l’a vu plus haut, c’est le nombre de connexions parallèles possibles.
  • ftp_port : avant, pour une raison obscure et injustifiable par le bon sens, le port de la connexion FTP était codé en dur… Maintenant c’est une valeur par défaut qu’il est possible de redéfinir.

Thème par défaut

Le thème par défaut a été amélioré, notamment au niveau de l’ergonomie et de la qualité visuelle du thème. Ce nouveau thème intègre par ailleurs les nouvelles fonctionnalités de la version 3.2 !

Nouvelles balises VenC

Microcode VenC

Accès amélioré à des métadonnées YAML

Une fonctionnalité ultérieurement manquante et utile dans certains cas d’usage est de pouvoir accéder à des valeurs qui sont imbriquées dans un ou plusieurs dictionnaires YAML dans le fichier de configuration principal ou dans les métadonnées d’une publication.

Pour ce faire, quatre fonctions VenC ont été ajoutés :

Pour les champs non obligatoires ou non prédéfinis par VenC, ça permet donc en conséquence une plus grande liberté dans l’organisation du contenu YAML.

Accéder à la date de la dernière publication

Utile pour la génération de flux Atom ou RSS, récupérer la date de la dernière publication d’un fil de publication permet d’indiquer la vraie date de mise à jour du flux :

GetLastEntryTimestamp

Taxonomie Avancée

Taxonomie Avancée

C’est la grosse fonctionnalité de cette mise à jour !

Avant la version 3.2 vous ne pouviez organiser vos publications “que” par catégories hiérarchisées. C’était déjà pas mal dans la mesure où ça permettait de créer des menus arborescents pour organiser votre contenu, mais parfois ça n’est pas suffisant. Par exemple, tout à fait au hasard, vous êtes un⋅e artiste et vous gérez votre portfolio avec VenC. Vous pourriez alors avoir un menu de la forme suivante pour organiser vos œuvres :

- Peintures
  - Huile
  - Acrylique
  - Aquarelle
- Dessins
  - Encre
  - Crayon
- Mediums Mixtes

Et comme vous êtes un⋅e bon⋅ne p'tit⋅e libriste auto-radicalisé⋅e sur Framasoft et LinuxFr vos œuvres sont en partie sous licence CC-By-SA. En partie seulement car oui, vous faites aussi des fanarts, des travaux dérivés d’œuvres sous licences propriétaires. Vous voulez donc séparer ce qui est véritablement libre de ce qui ne l’est pas. En générant par exemple ce type de menu :

# Mediums

- Peintures
  - Huile
  - Acrylique
  - Aquarelle
- Dessins
  - Encre
  - Crayon
- Mixtes

# Licences

- CC
  - By-NC-ND
  - By-SA
- Copyright
- Licence Art Libre

Ça tombe bien, c’est précisément ce que permet maintenant de faire VenC 3.2.

L’idée est la suivante : puisque l’arbre de toutes les catégories construit à partir de toutes les publications est un arbre hiérarchisé, il suffit de sélectionner une ou plusieurs branches de cet arbre pour créer nos menus et présenter notre contenu de la façon qu’il nous plaira.

Dans notre exemple précédent l’arbre hierarchisé de toutes les catégories aurait donc la forme suivante :

- Mediums:
  - Peintures:
    - Huile
    - Acrylique
    - Aquarelle
  - Dessins:
    - Encre
    - Crayon
  - Mixtes
- Licences:
  - CC:
    - By-NC-ND
    - By-SA
  - Copyright
  - Licence Art Libre

Nous sélectionnons donc les branches Mediums et Licences. Avec les nouvelles fonctions VenC qui vont bien :

Sur le thème par défaut concrete, vous pouvez ainsi avoir un nombre arbitraire de menu de catégories en configurant comme indiqué dans la documentation votre fichier de configuration principal.

À noter que même si ça n’est pas encore idéal, ce système ouvre la voie pour créer des blogs multilingues. Le brainstorming sur le sujet se passe ici. Pour l’heure, il est donc possible de tirer avantage de la taxonomie avancée pour créer des branches pour chaque langue que vous souhaitez utiliser. Avec un peu de JS vous pouvez aller plus loin pour rendre ça plus dynamique à votre convenance.

Le mot de la fin

Voilà pour cette nouvelle version !

La version 3.3 est déjà en cours de développement et vous pouvez suivre l’aventure ici. Un grand merci à Sidoine, Rollniak et Jérémy pour leur aide, leur confiance et leurs feedbacks !

Les sources GIMP des illustrations sont accessibles ici sous licences CC-By-SA

Toutes les contributions sont évidemment les bienvenues :

  • Corriger, relire ou améliorer la documentation.
  • Signaler des bugs ou faire des suggestions.
  • Écrire du code.
  • Me faire aumône pour me payer un p'tit shot de Baileys Irish Cream !

Commentaires : voir le flux Atom ouvrir dans le navigateur

Sortie de Tryton 7.2

Le 1 mai 2024 sortait la version 7.2 de Tryton, un progiciel de gestion intégré modulaire et multiplate-forme.

Tryton

Tryton est basé sur une architecture trois tiers avec PostgreSQL comme base de données principale et est écrit en Python ce qui apporte une grande flexibilité pour la customisation.

Tryton vient avec un ensemble de modules essentiels pour la gestion d’une entreprise, qui sont très aboutis. Il peut être complété par des modules tierces spécifiques à certaines activités ou permettant l’intégration à d’autres outils.

Tryton est utilisable à travers un client desktop, un client web responsive et un client en ligne de commande. Tous ces clients sont légers et multiplateformes (Linux, BSD, Windows et macOS).

Comme la dernière annonce ici date de la version 6.6, voici une liste non-exhaustive d’améliorations notables:

  • Tryton peut générer des code-barres ou QR codes entre autres pour les produits. Et les clients peuvent déclencher des actions depuis le scan d’un code-barre. Cette fonctionnalité peut servir par exemple pour scanner les produits pour le point de vente ou bien pour traiter des expéditions.
  • L’autocomplétion peut se faire maintenant sur base d’une source externe. Cette fonctionnalité est utilisée pour créer des tiers en entrant simplement leur numéro de TVA. Tryton interroge le service européen VIES et préremplit le formulaire avec le nom, l’adresse et le numéro de TVA.
  • La fenêtre des logs d’un enregistrement contient désormais une entrée pour chaque action ou modification faite par l’utilisateur.
  • Les clients tirent profit de la lecture imbriquée (c’est-à-dire de pouvoir lire dans le même appel le contenu des champs relation de type One2Many ou Many2Many). Ainsi l’ouverture d’un formulaire qui contient des listes ne requière plus qu’un seul appel pour l’affichage. Ceci n’est fait que pour les listes qui sont visibles par défaut, celles qui sont cachées dans des onglets, ne sont lues que quand l’utilisateur active celui-ci.
  • Le temps d’exécution de certains appels RPC dépend des paramètres entrés par l’utilisateur (ex: une recherche sur plusieurs critères). Afin de prémunir le serveur contre un déni de service, ces appels sont protégés par un timeout.
  • Les utilisateurs qui ont une adresse de courrier électronique peuvent à présent demander une réinitialisation de mot de passe depuis l’interface de login sans devoir passer par un administrateur.

Depuis la version 6.6, de nouveaux modules ont été ajoutés, notamment:

Commentaires : voir le flux Atom ouvrir dans le navigateur

RustPython – Python puissance Rust

Par : Korben
26 mai 2024 à 16:47

Un interpréteur Python 3 flambant neuf, entièrement réécrit en Rust, ça claque, non ? Pour ceux qui hibernent, Rust, c’est le langage de programmation qui monte, qui monte et qui cartonne notamment grâce à sa rapidité légendaire et son bon niveau de sécurité.

Et en fusionnant avec Python, on obtient le meilleur des deux mondes, puisque ça permet d’utiliser Python comme un langage de script dans vos applications Rust. Vous pourrez ainsi, grâce à RustPython, profiter de la simplicité et de l’expressivité de Python, tout en bénéficiant des performances et de la robustesse de Rust.

RustPython peut aussi être compilé en WebAssembly, ce qui permet d’avoir du Python directement dans votre navigateur, sans installer quoi que ce soit et ainsi, votre code s’exécutera à la vitesse de la lumière. Évidemment ce projet est open-source et libre comme l’air et pour l’utiliser, c’est simple comme bonjour.

Tout d’abord, assurez-vous d’avoir installé Rust sur votre machine. Si ce n’est pas le cas, filez sur rustup.rs dare-dare ! Ensuite, clonez le dépôt GitHub de RustPython :

git clone https://github.com/RustPython/RustPython

Placez-vous dans le répertoire RustPython fraîchement cloné, puis lancez la démo :

cd RustPython
cargo run --release demo_closures.py

Et voilà, vous venez d’exécuter du code Python à la vitesse du son grâce à RustPython ! Notez que cet outil dispose également d’un compilateur JIT expérimental qui compile les fonctions python en code rust natif.

Si vous avez envie d’en savoir plus, rendez-vous sur https://rustpython.github.io.

Source

Faille RCE critique dans llama-cpp-python – Plus de 6000 modèles d’IA affectés

Par : Korben
20 mai 2024 à 14:45

Imaginez télécharger un modèle d’IA apparemment inoffensif sur une plateforme de confiance comme Hugging Face et découvrir qu’il ouvre en fait une porte dérobée permettant à des attaquants de prendre le contrôle de votre système ! C’est le risque que pose la faille critique CVE-2024-34359, découverte récemment dans le célèbre package Python llama-cpp-python.

Ce package très utilisé permet d’intégrer facilement des modèles d’IA écrits en C++ dans des projets Python. Pour cela, il utilise la bibliothèque de templates Jinja2 qui est capable de faire un rendu dynamique du HTML à partir des données. Une lib surpuissante mais potentiellement risquée si c’est mal configuré !

Et c’est justement là que le bât blesse. Le package llama-cpp-python utilise Jinja2 pour traiter les métadonnées des modèles au format .gguf, mais sans activer les protections nécessaires comme le bac à sable. Du coup, en injectant un template malicieux dans les métadonnées d’un modèle, un pirate peut exécuter du code arbitraire sur le système hôte !

Les dégâts potentiels sont énormes : vol de données, prise de contrôle totale, interruption de services… Surtout que les systèmes IA manipulent souvent des données ultra sensibles. Et vu la popularité de llama-cpp-python, l’impact est massif : plus de 6000 modèles vulnérables rien que sur Hugging Face ! Selon un article détaillé de Checkmarx, cette faille permet des attaques de la chaîne d’approvisionnement, où un acteur malveillant peut injecter du code dans un modèle téléchargé et redistribuer ce modèle compromis pour attaquer les développeurs d’IA.

Découverte par Patrick Peng (alias retro0reg), cette vulnérabilité repose comme je vous l’expliquait sur une mauvaise implémentation du moteur de templates. Cette faille de score CVSS critique de 9.7, permet l’injection de template côté serveur, conduisant à une exécution de code à distance (RCE). Un proof-of-concept a même été publié sur Hugging Face, démontrant comment un modèle compromis peut exécuter du code arbitraire lorsqu’il est chargé ou lors d’une session de chat.

Cela met en lumière un problème plus large : la sécurité des systèmes d’IA est intimement liée à celle de leur chaîne logicielle. Une vulnérabilité dans une dépendance tierce peut compromettre tout un système. Il faut donc redoubler de vigilance à tous les niveaux. Les modèles d’IA étant souvent utilisés au sein de projets critiques et manipulant des volumes importants de données sensibles, la moindre faille peut avoir des conséquences catastrophiques.

Mais rassurez-vous, une solution existe ! La version 0.2.72 de llama-cpp-python corrige le tir en ajoutant une validation des entrées et un bac à sable robuste autour de Jinja2. Si vous utilisez une version antérieure, la mise à jour est plus que recommandée.

Comment savoir si vos modèles sont touchés ? Regardez s’ils utilisent :

  • Le package llama-cpp-python en version < 0.2.72
  • Le format de fichier .gguf
  • Des templates Jinja2 dans les métadonnées

Si c’est le cas, passez immédiatement à la 0.2.72 ! Vous pouvez aussi auditer le code de vos modèles et regarder les permissions avec vos yeux de lynx.

Bref, comme d’hab, une petite faille peut vite tourner au désastre

Source

Zippy – Boostez vos ebooks avec la bionification

Par : Korben
19 mai 2024 à 16:57

Les livres électroniques ont vraiment modifié mon rapport à la lecture… Je peux emporter toute une bibliothèque dans ma poche, acheter des livres directement depuis le kindle, prendre des notes, lire dans le noir…etc. Mais est ce que vous saviez qu’il est également possible d’optimiser encore plus votre expérience de lecture numérique grâce à la bionification ? Oui terme chelou mais je crois que c’est comme ça qu’on dit.

Je vous en ai déjà parlé y’a quelques années mais cette technique nouvelle, inspirée de recherches en sciences cognitives, consiste à mettre en gras les premières lettres des mots pour faciliter leur reconnaissance visuelle et accélérer la vitesse de lecture. Des études ont ainsi montré que notre cerveau ne lit pas lettre par lettre mais plutôt mot par mot, en se basant sur sa forme globale. Ainsi, en accentuant le début des mots, la bionification guide l’œil pour une lecture plus fluide et efficace.

Évidemment, bionifier manuellement chaque livre de votre bibliothèque serait un travail titanesque. C’est là qu’intervient Zippy, un outil en ligne de commande développé en Python qui automatise le processus pour les ebooks au format ePub. Avec juste quelques lignes de code, vous pouvez transformer n’importe quel livre en version bionique, prête à être transférée sur votre liseuse Kindle ou autre.

Pour en profiter, la première étape est de cloner le dépôt de Zippy sur GitHub :

git clone https://github.com/nimish-ks/zippy.git cd zippy

Pour éviter tout conflit intergalactique entre les dépendances Python, on va ensuite créer un environnement virtuel et y installer les bibliothèques requises via pip :

python -m venv venv source venv/bin/activate # Sous Windows, utilisez plutôt `venv\Scripts\activate` pip install -r requirements.txt

Voilà, votre laboratoire secret est fin prêt pour lancer la bionification à grande échelle ! La formule magique est la suivante :

python zippy.py <fichier_entrée> <fichier_sortie> [--algorithm <algorithme>]

Remplacez <fichier_entrée> par le chemin vers le livre ePub original et <fichier_sortie> par le nom du fichier bionifié à générer. Par exemple :

python zippy.py "Hypérion.epub" "Hypérion_Bionique.epub"

Et hop, quelques nanosecondes plus tard, vous obtenez une version dopée aux hormones de croissance de votre bouquin préféré de science-fiction ! L’algorithme de bionification par défaut, noté "- 0 1 1 2 0.4", détermine le nombre de lettres à mettre en gras en fonction de la longueur des mots et d’autres critères. Mais tel un savant fou, vous pouvez concocter votre propre formule en passant le paramètre --algorithm.

Maintenant que vous maîtrisez le pouvoir de la bionification, vous allez pouvoir dévorer « Hypérion » et tous les autres tomes du cycle d’Endymion à une vitesse supraluminique ! Fini les voyages interstellaires qui durent des plombes, les bouquins bioniques vous téléporteront en un éclair dans des univers extraordinaires.

Comme Zippy s’intègre dans votre flux de travail, vous pouvez adapter les ebooks à vos préférences avant de les transférer sur votre liseuse. Vos yeux vous diront merci !

Évidemment, en bon cyberrebelle, vous pouvez bionifier tous les ebooks qui vous passent sous la main, même ceux protégés par des DRM abusifs. Un petit coup de Calibre et de DeDRM pour les libérer, et hop, à vous la lecture augmentée !

En bidouillant un peu le code de Zippy, vous pourriez même imaginer plein d’autres optimisations à appliquer à vos bouquins voire en faire un plugin pour Calibre. Si c’est le cas, dites le moi, ça m’intéresse.

A vous de jouer !

Source

ELEGOO 4 Roues sous MicroPython avec Raspberry-Pi Pico (suite et fin)

Bonjour à tous,

il y a quelques semaines, je vous présentais un projet de conversion d'un véhicule ELEGOO vers MicroPython.

Le but étant de remplacer le codage C Arduino par du codage Python au sein de l'institut Saint-Anne de Gosselie (ISA).

Elegoo sous MicroPython - un projet MCHobby

Le projet est maintenant achevé et dispose d'une carte d'interface pour Raspberry-Pi Pico et d'une bibliothèque MicroPython. 

Si vous ne connaissez pas encore MicroPython, je vous recommande chaleureusement le livre Raspberry-Pi Pico et Pico W (aussi disponible aux editions ENI).
Le Spécial Eté du magazine Programmez.fr contiendra un dossier spécialement dédié à MicroPython et Pico.

La carte Elegoo-4WD-Pico

Les extensions et schéma présentées dans l'article précédent ont pris forme sur cette carte spécialement conçue pour ce projet.

Adaptateur ELEGOO-4WD-PICO

Une fois les divers composants installés, voici à quoi ressemble la carte une fois équipée des composants.

Adaptateur ELEGOO-4WD-PICO

Le petit connecteur Qwiic/StemmaQt en bas à gauche permet de connecter facilement des extensions compatibles Qwiic... comme par exemple un SerLCD 16x2 de SparkFun (comme sur l'imahe.

Elegoo avec Ecran SerLCD de SparkFun (interface Qwiic)

Bibliothèque

La bibliothèque micropython-elegoo-4wd permet de prendre facilement le contrôle du Rover avec quelques lignes de code Python.

La classe Rover (rover.py) permet de:

Enfin, la bibliothèque permet d'accéder de façon uniforme aux bus I2C, UART et SPI que la carte expose sur ses différents connecteurs. Ces références de bus pourront alors être utilisés avec des bibliothèques MicroPython pour contrôler du matériel via UART, bus I2C, bus SPI. La collection esp8266-upy contient de nombreux pilotes et exemples MicroPython.
Voir les exemples test_i2c.py test_serial.py, test_spi.py .

Bonne découverte
Dominique

PyConFR 2024, du 31 octobre au 3 novembre à Strasbourg

L’Association Francophone Python (AFPy) organise la PyConFR 2024 du jeudi 31 octobre au dimanche 3 novembre. Pour cette 15e édition, nous sommes accueillis par l’UFR Mathématique et d’Informatique de Strasbourg (https://mathinfo.unistra.fr/) !

Logo PyConFr 2024

Si vous ne connaissez pas la PyConFR, c’est un évènement gratuit sur 4 jours autour du langage de programmation Python. Tout d’abord, il y a deux jours de développements participatifs (sprints), puis deux jours de conférences et ateliers.

Vous pouvez proposer un sujet de sprint, de conférence ou d’atelier jusqu’au 21 juillet. Peu importe votre niveau en Python, n’hésitez pas à proposer un sujet ! Venez parler de développement logiciel, de diversité, de communauté, faire un retour d’expérience sur un outil, présenter votre projet, un domaine d’activité…

Dans un secteur aussi masculin que le développement informatique, nous proposons aux personnes habituellement peu représentées en conférence de l’aide pour trouver un sujet, rédiger la proposition de conférence, rédiger le support de conférence et pour répéter. Vous pouvez nous contacter à l’adresse diversite@afpy.org si vous pensez en avoir besoin.

Enfin, la PyConFR est entièrement financée par les sponsors. Si vous connaissez des sponsors potentiels, n’hésitez pas à leur parler de l’évènement !

Commentaires : voir le flux Atom ouvrir dans le navigateur

Naticord – Un client Discord natif en Python

Par : Korben
12 mai 2024 à 06:15

Vous en avez marre du client web Discord qui bouffe toute votre RAM et qui lance des mises à jours qui plantent toutes les 2 heures ? Bienvenue au club !

Heureusement, y’a un p’tit gars qui a décidé de prendre les choses en main en développant son propre client Discord en Python. Ça s’appelle Naticord (ou Native-cord), et c’est léger, personnalisable et super efficace !

Quand j’ai découvert ce projet sur GitHub, j’ai tout de suite accroché. Un client Discord qui peut tourner avec seulement 25 Mo de RAM en moyenne, contre 400 Mo pour l’app officielle dans certains cas, c’est quand même un sacré tour de force ! En plus, l’interface est inspirée de feu Windows Live Messenger (paix à son âme), avec un côté minimaliste et fonctionnel qui fait plaisir à voir, comme les bulles de conversation par exemple.

Mais attention, faut pas s’attendre à retrouver toutes les fonctionnalités de Discord non plus. Naticord se concentre sur l’essentiel :

  • Se connecter avec un token Discord
  • Voir ses amis et discuter en MP
  • Accéder aux serveurs et canaux de base
  • Envoyer des messages, des fichiers et des images
  • Basculer entre plusieurs comptes

Pas de fioritures, juste ce qu’il faut pour tchatter tranquillou avec ses potes. Et franchement, pour l’utilisation qu’on en a en général, c’est largement suffisant ! Pour l’installer, c’est pas bien compliqué. Suffit d’avoir Python et pip sous la main, et de lancer ces petites commandes magiques :

pip install PyQt5 requests

Et hop, vous êtes parés pour lancer Naticord :

python naticord.py

Évidemment, faudra quand même rentrer votre token Discord pour vous connecter (voir le tuto sur le github). Mais une fois que c’est fait, vous pourrez profiter d’une expérience allégée, sans prise de tête.

Au menu des prochaines updates, on devrait avoir droit à un meilleur support des serveurs, des photos de profil dans la liste d’amis, et même un mode dark pour ménager nos petits yeux fragiles. Le mode nuit actuel a encore quelques soucis, mais ça devrait s’arranger bientôt. Le développeur bosse aussi sur l’édition/suppression de messages, les emojis, les catégories de canaux, et qui sait, peut-être même la vidéo et les appels vocaux un de ces quatre !

En attendant, je trouve que Naticord est une excellente alternative pour ceux qui veulent un client Discord qui va droit au but, sans chichi. Par contre attention, même si personne n’a encore eu de souci, Discord pourrait très bien vous bannir pour utiliser un client tiers. Rien ne les en empêche, donc soyez conscient de ça.

Merci à Lorenper pour le partage !

❌
❌