Hobbestigrou

Just another python and perl developer

Supporter plusieurs distributions dans ses tâches ansible.

ansible Python python planet-libre

24 jan. 2018 | hobbestigrou | comments

Introduction

Il n'est pas rare que les développeurs n'utilisent pas la même distribution que le serveur de production. D'ailleurs, il est même possible que dans l'équipe, il y est plusieurs distributions différentes. Il n'est pas grave que le poste de développeur ne soit pas le même que la production, car pour ça il y a d'autres environnement. Pour ce genre de situations, il est intéressant de pouvoir gérer plusieurs distributions dans les tâches ansible. Ce n'est pas contraignant et ça ne prends pas beaucoup plus de temps. L'exemple est l'installation d'un serveur de base de données.

Usage

Ansible fournit plusieurs utilitaires, dont par exemple la possibilité d'importer une une tâche. Ce qui permet d'avoir des sous-tâches spécifiques à une distribution, par exemple. Maintenant, voyons comment ça fonctionne, le fichier roles/postgresql/tasks/main.yml :

---  
- name: Import the task for debian  
  import_tasks: debian.yml  
  when: ansible_distribution|lower == 'debian'

- name: Import the task for archlinux  
  import_tasks: archlinux.yml  
  when: ansible_distribution|lower == 'archlinux'

- name: Ensure the service is running  
  service:  
    name: postgresql  
    state: started  
  enabled: yes

D'abord, un nom pour l'action, c'est classique. Ensuite, l'utilisation du module import_tasks, puis, l'utilisation d'une structure conditionnel pour importer la tâche qui convient à la distribution. Le fichier roles/postgresql/tasks/debian.yml:

---  
- name: Install  
  apt:  
    name: postgresql  
    state: latest  
    update_cache: yes  
  become: yes

Utilisation du module apt pour installer le serveur de base de données. D'abord le nom du paquet, ensuite son état, latest pour avoir la dernière version disponible, puis updatecache pour mettre à jour la liste des paquets. L'opération demande les droits d'administration, la valeur de becomeuser est root par défaut. Le fichier roles/postgresql/tasks/archlinux.yml:

---  
- name: Install  
  pacman:  
    name: postgresql  
    state: latest  
    update_cache: yes  
  become: yes

La seule différence est le nom du module utilisé. Ici, c'est pacman, sur le reste le fonctionnement est le même. En général, il y a peu d'opération spécifique à faire pour une distribution. Les modules qui gèrent les systèmes de paquets pour les distributions, sont proches et ont beaucoup d'options communes.

Conclusion

Il n'est pas difficile de gérer le support de plusieurs distributions, dans les tâches ansible. La plupart du temps, les tâches spécifiques sont l'installation du paquet.

Présentation Python à des novices.

Python planet-libre python développeurs

24 jan. 2018 | hobbestigrou | comments

Introduction

L'idée était de répondre à cinq questions autour du langage. J'ai donc réfléchi aux questions auxquelles je pouvais répondre, et ce fut difficile à trouver. Avec la première question, j'ai pris un risque. C'était la partie la plus technique de ma présentation. Python c'est quoi ? J'aurais pu m'en passer, mais je souhaitais que les personnes présentes apprennent des choses. J'ai commencé par expliquer le fonctionnement des langages de programmation. J'ai donc présenté les différentes techniques pour traduire le code aux langages machines. J'ai donc parlé de compilateur, d'interprète et de compilation à la volée. Ensuite toujours technique, j'ai expliqué le paradigme de la programmation objet. J'ai pris l'un des exemples le plus commun la voiture. J'ai aussi rapidement abordé les sujets de la portabilité et des architectures. La deuxième question fut plus légère. Comment est né Python ? J'ai présenté par une photo l'auteur du langage. J'ai expliqué son rôle. Abordé le moment pendant lequel a été conçu Python et l'origine du nom. Pour finir, j’ai expliqué où il a puisé son inspiration. La troisième question de nouveau un peu technique. Pourquoi apprendre Python ? J'ai présenté volontairement des langages illisibles pour terminer avec un exemple Python. Qui utilise Python ? J'ai entre autre parlé de google et Dropbox. J'ai aussi parlé de quelques médias, mais je ne vais pas tout lister ensuite. J'ai rapidement abordé calibre et Openstack. La dernière question, était à destination de ceux qui aurait envie de creuser le sujet. Comment apprendre Python ? J'ai essayé de donner des pistes pour apprendre le langage.

De l'humour

