Le labo de Ludo https://labodeludo.dev Pour satisfaire sa curiosité Sat, 23 Apr 2022 13:49:36 +0000 fr-FR hourly 1 https://wordpress.org/?v=7.0 https://labodeludo.dev/wp-content/uploads/2022/02/cropped-d79c2a7e21bda5242256893b10b3360019ddf44237b6d6dee4c5ea15c7bbd245.0_-_Copie-removebg-preview-32x32.png Le labo de Ludo https://labodeludo.dev 32 32 Site web: statique ou dynamique? https://labodeludo.dev/cloud/deployer-un-site-web-statique-avec-wordpress-et-s3/ Sat, 23 Apr 2022 13:50:00 +0000 https://labodeludo.dev/?p=462

Il y a plusieurs options pour créer son site web. Plusieurs services offrent de l’hébergement avec leur outil de conception propriétaire. Je pense entre autres à Squarespace ou Wix. Pour ma part j’ai choisi le logiciel WordPress depuis longtemps. Ça me permet d’héberger moi-même mon site mais avec un beau thème de mon choix. CNET fait une liste plus exhaustive des plateformes les plus populaires selon les types de sites web.

Problématique

Un premier défi que j’ai rencontré en hébergeant mes sites WordPress était le fait que mes sites finissaient par tomber. J’avais rencontré ce genre de problèmes dans le passé en hébergeant mon propre serveur Asterisk. Des bots sur internet sont programmés pour attaquer systématiquement les services disponibles publiquement tels que des sites WordPress. Le problème était un peu gênant. Je redémarrerais Apache et MySQL pour ensuite constater quelques semaines plus tard que le site était encore tombé.

En plus je serais routinièrement contraint de nettoyer des pourriels dans les commentaires et de supprimer les comptes d’utilisateurs qui en fait n’étaient que des bots publicitaires.

Solutions

Une première solution qui m’a dépannée était de placer le serveur derrière un wouff, euh non je veux dire un WAF :p. Haha je sais, je suis très drôle :). Personnellement j’ai utilisé le WAF de AWS. L’attrait qu’avait pour moi cette solution est qu’elle est facilement jumelable au CDN de AWS qui me permettait d’avoir des performances intéressantes pour un tarif basé sur l’utilisation. Par contre j’ai appris plus tard que CloudFlare offre ce service aussi gratuitement avec leur offre de CDN qui est aussi très bien semble-t-il.

Statique :O

Un collègue m’a mentionné dernièrement qu’il voulait construire son site statique avec GoHugo. J’avoue que l’idée d’utiliser un site statique me semblait un peu ordinaire et limitée. Notamment toutes les fonctions de traitement du coté serveur sont inopérantes. Donc plus de formulaire de commentaires et plus de formulaire de recherche dans le blogue. Et plus de publication facile de nouveaux articles ou de mises à jour spontanée.

D’un autre coté mon site web et mon blogue ne sont pas mis a jour si souvent de toute façon et les commentaires se trouvent plus souvent qu’autrement dans les réseaux sociaux. Un point que j’ai trouvé intéressant était l’idée que l’usage d’un site statique généré a partir de WordPress permet de dédier son serveur local de WordPress comme d’un environnement de test. Jusqu’à maintenant je desservais tous mes sites à partir de la même machine sur laquelle je développais.

Réalisation

J’ai donc fait un peu de recherche et j’ai trouvé cette extension de WordPress: Simply Static. Comme j’utilisais déjà Cloudfront je savais que l’hébergement de mon site statique avec S3 serait relativement simple. J’ai donc suivi un tutoriel. Ce dernier spécifiait quelques configurations élémentaires a faire:

Pour ce qui est de l’hébergement du site je savais déjà que je voulais l’héberger sur S3 comme la tarification est intéressante et que j’exploite déjà plusieurs services chez Amazon. Voici une documentation expliquant comment héberger un site statique sur S3 avec CloudFront:

Utiliser CloudFront pour diffuser un site Web statique hébergé sur Amazon S3

Pour terminer cette description de solution, je veux mentionner que même en mode d’hébergement statique, des plugin s’exécutant du coté client peuvent être utilisés pour remplir certaines fonctions laissées de coté. Par exemple un collègue qui héberge aussi son propre blogue utilise Remarkbox.

Et après quelques semaines?

Les performances, la sécurité, la disponibilité et le coût d’hébergement du site sur S3 sont excellents. Il y a bien sûr le fardeau de générer et transférer sur S3 la nouvelle version du site chaque fois qu’un article est ajouté ou que le site est modifié mais c’est sans doute automatisable.  Peut-être un sujet pour une autre fois. En tout et pour tout un site statique c’est tout de même un compromis très intéressant pour ceux qui sont prêts à repenser leurs façons de faire!

]]>
Taper à la vitesse de la pensée https://labodeludo.dev/labo/taper-a-la-vitesse-de-la-pensee/ Mon, 06 Apr 2020 12:00:46 +0000 https://labodeludo.dev/?p=353

Je vous ai déjà parlé de Vim et de tmux en vous présentant des leçons du livre de Drew Neil Practical Vim: Edit Text at the Speed of Thought . Je veux maintenant boucler la boucle sur ce précédent article en vous parlant de comment j’ai réussi à prendre l’habitude de taper avec tous les bons doigts sur chacune des touches et comment j’ai trouvé le clavier qui me correspondait le mieux.

Méthode de frappe au clavier

Un peu comme on joue d’un instrument, éditer du texte demande de la pratique. La première clé pour taper avec précision et taper vite est de se pratiquer pour développer une bonne méthode de frappe. Ça fait quelques années que j’ai commencé à m’entraîner avec des outils en ligne.

Vous pouvez en lire plus sur les cours de taptouche ici. Il s’agit d’une plateforme web bien reconnue pour apprendre à taper.

Pour utiliser les bons doigts sans regarder le clavier, un truc a été de cacher les touches alpha-numériques avec des collants. Éventuellement j’ai acheté un clavier qui vient avec des touches vierges.

Ressenti tactile et retour sonore

Un point que je trouve que l’on néglige souvent est le clavier. Encore aujourd’hui on voit, même dans les entreprises d’informatique, des personnes à qui on demande de taper à longueur de journée avec des claviers sans ressenti tactile et sans retour sonore. Il n’est donc pas étonnant que plusieurs d’entre nous regardons notre clavier en tapant.

Ce qu’il faut bien comprendre, c’est que le retour sonore et le ressenti tactile ne signifient pas qu’un clavier doit faire un bruit cacophonique et qu’il doit simplement présenter une résistance comme les premiers claviers d’IBM. En fait, ça veut dire qu’il doit être facile de savoir qu’une touche a bien été activée, sans avoir à regarder son clavier. Pour moi, ça a été la deuxième clé pour développer une mémoire sensorimotrice adéquate en tapant.

Avec un bon clavier et mes leçons en ligne, j’ai pu réellement m’améliorer dans le travail de tous les jours. Petit à petit, j’ai ainsi appris à taper correctement après avoir entretenu pendant plusieurs années de mauvaises habitudes. Je peux maintenant dire que j’utilise les bons doigts pour taper chaque lettre. En toute transparence, il me reste encore du travail pour gagner de la précision et de la vitesse, mais je peux toujours me situer sans quitter l’écran des yeux.

Le compromis entre la performance et le bruit

Le fait est que plusieurs claviers sont excellents pour apprendre à taper. Malheureusement ils sont souvent trop bruyants pour un environnement de bureau. Je crois que c’est une des raisons pour lesquelles on donne souvent aux employés de bureau des mauvais claviers du point de vue du confort et de la performance.

Comme la plupart des amateurs de clavier, je préfère les claviers mécaniques. Ce sont les meilleurs claviers pour obtenir un bon retour sonore et surtout tactile. Il existe des excellents claviers mécaniques très abordables, particulièrement avec les commutateurs cherry mx. Par contre trouver un clavier performant et qui ne dérange pas trop les voisins c’est plus rare.

Choix de clavier

Depuis que je travaille comme DevOps, une de mes premières direction a été de maîtriser l’éditeur de texte de ligne de commande Vim. Possédant déjà plusieurs années d’expérience dans le monde des TI, je savais que c’est l’outil de prédilection d’un administrateur de système Linux et je me suis donc familiarisé avec les conseils de Drew Neil dans le livre dont je vous ai déjà parlé.

Un de ses conseils qui m’a influencé dans mon choix de clavier était la réaffectation de la touche Verr. Maj. en touche Ctrl. Le changement m’a beaucoup plu. Premièrement, le fait de ne plus avoir de touche Verr. Maj. évite une perte de temps qu’on a souvent en étant forcé de défaire le verrouillage lorsqu’on accroche la touche par erreur. En plus, ça nous évite d’avoir à trop nous préoccuper de cette touche et ça permet de gagner en confiance quand on tape. Finalement le fait d’avoir le Ctrl à cet endroit permet de faire les raccourcis avec Ctrl sans avoir à quitter la position de base avec les index sur les touches f et j.

Dans ma recherche du meilleur clavier, j’avoue qu’au début je ne comprenais pas pourquoi des claviers si petits se vendaient si cher. Puis j’ai compris qu’en fait pour taper avec vitesse et précision il est préférable que le clavier soit plus petit pour éviter d’avoir à quitter la position de base.

Un autre de mes critères était que je voulais pouvoir utiliser mon clavier sur mon cellulaire advenant le cas où j’aurais à prendre des notes dans une réunion sans accès à un ordinateur portable.

Avant de trouver le clavier qui me satisferait, j’ai essayé les 8 autres modèles de claviers suivant:

  • Redragon K552-N Mechanical Gaming Keyboard 87 Keys 60%
  • Das Keyboard 4 Ultimate Soft Tactile MX Brown
  • USA Filco Ninja Majestouch-2, Tenkeyless
  • Vortexgear Race 3-75% Size TKL
  • Arteck Universal Backlit 7-Colors & Adjustable Brightness
  • Durgod Taurus K320 TKL Mechanical Gaming Keyboard
  • HELLO GANSS Mini 61 Key Mechanical PC Keyboard
  • RK ROYAL KLUDGE Sink87G Wired/Wireless TKL
  • Happy Hacking Keyboard Professional2

Happy Hacking Keyboard Professional Type-S

J’ai finalement arrêté mon choix sur le Happy Hacking Keyboard Professional Type-S. Malheureusement, les autres claviers étaient trop bruyants ou pas assez confortables. De plus seul le HHKB possède la disposition des touches que je préconise.

Happy Hacking Keyboard Professional Type-S

Comme on peut le voir ici, le HHKB possède par défaut la touche Ctrl dans la position traditionnellement occupée par Verr. Maj. Aussi on remarquera que les flèches sont relayées à des touches de deuxième couche accessible avec la clé Fn, comme plusieurs autres touches. La touche de retour arrière est plus facile d’accès en étant située dans la deuxième rangée à partir du haut, juste au dessus de la touche Entrée. Finalement les touches Meta et Alt sont inversées par rapport aux claviers de Windows, suivant plutôt la convention des ordinateurs MacOS. Quand on passe d’un ordinateur à l’autre, ce n’est pas toujours pratique de devoir réaffecter les touches au niveau logiciel. Personnellement j’ai choisi de m’investir avec un clavier que je peux traîner avec moi partout et avec lequel je suis bien à l’aise de travailler.

Il y a certainement une période d’adaptation à cette disposition quelque peu inorthodoxe, mais on s’habitue assez vite et la récompense en vaut la chandelle quand on commence à gagner en confiance et à gagner de la précision.

Note de la fin

