Suport technique et veille technologique
Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.
C’est alors la barrière de la prise en main qui fait peur, et pourtant...
Les logiciels libres
L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.
Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.
Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.
Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.
- Juin 2021 -
WebP et AVIF sont deux formats d’image pour le web. Ils visent à
produire des fichiers plus petits que les formats JPEG et PNG. Ils
supportent tous deux la compression avec ou sans perte, ainsi que la
transparence alpha. WebP a été développé par Google et est un
dérivé du format vidéo VP8. Il est supporté par la plupart des
navigateurs. AVIF utilise le format
vidéo AV1, plus récent, pour obtenir de meilleurs résultats. Il
est supporté par les navigateurs basés sur Chromium et a une prise en charge expérimentale pour
Firefox.
Votre navigateur sait décoder les formats WebP et AVIF.
Votre navigateur ne sait décoder aucun de ces formats.
Votre navigateur ne sait décoder que le format WebP.
Votre navigateur ne sait décoder que le format AVIF.
Sans JavaScript, je ne peux pas déterminer les formats reconnus par votre navigateur.
Conversion et optimisation des images
Pour ce blog, j’utilise les commandes suivantes pour convertir et
optimiser les images JPEG et PNG. Sautez à la section
suivante si vous n’êtes intéressé que
par la configuration de Nginx.
Images JPEG
Les images JPEG sont converties au format WebP avec cwebp.
find media/images -type f -name '*.jpg' -print0 \
| xargs -0n1 -P$(nproc) -i \
cwebp -q 84 -af '{}' -o '{}'.webp
Elles sont converties au format AVIF avec avifenc
de libavif:
find media/images -type f -name '*.jpg' -print0 \
| xargs -0n1 -P$(nproc) -i \
avifenc --codec aom --yuv 420 --min 20 --max 25 '{}' '{}'.avif
Ensuite, elles sont optimisées avec jpegoptim compilé avec
l’encodeur amélioré de Mozilla, via
Nix. C’est une des raisons pour lesquelles j’aime Nix.
jpegoptim=$(nix-build --no-out-link \
-E 'with (import {}); jpegoptim.override { libjpeg = mozjpeg; }')
find media/images -type f -name '*.jpg' -print0 \
| sort -z
| xargs -0n10 -P$(nproc) \
${jpegoptim}/bin/jpegoptim --max=84 --all-progressive --strip-all
Images PNG
Les images PNG sont sous-échantillonnées vers une palette RGBA 8
bits avec pngquant. Cette conversion réduit considérablement la
taille des fichiers tout en étant pratiquement invisible.
find media/images -type f -name '*.png' -print0 \
| sort -z
| xargs -0n10 -P$(nproc) \
pngquant --skip-if-larger --strip \
--quiet --ext .png --force
Ensuite, elles sont converties au format WebP avec cwebp
dans le
mode sans perte.
find media/images -type f -name '*.png' -print0 \
| xargs -0n1 -P$(nproc) -i \
cwebp -z 8 '{}' -o '{}'.webp
Aucune conversion n’est effectuée vers AVIF : la compression sans
perte n’est pas aussi efficace que pngquant
et la compression avec
perte n’est que marginalement meilleure par rapport à ce que j’obtiens
avec WebP.
Garder uniquement les fichiers les plus petits
Je ne garde les images WebP et AVIF que si elles sont au moins 10 %
plus petites que le format original : le décodage est généralement
plus rapide pour les JPEG et PNG et les images JPEG peuvent être
décodées progressivement.
for f in media/images/**/*.{webp,avif}; do
orig=$(stat --format %s ${f%.*})
new=$(stat --format %s $f)
(( orig*0.90 > new )) || rm $f
done
Je ne garde les images au format AVIF que lorsqu’elles sont plus
petites que le format WebP.
for f in media/images/**/*.avif; do
[[ -f ${f%.*}.webp ]] || continue
orig=$(stat --format %s ${f%.*}.webp)
new=$(stat --format %s $f)
(( $orig > $new )) || rm $f
done
Nous pouvons comparer combien d’images sont conservées après
conversion en WebP ou AVIF :
printf " %10s %10s %10s\n" Original WebP AVIF
for format in png jpg; do
printf " ${format:u} %10s %10s %10s\n" \
$(find media/images -name "*.$format" | wc -l) \
$(find media/images -name "*.$format.webp" | wc -l) \
$(find media/images -name "*.$format.avif" | wc -l)
done
AVIF se comporte mieux que MozJPEG pour la plupart des fichiers JPEG
alors que WebP ne fait mieux que pour un fichier sur deux :
Original WebP AVIF
PNG 64 47 0
JPG 83 40 74
Informations complémentaires
Je n’ai pas détaillé mes choix pour les paramètres de qualité et il
n’y a pas beaucoup de science là-dedans. Voici deux ressources qui
donnent plus de détails sur AVIF :
Servir WebP & AVIF avec Nginx
Pour servir les images WebP et AVIF, il existe deux possibilités :
- utiliser pour laisser le navigateur choisir le format
qu’il prend en charge ;
- utiliser la négociation de contenu pour
laisser le serveur envoyer le format le mieux supporté.
J’utilise la deuxième approche. Elle repose sur l’inspection de
l’en-tête HTTP Accept
dans la requête. Pour Chrome, elle ressemble à
ceci :
Accept: image/avif,image/webp,image/apng,image/*,*/*;q=0.8
Je configure Nginx pour qu’il serve l’image AVIF, puis l’image WebP et
se rabatte sur l’image JPEG/PNG originale en fonction de ce que le
navigateur annonce :
http {
map $http_accept $webp_suffix {
default "";
"~image/webp" ".webp";
}
map $http_accept $avif_suffix {
default "";
"~image/avif" ".avif";
}
}
server {
# […]
location ~ ^/images/.*\.(png|jpe?g)$ {
add_header Vary Accept;
try_files $uri$avif_suffix$webp_suffix $uri$avif_suffix $uri$webp_suffix $uri =404;
}
}
Par exemple, supposons que le navigateur demande
/images/ont-box-orange@2x.jpg
. S’il prend en charge WebP mais pas
AVIF, $webp_suffix
est défini à .webp
tandis que $avif_suffix
est la chaîne vide. Le serveur essaie de servir le premier fichier
existant dans cette liste :
/images/ont-box-orange@2x.jpg.webp
/images/ont-box-orange@2x.jpg
/images/ont-box-orange@2x.jpg.webp
/images/ont-box-orange@2x.jpg
Si le navigateur prend en charge les deux formats d’image, Nginx
parcourt la liste suivante :
/images/ont-box-orange@2x.jpg.webp.avif
(il n’existe jamais)
/images/ont-box-orange@2x.jpg.avif
/images/ont-box-orange@2x.jpg.webp
/images/ont-box-orange@2x.jpg
Eugene Lazutkin explique plus en détails comment cela
fonctionne. Je n’ai présenté
ici qu’une variation prenant en charge à la fois WebP et AVIF.
Planète des utilisateurs Debian - https://planet.debian.org/fr/
Goodbye Debian GNU/kFreeBSD
- Juillet 2023 -
Over the years, the Debian GNU/kFreeBSD port has gone through various phases. After many years of development, it was released as technology (...)
Akvorado : collecteur et visualisateur de flux réseau
- Décembre 2022 -
Au début de cette année, nous avons publié Akvorado, un collecteur, enrichisseur et visualisateur de flux. Il reçoit les flux réseau de vos routeurs (...)
FRnOG #36 : Akvorado
- Septembre 2022 -
Voici les diapositives que j’ai présentées pour le FRnOG #36 en Septembre 2022 à propos d’Akvorado, un outil de collecte et de visualisation des flux (...)
James Webb Space Telescope launched!
- Décembre 2021 -
The long awaited James Webb Space Telescope has finally been successfully launched today. It is a Xmas gift for many people who have been waiting (...)
Session graphique sans authentification avec startx et systemd
- Décembre 2021 -
Si votre station de travail utilise un chiffrement complet du disque, vous pouvez souhaiter exécuter directement votre environnement de bureau (...)