Comme je l'ai dit plus haut, lorsque il s'agit d'un sujet technique, ce n'est pas facile de garder les gens à l'écoute. L'une des techniques est de faire de l'humour. Ce qui permet de détendre et d'intéresser les gens. Ce n'est pas facile surtout lorsque l’on n'est pas quelqu'un de drôle, mais ça se travaille. Quel que soit le sujet, il y a toujours des choses amusantes à trouver. Ce qui est important c'est de trouver le juste milieu, ne pas en faire trop et surtout les faire au bon moment. Je ne sais pas si j'ai vraiment réussi, mais j'ai eu l'impression de ne pas m'être trop mal débrouillé sur ce point.

La peur du serpent

Comme-dit plus haut, faire rire c'est important. J'ai donc commencé ma présentation en faisant une description du serpent. La fin de cette partie a été marquée par une présentation d'un ami. Un serpent en peluche je précise. Je l'ai lancé dans le public, j'espérais une réaction, mais elle fut encore meilleure que prévu. La configuration de la salle faisait que certaines personnes étaient dos à moi. Ce qui était parfait, car lorsque j'ai lancé la peluche, une personne ne l'avait pas vue arriver et elle s'est retrouvée nez à nez avec le reptile, qui lui était tombé juste devant. L'effet de surprise a provoqué une vive émotion, un petit cri et un sursaut et elle s'est brusquement levée de la chaise. Ce qui a eu pour effet de beaucoup amuser tout le monde. Je n'avais pas payé la personne et ce n'était pas prévu.

La préparation

Je ne me suis pas suffisamment préparé. Notamment sur l'oral, j'aurais du plus répéter. J'ai eu du mal à trouver mon rythme, j'avais parfois tendance à parler trop rapidement et je n'étais pas toujours très fluide. En revanche, j'avais bien préparé le contenu ce qui m'a beaucoup aidé. Sachant que j'allais m'exprimer à un auditoire qui ne connaissait pas la programmation, j'ai essayé de beaucoup travailler la clarté. Pour faire une bonne présentation de vingt minutes, comptez une semaine de préparation. Pour s'entraîner à l’oral, il faut préparer ses blagues et travailler son texte.

Prendre sa respiration

Lorsqu’on fait une présentation, il n'est pas rare de manquer d'air à cause du stress. Il faut penser à bien prendre sa respiration et ponctuer ses phrases pour garder un bon rythme. Comme-dit plus haut il faut mettre des touches d’humour, profiter aussi de ces moments pour prendre plus de temps pour respirer et en profiter pour réfléchir à la suite.

Le passage des questions

Ma première grande surprise. A la fin de ma présentation, il y a eu un petit moment de flottement, puis j'ai vu des mains se lever. Ce qui laisse à penser que j'avais été suffisamment clair. J'ai eu de bonnes questions que j'ai trouvées pertinentes.

Mon avis

Je suppose que c'est normal, mais j'ai été un peu déçu de ma présentation. Je sais ce qu'il me reste à travailler pour la prochaine. Accorder plus de temps à répéter l'oral. Tout en continuant à travailler le contenu et en essayer de toujours trouver des passages amusants. Je prépare mes présentations comme si je devais faire un spectacle.

Les retours

Je m'attendais pas ça mais j'ai eu beaucoup de retours positifs. Ce fut une satisfaction, savoir que les personnes avaient apprécié l'intervention, et ça m'a aussi fait plaisir. C'est toujours agréable de recevoir des compliments.

Ce que j'ai préféré

Lors de ma présentation, j'ai abordé différents sujets. J'ai notamment parlé d'un atelier gratuit pour apprendre à programmer avec Python. Ma plus belle récompense fut que des personnes se sont rendues à l'atelier. Ce qui signifie que j'ai réussi à susciter un intérêt.

Pourquoi je ne donnais plus de présentation ?

J'avais donné des formations, mais je ne faisais plus de présentations. Sans rentrer dans les détails, c'était pour une raison précise. Lors d'une présentation et du passage des questions, il m'avait été demandé quelque chose qui n'avait rien à voir avec le sujet. La question, est-ce que tu as un handicap léger ? Ce genre d'intervention est toujours un peu difficile à accepter. J'avais réussi à bien le gérer sur le moment, mais je n'osais plus faire de présentation publique. Je sais pour quelle raison cette question m'avait été posée, j'aurai donc du prendre plus de recul. Aujourd'hui j'aurais réussi à le gérer autrement et avec humour.

Ne pas se regarder

Il ne faut pas se regarder et surtout ne pas avoir peur du jugement des autres. Il n'y aucun risque à faire une présentation, même pas de perdre en crédibilité. Il faut donc prendre du recul. S’il y une question à laquelle on ne sait pas répondre, il faut le dire franchement et ne pas essayer de trouver une réponse qui serait fausse. Il est normal d'avoir un peu peur de s'exprimer devant du monde, c'est pour cette raison qu'il ne faut pas négliger la préparation, répéter souvent, faire la présentation à ses chats, à son miroir, ses peluches et pour finir, à ses proches. Pour finir apprendre aussi à rire de soi et ne pas se prendre trop au sérieux.

