MakeMake The Dwarf Planet is a feed agregator.

sqlramen un remplacement à sqlsoup

by Jul from Linuxfr.org

Alors que je pleurais la disparition de sqlsoup et ré-écrivais pour la 5é fois le code minimal pour le remplacer je me suis dit ; tu pourrais offrir un module équivalent.

SQLRamen, un peu comme SQLSoup

SQLRamen offre une interface minimaliste au dessus de sqlalchemy pour avoir une console introspective sur une base de données… Ce qui est avec une API différente ce que faisait SQLSoup qui a disparu avec sqlalchemy 2.

Le code est minimal et est basé sur automap.

Installation

python -m pip install sqlramen

Exemple :

from sqlramen import SQLRamen
db = SQLRamen("sqlite:///../pdca/aide")
user = db.query(db.table.user).filter_by(email="j@j.com").one()
[ l.message for l in user.comment_collection ]
# ['SCAM Manual\r\n\r\nA complete guide to create a guide with scam',
# ...
#  'future plan',
#  'further down']
db.query(db.table.comment.message).join(db.table.comment.user
    ).filter(db.table.user.email=="j@j.com").all()
# same
print([l for l in db.table.user.__table__.c])
# [Column('id', INTEGER(), table=<user>, primary_key=True, nullable=False),
# Column('pic_file', TEXT(), table=<user>),
# Column('name', TEXT(), table=<user>, nullable=False),
# Column('email', TEXT(), table=<user>, nullable=False),
# Column('secret_token', TEXT(), table=<user>),
# Column('secret_password', TEXT(), table=<user>, nullable=False)]
db.raw("select * from comment limit 5").all()
#[('2025-01-12 12:52:09', 1, 1, None, 'SCAM Manual\r\n\r\nA complete guide to create a guide with scam', None, 'story'),
# ('2025-01-12 13:28:14', 2, 1, 1, 'Synopsis\r\n\r\nA frontend to a pandoc toolchain to build a book in a supposedly new way.', None, 'story_item'),
# ('2025-01-12 13:28:47', 3, 1, 1, 'How to install and start it\r\n', None, 'story_item'),
# ('2025-01-12 13:29:48', 4, 1, 1, 'walkthrough to create this manual with the tool\r\n\r\nFirst post//landing page', None, 'story_item'),
# ('2025-01-12 13:30:23', 5, 1, 3, 'Quickstart', None, 'comment')]

db_introspect

Le module est livré avec un grapheur de base de données dont voici un exemple :

db_introspect sqlite:///../pdca/aide && xdot out.dot

Ce qui donne le résultat suivant

digramme entité relation

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

Python - « Libre à vous ! » du 23 septembre 2025 - Podcasts et références

by Etienne Gonnu,Benoît Sibaud from Linuxfr.org

255e émission « Libre à vous ! » de l’April. Podcast et programme :

  • sujet principal : le langage de programmation Python
  • La chronique Le truc que (presque) personne n'a vraiment compris mais qui nous concerne toutes et tous de Benjamin Bellamy sur les VPNs
  • Une nouvelle Lecture buissonnière de Vincent Calame sur l'ouvrage d'Éric Sadin, « La vie algorithmique »
  • Quoi de Libre ? Actualités et annonces concernant l'April et le monde du Libre

Rendez‐vous en direct chaque mardi de 15 h 30 à 17 h sur 93,1 FM en Île‐de‐France. L’émission est diffusée simultanément sur le site Web de la radio Cause Commune.

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

L'IA devenue outil du quotidien

by Funix from Linuxfr.org

'lut,

Vous me direz, encore un journal sur l'IA ! C'est un sujet globalement plutôt décrié sur ce site qui met en exergue surtout ses méfaits, mais je tenais à faire part de mon expérience car ça peut être également un super outil du quotidien. A tel point que j'ai quasiment laissé tomber les moteurs de recherche, dont le premier d'entre eux et mon premier réflexe est maintenant d'abord de consulter chatgpt. Pourquoi chatgpt ? Simplement parce que je trouve encore les autres bien moins performants.

