Quelques astuces diverses, dixième

closeCet article a été publié il y a 6 ans 4 mois 4 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Il serait criminel de terminer l’année sans vous filer une dernière tournée d’astuces à coller sous le sapin numérique que vous avez certainement quelque part 🙂 Comme toujours, à garder dans un coin de votre mémoire ou de votre wiki personnel (ou un simple marque-pages Firefox, ça fonctionne aussi mais c’est moins facile à chercher).

Convertir une vidéo en série d’images

Un petit défi trouvé je ne sais plus où : retrouver une image précise, dans une vidéo où celles-ci défilent très vite. Plutôt que de m’emmerder à lire au ralenti, à repasser 50 fois en espérant voir quelque chose, il « suffit » de convertir et de générer un fichier image par image de vidéo. Pour ça, il faut extraire le nombre de fps de la vidéo en question, et réutiliser ce paramètre pour qu’ffmpeg fasse le boulot :

On a ensuite autant de fichiers images qu’il y a d’images dans la vidéo, et celle qu’on recherche va forcément apparaître.

L’optimisation d’image rapide pour les pressés

Pour économiser quelques précieux mégaoctets quand on travaille sur un site qui manipule beaucoup d’images, sauf à vouloir faire le traitement au moment de l’upload, on peut le faire après coup :

Les deux logiciels sont à installer et sont disponibles dans la plupart des distributions. Petit test rapide sur le dossier wordpress d’un client, passé de 416 à 322Mo. Après, il faut regarder la qualité finale des fichiers pour les jpg qui seront recompressés…

Yaourt : utiliser la puissance du multicœurs pour la compression

J’ai déjà parlé d’AUR et de la puissance de ce système de gestions de paquets (et de ses risques aussi). En voulant réinstaller MARP, j’ai découvert, au delà de la taille aberrante liée à Electron, que la compression du paquet construit se limitait à un seul cœur, et que c’était en particulier la compression qui était en cause. Pour utiliser tous les cœurs disponibles, c’est dans le fichier /etc/yaourtrc qu’il faut se rendre :

A la prochaine installation/mise à jour de paquet, ça devrait être bien plus rapide. Sauf quand votre connexion est merdique…

Asciiart

Je cherche à créer un message sympa pour la connexion SSH à mes serveurs, mais et pour ça, rien de tel qu’un peu d’ascii art. Pour afficher du texte décoré, il y a figlet qui permet de faire quelques trucs sympa.

Vous pouvez vous intéresser à la commande figlist pour avoir une idée des « polices » possibles et faire vos propres tests 🙂

PS : figlet est à installer auparavant évidemment.

REGEX : filtrer only alphanum,_ and –

Celle-là, je la dois en grande partie à Djerfy. Sur le coup, on a pas trouvé mieux, mais ça fonctionne. Je cherchais à filtrer dans un script bash le nom de l’utilisateur saisi pour m’assurer qu’il respecte le format que je voulais, à savoir alphanumérique, underscore et tiret. On a abouti à cette routine :

Si une brutasse a une meilleure méthode, en sachant que sur la partie sed si on essaie de le faire en une seule fois ça merde, je veux bien un petit partage en commentaire 🙂

Docker : changer la plage d’IP du bridge par défaut

J’ai rencontré un souci après l’installation de Docker sur ma VM Linux au boulot, je n’accédais plus au dépot SVN privé sur lequel nous publions notamment nos clés SSH à déployer sur les milliers de serveurs Linux que nous avons sous notre responsabilité. Il s’avère que c’est l’adresse par défaut du bridge docker0 et surtout la route associée qui n’était pas la bonne. Pour corriger ça, j’ai créé le fichier /etc/docker/daemon.json avec le contenu suivant :

On redémarre ensuite le démon Docker, le bridge a changé d’adresse et de route, joie dans la demeure, les serveurs auront ma nouvelle clé dans la journée 🙂

Remplir un fichier known_hosts pour son service Gogs

Si vous avez lu mon article sur la mise sous Docker de mon service gogs, il ne vous aura pas échappé que le hook du miroir GitHub a un peu été contrarié par le fait que la première fois l’utilisateur git n’a pas enregistré l’identité des serveurs SSH distants. Si j’ai copié un fichier existant, il est également possible, depuis l’hôte Docker, d’utiliser ssh-keyscan :

À répéter deux/trois fois pour choper les trois serveurs. Et c’est valable pour tous les services sur lesquels votre forge doit se connecter.

Gagner quelques secondes en modifiant légèrement votre Dockerfile

Ça révolutionnera pas votre utilisation de Docker, mais en limitant le nombre de commandes RUN, vous limitez la génération d’images intermédiaires et donc gagnez un peu de temps, toujours appréciable si vous enchaînez les « compilations ». Voici ce que je faisais au départ :

On peut tout regrouper en une seule « étape » :

Ça ne change absolument rien à la taille potentiellement délirante de votre image évidemment. Pour ça, je vais essayer d’utiliser j’ai utilisé le module Docker, mais la documentation est affreuse (comme trop souvent).

La météo dans son terminal

Très rapide, en couleur en plus, Et si vous avez besoin d’un peu de précision (genre ça vous répond le mauvais Pays), vous pouvez ajouter un ~ devant le nom de la ville pour qu’il tente une localisation :

Cartographie dans un terminal

Oui, encore un autre service qu’on s’attendait pas à trouver, et pourtant, c’est un truc de dingue :

Ensuite, on utilise a/z pour zoomer/dézoomer, et les flèches pour se déplacer. Bluffant.

Tribute to Star Wars

Fin d’année oblige, on termine avec quelques petites bricoles en bash qui demandent un écran d’une certaine taille en hauteur, et dans le premier cas l’installation d’ack et de lolcat (dispos dans vos dépôts préférés au moins dans Debian depuis Wheezy). On a donc la première commande :

Les développeurs doivent s’ennuyer parfois pour cacher ça dans leur code 🙂

Et le bouquet final, la plus délire de ce que j’ai pu voir je pense (après le générique via les reverse IP), raison pour laquelle je vous la donne en dernier, l’épisode 4 en ascii art à portée de telnet :

C’est un boulot de malade !

On se donne rendez-vous l’année prochaine 😉

2 Commentaires
Le plus ancien
Le plus récent
Commentaires en ligne
Afficher tous les commentaires
Breizh
Breizh
22/12/2017 21:38

Pourquoi utiliser [ "x" != "x${variable}" ] quand [ -n "$variable" ] fait exactement la même chose ?

Et clear ; while : ; do ack --bar | lolcat --force ; sleep 0.05 ; printf "\e[0;0H" ; done ne fonctionne pas chez moi (à moins que je n’ai pas compris), en plus de faire bipper mon terminal en boucle.

Kelevra
Kelevra
23/12/2017 17:07

il n’y a pas d’erreur dans le sed si on finit par le tiret: echo ${NEWUSER} | sed "s/[a-zA-Z0-9_-]//g"
On peut même utiliser la classe de caractères [:alnum:] pour remplacer a-zA-Z0-9, ce qui donne
echo ${NEWUSER} | sed "s/[[:alnum:]_-]//g"
(cf. https://www.gnu.org/software/sed/manual/html_node/Character-Classes-and-Bracket-Expressions.html )