Apprendre à improviser

Il faut laisser une part pour improviser. S'adapter aux réactions pour pouvoir rebondir au besoin. On ne peut pas préparer les réactions du public, il faut donc être attentif à ça, pour ne perdre personne.

Envie de recommencer

Même si je fus un peu déçu de ma présentation, j'ai envie de recommencer. J'ai eu de bons retours, des questions et des résultats. J'apprécie beaucoup mon métier et pouvoir le partager c'est quelque chose de très agréable. Je me suis donc fixé d'essayer de faire un minimum de présentation pour cette année et continuer l'année suivante. La transmission du savoir même si ça reste des présentations simples et quelque est un élément important. De plus, ça ouvre des discussions et permet de faire des rencontres.

Conclusion

Ce fut un moment hors du temps, agréable que j'ai beaucoup apprécié. J'étais dans ma bulle, dans mon univers, concentré et à l'affût des réactions pour pouvoir réagir en cas de besoin. J'aurais du mal à me rappeler précisément de tout ça. Le seul point qui dérange, j'étais un peu nerveux de commencer et au début de la présentation, ce qui a eu pour effet d'avoir la bouche asséchée à la fin. J’ai donc repris ma respiration et cela m’a aidé. J'ai eu un compliment d'un de mes patrons qui m'a touché. Je recommencerai et je prends les critiques positives, pour progresser dans ce domaine. C'était une présentation à petit comité, mais c'était justement bien pour se lancer. Cet article m’a aidé à faire le point. J’espère que ce partage vous donnera des points de travail pour dépasser les peurs de tout un chacun face à une présentation publique. Bonne journée à tous.

Peau neuve.

perl django planet-libre python

10 juil. 2016 | hobbestigrou | comments

Introduction

il y a un moment qu'il n'y a pas eu d'activité ici pour diverse raison. Pour ce retour, j'ai décidé d'apporter un peu de changement. Notamment dans l’apparence mais pas uniquement. Ce qui n'est pas visible est aussi différent car maintenant ce blog utilise Python et Django, petit projet que j'ai développé.

Pourquoi développer un moteur de blog ?

Une question intéressante qui mérite d'être posé. Il existe déjà beaucoup de moteur et même en Python aujourd'hui. J'ai fais ce choix pour diverse raison, mais la première et qui a principalement motivé de le faire est que ça fait maintenant un peu plus deux dans ans que j'utilise Django et je n'avais pas encore de projet public avec ce dernier. Ce qui est déjà une raison suffisante à mes yeux. Une autre raison est que je n'ai pas trouvé un moteur qui répondait pleinement à ce que je recherche.

Ouverture du code

Le code n'est pas encore disponible. J'aimerai peaufiner encore un peu certain détail avant. Il devrait être disponible sur github dimanche prochain.

Changement de flux

L'url du flux a changé, pour le moment l'ancienne est encore disponible, mais je vais prochainement la supprimer.

Conclusion

Je me vois pas grand chose de plus à ajouter. J'apprécie ce changement. Ce n'est pas la première que je le dis, mais je vais tenter de publier plus souvent.

Profil urxvt

xprop terminal emulateur urxvt

27 sep. 2015 | hobbestigrou | comments

Introduction

Il est intéressant de pouvoir gérer plusieurs profils. Par exemple, un par environnement, avoir un fond différent pour pouvoir identifier en un coup d'oeil et éviter d'exécuter une commande sensible.

Configuration

Il faut éditer le fichier de configuration .Xdefaults:

irc*background: black
irc*foreground: white
prod*background: #E32636
prod*foreground: black
urxvt*background: black
urxvt*foreground: green
urxvt*transparent: true
urxvt*shading: 30
urxvt*tint: black
URxvt*font: xft:Envy Code R:pixelsize=10
URxvt*lineSpace: 8

L'exemple permet de lancer urxvt avec un fond de couleur différent pour son client irc et pour un environnement de production, les autres terminaux sont avec un fond transparent. Par défaut le terminal lancé contient le nom de l'émulateur de terminal1 dans la classe name, pour que la configuration de la partie irc soit prise en compte, il faut lancer urxvt avec l'option name:

urxvt -name irc

Le fond sera noir donc noir. Le URxvt est le nom de la classe commun à tous les terminaux urxvt. Lancé la commande xprop pour s'assurer du nom de la classe:

xprop

Avec i3 ajouter un raccourci:

bindsym $mod+i exec urxvt -name irc

Par exemple pour lancer un terminal avec le nom irc.