Il ne fait pas de doute dans mon esprit que pour gagner de la vitesse et de la précision en tapant, il est primordial de suivre la théorie et de briser les mauvaises habitudes. Je vous ai parlé de trucs faciles et très accessibles pour accomplir cela avec des collants et les outils en ligne. Toutefois si vous en avez les moyens, un bon clavier peut aussi s’avérer très important.

]]>
Automatiser le déploiement de son réducteur d’URL avec Terraform https://labodeludo.dev/cloud/automatiser-le-deploiement-de-son-reducteur-durl-avec-terraform/ Fri, 25 Oct 2019 00:10:53 +0000 https://labodeludo.dev/?p=164 Logo de Terraform

Dans cette deuxième partie, nous allons automatiser le déploiement de l’infrastructure du réducteur d’URL présenté précédemment, à laquelle nous allons ajouter quelques morceaux. Je vous présenterai l’architecture et les coûts totaux et je vous guiderai dans son déploiement avec Terraform. Suite à ce laboratoire vous aurez un réducteur d’URL que vous pourrez gérer facilement avec la console de AWS.

Architecture et coûts

Comme dans le labo précédent, nous allons créer notre redirecteur d’URL à l’aide d’objets S3 attribués de la métadonnée Website Redirect Location. Nous allons aussi profiter de la facilité de gérer nos paramètres du redirecteur d’URL avec le AWS Systems Manager (SSM). Les fonctions lambda viendront appliquer les changements du magasin de paramètres dans les objets de redirection du compartiment S3 avec des évènements de CloudWatch. Les fonctions lambda seront déclenchées lorsqu’il y aura un ajout, une mise à jour ou une suppression d’un paramètre dans SSM.

Digramme d'architecture du réducteur d'URL dans AWS
Diagramme créé avec Lucidchart

Les coûts rattachés à cette architecture sont sensiblement les mêmes que ceux du premier laboratoire. Les paramètres standard sont gratuits comme nous ne faisons pas d’appel d’API. Les évènements Cloudwatch standard sont gratuits aussi. L’utilisation des fonctions lambda rattachée à ce projet rentreront sans doute dans la limite de 1M de requêtes gratuites par mois.

Voici donc la liste des coûts:

  • Route 53: l’enregistrement d’un domaine ~17$ / année pour un .ca
  • S3: stockage négligeable, coût pour 1M de GET 0,60$ / mois
  • CloudFront: bande passante négligeable, coût pour 1M de GET: 1$ / mois

Une seule limite importante se présente toutefois. Une limite de 1000 paramètres par compte par région existe. Donc si vous voulez créer plus de 1000 URLs courtes, vous devrez demander une augmentation de limite au support de AWS.

Avant de commencer

Pour compléter ce laboratoire, nous devons avoir un domaine dont les DNS sont configurés dans Route 53. Des explications à ce sujet sont fournies dans le premier billet. Vous devrez aussi installer la console en ligne de commande de AWS. Les instructions pour l’installer sont disponibles ici. Finalement vous devez installer Terraform disponible ici.

Pour que Terraform puisse déployer l’infrastructure dans votre compte AWS, vous devez configurer le client tel qu’indiqué ici avec une clé disposant minimalement des permissions décrites dans le fichier suivant.

Vous aurez aussi besoin de l’utilitaire git.

Terraform

Dans ce laboratoire, nous allons déployer notre redirecteur d’URL avec Terraform. Il s’agit là d’un outil d’orchestration d’infrastructure qui permet de décrire l’infrastructure désirée sous forme de fichiers texte en faisant abstraction de l’ordre dans lequel les éléments d’infrastructure doivent être déployés. C’est pourquoi on réfère communément à cette pratique comme faire de l’infrastructure en code (« infrastructure as code »).

Terraform permet donc de déployer l’infrastructure, mais il permet aussi de détruire de l’infrastructure. En fait, il garde une trace du déploiement qu’il a fait dans des fichiers d’état qui peuvent être directement sur la machine du DevOps ou bien dans un endroit centralisé.

