barmic 🦦 a écrit 5919 commentaires

  • [^] # Re: Container ou rien

    Posté par  . En réponse au journal La galère de Python en déploiement. Évalué à 2.

    Les containers c'est nickel pour packager pour de la prod. Mais pour itérer en dev ….

    Ce que tu décris c'est faire ce qui est en prod pour du développement ce n'est pas ce qu'il faut faire.

    Tu utilise un dockerfile qui va bind ton dossier courant dans le container au lieu de faire une copie, c'est plus rapide et ça permet d'itérer sans problème.

    Pour faire du vite fais tu peut mĂŞme te passer de dockerfile. De tĂŞte c'est de l'ordre

    name='MyProject'
    # créé un container 'MyProject' en y installant les dépendances
    docker run -it --name $name --mount type=bind,src=$PWD,dst=/data python:3.13 pip install -r /data/requirements.txt
    # utilise le container pour l'executer ton script
    docker start -it --mount type=bind,src=$PWD,dst=/data python:3.13 $name python mon_script.py mon_input > mon_output

    Tu peut soit détruire et reconstruire le conteneur quand tu change une dépendance soit faire un start pour mettre à jour les dépendances.

    Il est aussi possible d'utiliser docker compose qui va faire que tu ne joue plus qu'avec des docker compose up ou down (docker compose c'est un plugin de docker et pas un orchestrateur).

    Évidement tu peut utiliser des alias ou des choses comme just, tasks ou l'outil de build qui te plaît. Docker apporte d'autres éléments comme le fait de cloisonner ce que tu lance sur ta machine pour embêter ceux qui s'adonneraient à des supply chain attack. Et bien sûr si tu a besoin d'une base de données à côté c'est tout de même pratique.

    "En vrai les conteneurs sont une solution universelle" pour bien se faire ch*** pour rien.

    J'ai du mal à comprendre ta démarche. Plutôt que de t'interroger sur la pratique, tu pars sur ton à priori. Tu te doute bien que si certains le font c'est que c'est pratique pour eux.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Retour de l'enseignement en France au lycĂ©e

    Posté par  . En réponse au lien Apprendre la programmation en Python n'est pas plus facile qu'en Java ou en C++. Évalué à 2.

    Quel est le problème avec le hello world en java ?

    Pour être parfaitement honnête c'est encore en preview, mais je tiens à souligner qu'il ne demande pas d'étape de compilation.

    MĂŞme avec la version LTS tu met dans un fichier hello.java

    class hello {
      public static void main(String[] argv) {
        System.out.println("Hello world!");
      }
    }
    % java hello.java
    Hello world!
    

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: banque sans appli ?

    Posté par  . En réponse au journal Où je me cherche une banque. Évalué à 3.

    au moins 16 [banques] dans 3 pays

    TRACFIN est sur tes cĂ´tes

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • # D[iĂ©]fĂ©rer

    Posté par  . En réponse à la dépêche Lettre d'information XMPP d'octobre 2024. Évalué à 2.

    Extensions déférées

    Si une XEP expérimentale n’est pas mise à jour pendant plus de douze mois, elle sera déplacée de "Expérimental" à "Différée". Une mise à jour ultérieure permettra de remettre la XEP à l’état "Expérimental".

    Pour la cohérence si j'en crois la version anglaise c'est bien "déférée" et non "différée" j'aurais pu comprendre l'un comme l'autre.

    AMHA ça pourrait être bien de présenter le processus avec un diagramme par exemple avec une machine à états.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Perplexe

    Posté par  . En réponse au journal UV un énième packageur python. Évalué à 6.

    Mon avis personnel c'est que je ressens ça comme des outils invasifs. Jusque là l'écosystème Python a toujours été autonome, on a donc toujours eu la possibilité de faire des contributions en Python pour nos outils en Python.

    Il me semble que l'une des particularité de l'écosystème python c'est d'avoir toujours eu une grande permissivité en vers le code natif avec des bibliothèques comme numpy pour le plus évident qui mixent du code python et du code C.

    C'est toujours plus satisfaisant d'avoir les outils dans le mĂŞme langages, mais le plafond de performance de python et de rust sont pas les mĂŞme.

    Après c'est un outil de plus, il y en aura 5 nouveaux d'ici le printemps.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: java bien

    Posté par  . En réponse au journal La galère de Python en déploiement. Évalué à 3.

    Tu peux mĂŞme le faire en java avec jbang.

    Mais pour l'un comme pour l'autre je n'ai pas trouvé d'IDE qui me supporte correctement. C'est à dire qui tire les dépendances et ne te met pas des erreurs partout et peut faire de l'autocomplétion.

    Kotlin a une fonctionnalité similaire en expérimentation ça décidera peut être a donner un support correct à intellij

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Debian ne pip plus ?

    Posté par  . En réponse au journal La galère de Python en déploiement. Évalué à 3. Dernière modification le 24 décembre 2024 à 19:31.

    Ça vient de pip 21.1 (ça a était intégré comme un bug fix) en avril 2021 et toute la discussion se trouve là : Discourage usage of pip as root.

    Edit: Pardon c'est une autre modification aussi de mai 2021 : PEP 668 – Marking Python base environments as “externally managed”

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: java bien

    Posté par  . En réponse au journal La galère de Python en déploiement. Évalué à 3.

    Je n'avais pas fait gaffe mais oui on utilise énormément de bibliothèque en Java. Ce qui fait que java est différent de python c'est le classpath. Un programme java a une configuration lui indiquant la liste de ses dépendances, il n'y a donc aucun problème à avoir plusieurs versions d'une bibliothèque dans des versions différentes qui sont utilisées en même temps.

    Qu'est-ce qui est complexe là dedans ?

    C'est un peu verbeux, même maven se prépare a faire en sorte que ce soit une seule ligne (pour maven 5 il me semble, maven 4 - qui est en RC2 - étant la préparation de la version 5).

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Ah les devs ...

    Posté par  . En réponse au journal La galère de Python en déploiement. Évalué à 4.

    chaque projet devrait avoir son environnement créé avec le module venv et ce n'est pas la peine de le suivre avec git, un venv python c'est jetable et facile à reconstruire, par contre le fichier requirements.txt (pip freeze > requirements.txt) lui doit être suivie avec git

    Moi je me suis trouvé un champion, il gère venv pour moi et je commit 3 fichiers (un lock file, un pour la version de python et un pour la description du projet) et pour les cas les plus simples (ce que je fais le plus) il peut simplement se baser sur un commentaire dans le fichier.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Rust ?

    Posté par  . En réponse au journal UV un énième packageur python. Évalué à 9.

    Pour le coup non puisque je ne le compile pas moi-même j'ai décidé il y a bien longtemps de faire confiance à mon gestionnaire de paquet. Ça demande d'installer quelque chose plutôt que d'utiliser ce qui est dans une installation de python vanilla (ou en tout cas ce qui est sur ma machine), mais je trouve que le confort de l'usage en vaut la peine.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: SĂ©rie d'articles

    Posté par  . En réponse au journal UV un énième packageur python. Évalué à 4.

    Oui j'ai oublié d'ajouter le lien après la rédaction et j'ai toujours du mal à la retrouver.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Non

    Posté par  . En réponse au journal Travail bénévole dans le monde du logiciel libre. Évalué à 0.

    Quand c'est amateur oui, mais quand c'est RedHat c'est difficile Ă  invoquer.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Non

    Posté par  . En réponse au journal Travail bénévole dans le monde du logiciel libre. Évalué à 1.

    Il me semble que le point est un peu différent. Prenons un logiciel comme Ansible, il appartiens à RedHat ou IBM, ces entreprises paient des développeurs pour travailler dessus. Moi aussi développeurs de profession est-ce que j'ai réellement du point de vu de l'URSAFF le droit de contribuer bénévolement à Ansible (j'ai aucune idée de s'ils acceptent les contributions extérieures) ?

    Je peux tout à fait comprendre qu'il s'agit là d'un cas où mon travail représente une concurrence déloyale à l'embauche chez IBM/RH et que non seulement ça tomberait sous le coup de la loi mais que c'est réellement ce que le législateur a tenté d'empêcher.

    C'est différent pour le logiciel qui sont géré par des fondations par exemple.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Non

    Posté par  . En réponse au journal Travail bénévole dans le monde du logiciel libre. Évalué à 1.

    Devrait-on interdire le bénévolat, quelque soit le secteur d'activité, au prétexte que certains vont faire du profit, avec ou sans contrepartie, grâce à cette activité ?

    Je ne sais pas comment ça se passe d'ailleurs en France. Si le logiciel est clairement maintenu par une entreprise, je vois mal comment le distinguer d'un travail déguisé (et je suis même pas sûr que ça n'en soit pas).

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Who's that guy ?

    Posté par  . En réponse au lien Software is Way Less Performant Today. Évalué à 1.

    jour au lendemain

    Je doute que ce soit arrivé. Je pense que c'est arrivé lors d'une mise à jour. Et c'est à voir avec les développeurs de savoir pourquoi est-ce qu'ils ont retirer le support. Il y a pleins de raisons possibles (des remontés de bugs dessus avec personnes dans l'équipe en mesure de les reproduire/tester, volonté de garder un code simple, impossibilité de faire quelque chose qu'ils voudraient avec OpenGL4, une dépendance qu'ils utilisent qui ne supporte plus OpenGL4,…). Ça t'énerve peut être, mais c'est à voir avec les développeurs.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Who's that guy ?

    Posté par  . En réponse au lien Software is Way Less Performant Today. Évalué à 1.

    Quand on y pense, mĂŞme les choses comme X11/Wayland, c'est pareil.

    Pour ce cas là, ça pourrait être au linkage avoir une implémentation pour chacun pour le cas des stack graphiques.

    […]

    Si tu parles de chargement dynamique, du type tu as une bibliothèque avec les implémentations génériques, une bibliothèque avec implémentations SSE2, etc. Puis tu choisis quelle version charger à l'exécution.

    Alors oui je parlais évidemment du linkage dynamique le link des bibliothèque pour être statique ou dynamique

    Le "pour ce cas là" fait référence au cas où tu as une implémentation X11 (xcb ou xlib pour être exact) et wayland (et frame buffer et d'autres choses si besoin) et il permet de ne pas avoir a implémenter la sélection dans ton code. L'installation n'installe que l'un ou que l'autre ou la distribution peut te faire linker avec l'implémentation qui correspond à ce qui correspond actuellement à l'environnement. C'est en ça que le fait qu'il y a pleins de techniques pour faire de la sélection tardives d'implémentation et que le fait que ça existe pour X/Wayland n'indique pas du tout que c'est possible par ailleurs.

    Même sans ça le fait que le serveur d'affichage te permet de détecter sa présence n'indique pas que le CPU te permet de savoir quel jeu d'instruction existe ou pas.

    Bref c'est intéressant de savoir que cpuid récupère ces informations depuis le CPU lui-même et pas depuis une base de connaissance.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Who's that guy ?

    Posté par  . En réponse au lien Software is Way Less Performant Today. Évalué à 2.

    Quand on y pense, mĂŞme les choses comme X11/Wayland, c'est pareil.

    C'est pas le concept générique qui est oublié, mais la possibilité de découvrir à l'exécution ce qui est disponible ou non sur le cpu. Surtout que les techniques peuvent être très différentes. Pour ce cas là, ça pourrait être au linkage avoir une implémentation pour chacun pour le cas des stack graphiques

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Who's that guy ?

    Posté par  . En réponse au lien Software is Way Less Performant Today. Évalué à 3.

    Je savais pas (ou j'ai oublié) qu'on pouvait avoir un branchement au runtime pour en vérifiant l'existence des instructions.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Who's that guy ?

    Posté par  . En réponse au lien Software is Way Less Performant Today. Évalué à 3. Dernière modification le 18 décembre 2024 à 12:01.

    OpenMP ne peut pas inventer le processeur sur le quel il va tourner. Donc ça va dépendre de la cible que tu donne à ton compilateur. Tout le point plus haut est de justement être en mesure d'utiliser les instructions de ton CPU qui vont permettre d’accélérer l’exécution.

    Il n'y a pas vraiment de magie pour ça ou plutôt il y en a une mais elle est pas gratuite c'est d'avoir du JIT.

    L'idée c'est de compiler le code sur la machine cible au moment où tu as sais quel CPU tu utilise et tu as des stats pour faire de la compilation guidé par des profile. C'est java et probablement C#. Après il faut que le code intermédiaire aide à trouver les optimisations possibles donc par exemple ai une abstraction de SIMD.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: je reste septique sur un point ...

    Posté par  . En réponse à la dépêche Deno 2.0 est là. Évalué à 2.

    bien vu

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: je reste septique sur un point ...

    Posté par  . En réponse à la dépêche Deno 2.0 est là. Évalué à 2.

    En fait en reformulant, j'essaie de comprendre l'intérêt de l'un par rapport à l'autre.

    En fait tu peu le faire avec des containers, mais il faut instancier un container par utilisateur différent (c'est pour ça que le faas a du sens).

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: je reste septique sur un point ...

    Posté par  . En réponse à la dépêche Deno 2.0 est là. Évalué à 2. Dernière modification le 17 décembre 2024 à 17:02.

    Il doit bien accéder au FS pour créer un dossier non ? Ou quelque chose m'échappe …

    Ce n'est pas lui qui crée le dossier, je lui dis quel dossier il a le droit de lire et m'assure qu'il n'a le droit de lire que ce dossier

    deno run --allow-read=/run/random-bidule/dir script.ts /run/random-bidule/dir

    Le premier pour qu'il ai le droit de lire ce dossier et le second pour que le script puisse savoir quel dossier il peut lire.

    Tu as la doc ici:

    https://docs.deno.com/runtime/fundamentals/security/#file-system-access

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: je reste septique sur un point ...

    Posté par  . En réponse à la dépêche Deno 2.0 est là. Évalué à 3.

    Ce que tu décris me fait penser un peu aux cloud functions de GCP ou lambda AWS, mais …

    Tout à fait et faire du FAAS aurait put être une option, mais disons que faire un choix de déploiement et un choix de dev n'est pas les même personnes ni les même enjeux.

    Quel genre de fonctions ? J'ai du mal à me représenter les cas d'utilisation. Tu parle d'interaction avec stdin/stdout/stderr, mais ces 3 canaux doivent bien être interfacés avec des entréess ou des sorties non ? Je suis assez curieux car ça pourrait me servir en début d'année prochaine …

    Interaction est un bien grand mod pour être tout à fait précis :

    Le code qui reçoit la requette va :

    • crĂ©er un dossier dĂ©diĂ© (avec des fonctions spĂ©cifiques pour) et stocker des fichiers de configuration en particulier un fichier js qui doit exporter une fonction
    • appeler un nouveau process en lui donnant uniquement accès au dossier (il y a des limitations fortes qui font que tu ne peut pas appeler un fichier ../file.txt par exemple)
    • envoyer dans le stdin de ce nouveau process grosso modo l'Ă©quivalent de la requĂŞte

    Le processus lit sa conf, regarde la requĂŞte dans son stdin et fait son job.

    Si tous se passe bien il écrit le résultat dans sa sortie standard, sinon il écrit l'erreur dans sa sortie d'erreur.

    Le parent pose un timer pour limiter le temps d’exécution du sous processus.

    Du coup c'est juste un bête request/response, ça aurait pu être fait en HTTP sur l'interface loopback. Je sais pas si deno sait utiliser une socket UNIX.

    Je sais pas si c'est suffisamment clair.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: je reste septique sur un point ...

    Posté par  . En réponse à la dépêche Deno 2.0 est là. Évalué à 5.

    Je me sers justement de deno pour ça :)

    Ma boite donne une fonctionnalité qui permet grosso modo à des utilisateurs d'écrire une fonction js que l'on exécute en suite nous sur nos serveurs. C'est une forme de plugin.

    Et ben pour ça on a un service qui spawn un deno pour exécuter cette fonction (et quelques autres trucs) et communique avec via std{in,out,err}. C'est une forme de séparation de privilège comme le décrit le projet openbsd où ils découpent les logiciels entre la partie qui a besoin de privilège et celle qui n'en a pas.

    A noter aussi qu'il est possible d'être plus fin et par exemple de limiter l'accès uniquement à une partie du système de fichier.

    Alors que je me suis jamais vraiment penché sur node, j'aime vraiment bien deno qui est devenu l'un des interpréteurs que j'utilise pour différents scripts juste pour moi en remplacement de python. J'ai des scripts qui ne font plus ou moins que des appels rest, typescript est très bon pour ça sans la moindre dépendance en plus (bon deno du coup). Et pour les fois où je fais du scrapping fetch + domparser est plus pratique pour moi que request + beautifulsoup.

    Une fonctionnalité que je trouve vraiment sympa, c'est que tu peut avoir de la persistance simple sans prise de tête avec deno puisqu'il implémente le localstorage. Ça permet à certains de mes scripts d'avoir un cache sans m'embêter plus que ça.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Who's that guy ?

    Posté par  . En réponse au lien Software is Way Less Performant Today. Évalué à 6.

    Une de mes grandes fiertés de cette année, c'est d'avoir sur quelques mois :

    • rĂ©alisĂ© une analyse statistiques de donnĂ©es de prod
    • choisi un modèle mathĂ©matiques en rapport avec ce que j'observais
    • Ă©valuĂ© la viabilitĂ© de mon modèle par des benchmark et des expĂ©rience pour vĂ©rifier la fiabilitĂ© fonctionnelle (comme ça utilise des proba vĂ©rifier qu'on ne tombe vĂ©ritablement pas dans les cas problĂ©matiques)
    • choisi un meilleure architecture liĂ© Ă  ce modèle mathĂ©matiques pour rĂ©duire la taille des donnĂ©es manipulĂ©es
    • utilisĂ© des optimisations bas niveau accessibles grâce au fait d'avoir rĂ©duit la taille des donnĂ©es (pour faire simple chaque Ă©lĂ©ment tiens maintenant dans un registre)

    et ainsi obtenu des gains de 50% de nos débits (sous charge sinon ça se voit pas) sur un pan assez important de notre logiciel.

    C'est une illustration de ce que je décrivais, il ne faut pas opposé la complexité algo et le CPU, il faut les coordonner pour arriver au résultat que tu attends.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll