Jul a écrit 850 commentaires

  • [^] # Re: Génial ! J'en prends 3 ! (c'est pour offrir)

    Posté par  (site web personnel) . En réponse au journal sqlramen un remplacement à sqlsoup. Évalué à 2 (+1/-0).

    tiens je te convertis cet exemple à l'utilisation de sqlramen

    https://yahi.readthedocs.io/en/latest/misusing.html#graphing-data-from-a-database

    from archery import mdict
    from datetime import datetime as dt
    from sqlramen import SQLRamen
    from json import dump
    
    db = SQLRamen("postgresql://jul@/trollo")
    
    date = lambda ts: ts.strftime("%Y-%m-%d")
    dh = lambda ts: ts.strftime("%Y-%j %m-%d:%H")
    
    
    res = mdict()
    for post in db.query(db.table.posts).all():
        res += mdict(
                by_type=mdict({ post.maybe_spam and "spam" or "ham" : 1 }),
                date_all = mdict({date(post.created_at) : 1}),
                heat_day_score = mdict({dh(post.created_at) :post.score}),
        )
    
    dump(res, open("data.js", "w"), indent=4)

    Ça permet de faire un histogramme (top40), une série chronologique, et une heatmap.

    Le lien vers la doc indique comment obtenir les graphs.

  • [^] # Re: typo ?

    Posté par  (site web personnel) . En réponse au journal sqlramen un remplacement à sqlsoup. Évalué à 1 (+0/-0).

    Yep typo. Merci de la remonter.

    Pour info une DB utilisable pour tester est celle ci (sqlite). C'est même celle que j'ai utilisée.

    https://github.com/jul/scam/raw/refs/heads/main/aide

  • # plus court pour l'exemple 1

    Posté par  (site web personnel) . En réponse au journal détourner yahi (grapheur de journaux web) pour faire des graphs de CSV . Évalué à 1 (+0/-0). Dernière modification le 27 septembre 2025 à 20:17.

    Y'avait quasiment un oneliner possible pour l'exemple 1

    from yahi.field import regexp_reader
    from archery import mdict
    from datetime import datetime as dt
    import re
    from json import dump
    
    hr = lambda ts: "%02d" % dt.fromtimestamp(float(ts)).hour
    date = lambda ts: dt.fromtimestamp(float(ts)).strftime("%y-%m-%d")
    
    dump(
        sum(
            mdict(
                date_fr=mdict({
                    date(r["datetime"]) : int(r["nb_fr"]) }),
                hour_fr=mdict({
                    hr(r["datetime"]) : int(r["nb_fr"]) }),
                date_all=mdict({
                    date(r["datetime"]) : int(r["nb_total"]) }),
                hour_all=mdict({
                    hr(r["datetime"]) : int(r["nb_total"]) }),
            ) for r in regexp_reader(
                        open("/home/jul/trollometre.csv"),
                        re.compile("""^(?P<datetime>[^,]+),
                            (?P<nb_fr>[^,]+),
                            (?P<nb_total>[^,]+),?.*
                            $""",
                            re.X
                    )
                )
            ),
        open("data.js", "w"),
        indent=4)
    )
  • # oubli

    Posté par  (site web personnel) . En réponse au journal détourner yahi (grapheur de journaux web) pour faire des graphs de CSV . Évalué à 2 (+1/-0).

    Pour l'exemple 1 il faut ajouter le fait que le fichier d'entrée est analysée comme suit ::

    python test.py < ~/trollometre.csv

  • [^] # Re: Irremplaçable

    Posté par  (site web personnel) . En réponse à la dépêche AWStats 8.0 est sorti. Évalué à 1 (+0/-0).

    J'ai écris un remplaçant (yahi) d'awstats.

    Au moins, t'es sûr que le mainteneur existe, est en vie, et peut corriger les bugs, trololol.

    En prime, il y a un livre du « making off » (l'envers du décors) : loser du logiciel libre

  • [^] # Re: Wut da fuk private licence

    Posté par  (site web personnel) . En réponse au journal Faire son bot bluesky francophone. Évalué à 1 (+0/-0).

    Proposition acceptée, je te dédie ce commit. Tu veux un @ pour le texte de la licence ?

    https://github.com/jul/trollometre/commit/960e3cdc7acb3a5cd1f7d41253ab80809397d579

  • [^] # Re: Wut da fuk private licence

    Posté par  (site web personnel) . En réponse au journal Faire son bot bluesky francophone. Évalué à 2 (+2/-1).

    merci pour avoir écrit une licence libre que j'arrive à écrire de tête en convoyant tout ce que je souhaite convoyer :)

  • [^] # Re: .

    Posté par  (site web personnel) . En réponse au journal la chronique du bot bluesky : rétrospective. Évalué à 3 (+2/-0).

    le code est à chier […] une œuvre originale de l'esprit

    Donc c'est de l'art ?

    Évidemment.

  • [^] # Re: NB maj du README sous peu

    Posté par  (site web personnel) . En réponse au journal J'ai niqué le p0rn : l'antispam qui marchait (étrangement). Évalué à 2 (+1/-0).

    J'ai trouvé des stats meilleures que les miennes en RRD et c'est là où l'on voit que je mesure uniquement les POSTS francophones.

    image

  • [^] # Re: NB maj du README sous peu

    Posté par  (site web personnel) . En réponse au journal J'ai niqué le p0rn : l'antispam qui marchait (étrangement). Évalué à 2 (+1/-0).

    Le sujet m'intéresse à deux titres : faire un antispam pour LinuxFr.org (bayésien ou liste de blocage) et pour le service share vers les réseaux sociaux (m'avait bien semblé aussi que la doc était cryptique/peu pédagogique.

    La doc de bsky je sais pas si c'est une IA ou un humain qui l'a pondu, mais elle répond à des tas de questions sauf celles que je me pose.

    J'ai pas bien dû comprendre les tutos que j'ai trouvé sur le filtrage bayésien car pour moi, la technique que j'ai implémentée n'est pas digne d'une probabilité bayésienne mais correspond à un bête cosinus similarité, que j'implémente nativement pour les dict avec archery.

    Cette méthode est utilisée en dernier recours car elle présente moults faux positifs/faux négatifs (~5%, ~10%). Ce qui sur le nombre est beaucoup.

    Situation actuelle : une liste de blocage utilisée a posteriori et manuellement d'une part (entrée de suivi quelque part que je ne retrouve pas), et un code pas mis en service d'autre part.

    Le code BS à l'air bon au vu de mes (petites) connaissances. Je devrais dire «c'est pas bien d'être sur X», et que vu que t'es en logique de pousser et non de tirer du contenu comme je le fais tu te moques un peu du sporn.

    Pour l'instant actuel, le spam est d'origine porn. Ce que je fais, c'est que j'attends que les modos BS l'étiquette porn et je fais la liste de blocage avec les alias bloqués. Ce qui m'oblige à temporairement corriger manuellement (d'où l'interface websocket de gestion).

    Pour ton cas, ça nécessite de réagir à chaud, ce qui va à mon avis nécessité une interface d'étiquetage.

    Un truc qui aide comme conseillé dans le précédent journal, c'est la détection de langue : un contenu tagué fr en anglais en général c'est pas bon signe. Et c'est pas mal de spam viré :)

    Heureusement, les spammeurs varient pas trop leurs adresses d'envois et bien que notables sont faciles à bloquer (ma liste de blocage contient 243 entrées)

    Graph d'activité sur le BS francophone
    notables

  • # NB maj du README sous peu

    Posté par  (site web personnel) . En réponse au journal J'ai niqué le p0rn : l'antispam qui marchait (étrangement). Évalué à 3 (+2/-0).

    Salut,

    le code manque de doc :)

    La ligne avec l'antispam qui illustre ce journal est exactement ici

    Mais, si personne n'est intéressé, j'ai pt'et pas besoin de mettre à jour le README ; c'est du travail :P

  • # antispam naïf

    Posté par  (site web personnel) . En réponse au journal Sur le chemin de l'antispam bluesky. Évalué à 1 (+0/-0).

    Bon, je m'essaye avec les tutos du web à l'antispam (https://www.kdnuggets.com/2020/07/spam-filter-python-naive-bayes-scratch.html) sur ma base de connaissance et c'est pas fameux : https://gist.github.com/jul/0c9bc59c954bc5e9829599a6cd501b6b

    Avec ou sans application des formules bayésiennes j’obtiens le même résultat

    {'spam': {'spam': 65, 'ham': 11}, 'ham': {'ham': 49, 'spam': 5}}

    Autrement dit je tourne à entre 16 et 10% de faux positifs.

  • [^] # Re: Détection de langue

    Posté par  (site web personnel) . En réponse au journal Sur le chemin de l'antispam bluesky. Évalué à 1 (+0/-0).

    C'est l'outil que j'avais en tête, j'ai du l'utiliser par le passé. Et c'est effectivement un truc qu'il va falloir que j'utilise. +1, merci pour le lien.

    Pour l'instant, j'essaie avant d'augmenter la complexité, de contrôler humainement les entrées et je tente de diminuer les degrés de libertés.

    Je gravis les échelons de la complexité en shootant un problème après l'autre, là mon problème immédiat c'est :

    1- de faire le word counter (compteur de mot) ;
    2- me souvenir de comment faire un test de dépendance en Xhi2 et la page wikipedia me paraît plus obscure que mes souvenirs.

  • [^] # Re: Faux ami

    Posté par  (site web personnel) . En réponse au journal mon bot va mourir : RIP. Évalué à 3 (+2/-0).

    RIP = "rest in peace" (en) = "repose en paix" (fr)

    Surtout que j'ai vécu la misère au Québec à cause des calques à l'anglais, genre y disent tu : prends ta chance (take a chance) quand nous on cause de tenter sa chance.

    Et c'est partout, insidieusement.

    Sus aux faux amis !

  • [^] # Re: Bronsonisation

    Posté par  (site web personnel) . En réponse au journal mon bot va mourir : RIP. Évalué à 4 (+3/-0).

    Il est bronsonisé :)

    Il le méritait.

  • # bip .... biiiiiiiiip

    Posté par  (site web personnel) . En réponse au journal mon bot va mourir : RIP. Évalué à 2 (+1/-0).

    Sa mort est effective.

    Je le regretterais, autant que d'avoir rencontré une communauté -certes petites- que son histoire a pu un peu amusé.

    Reste en paix, petit robot mort trop tôt (à l'âge de 1 mois) sans que j'ai eu le temps de faire mumuse avec toi.

  • [^] # Re: filtre bayésien

    Posté par  (site web personnel) . En réponse au journal mon bot va mourir : RIP. Évalué à 1 (+0/-0).

    ça aussi c'est au dessus de mon niveau :)

    Je suis une tanche.

  • [^] # Re: Bronsonisation

    Posté par  (site web personnel) . En réponse au journal mon bot va mourir : RIP. Évalué à 2 (+1/-0).

    tu vas mettre une image de Charles Bronson à ton bot?

    Raah, je ne saisis pas la ref :)

  • [^] # Re: yolo

    Posté par  (site web personnel) . En réponse au journal C'est compliqué ; la vie avec mon bot. Évalué à 2 (+1/-0).

    trinquons :)

    Je lève mon verre de thé glacé à l'argot et toutes ses nuances de mouises qui nous dessinent.

  • [^] # Re: yolo

    Posté par  (site web personnel) . En réponse au journal C'est compliqué ; la vie avec mon bot. Évalué à 2 (+1/-0).

    J'ai loupé la moitié des anglicismes :D

    Je suis bye-lingual, parlant anglais avec ma femme, qui n'était pas francophone quand on s'est rencontré, je n'arrive plus à me tenir à une langue et je caviarde les deux langues de l'autre, et je suis dans le bloubiboulga linguistique permanent. Je te présente mes excuses.

    Si le bilinguisme pur en deux langues existe, sans calques, sans emprunts … j'ai du mal à y croire. Encore un mythe perso qui s'effondre.

  • # PS

    Posté par  (site web personnel) . En réponse au journal La gloire avec un bot bluesky. Évalué à 5.

    Depuis que j'ai mis un algo plus sage qui ne cible que les posts avec beaucoup de likes, quotes, réponses, le robot n'a plus de réactions en retour et ne semble plus attirer les réponses/likes…
    Autrement dit, c'est devenu un bête robot de mesure qui modifie pas le système qu'il observe.

    C'est un peu ce que je cherchais, mais quelque part je me dis que dans un monde qui donne toujours plus d'expositions aux gens déjà exposés, l'algo imparfait de la v1 était peut être une influence positive parfois irritante pour les petits comptes. Ça reste bien de se poser la question de l'influence voulue ou non par le truchement d'outils.

  • [^] # Re: Trouvé

    Posté par  (site web personnel) . En réponse au journal La gloire avec un bot bluesky. Évalué à 2.

    J'ai impersonnifié le bot, j'ai pas retrouvé le truc sur le harcèlement.

    En tout cas, pas dans les dernières 24h.

    En tout cas, c'est étonnant, mais un des sujets qui revient le plus en ce moment, c'est la chaleur.

  • [^] # Re: Trouvé

    Posté par  (site web personnel) . En réponse au journal La gloire avec un bot bluesky. Évalué à 2.

    j'ai limité la visibilité du bot pour éviter encore plus de feedback.

  • [^] # Re: Trouvé

    Posté par  (site web personnel) . En réponse au journal La gloire avec un bot bluesky. Évalué à 3. Dernière modification le 30 juin 2025 à 07:54.

    C'est malheureusement ce que l'algo twitter/X faisait : indiquait là où il y avait du fight et envoyait les gens se taper les uns sur les autres.

    Par contre vu l'audience du bot, actuelle, je doute que le bot soit présentement capable d'attirer l'extrême droite.

    Et oui, un objet de mesure qui modifie la chose qu'il mesure, n'est plus un objet de mesure, mais un objet de manipulation.

    Je pense arrêter l'expérimentation sous peu en ayant peut être ouvert une boîte de pandore.

  • [^] # Re: Trouvé

    Posté par  (site web personnel) . En réponse au journal La gloire avec un bot bluesky. Évalué à 2.

    yep, c'est lui.

    Pas très smart :o)