Comme nous avons déjà déployé de l’infrastructure pour le réducteur d’URL dans le premier laboratoire, nous commencerons donc par importer ce que nous avons fait dans le plan Terraform. Une fois que ça sera fait, nous pourrons déployer les morceaux manquants en appliquant le plan.

Importation de l’infrastructure existante

Si vous avez commencé par faire le premier laboratoire nous commencerons par importer ce que vous venez de faire dans le plan Terraform. Sinon, je vous invite à passer tout de suite à l’étape de déploiement.

Dans le laboratoire d’avant, nous avons créé une zone hébergée dans Route 53, un compartiment de site web statique dans S3 et une distribution CloudFront. La documentation de Terraform est très bien faite, alors je vous la fournit pour ces 3 ressources:
www.terraform.io/docs/providers/aws/r/s3_bucket.html#import
www.terraform.io/docs/providers/aws/r/cloudfront_distribution.html#import
www.terraform.io/docs/providers/aws/r/route53_zone.html#import

Dans mon cas, voici les trois commandes que je vais devoir lancer:

terraform import aws_s3_bucket.short_urls_bucket lrl.io
terraform import aws_cloudfront_distribution.short_urls_cloudfront EOYGSDES71UW4
terraform import aws_route53_zone.short_url_domain Z1D633PJN98FT9

Pour appliquer ces commandes à votre cas, vous devrez substituer mon domaine court avec le vôtre. Ensuite il vous faudra trouver l’identifiant de votre distribution CloudFront et celui de votre zone hébergée de Route 53. Les commandes suivantes vous retournerons ces valeurs.

aws cloudfront list-distributions | grep Id
aws route53 list-hosted-zones-by-name --dns-name lrl.io

Il faut toutefois avoir initialisé le plan avant de pouvoir importer quoique ce soit. Je vous invite donc pour l’instant à simplement recueillir votre identifiant de distribution CloudFront et celui de votre zone hébergée de Route 53.

Déploiement

Cloner le dépôt de code

Nous commencerons d’abord par télécharger le code dans lequel se trouve définie l’infrastructure de notre projet.

git clone https://github.com/ludorl82/aws-lambda-short-url.git

Initialiser le plan

Ensuite, nous continuerons en initialisant le plan Terraform.

cd aws-lambda-short-url
terraform init

Pour des fins de simplicité, nous créons ici le plan sur notre propre station de travail, mais il est bon de savoir qu’il est recommandé de sauvegarder le plan dans un espace de stockage sur le nuage tel que dans un compartiment S3. Ceci évite de devoir tout détruire manuellement si nous perdons les fichiers d’état de Terraform et que nous voulons apporter des modifications à l’infra.

Une fois le plan initialisé nous devrions avoir reçu un message de succès comme celui-ci.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Valider le code (au besoin)

Il est possible que le code Terraform doive être mis à jour avec les nouvelles versions du logiciel. Dans le cas qui nous concerne, j’ai utilisé la version suivante de Terraform.

$ terraform -version
Terraform v0.12.12
+ provider.archive v1.3.0
+ provider.aws v2.33.0

Si vous utilisez une version plus récente et que vous avez des erreurs, vous pouvez soit réparer le code avec la commande terraform validate ou bien télécharger la même version que moi de Terraform de leur section d’archives.

Une fois que vous avez initialisé le projet avec succès, vous pouvez maintenant déployer l’infrastructure. Si vous avez déjà créé votre réducteur d’URL manuellement selon l’architecture décrite dans le billet précédent, alors je vous invite à lire la section sur l’importation de l’infrastructure existante dans le plan et de lancer vos commandes d’importation maintenant.

Définir les variables (optionnel)

Pour éviter d’être questionné sur les valeurs que vous souhaitez donner à vos variables chaque fois que vous lancez le plan, vous pouvez définir ces dernières dans un fichier de variables comme ci-bas.