Je le consulte pour les petites problématiques du quotidien et du bricoleur du dimanche que je suis, quand je regarde mon historique de consultation, ça va aussi bien de la recherche d'une référence d'une pièce auto et la manière de l'installer, rattraper une anchoïade, installer un programmateur dans un tableau électrique, faire un joint d'étanchéité sous l'eau ou trouver le mode d'emploi d'un réfrigérateur ! Et dans le domaine informatique, ça couvre aussi bien des scripts bash pour divers usage et des problèmes variés rencontrés sur divers logiciels.
Tout n'est surtout pas à prendre au pied de la lettre, il y a parfois des erreurs grossières, des informations datées voire obsolètes, il lui arrive également de tourner en rond et de radoter sans avancer, mais le plus souvent il me donne les bonnes pistes et par itération successive, j'arrive très souvent à mes fins pour résoudre mon problème initial.

S'il fallait illustrer mes propos par un exemple concret, dans un précédent journal j'avais évoqué que j'avais déployé chez moi un système de vidéosurveillance basé sur zoneminder. J'avais acheté un ensemble de caméras adhoc dont certains à bas coût d'une vingtaine d'euros dont les caractéristiques semblaient intéressantes pour l'usage que je voulais en faire. A vrai dire je n'ai jamais pu installer ces caméras bas coût car l'adresse du flux vidéo change régulièrement ce qui les rend inutilisables pour les logiciels comme zoneminder ou frigate qui ne gèrent que les adresses fixes, contraignant à utiliser l'application propriétaire Android fournie avec.

J'ai buté des mois sur ce problème en tentant vainement diverses solutions et en mettant au point sans succès très laborieusement un script python. Dernièrement j'ai fait appel à chatgpt et en 2h de temps tout était en place. chatgpt m'a aidé à créer un script qui récupère à intervalle régulier l'adresse du stream vidéo, adresse qu'il enregistre ensuite dans le fichier de configuration de mediamtx, serveur de flux vidéo qui rediffuse le flux avec une adresse fixe accessible de zoneminder ou frigate.
Je ne suis pas sûr que j'y serais arrivé seul, ou alors au bout de je ne sais combien d'heure de vaines programmations. Je me rends compte que chatgpt a évolué également, car je lui avais posé la même question il y a plusieurs mois, il a été incapable d'y répondre et ne m'avait pas donné à l'époque de pistes sérieuses pour avancer. Pour autant je ne pense pas que l'IA va envoyer les développeurs au chômage, je pense plutôt qu'il va les aider à être bien plus efficace.

Il en reste pas moins que ceux qui sont intéressés par ce sujet spécifique peuvent toujours consulter cette page pour retrouver ce fameux script python.

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

Abuser de yahi -un équivalent d'awstats- pour grapher des CSV

by jul from AFPy discuss

à propos de yahi

Alors qu’awstats annonce sa dernière version, yahi (le lien inclus un lien vers la démo de la sortie) est un équivalent installable par pip d’analyse de journaux web normalement destiné à sortir des stats d’aggrégation, maintenu.

Son usage est suffisamment versatile pour s’adresser à tout type de d’agrégation de serveur parsable par regexp.

détourner yahi pour grapher des CSV

Comme ce module est assez simple il peut être facilement détourné pour grapher des CSV.

1 message - 1 participant(e)

Lire le sujet en entier

Lire la suite…

détourner yahi (grapheur de journaux web) pour faire des graphs de CSV

by Jul from Linuxfr.org

Yahi

Yahi est un analogue de awstats qui a pour particularité de générer un fichier HTML tout en un (qui nécessite javascript) pour fournir les différentes pages de statistiques (essentiellement une carte geoip, des histogrammes et séries temporelles).

Mais, comme je suis un pervers pépère, je me suis amusé à voir si il n'était pas possible de l'utiliser aussi pour analyser des fichiers CSV.

Exemple 1: DONT: utilisation de regexp pour parser un CSV

Dans le cadre de mon bot bluesky je génère un CSV de stat qui a une structure sur laquelle on peut exceptionnellement appliquer une regexp :

timestamp (float), nombre de post français (int), nombre de posts totaux (int),?…

Le code est simple ::

from archery import mdict
from yahi import notch, shoot
from json import dump
import re


context=notch(
    off="user_agent,geo_ip",
    log_format="custom",
    output_format="json",
    date_pattern="%s",
    log_pattern="""^(?P<datetime>[^,]+),
    (?P<nb_fr>[^,]+),
    (?P<nb_total>[^,]+),?.*
    $""")

