Journal Scripting Python sous Linux 2eme EDITION

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
40
8
juil.
2023

📚 Annonce spéciale ! 📚

Hello, world

Je suis ravi de vous annoncer la parution imminente, le 12 Juillet, de la deuxième édition de mon livre "Scripting Python sous Linux" aux Editions ENI

Cette nouvelle édition fait 100 pages de plus, en fait 99 pages pour être exact et j'ai compté 194 scripts en tout, téléchargeables sur le site de l'éditeur bien entendu.

De nouveaux sujets sont abordés comme par exemple AWS et boto3, Scapy, RRDTool, OpenStreetMap et Folium, le tout accompagné d'exemples pertinents et de difficulté progressive.

Je tiens particulièrement à remercier chaleureusement tous ceux qui ont lu et apprécié la première édition, dont certain sont présent sur LinuxFR ;)

  • # félicitations !

    Posté par  . Évalué à 6.

    J’ai beaucoup apprécié ton ouvrage, malheureusement il me quitta trop tôt, subtilisé sans remords par un de mes enfants. Suite à cette douloureuse séparation, il ne m’est plus resté que mes yeux pour pleurer (et la version électronique quand même, faut pas déconner).

    Ravi qu’une seconde édition soit sortie, j’espère pour toi suite à une bonne vente de la première.

    Félicitations et encore merci pour ton travail, qui a bien aidé le mien :-)

    • [^] # Re: félicitations !

      Posté par  . Évalué à 3.

      Je plussoye, bien que j'ai tout juste commencé la première édition. J'espère que je ne rate rien d'important !

      • [^] # Re: félicitations !

        Posté par  (site web personnel) . Évalué à 4.

        J'espère que je ne rate rien d'important !

        Oui et non :) cela dépend de ce que tu attends de ce livre

        Non :
        car même la première édition te permettra d'apprendre python et/ou de progresser avec ce langage.
        Certains lecteurs, moi y compris, ce servent de ce livre comme référence, car certains scripts et sections vont beaucoup plus loin avec certaines librairies que ce que l'on trouve rapidement sur le net.

        Ce n'est pas pour rien qu'il pèse plus d'un kilo :)

        Sur les 763 pages de cette édition 53% sont dédiés à la découverte et à l'apprentissage, 25% sur la pratique dans des cas concrets que j'ai rencontré et 13% pour progresser et aller plus loin( le reste constitue les annexes 9% )

        Oui :
        la deuxième édition m'a permis de faire une mise à jour et de corriger quelques petits points et d'aller plus dans le détail sur d'autres.

        Dans les points mis à jour : match - case
        J'ai été obligé de faire 2 sections, 1 sur l'usage de ces "soft keywords" avec des litéraux et l'autre sur l'usage avec des objets.

        La correction de certains points concernent des scripts pas franchement système mais très intéressant pour comprendre certains concepts du langage. C'est ainsi que j'ai enlevé les scripts sur le jeu de bataille et l'évaluation d'une main au poker, qui permettait de bien comprendre les types de données listes et dictionnaires.

        Sincèrement mélanger des cartes en python fait appel a plein de notion :)

           print("Melange des cartes")
            while paquet:
                melange.append( paquet.pop( paquet.index (random.choice(paquet) ) ) )

        OK c'est pas trop 'sysadmin'
        Cela a été remplacé par des exemples basés sur RRDTool, Scapy et subprocess beaucoup plus "système d'administration linux"

        Et il y a un chapitre de plus sur le CLOUD, chapitre dont je particulièrement content car il explique de manière simple le cloud et les bonnes pratiques à respecter sur AWS avec en final un script qui permet de générer avec la librairie boto3 un environnement complet sur AWS.

        Donc oui la deuxième édition est forcément meilleure, c'est une amélioration mais pas un nouvelle version qui chamboule tout.

        Cela m'a permis de corriger ce que j'avais trouvé un peu trop léger ou pas assez sysadmin, et aussi suivi les conseils de mon éditeur sur certains points et au final j'ai inséré certaines choses que je n'avais pas pu faire lors de la première édition.

        J'aurais aimé tout garder et seulement rajouter mais je risquais de buter sur la limite technique du nombres de pages et/ou de caractères, car la première édition en était pas si éloignée que ça

        • [^] # Re: félicitations !

          Posté par  . Évalué à 3.

          Ça fait bien envie, je pense que je vais me l'offrir. Je suis sysadmin et je manque de pratique de Python au quotidien !

          • [^] # Re: félicitations !

            Posté par  (site web personnel) . Évalué à 4.

            Alors ce livre est fait pour toi, tu es exactement le public visé à l'origine du projet.
            Un administrateur système qui a besoin d'apprendre python ou qui dans l'écriture de ses scripts à besoin de plus que ce peut offrir le shell.

            Mais après écriture ce livre peut très bien convenir à tout informaticien qui connaît linux, le shell et la programmation et qui veut apprendre le langage python.

            Pour les sysadmins c'est aussi plein d'exemples pour recueillir des infos sur ses machines, effectuer des manipulations de données, accéder à des bases de données, lire et écrire dans des formats de fichiers très courants, faire de joli rapport PDF ou HTML, générer des données aléatoires cohérentes etc …

            Pour les autres informaticiens ce livre parle de cas de figure à la frontière entre le développement et l'administration système.
            Mais c'est peut être une vision "old school" de ma part, car j'ai longtemps évolué dans un environnement ou les développeurs ne voulait pas entendre parler de ligne de commande.

            J'ai passé beaucoup de temps à peaufiner des scripts qui demanderait pas mal de recherche sur le net pour illustrer chaque sections, comme avec les librairies RRDTool, Reportlab par exemple.

            Les instructions et les fonctions de bases du langages sont illustrés avec des exemples pertinents et des informations que je n'avait jamais trouvé ailleurs ainsi

            >>> x=5
            >>> y=8
            >>> x or y # quelle valeur est retournée ?

            Je vous le dit ce n'est pas pour rien si le livre fait 862 pages, d'ailleurs au prix ou l'éditeur le vend cela reviens à 4,5 cents d'euros la page :)

            Une de mes plus grandes récompenses est venue quand un lecteur m'a dit que ce livre lui servait de référence et ne quittait jamais son bureau.

            • [^] # Re: félicitations !

              Posté par  (site web personnel) . Évalué à 3.

              J'enseigne Python depuis plusieurs années, et bien que connaissant très bien l'évaluation paresseuse et le transtypage implicte, je recommande de ne pas montrer ça aux débutants, ni même de l'utiliser en production.

              Ce petit bout de code me laisse quelques réflexions :

              • PEP8 : on met des espaces autour de l'affection (sauf valeur par défaut lors d'appel d'une fonction et/ou définition de fonction).
              • Ne pas utiliser de transtypage implicite ; c'est mal. Ici, le 5 est transtypé en True à un moment de manière implicite.
              • Ne pas utiliser l'évaluation paresseuse pour obtenir la valeur non transtypéee initiale ; c'est le meilleur cas pour écrire un code obscur.
              • Utiliser renvoyer en non retourner pour la sortie d'une fonction. La traduction malheureuse du Cormen a fait trop de mal.
              • Ce serait chouette de voir d'autres extraits de codes. Y a-t-il un lien direct vers quelques bouts de codes et des commentaires associés ?

              Dans tous les cas, je suis toujours content de voir des productions utiles qui aident l'apprentissage de Python ; encore plus quand c'est le fruit d'un travail collaboratif.

              • [^] # Re: félicitations !

                Posté par  (site web personnel) . Évalué à 6.

                Ce lien pointe sur une archive contenant tout les scripts du livre.

                Cependant, autant te prévenir, j'ai peur que certains bout de code te pique les yeux … mais toutes remarques sensées (même extrême) est le bienvenu.

                Et en réponse à tes réflexions :

                Le PEP8 oui j'ai toute une section sur le sujet, même si je dois le reconnaître ne pas avoir lancé l'utilitaire pep8 sur tout les scripts.

                Ensuite, cet ouvrage s'adresse à des administrateurs systèmes ou des informaticiens qui produisent des petits scripts, pas a de grands débutants en informatique, ni a des développeurs python chevronnés, d’où ce coté plus "pratique" que "académique".

                C'est voulu et assumé, il y a pléthore de très bon bouquins sur python et j'ose espérer que le mien se démarque un peu de part l'expérience que j'ai voulu transmettre, en fait j'ai écrit le bouquin que j'aurais voulu trouver en découvrant python il y a quelques années

                renvoyer vs retourner : d'autant plus difficile avec python et son mot-clé 'return' :)

                Avec le recul je m'aperçois qu'il aurai été judicieux avoir des conseils sur certains points avec quelqu'un comme toi qui enseigne ce langage depuis des années, même si la personne qui a relu la deuxième édition m'a beaucoup aidé dans la reformulation de certaines parties :)

        • [^] # Re: félicitations !

          Posté par  . Évalué à 2.

          Oui :
          la deuxième édition m'a permis de faire une mise à jour et de corriger quelques petits points et d'aller plus dans le détail sur d'autres…

          Merci pour ta réponse

          Je l'ai copiée dans un dossier de notes liées à ton livre pour me souvenir des différence quand j'arriverai aux sections concernées

          Merci pour ton travail, qui dés le début me paraît soigné et de très bonne qualité !

          • [^] # Re: félicitations !

            Posté par  (site web personnel) . Évalué à 3.

            Merci beaucoup pour tes commentaires … encore quelques uns comme le tien et je vais devenir insupportable :)

            Sinon il y a 2 coquilles dans la première édition, corrigées dans la seconde :

            • page 357 : il manque un "non"

            => seul les objets mutables peuvent être des clés de dictionnaires

            à remplacer par

            => seul les objets non mutables peuvent être des clés de dictionnaires

            C’est certainement la section la plus difficile à lire, mais un lecteur l'a remarqué quand même

            • page 427 :

            => pip install docx

            à remplacer par

            => pip install python-docx

    • [^] # Re: félicitations !

      Posté par  (site web personnel) . Évalué à 3.

      Merci beaucoup

      Super content que vous ayez apprécié toi et un de tes enfants :)

      La récompense pour les efforts lors la rédaction d'un livre : c'est d'être lu
      Et les livres c'est fait pour être partagé, prêté …

      Cela m'a surpris quand on m'a demandé de fournir une deuxième édition, mais apparemment le nombre de ventes n'a pas été si mauvais que ça (non je ne suis pas devenu riche ;) ) et ne serait ce que pour l'éditeur il faut bien relancer la machine.

      Cette deuxième édition corrige quelques coquilles, certains scripts ont été supprimés et remplacés par d'autres plus dans le sujet de l'administration système.
      Les nouveaux mots clés 'match-case' sont abordés, en 2 parties d'ailleurs car c'est exactement le genre d'ajout au langage qui peut changer la manière de coder en python.
      Il y a un chapitre de plus sur le CLOUD avec les bonnes pratiques à respecter sur AWS et un exemple complet sur la librairie boto3 qui permet de construire un environnement complet sur AWS.

      Je le redis si tu veux une dédicace a joindre a ton exemplaire, n'hésite pas me contacter sur ma boite mail perso pour me transmettre ton adresse et je te renverrai une dédicace sur papier libre.

      Encore merci pour ton chaleureux retour :)

      • [^] # Re: félicitations !

        Posté par  . Évalué à 4.

        J'ai une question (je dois avouer ne pas avoir acheté le premier), je ne vois pas quelque chose là dessus spécifiquement dans la table des matières : tu parle de la gestion des dépendances et/ou du déploiement des scripts sur différentes machines. Avoir une approche opiniated d'utiliser les paquets de la distribution, pip global ou une gestion d'env me paraît très intéressant.

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

        • [^] # Re: félicitations !

          Posté par  (site web personnel) . Évalué à 2.

          C'est vrai que cela mériterait un chapitre à part entière, mais je n'ai pu y consacrer qu'une section et qu'une ou deux annexes.

          J'explique très rapidement comment mettre en place un environnement python, trouver le binaire python3 et vérifier la version, puis comment utiliser pip
          Plus loin dans les annexes comment créer une machine virtuelle avec VirtualBox pour tester sans casser sa machine principale et comment compiler python depuis les sources.

          Car ce livre s'adresse à des experts, qui connaisse un peu linux et surtout la ligne de commande, pas des grands débutants en informatique.

          C'est un choix que j'assume, de plus ces sujets sont très bien traités sur le net. Et je reconnais être plus "pratique et pragmatique" qu'académique ;)

          • [^] # Re: félicitations !

            Posté par  . Évalué à 2.

            Plus loin dans les annexes comment créer une machine virtuelle avec VirtualBox pour tester sans casser sa machine principale et comment compiler python depuis les sources.

            Je ne peux que conseiller docker/podman pour cet usage.

            docker pull <distribution>
            docker run -it <distribution> -v .:/tmp/script /bin/bash
            # fais ce que tu veux /tmp/script pour retrouver ton répertoire courant
            ^d # pour arrêter ton container
            docker prune -f # pour récupérer de l'espace si besoin

            Tu n'a pas à te soucier des ressources que tu alloue à l'environnement, c'est plus léger à démarrer, partager des choses (comme des points de montages ou donner l'accès au réseau) est, je trouve, plus simple.

            C'est un choix que j'assume, de plus ces sujets sont très bien traités sur le net. Et je reconnais être plus "pratique et pragmatique" qu'académique ;)

            C'est justement ça que je trouverais intéressant l’État de l'art académique je l'ai dans la partie adéquate de la série qu'on avait eu sur python. Je serais curieux de ton avis d'admin sur comment gérer cela.

            Moi je minimise mes dépendances au maximum (la bibliothèque standard de python fais déjà beaucoup de choses) et j'utilise les paquets de la distribution pour le reste. Mais ça ne me donne pas l'impression d'avoir les coudées franches pour utiliser tout l'éventail de l'écosystème existant.

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

            • [^] # Re: félicitations !

              Posté par  (site web personnel) . Évalué à 2.

              Oui docker pourquoi pas, c'est plus moderne en plus ;)

              En fait je voulais juste fournir au moins une méthode pour tester les scripts sans pourrir son installation principale.

              Mon avis d'admin :

              La moins mauvaise méthode, a mon humble avis, est une approche par projet ainsi chaque projet doit être indépendant et cloisonné.

              Avantage : chaque projet vis sa vie et ses versions évoluent en fonction des besoins

              Inconvénients : chaque projet doit être suivi et les vieux projets sont vite oubliés et les ressources gaspillées. Les vieux projets peuvent devenir des boulets et il faut souvent faire le ménage dans les versions de Test / Preprod etc …

              En fait il y aurait de quoi développer un outil pour gérer les différents projets et les ressources allouées, chaque projet devrait avoir un chef de projet et une durée de vie etc …

              bref gestion et documentation sont les 2 mamelles d'un environnement sain :)

              Si je prend mon exemple perso, j'ai plein d'environnement python de la version 2.7 à la 3.12 plus quelques VM sous virtualbox.
              Et bien entendu chaque version de python peut avoir plusieurs environnements.
              Je le reconnais c'est très difficile de s'y retrouver, ainsi que l'environnement qui va bien avec le depot local git, surtout si j'ai oublié de la préciser dans le README.
              Mais c'est MON environnement et je suis tout seul sur cette machine ;)

              Par contre pour les quelques trucs que j'utilise en tant que "PROD" même si je suis le seul utilisateur, alors ils sont sur un environnement externe avec un cloisonnement par "projet"

        • [^] # Re: félicitations !

          Posté par  (Mastodon) . Évalué à 6. Dernière modification le 12 juillet 2023 à 11:37.

          Pour ma part (au passage je me suis mis réellement au Python grâce à ce bouquin !!!) je fais du venv partout.

          Voici en quelques lignes ce que je fais :

          • aucun sudo pip install sur mon système, jamais, ni même un pip install --user
          • j'ai un alias venv='. .venv/bin/activate'
          • n'importe quel projet python commencera par :

            • python -m venv .venv
            • venv
            • pip install ...
          • ensuite quand je reviens sur ce projet, je tape simplement venv pour retrouver mon environnement

          Note : le python -m venv .venv je l'ai appris par coeur, mais on pourrait très bien faire un alias venv_create par exemple

          En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

          • [^] # Re: félicitations !

            Posté par  . Évalué à 2.

            Note : le python -m venv .venv je l'ai appris par coeur, mais on pourrait très bien faire un alias venv_create par exemple

            D'autant que ces commandes peuvent devenir complexe La bonne façon d’utiliser pip.

            J'avoue ne jamais avoir utilisé de venv, mais je suis un script kiddy.

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

            • [^] # Re: félicitations !

              Posté par  (Mastodon) . Évalué à 3. Dernière modification le 12 juillet 2023 à 11:37.

              Bin justement, venv résout ce problème : un environnement par application. Ainsi je respecte les 3 points des bonnes pratiques (sous le xkcd).

              EDIT : du coup j'ai modifié mon post du dessus pour dire que je ne fais même pas de pip install --user

              En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

              • [^] # Re: félicitations !

                Posté par  . Évalué à 2.

                Je pensais aussi au upgrade :)

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

                • [^] # Re: félicitations !

                  Posté par  (Mastodon) . Évalué à 4.

                  Là aussi c'est plus facile avec venv : tu peux upgrader certaines applis et pas d'autres, revenir en arrière sur une upgrade foirée… non vraiment je ne vois pas d'inconvénient à venv.

                  En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

          • [^] # Re: félicitations !

            Posté par  (site web personnel) . Évalué à 3.

            au passage je me suis mis réellement au Python grâce à ce bouquin !!!

            Merci beaucoup, cela va être difficile de pas prendre la grosse tête :)

            J'aimais beaucoup virtualenvwrapper mais quand j'en ai eu besoin il ne fonctionnait plus sur les dernières versions de python c'est dommage car j'aimais la commande workon pour switcher d'un environnement à l'autre et aussi lister les environnements crées

            Mais sinon oui un environnement python par projet, c'est ce qu'il y a de mieux IMHO

      • [^] # Re: félicitations !

        Posté par  . Évalué à 1.

        ENFIN!

        C'est à se demander comment El Guido avait pu oublier le switch/case si commun (à commencer par le C… présent même dans la plupart des shell sauf peut-être le ash de busybox!). Et pour faire genre "c'est pas exactement cela", on ajoute de la confusion en faisant les originaux et l'appeler autrement! Penser à ceux qui switchent (ah ah!) régulièrement de langage? N'y pensez pas!

        Ca rappelle le "syndrome Java", ces multiples évolutions qui auraient pu être évitées, ce qui amena au bout de 10 ans chaque applicatif codé dans ce language à traîner sa JVM et dépendances car a force de modif/rajouts sur des choses mal pensées au départ cela devient mission impossible. Avec un énorme gâchis et la désuétude à la clef.

        Allez, encore quelques versions et, pour les cerveaux procéduraux comme moi qui peinent à penser objet, on trouvera peut-être un simple équivalent des variables statiques du C (qui resteront un des gros trucs qui me manquent régulièrement) et dans devoir tricher (via un nomFonction.dict) ;o)

        Bon, OK, j'ai jamais vraiment appris Python autrement que sur le tas et j'aurais peut-être besoin d'un bon bouquin! Mais c'est quand même dommage de se retrouver à devoir mettre cela après tant de versions pour créer un bazar évitable.

        J'ai pour mitiger les problèmes l'habitude de me limiter aux imports de la distro pour éviter les environnements cloisonnés (et le syndrome Java): L'interpréteur dans la version de la distro, les modules cohérents qui vont avec. Et si ça n'y est pas, au grand jamais de pip pour récupérer ce qui peut me manquer et gagner un peu de temps qui sera largement perdu sur la durée derrière avec potentiellement un import exotique à la maintenance future aléatoire (mon crédo : Ce qui a du succès, est suivi et dure, y'a toujours un mainteneur de la distro l'ayant intégré!) qu'il faudra revoir un jour, obligeant à se recoller des années après dans un truc qui marchait.

        Mais j'ai un usage qu'on pourrait qualifier de super-bash, dans ce cadre c'est un compromis efficacité/emmerdes qui me parait pas mauvais!??

        • [^] # Re: félicitations !

          Posté par  . Évalué à 3. Dernière modification le 04 septembre 2023 à 16:57.

          Mais j'ai un usage qu'on pourrait qualifier de super-bash, dans ce cadre c'est un compromis efficacité/emmerdes qui me parait pas mauvais!??

          Un habitué du C qui veut du scipting « super-bash », je serais surpris que perl ne te convienne pas mieux que python.

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

  • # Mais aussi

    Posté par  . Évalué à 2.

    Sur le site d'Eyrolles, en cherchant par nom, on trouve aussi ces livres signés de ton nom :

    Penser l'alcool au cœur des sciences sociales
    La vie rêvée des mal-aimés
    C'est la faute aux actionnaires
    Les condamnés
    etc…

    Quelle plume ;o) !

    • [^] # Re: Mais aussi

      Posté par  (site web personnel, Mastodon) . Évalué à 3.

      En agrégeant ces titres, on pourrait avoir un titre bien sympa (ou pas) et bien vendeur et un contenu à l'avenant et le tout centré sur la sphère informatique.

      « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

    • [^] # Re: Mais aussi

      Posté par  (site web personnel) . Évalué à 3.

      Il y a plus d'un âne qui s'appelle Martin à la foire

      Encore Eyrolles renvoi dans sa liste au moins des ouvrage avec le nom et/ou le prénom.

      Car Amazon m'a déçu sur ce point car en cliquant sur le nom de l'auteur il y a un peu tout et n'importe quoi qui se présente.

      le problème avec nom et prénom comme les miens c'est que tu as forcément des homonymes, une recherche google renvoi 20 500 000 références, alors que celui de ma compagne 11 300.

      Ceci dit cela me va très bien, rien de mieux qu'une forêt pour cacher un arbre.

      • [^] # Re: Mais aussi

        Posté par  (Mastodon) . Évalué à 4.

        le problème avec nom et prénom comme les miens c'est que tu as forcément des homonymes, une recherche google renvoi 20 500 000 références, alors que celui de ma compagne 11 300.

        Ne sois pas si modeste. Cette différence s'explique surtout par le fait que grâce à ton bouquin tu es devenu une star interplanétaire ;-)

        Surtout, ne pas tout prendre au sérieux !

        • [^] # Re: Mais aussi

          Posté par  (site web personnel) . Évalué à 3.

          :)

          En fait ce qui m'a le plus surpris c'est quand Stephen King et J.K. Rowling m'ont appelé pour que je dédicace leur exemplaire :)

      • [^] # Re: Mais aussi

        Posté par  . Évalué à 4. Dernière modification le 12 juillet 2023 à 22:16.

        Ah mais attend, la suite va t'étonner !

        Donc ce soir je passe à la librairie à côté de chez moi, me trouve un petit roman qui promet d'être déprimant à souhait (Les heures souterraines de Delphine de Vigan), et commande ton ouvrage. Et là le gars me dit « ah c'est marrant moi aussi m'appelle B… , et puis mon frère est dans l'informatique. » Il m'a confirmé que ce n'était pas toi, mais c'était cocasse :). Donc pour finir la commande, il me demande mon nom, et je lui dit « B…¹ ». Le libraire a bloqué deux-trois secondes, j'étais pas mécontent de mon petit effet :D.

        Voilà, oui, c'est totalement hors sujet.


        ¹ Mensonge éhonté s'il en est

        • [^] # Re: Mais aussi

          Posté par  (site web personnel) . Évalué à 2.

          Ah parfois on a de l'inspiration et on sort ce genre de blague sur le vif, pas méchante , qui surprenne et font rire et sourire.

          En plus mon frère travaille dans l'info, et il y a peu dans la même boîte que moi ;)

      • [^] # Re: Mais aussi

        Posté par  . Évalué à 0.

        Là c'est surtout une forêt pour cacher sa compagne des crocodiles qui rôdent

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.