echo 'region = "ca-central-1"' > short_urls.tfvars
echo 'short_url_domain = "lrl.io"' >> short_urls.tfvars
echo 'base_domain_url = "https://www.ludoviclamarre.ca"' >> short_urls.tfvars
echo 'default_url = "https://www.ludoviclamarre.ca"' >> short_urls.tfvars

Si vous avez importé des ressources dans le plan, assurez-vous de choisir la même région dans laquelle se trouvent ces ressources.

Déployer l’infrastructure

Vous êtes maintenant prêt à déployer votre redirecteur d’URL. Pour ce faire, toujours à partir du répertoire du projet avec vos fichiers Terraform lancez la commande suivante:

terraform apply -var-file="short_urls.tfvars"

Si vous n’avez pas créé de fichier de variable alors on vous demandera les valeurs suivantes:

  • Le domaine court que vous souhaitez utiliser (ex. exemple.com)
  • L’URL sur laquelle vous souhaitez rediriger la racine du domaine (ex. https://www.monsiteweb.com)
  • L’URL sur laquelle renvoyer en cas d’erreur d’adresse (ex. https://erreur.url.com/pasdurlici)
  • La région dans laquelle déployer (ex. ca-central-1)

On vous présentera alors l’ensemble des choses qui seront déployées. Vous pouvez alors faire yes.Vous devrez alors attendre plusieurs minutes le temps du déploiement. Finalement, on vous retournera un message de succès.

Outputs:

BaseDomainURL = https://www.monsiteweb.com
DefaultURL = https://erreur.url.com/pasdurlici
ParameterPrefix = exemplecom
Region = ca-central-1
ShortURLDomain = exemple.com

Gérer son réducteur d’URL

Pour cette dernière section, je vous invite à lire le README du dépot de code. C’est dans ce fichier que je tiens à jour cette information étant donné qu’il s’agit d’un projet qui pourra possiblement évoluer dans le temps.

Mot de la fin

J’espère que vous avez apprécié de découvrir Terraform avec moi. Je vous invite à m’écrire si vous avez des questions.

@++

]]>
Déployer sa table à dessiner https://labodeludo.dev/cloud/deployer-sa-table-a-dessiner/ Fri, 20 Sep 2019 23:00:26 +0000 https://labodeludo.dev/?p=244

Dans cette publication, je vous partagerai ce que j’en suis venu à préconiser comme environnement de travail comme DevOps. Ces dernières semaines, je me suis fait un malin plaisir à lire plusieurs livres sur les logiciels que nous utilisons à mon travail, mais un de ceux qui m’a procuré le plus de plaisir est un livre sur l’éditeur de texte Vim intitulé Practical Vim: Edit Text at the Speed of Thought. Dans la même collection, j’ai aussi dévoré un autre petit livre, tmux 2: Productive Mouse-Free Development. C’est surtout avec ces deux ouvrages que j’ai défini mon environnement de travail.

Développer avec Vi IMproved

Vim est un éditeur de texte à la fois très connu et méconnu. Ça faisait plusieurs années que je l’utilisais dans le cadre de mes fonctions d’architecte de systèmes lorsque je devais éditer des configurations dans la console, mais ce n’est que dans ces derniers mois que j’en ai vraiment compris l’essence et le plein potentiel. Vim permet d’éditer des fichiers de texte sans environnement graphique comme tous les éditeurs de texte en console, mais Vim est en réalité plus que cela. C’est un véritable outil de production de code.

Le premier mystère de Vim, contrairement à d’autres éditeurs de texte en console est le mode normal qui ne permet pas l’édition de texte. Ce que l’auteur Drew Neil nous explique c’est que Vim traite les fichiers de code que nous créons comme des peintures. Plutôt que de rentrer directement dans l’ajout de texte, qui est peut-être la fonction principale de quelqu’un qui écrit de longs textes, Vim dans le mode normal offre à son utilisateur une interface axée sur les actions répétitives.

