Catégorie « Quelques trucs sur… »

Quelques trucs sur Firefox #3

Ouvrir les nouveaux onglets en dernier

Encore un truc que je faisais via Tab Mix Plus jusque là et qu’il faut maintenant aller faire à la main dans about:config

Donc pour ouvrir les onglets en fin de liste plutôt qu’à côté de l’onglet actif, chercher browser.tabs.insertRelatedAfterCurrent et positionner à false.

Voir l’historique des derniers onglets fermés

Autre point auparavant traité par Tab Mix Plus : rouvrir un des derniers onglets fermés (et pas juste le dernier).

Je n’ai rien trouvé de natif pour ça, j’ai donc dû me rabattre sur une énième extension : Close Tab History Button qui fait le boulot avec un bouton affichant les dix derniers onglets fermés et permettant de les rouvrir en un clic, le tout avec un jeu de permissions demandées minimal (l’accès aux onglets et à l’historique des onglets fermés).

Désactiver l’« auto-fill » sur la barre d’adresse

Encore un truc apparu avec une des dernières version : l’« auto-fill » (que je ne sais pas trop comment traduire en français…) dans la barre d’adresses. Pas juste une suggestion, non, une auto-complétion qui s’applique automatiquement sans poser de question lorsqu’on appuie sur “entrée”.

Dans le genre qui quand je tape “about:conf” rajoute tout seul le “ig” à la fin et jusque là on se dit “pourquoi pas ?”. Sauf que pour une raison quelconque il se dit qu’il faut aussi ajouter un slash qui fait que ça ne marche pas… et voilà pourquoi pas justement : à essayer de deviner puis imposer le choix ben quand c’est faux ça fait royalement chier !

Donc pour désactiver cette connerie, comme d’habitude, c’est dans about:config, rechercher le paramètre browser.urlbar.autoFill et le passer à false.


Quelques trucs sur Firefox #2

Les différents écrans about:...

Firefox dispose d’un certain nombre d’écrans accessibles via une URL du type about:.... Certaines sont accessibles via les menus comme about:preferences (gestion des préférences) ou about:addons (gestion des extensions et thèmes), d’autres non.

Pour accéder à la liste de ces écrans, on peut passer par about:about. On y trouve notamment :

Et bien d’autres plus ou moins intéressants.

Utilisation de profils multiples

Il est possible de créer plusieurs profils dans Firefox, que ce soit pour les utiliser sur la même instance ou sur des instances différentes. La documentation fournit pas mal de renseignements à ce sujet.

Personnellement j’ai utilisé des profils multiples pour faire cohabiter une version ESR52 et une version à jour de Firefox sur la même machine pour pouvoir tenter une transition en douceur vers la dernière version (transition réalisée à regret vue la perte de fonctionnalité mais vu que l’ESR 52 n’est plus maintenue…).

Pour cela j’ai suivi en gros les indications proposées ici. Il y a juste un point que j’ai dû trouver tout seul : ils recommande d’ajouter l’option -no-remote aux différents raccourcis mais en pratique j’ai dû l’enlever sur celui qui correspond au navigateur par défaut sinon à chaque ouverture d’un lien depuis ailleurs (par exemple depuis Thunderbird) me redemandait de choisir le profil. Là j’ai une situation où tant qu’une fenêtre est ouverte sur le navigateur par défaut les liens s’ouvrent bien dedans sans demander de profil.

Fixer le niveau de zoom par défaut des PDF

Ah ! Il est possible, dans Firefox, de dire à pdf.js d'afficher par défaut les PDFs avec le niveau de zoom que l'on veut (pleine largeur dans mon cas).

Pour ce faire, aller dans about:config, chercher « pdfjs.defaultZoomValue » et mettre la valeur « page-width »

#UserFriendly (#OuPas)

— John Shaft (ジョン・シャフト) (@shaft@mamot.fr) le 16 juillet 2018 à 14h31

Tout est dans le pouet, rien à ajouter ^^


Quelques trucs sur Jekyll #2

Lisibilité des erreurs

Par défaut, le serveur de développement de Jekyll remonte des erreurs assez sommaires en ne précisant que le template concerné. C’est inutilisable quand on débugue un template (même si un numéro de ligne ne serait pas du luxe) mais quand l’erreur vient d’un plugin c’est plutôt limité.

Pour un affichage un peu plus détaillé avec une trace d’exécution permettant de déterminer quelle ligne de quel plugin est en cause, il faut utiliser l’option --trace ou -t.

bundle exec jekyll serve --drafts -t

Fichiers sitemap.xml et robots.txt

Il existe un plugin pour générer le fichier sitemap.xml, par contre je n’ai rien trouvé pour gérer son intégration au fichier robots.txt. On peut certes faire un fichier robots.txt à la main mais le lien est censé être absolu, donc ce n’est pas super propre de le mettre en dur.

Finalement je m’en suis sorti en ajoutant un fichier robots.html avec le contenu suivant :

---
layout: null
permalink: robots.txt
---

Sitemap: {{ site.url }}/sitemap.xml

La directive permalink: robots.txt permet de forcer le bon nom de fichier, layout: null dit que le contenu ne doit pas du tout être habillé et comme on est dans une page normale on a accès aux variables globales, notamment site.url.