date_formater= lambda dt :"%s-%s-%s" % ( dt.year, dt.month, dt.day)
res= shoot(
        context,
        lambda data: mdict({
            "date_fr" :
                mdict({ date_formater(data["_datetime"]) : 
                    int(data["nb_fr"]) }),
            "hour_fr" : 
                mdict({ "%02d" % data["_datetime"].hour : 
                    int(data["nb_fr"]) }),
            "date_all" : 
                mdict({ date_formater(data["_datetime"]) : 
                    int(data["nb_total"]) }),
            "hour_all" : 
                mdict({ "%02d" % data["_datetime"].hour : 
                    int(data["nb_total"]) }),
            "total" : 1
        })
    )
dump(res,open("data.js","w"),  indent=4)

Ce code génère le fichier data.js dans les conventions qui suivent les attendus du fichier de données yahi

date_ … correspond à un histogramme de temps
hour_ … correspond à un histogramme par heure

Il suffit de faire :

yahi_all_in_one_maker && firefox aio.html
Pour voir les résultats dont ci joint sont deux exemples :

par heure pour les posts fr

par date pour les posts fr

Exemple 2: utilisation brutale avec CSV DictReader

Pour ce cas, j'ai pris le fichier CSV que m'a imprudemment envoyé france travail avec le listing des 10 000 chômeurs de mon coin ayant la structure suivante :

id opaque, civilité, prénom, nom, email du conseiller

pour bâtir les histogrammes de

  • combien chaque conseiller suit de chômeur,
  • quelle est la fréquence des prénoms (et ce que cela révèle)

Là encore, le code est assez simple :

from csv import DictReader
from json import dump
from archery import mdict

res=mdict()
with open("/home/jul/Téléchargements/GEMESCAPEG.csv") as f:
    for l in DictReader(f):
        res+=mdict(
            by_ref = mdict({l["Referent"]: 1}),
            by_prenom=mdict({l["Prenom"]:1}))

dump(res, open("data.js", "w"), indent=4)

Et là la magie de la convention de nommage indique que l'on veut des histogramme triés en forme de top 40

Il ne reste plus qu'à générer la page web …

yahi_all_in_one_maker && firefox aio.html
Et l'on à les graphs suivants :

(le premier est tronqué pour respecter le RGPD)

le nombre de chômeurs par conseiller

le nombre de chômeurs par conseiller

Ce qui nous apprend qu'un conseiller suit en moyenne 250 chômeurs, et que certains à plus de 500 risquent le burnout

la fréquence des prénoms

la fréquence des prénoms

Ce qui nous apprend quand on met en regard de quand les prénoms les plus courants avaient du succès que vaut mieux pas être vieux et au chômage (tarte à la crème) si on veut retrouver du boulot.

Voir la fréquence des prénoms suivants (source INSEE)
la fréquence des prénoms

la fréquence des prénoms

la fréquence des prénoms

Est-ce une bonne idée quand on est chômeur de faire du logiciel libre

J'en ai discuté avec ma conseillère qui m'a dit : pour ne pas être contrôler il est bien dans la partie mouchard projet de votre interface de france travail de rajouter des projets, le plus évitant les contrôles, et vous pouvez tout à fait rajouter vos contributions à du logiciel libre comme étant de l'auto-formation.

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

PyConFR 2025, planning et inscriptions

by grewn0uille,Ysabeau 🧶 from Linuxfr.org

La PyConFR 2025 a lieu du jeudi 30 octobre au dimanche 2 novembre au Campus René Cassin à Lyon. Le planning est en ligne et les inscriptions sont ouvertes !

Comme toujours, l’évènement est 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 au programme :

  • Embracing Weird Code, d’Ivana Kellyer
  • Le rêve de tout enfant - devenir DBA ?, de Karen Jex
  • Être un·e allié·e du numérique pour tou·te·s en environnement hostile, de Morgane Rozenn Hauguel

Un atelier de programmation pour les enfants (à partir d’environ 7 ans) a lieu le samedi après-midi.

Un espace enfants (de 3 ans à 12 ans) est aussi mis à disposition le samedi et dimanche gratuitement et sur inscription.

Un déjeuner PyLadies a également lieu durant la conférence. Un des objectifs est de tisser des liens entre la communauté PyLadies et le reste de la communauté Python francophone.

En plus du traditionnel repas du samedi soir, des visites guidées de Lyon sont aussi possibles les jeudi et vendredi soir, toujours sur inscription.

Enfin, le dimanche matin, l’AFPy tient son assemblée générale. Si vous souhaitez y voter, assurez-vous d’être à jour de cotisation.

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…