Le mode normal permet en fait d’effectuer des opérations que l’on combine à des mouvements. Par exemple, on fait du copier/couper coller, avec les nombreux registres à cet effet, on crée et on utilise des macros que l’on utilise sur différents fichiers. Lorsqu’on combine une opération avec un mouvement, on peut alors répéter facilement l’action avec une touche réservée à cet effet. Si vous connaissez déjà tous les raccourcis clavier de votre système actuel, peut-être que Vim est le défi que vous cherchez pour amener votre productivité au prochain niveau.

Une des forces de Vim est la fondation de toutes les touches permettant à l’utiliser avec le clavier. On dit que Vim est un outil conçu pour ceux qui sont familiers avec la dactylographie. Bien que toutes les touches de Vim sont configurables, par défaut le logiciel est fait pour augmenter la productivité de ceux qui sont habitués à taper sans regarder le clavier suivant la technique de dactylographie enseignée sur les applications telles que Tap’Touche. Vim et tmux peuvent être utilisés avec l’aide de la souris, mais par défaut cette dernière est désactivée.

Gérer ses fenêtres avec tmux 2

Bien que Vim permette de gérer lui-même plusieurs onglets et plusieurs panneaux dans une même session d’édition, nous avons parfois besoin de retourner dans la console pour lancer nos travaux d’automatisation ou bien nous voulons temporairement suspendre le travail dans notre outil pour ouvrir un autre projet. tmux 2 permet de faire cela et bien plus. tmux qui veut dire terminal multiplexer est une solution regorgeant d’avantages pour le travail dans la console. Lorsqu’exécuté sur un environnement de serveur, il permet de faire tourner ses travaux de build et d’automatisation en arrière-plan alors que le client de console SSH peut être déconnecté du serveur. Donc, si on lance une lourde tâche et que la connexion SSH est interrompue, on peut revenir s’attacher sur notre session qui roule encore en arrière-plan. Par exemple, quand on a un laptop et qu’on veut le fermer pour se déplacer, mais qu’on a une job qui roule, c’est très pratique.

Une autre facette intéressante de tmux, qui est liée directement au but de cet article, est la capacité de configurer la disposition de notre environnement de travail ainsi que les applications qui vont être démarrées au lancement de l’environnement. Bien que tout cela se fasse avec tmux nativement, il existe un script qui permette de profiter de tmux simplement sans avoir à gérer trop de configurations. Il s’agit là de tmuxinator. Ce script rend possible la gestion de ses environnements de travail de manière déclarative dans des fichiers YAML.

Une fois dans une session tmux, il est essentiel de connaître les raccourcis clavier du logiciel. Un simple aide-mémoire pour trouver les raccourcis peut suffire, mais je vous invite à lire l’ouvrage de Brian P. Hogan tmux 2: Productive Mouse-Free Development dans lequel il explique les commandes essentielles. Le livre est très succinct et va droit au but. Il décrit tmux 2 et il parle aussi de tmuxinator.

Installer les outils

Tout d’abord, pour installer les outils sur Ubuntu 18.04 nous commencerons comme toujours par mettre à jour le système.

sudo apt update
sudo apt upgrade

Vim est normalement installé de base sur Ubuntu, mais vous pouvez utiliser cette commande pour vous en assurer.

sudo apt install vim

Ensuite pour installer tmux et tmuxinator, il vous faudra installer le gestionnaire de scripts gem qui vous permettra d’installer ce dernier. Des instructions complètes sur l’installation sont disponibles ici:
https://github.com/tmuxinator/tmuxinator#installation

Quand au binaire de tmux, il est disponible dans le gestionnaire de paquets de base de Ubuntu.

sudo apt install tmux
sudo apt install ruby-full
gem install tmuxinator
export EDITOR='vim'
source ~/.bin/tmuxinator.zsh

En plus de profiter des outils précédemment décrits, j’utilise depuis longtemps la console ZSH notamment pour la facilité qu’elle offre pour parcourir les différentes commandes que nous sommes appelées à utiliser au jour le jour. Par dessus ZSH, j’ai aussi ajouté une configuration déjà codée par Robby Russell: Oh My ZSH.