Éviter la profusion d’espaces dans les pages

Le moteur de template de Jekyll fonctionne en ajoutant des pseudo balises dans le code HTML notamment pour indiquer les structures de contrôles, boucles, affectations de variables, etc.

Pour que le code reste lisible on fait des retours à la ligne entre ces différentes balises et on indente. Ceci aboutit à de très nombreuses lignes uniquement peuplées d’espaces (ceux de l’indentation).

Exemple :

<h2>Catégories</h2>
{% assign groupedCategories = site.categories | group_categories %}
{% for group in groupedCategories %}
  <h3>{{ group[0] }}</h3>
  <ul>
    {% assign categories = group[1] | sort_by_keys %}
    {% for category in categories %}
      <li><a href="/categories/{{ category[0]|slugify:'latin' }}/">{{ category[0] }}</a> ({{ category[1].size }})</li>
    {% endfor %}
  </ul>
{% endfor %}

Il est possible d’y remédier en utilisant un caractère - dans les balises. Chaque - suivant une ouverture de balise ({% devient {%-) indique que les espaces précédents doivent être ignorés et sur les fermetures ( (%} devient -%})) que les espaces suivants doivent être ignorés.

L’exemple précédent devient alors :

<h2>Catégories</h2>
{%- assign groupedCategories = site.categories | group_categories -%}
{% for group in groupedCategories %}
  <h3>{{ group[0] }}</h3>
  <ul>
    {%- assign categories = group[1] | sort_by_keys -%}
    {% for category in categories %}
      <li><a href="/categories/{{ category[0]|slugify:'latin' }}/">{{ category[0] }}</a> ({{ category[1].size }})</li>
    {%- endfor %}
  </ul>
{% endfor %}

C’est la même syntaxe que l’on retrouve dans d’autres moteurs de templates comme Twig pour PHP (la plupart des syntaxes sont assez proches en fait entre ces deux moteurs).

Remarque : cette syntaxe semble ne pas bien fonctionner avec le tag endraw, en effet j’ai des erreurs dès que je place un tiret un en début de ce tag (alors qu’à la fin et sur le tag raw ça marche)…


Quelques trucs sur UNIX/Linux #5

Générer un mot de passe aléatoire

Pour générer une chaîne aléatoire, pouvant par exemple servir de mot de passe, dans un terminal entrer la ligne suivante :

< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c 10; echo ""

Il est possible de modifier les caractères autorisés via l’option -dc de urandom et le nombre de caractères via l’option -c de head.

Le echo "" sert juste à forcer un retour à la ligne.

Correction d’une commande

Dans le terminal, il est possible de la ré-exécuter la dernière commande en remplaçant la première occurrence d’une chaîne par une autre.

Exemple :

# Affiche 'toto'
echo 'toto'
# Affiche 'tato'
^to^ta^

Ceci peut être utile pour corriger une faute de frappe. Attention, seule la première occurrence est remplacée et la nouvelle commande est exécutée dans la foulée sans demande de confirmation.

Revenir en arrière dans les répertoires

La commande cd permet de revenir au précédent répertoire où l’on était via cd -.

Attention, cela fait bien retourner au dernier dossier où l’on était et pas remonter d’un cran dans l’arborescence (qui se fait via cd ..).


Quelques trucs sur UNIX/Linux #4

Crontab et 49-3

Crontab : changer l’adresse e-mail de destination

Il est possible de spécifier l’utilisateur destinataire des mails de la crontab en définissant la variable MAILTO en début de fichier.

Remplacement de l’adresse par défaut :

MAILTO=webmaster@mon-site.fake

Désactivation de l’envoir de mail :

MAILTO=""

(source)

Crontab : redirection de la sortie dans un fichier

Par défaut cron envoie par mail l’ensemble des sorties (standard et erreur) des tâches exécutées. Il peut être intéressant d’écrire tout ça dans des fichiers de logs à la place.

Pour ce faire il suffit d’utiliser les mécanismes de redirections de sorties habituellement disponibles dans les terminaux en terminant la ligne par > /path/to/log/file 2>&1. La première partie (> /path/to/log/file) déclenche la redirection de la sortie standard, la seconde partie (2>&1) effectue la redirection de la sortie d’erreur dans la sortie standard.

Exemples :

# Redirection de la sortie standard dans le fichier /path/cron.log et envoi par e-mail de la sortie d'erreur
* * * * * /path/to/script > /path/cron.log

# Redirection des sorties standard et erreur dans le fichier /path/cron.log
* * * * * /path/to/script > /path/cron.log 2>&1

(source)

Rejouer la dernière commande en ajoutant sudo

Il m’arrive de temps en temps de lancer une commande nécessitant les droits root en oubliant de la précéder par sudo. Il est possible de rappeler la dernière commande l’historique mais la syntaxe est un poil longue et compliquée.

La solution que j’ai retenue est donc d’ajouter un alias dans mon fichier .bash_aliases :

# 49.3
alias 49.3='sudo "$BASH" -c "$(history -p !!)"'

Le nom 49.3 est court et facile à retenir puisqu’il fait directement référence à l’article 49 alinéa 3 de la constitution française dont le principe est somme toute assez proche ^^