Logo journal du hacker middle
  1. 1

    Parfaitement, mais du coup on parle d’un exemple précis (le tien) et pas d’un conseil général :D Mais du coup, dans ton cas, tu sembles avoir toutes les connaissances pour faire le bon choix, ce qui n’est pas le cas du public de mon billet. Merci de tes précieux retours ;)

    1. 1

      Concernant Mozjpeg, je viens de découvrir qu’il avait des options d’optimiseur basé sur SSIM, voire apparemment mieux MS-SSIM. Et, en effet, pour une même qualité, –tune-ms-ssim permet de réduire un poil plus le poids que l’optimiseur PSNR-HVS, qui est par défaut - somme toute, cela semble normal. C’est bien sûr sensible sur des images de grosses tailles.

      Il reste l’outil quetzli, de Google. Alors soit j’ai loupé quelque chose, mais impossible d’avoir une génération avec une qualité en-deça de 84, mais il est assurément lent - c’est même impressionnant les ressources qu’il s’accapare. ensuite, sur des petites images à qualité égales à ce que peut générer Mozjpeg, il fait des sorties plus légères, mais sur de grosses images, il ne fait pas mieux. Donc, pas convaincu.

      1. 1

        La même, mais pour avif, serait un plus. Gageons que cela va bientôt arriver. Il y a bien la lib libavif-gdk-pixbuf mais apparemment elle ne fait que gérer le support des fichiers avif dans GDK.

        En tout cas, merci :D

        1. 2

          Tiens, lis mes deux articles à ce propos :

          Comme tu le verras, aucun module, juste de la configuration et franchement pas compliquée.

          1. 1

            En fait, dans le contexte de cartographie, il me faut générer des images de qualité sans trop de pertes, d’autant que l’image “cible” minifiée est ensuite incluse dans un document ODF pour diffusion en PDF. Et pas question d’avoir une pixellisation conséquente. (Je rêve du jour où je pourrais faire cela avec le format SVG, vectoriel, mais c’est dans ce cas, très lourd - OpenStreetMap permet une sortie SVG ; du SVG dans de l’ODF me semble adéquat – ok, lors de la transformation en PDF, on y perd certainement.) :p

            Concernant cavif, je plussoie ton choix, et je le trouve excellent aussi. Mais par “principe de fainéantise IT”, convert que j’utilise aussi pour le webp, dans des contextes de web, vu que je génère ces minifiées par script shell, j’ai fini par m’en servir aussi pour l’avif. Officiellement, Image Magick ne le supportera correctement que dans les futurs version à partir de la 7.x. Dans les faits, c’est fonctionnel déjà ; il fait le taf, gagne en poids, rapport à cavif, et avifenc.

            1. 1

              Bonjour salim.

              Tu omets effectivement pas mal de passages de l’article juste pour critiquer.

              Avant l’exemple :

              printf("%d", (5,3) );
              

              Il est également précisé :

              L’instruction suivante, bien qu’inutile est tout à fait valide :

              En fait, j’ai gardé cette ligne car pour quelqu’un qui vient d’un langage de haut niveau, elle afficherait un tuple ! Elle est ici pour introduire une syntaxe pas un exemple d’utilisation réel.

              Le if est effectivement un peu maladroit mais entre temps, il y a un exemple très courant d’utilisation dans une boucle for que tu as habilement ignoré. De même pour la boucle while suivante.

              Je ne commenterais pas l’utilisation de la ternaire.

              En programmation, les tableaux sont conventionnellement indexés en utilisant la syntaxe tab[i]. L’équivalence est admise car elle a un sens intrinsèque dans la conception du langage C. L’identificateur de tableau tab est converti en un pointeur constant sur le premier élément du tableau : on accède à une structure de donnée.

              Je cite l’article.

              Cet opérateur n’a pas grand-chose à voir avec les tableaux en fait.

              Son nom est subscript operator et s’applique à des pointeurs (car il ne peut s’appliquer à des tableaux directement à cause de la conversion vers un pointeur). C’est un problème lié au langage mais voilà le fait est là. Et sa définition est (*((E1)+(E2))) avec ce que cela implique, je pense que l’article est claire à ce niveau là.

              Pour moi, ce code est totalement incompréhensible (ou vraiment incroyable, avec mes rudiments du C).

              Oui c’est assez incroyable. L’instruction en elle même est peu utilise mais l’obscurcissement final est tel que je me devait de le notifier au lecteur.

              Au cours de ma lecture du livre « Le guide complet du langage C » de Claude Delannoy, je ne me souviens pas de ce genre de notation (?).

              Ce n’est pas tout à fait une référence … Sa première édition était très souvent imprécise (à la limite du faux) sur certains points. Je ne l’avais pas apprécié du tout. Encore une fois, le but de l’article est de présenter des syntaxes absentes des cours conventionnels.

              Mon niveau n’est pas suffisant pour me faire une idée de ce qui est valide ou pas dans le reste de l’article. Je reste sceptique.

              Je t’invite à vérifier par toi même. Comme tu as vérifié pour l’équivalence qui te semblait fautive mais qui en fait est tout à fait exacte.

              Le but de l’article est présenter des syntaxes du langage méconnues. Forcément, ça fait un peu bizarre, incongrue mais je pense avoir bien vérifié tous les points avant de l’avoir publié et que mis à part les exemples qui sont parfois tordus et pas très utilise (mais là encore, c’est pour présenter une syntaxe !). Je pense qu’il va être difficile de s’attaquer au fondement de l’article même.

              1. 1

                Hello PengouinPdt, merci pour le complément d’info.

                C’est toujours délicat lorsqu’il s’agit de conseiller un outil pour des néophytes. De mon côté c’est cavif qui fait le taff, mais la CLI est souvent impensable sans accompagnement préalable. Pour ce qui est d’avoir mozjpeg dans Gimp, c’est prévu et ça devrait remplacer l’usage de libjpeg, de manière invisible pour l’utilisateurice lambda, ce qui me semble être une bonne chose.

                Quant à ton point sur la qualité de l’image, certes une compression destructrice est, destructrice, après libre à chacun·e de se faire son idée. Je trouve que pour un affichage sur un écran d’ordinateur, sans zoomer dessus, le jpeg standard 75 est largement suffisant dans beaucoup de cas. Bien évidemment si l’objectif est de faire une galerie photo, ça me semble être un mauvais choix.

                Merci pour ton avis :D

                1. 1

                  C’est un module en plus pour NGINX ?

                  1. 2

                    Merci pour cet article où je découvre que Gimp peut sauvegarder aussi dans les formats que sont webp et avif.

                    Je me sers de Gimp pour avoir des images de cartographies. J’ai cherché à savoir si créer une image au format JPG, en qualité 80 % permettait d’avoir un poids convenable sans trop de dégâts. J’ai fait des tests avec une génération de la même image en Q=100 et utilisé, pour comparaison, d’autres outils de “destruction”.

                    Personnellement, je trouve qu’une qualité en deçà de 80, on pert sérieusement et si l’image est “complexe” (dans le type d’informations qu’elle renferme, beaucoup de couleurs, de détails, etc.), on se rend compte assez vite de la dégradation.

                    Pendant un temps, j’utilisais l’outil en ligne Optimizilla, et donc je m’en suis servi à ce moment là pour comparer aussi avec “ses” sorties. Il ne s’en sort pas “vainqueur”, loin s’en faut…

                    Mozjpeg est l’outil qui permet vraiment de garder de la qualité, tout en ayant une Q=80, et un poids + léger.

                    Idem pour une démarche concernant les formats webp et avif. C’est l’outil “convert” d’Image magick qui s’en sort le mieux. (il existe cavif - qui est pertinent -, avifenc, la lib webp, qui a des sous lib spécifiques à JPG/PNG d’un côté et GIF de l’autre)

                    Bref, ce n’est pas parce qu’un outil est “couteau suisse”, qu’il s’en sort le mieux. :p

                    Merci pour l’info. Voilà.

                    1. 1

                      Globalement je suis d’accord avec toi, même si c’est faisable. D’ailleurs je l’ai vu chez un client, ils faisaient du ansible en mode pull, leurs vms étaient poussées directement avec ansible d’installés, et toute les heures elles allaient chercher leurs propres configuration.

                      1. 3

                        Je pense surtout que la demande de base est complétement infondée (j’ai le mot idiot en tête). Après, si on te paye pour faire le taff, tant mieux pour toi Pourquoi je trouve ça infondé ? On te demande de remplacer dans une recette de cuisine, une carotte par un chou. Spoiler : t’auras pas le même gout

                        • Puppet fait de la conformation : tu lui décris CE QUE TU VEUX sur le serveur.
                        • Ansible fait de l’orchestration : tu lui donnes des opérations à effectuer.

                        Typiquement, puppet va te conformer le fichier A. Quelqu’un te modifie (erreur ou intention, légtitiment ou pas) le fichier A… ll va perdre sa modification au prochain run de l’agent. Question : tu vas vraiment lancé toutes les 30 minutes les playbooks ansible sur l’ensemble de ton parc ? Perso, je l’ai jamais vu. Résultat : Fichier A sera modifié et jamais remis à son état initial.

                        Vala pour ma remarque ( et je redis : aucune critique sur toi, si le client paye… tant pis pour son choix, tant mieux pour ton compte bancaire)

                        1. 2

                          Personnellement, j’ai paramétré Nginx, pour qu’il diffuse si possible mes images Avif, Webp, JPG|PNG. C’est simple à gérer et je contente tout le monde, dont ma BP : p

                          J’ai écrit en son temps des articles utiles sur mon espace de documentation, publié ici, mais ça, c’est une autre histoire. ;)

                          1. 1

                            Merci pour les conseils ;)

                            1. 1

                              Même si ce n’est qu’une fois, les utilisateurs n’ont pas à la subir ! À toi de réorganiser ton code pour proposer l’information autrement, par exemple, un lien vers une page explicative, lien qui apparaît en fin de page, ou sur un menu contextuel placé à D ou à G, dans une balise aside, etc. Avoir du soutien plus actif? ce n’est pas à moi qu’il faut le demander, vu que je m’en fiche perso, même pour mes propres articles - un lecteur les lit tant mieux, un autre non; ce n’est pas grave, loin s’en faut.

                                1. 2

                                  Tiens, j’ai sorti mon article sur le sujet: https://trolliet.info/blog/038-tailleimage/

                                  1. 1

                                    Eh bien, c’est même pas si vrai que ça en plus je trouve…

                                    • Si tu veux changer de mdp sur un site, tu va devoir incrémenter un “compteur” (-c 2, -c 3, …) lors de la génération du mdp.
                                    • Si un site n’accepte pas le “format” des mdp générés par Spectre, il faut lui en spécifier un nouveau en argument (-t …).

                                    Donc ça fait des paramètres dont il faut se souvenir pour pouvoir retrouver ses mdp, il faut les stocker quelquepart (sinon ça devient ingérable), donc pas si “stateless” que ça

                                    1. 1

                                      Un des avantages est quand même le fait que tu ne peux pas perdre de base de données de mot de passe. Pas de fichiers à backup.

                                      Mais tous les désavantages ne font pas le poids à mon goût…

                                      1. 1

                                        Je pense justement que c’est une fausse bonne sécurité, le fait de générer les mots de passes comme le fait Spectre. En fait après réflexion, je n’y vois même aucun avantage, que des inconvénients (ceux que j’ai cité, mais aussi ceux présentés sur Hacker News).

                                        C’est toujours intéressant de faire une analyse de risque au plus proche du réel pour voir les différences.

                                        Par exemple, tu dis préférer générer tes mdp que les stocker en local. Quel est le risque d’un vault local ? Qu’un malware sur ton PC récupère tes mdp. Mais alors ce malware est déjà installé sur ton PC, avec un keylogger pour récupérer le master password de ton vault local (pour récupérer les mdp qui sont dedans). Quel avantage apporte Spectre ? Le keylogger arrivera aussi à enregistrer le master password de Spectre et donc dériver l’ensemble de tes mdp. (il pourra aussi récupérer ton presse-papier, ton clavier (keylogger), ton historique bash, … tout, quelque-soit le gestionnaire). Donc, aucun avantage à Spectre.

                                        Par contre des inconvénients, on peut en lister beaucoup…

                                        Le sujet est super intéressant, ça me donne des bonnes idées pour d’autres projets, mais jamais je ne m’autoriserais à utiliser ce gestionnaire :-/

                                        1. 1

                                          Même si cela paraît être plus sécurisé qu’un gestionnaire de mot de passe, cela n’est pas le cas.

                                          Un gestionnaire de mot de passe implique de respect deux critères de sécurité :

                                          • ce que je possède avec le coffre fort numérique
                                          • ce que je sais avec le mot de passe du coffre fort

                                          La fuite d’un des deux éléments ne met pas en péril la confidentialité des données contrairement à l’usage du protocole spectre ou la possession du mot de passe suffit à mettre en péril les secrets.

                                          De plus, la compromission d’un mot de passe généré par spectre peut mettre en péril l’entièreté des mots de passe chiffrée avec la clé maitresse car la personne peut bruteforcer la clé maitresse en jouant le protocole spectre en offline. Ce qui lui permet de débloquer les mots de passe de tous les autres logins chiffrés avec elle.