sudo apt install git-core zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Oh My ZSH offre plusieurs thèmes que je vous invite à explorer sur la page de son développeur.
https://github.com/robbyrussell/oh-my-zsh/wiki/Themes

Vim et tmux à la Ludo

Si vous êtes un DevOps, vous aurez sans doute le réflexe louable de mettre ces outils à votre main. Je vous encourage à le faire en consultant les nombreuses ressources du web, mais à titre d’exemple je vous partage ma configuration personnelle très sommaire avec les instructions qui m’intéressent le plus.

cd ~
wget https://labodeludo.dev/wp-content/uploads/2019/09/20110651/zshrc.tar
wget https://labodeludo.dev/wp-content/uploads/2019/09/20110208/tmux.tar
wget https://labodeludo.dev/wp-content/uploads/2019/09/20111717/vim.tar
for f in {zshrc.tar,tmux.tar,vim.tar}; do tar zxvf $f; done
ln -s .vim/vimrc .vimrc
rm -f {zshrc.tar,tmux.tar,vim.tar}

Maintenant que vous avez changé la console et que vous avez inclus toutes vos configurations, vous pouvez simplement sortir de votre session avec Ctrl-d et ouvrir de nouveau le terminal. Vous aurez alors une console semblable à la suivante. Il vous restera probablement à changer les polices de votre terminal. Personnellement, j’utilise wsl-terminal à la maison sous Windows 10 et iterm2 au travail sur Mac OS. Voici une référence qui m’a été utile pour avoir des polices plus agréables à lire sur Windows avec WSL et Ubuntu.
https://medium.com/@Andreas_cmj/how-to-setup-a-nice-looking-terminal-with-wsl-in-windows-10-creators-update-2b468ed7c326

Console à l’ouverture

Une fois rentré dans la console de base, on peut lancer son environnement de choix avec tmuxinator avec la commande mux ide. Pour faciliter l’utilisation de tmux et Vim, je vous recommande aussi de réassigner votre touche de verrouillage de majuscule avec Ctrl. J’ai utilisé ce guide pour le faire.
https://vim.fandom.com/wiki/Map_caps_lock_to_escape_in_Windows

Console tmux avec deux fenêtres

Pour basculer d’une fenêtre à l’autre vous pouvez faire Ctrl-a 2 et Ctrl-a 1.

Dans ma configuration j’ai activé le mode Vim pour parcourir l’historique de la sortie de la console dans tmux en mode copie. Je trouve que ça permet de profiter plus pleinement de l’apprentissage de Vim. J’ai aussi constaté que les différents raccourcis dans Vim pour parcourir le texte sont utilisés dans less. Avec cet apprentissage vous pouvez donc avancer avec la conviction que vous apprenez une méthode de travail qui est au cœur des systèmes avec lesquels vous serez appelé à travailler.

Un petit Cloud9 en passant

Finalement, si comme moi vous aimez parfois pouvoir utiliser du graphique, je vous conseille d’utiliser l’IDE de cloud de AWS. Il s’installe facilement sur un serveur Linux avec la configuration que je vous ai partagée et, en plus, vous aurez un outil graphique pour le copier coller par exemple ou si vous n’avez accès qu’à un fureteur web.

Rien ne vaut la pratique

Je vous encourage encore à vous renseigner sur l’utilisation des différents outils que je vous ai présentés. Dans ma configuration de tmux j’ai modifié la touche de commande avec Ctrl-a. Mis à part ce changement vous pourrez utiliser toutes les références du web sur le sujet. Et à vrai dire, il semble que cette modification soit plus commune que le Ctrl-b affecté par défaut.

Et pour ce qui est de Vim, c’est un sujet très vaste qui pourrait être traité beaucoup plus longtemps, mais dans la réalité c’est en l’utilisant et en pratiquant les différents raccourcis et commandes que vous viendrez à l’adopter.

]]>