Conclusion

Un petit article qui je pense peut servir. Comme je l'ai dis il est pratique de pouvoir avoir un rappel visuel, ça permet de minimiser les erreurs d'innattention.


  1. Dans le cas présent urxvt 

Bonne pratique de développement.

langage tests documentation sphinx

14 sep. 2015 | hobbestigrou | comments

Introduction

J'aime écrire du code, je ne me vois pas faire autre chose un jour et j'espère pouvoir toujours continuer. Certaines personnes pensent qu'il est vraiment difficile d'être développeur. Je pense que c'est un métier simple et accessible et que tout le monde peut l'être. En revanche, il n'est pas facile, il y a un investissement à fournir et il faut un peu de passion.

Documentation

Quelque soit le langage c'est une des choses les plus importante1. Un projet bien documenté permet aux personnes intéressées par le projet de commencer à regarder comment il fonctionne sans avoir besoin de toute de suite se plonger dans la lecture du code. De plus dans un premier temps c'est plus agréable à lire et peut donner des détails ou astuces. Autre avantage ça permet de donner une visibilité au projet. Utile aussi pour le développeur du projet après une pause, permet de plus facilement retravailler dessus. Je recommande de commencer au moins en partie par la documentation, ce qui permet de structurer et clarifier ses idées. En Python, je recommande d'utiliser le projet sphinx, pour Perl le format pod est très bien et il sera directement affiché sur la page du module. Pour tout autre langage sphinx ou pandoc, l'avantage de sphinx est la publication sur la plateforme readthedocs. Une documentation à jour et bien maintenu est donc importante.

Test

Encore une fois ce n'est pas dépendant du langage2. Un projet bien testé est important. Permet de faciliter l'ajout de nouvelles fonctionnalités, d'amélioration du code, sans avoir une goute de sueur glissant le long du front. Un projet bien testé garantit la non régréssion. C'est aussi un bon exemple d'utilisation dans le cas d'une biblothèque par exemple. Idéalement, il faut écrire le test avant le code, essayer d'être le plus complet possible et prévoir tous les cas. En revanche, il faut essayer de ne pas en écrire trop et faire du test qui doit être testé par le module déjà lorsque il y a une dépendance. Lorsque qu'il faut tester une méthode qui utilise une API qui fait de l'écriture ou des méthodes dynamiques, utiliser mock mais éviter autant que possible.

Code

La partie principale arrive. Respecter les recommandations et conventions du langage en Python par exemple il existe la pep 8 que je recommande de lire. Avoir des fonctions ou méthodes qui ne fassent qu'une chose et qui soient limitées en nombre de lignes. Limiter aussi le nombre de lignes pour une classe, et éviter d'avoir une classe qui fasse plusieurs choses. Limiter la taille d'un fichier à mille lignes c'est bien, ne pas hésiter à découper le code. Rester simple que ce soit pour l'implémentation ou l'architecture il est important de rester simple, un code lisible et clair sera toujours mieux qu'un code très compressé et obscure qui ne fait gagner qu'un très peu. Toujours penser que le code est fait pour évoluer et que certainement d'autres développeurs vont travailler sur le projet. En général lorsque je commence à m'intéresser et utiliser un projet, je commence par lire entièrement la documentation et le code pour me faire une idée de ce qu'il est possible de faire et de l'implémentation. Ensuite je lis regulièrement les choses dont j'ai besoin sur le moment, je pense que c'est une bonne pratique et ça permet d'avoir un éventail assez complet et je pense que lire le code est un bon complément.

Faire de la veille

L'informatique évolue rapidement, beaucoup de choses voient le jour. Il ne faut pas foncer tête baissée sur la dernière nouveauté, mais en revanche il est important de voir ce qui se fait, ne pas hésiter à regarder et tester un nouveau projet pour faire son idée. Lire le code du projet qui nous intéresse, de pas oublier qu'écrire du code est aussi beaucoup de pastiche et il ne faut pas hésiter à s'inspirer.

Poser des questions

Ce n'est pas grave d'être lent et ne pas assimiler un nouveau concept. Il ne faut pas avoir peur de poser des questions et ne pas rester bloqué. Je pose beaucoup de questions, souvent trop, mais je pense que c'est utile pour tout le monde. En revanche, avant de poser une question ou de chercher sur internet, je recommande de d'abord lire la documentation ainsi que le code.

Conclusion

J'ai présenté ce que j'essaie de respecter au quotidien qui sont des recommandations reconnues et respectées par beaucoup, je n'ai rien inventé. Je pense que respecter les différentes étapes permet de gagner du temps sur le long terme et d'être plus serein.


  1. Dit DDD pour Documentation Driven Development 

  2. Dit TDD pour Test driven development