Tag Archives: optimisation

Telegram, autocollants animés Lottie, Python et Glaxnimate

→ English version here

Sommaire

* Introduction
* Un bon flux de travail
* Publication sur le web (SVG)
* Bot Telegram

Introduction


Je suis un grand fan de l’interface de l’application de chat Telegram. Si le serveur est à sources fermées, l’application bureau et Android sont à sources ouvertes, l’interface est bien pensée, intuitive, relativement légère et plein de fonctionnalités intéressantes par rapport aux autres applications de ce type. Il serait d’ailleurs sans doute intéressant de la patcher pour une compatibilité Jabber/XMPP. Il a été le premier à ma connaissance, à utiliser Lottie, dès juillet 2019 (et l’API pour bot qui va avec) un format d’animation vectoriel dont je rêvait depuis des décennies, devenu un standard de fait et ouvert. Les animations de cette page ont été crées avec Glaxnimate, un outil pour réaliser des animations au format Lottie, que l’on peut également exporter au format SVG animation. Les auteurs de Lottie fournissent des JavaScript pour le web, la bibliothèque libre, rlottie de Samsung (en C++, avec version WASM) permet de les jouer et comporte des adaptations pour différents langage de programmation. Qt intègre sa lecture par défaut et il existe différents outils pour en créer.


Le logiciel libre multiplate-forme d’animation Glaxnimate permet d’en réaliser avec une interface graphique d’un type assez classique pour les logiciels d’animation. Son auteur à également fait une bibliothèque python, python-lottie (AUR : python-lottie-git, pip : Lottie), permettant d’en générer algorithmiquement et les 2 permettent de convertir différents formats (export SVG animé, Lottie JSON, page HTML toute prête, Telegram, mpeg4, PNG, wepb, gif, et je dois en oublier), et en entrée de vectoriser des gif animés, etc… Le logiciel d’animation vectoriel 2D Synfig à également un exportateur, ainsi que Blender3D (voir aussi Blender3D.fr en français), un plugin/greffon (distribué avec python lottie) fait également par l’auteur de Glaxnimate. Les choix ne manquent donc pas pour en créer.


Glaxnimate permet de faire facilement des animations au format Lottie, dont le format .TGS, une version aux spécifications volontairement plus limitées et compressée en gzip de Telegram. Le format de ce dernier est plus compact mais comportes quelques contraintes, cela n’a pas empêché d’avoir quelques merveilles depuis plus de 2 ans :
* format 512×512 pixels
* 3 secondes
* 64 Kio par autocollant animé
* Le tout peut être mis dans un paquet d’animations (sticker pack) regroupant différentes expressions (comme les émotiĉones/emoji).

Pourquoi 512×512 pixels alors que c’est un format vectoriel ? L’application cliente Telegram rendra dans cette dimension l’animation et la compressera en local, pendant la première boucle, en animation WebP de 512×512 pixels pour la conservation en cache. Cette dimension est déjà grande pour les certains écrans mobiles. Cela permet d’économiser la bande passante (animation vectorielle compacte transférée), d’avoir la haute qualité du vectoriel (généralement calculé par GPU, des accélérateurs SVG étaient déjà présent sur les téléphones Symbian des années 2000), et d’avoir des boucles d’animation qui ne prennent pas trop de CPU/GPU après la première boucle, ni trop de mémoire (compression WebP). WeChat/微信 a choisit des GIF animés il y a une bonne décennie, les GIF sont probablement convertit en MPEG aujourd’hui ? La messagerie instantanée Discord, populaire en Extrême-Occident, utilise aussi le format Lottie depuis juillet 2021.


Pour référence, l’animation du haut fait :
* 1109 octets (1,1 Ko) en TGS (format Telegram compressé binaire)
* 4682 octets (4,5 Ko) en json uglifié (plus d’indentations ni re retours chariots)
* 508054 octets (500 Ko) en WebP
* 9710 octets (9,6 Ko) en SVG animé (il y avait un path inutile en trop, je sais pas pourquoi).
* 1804 octets (1,7 Ko) en SVGZ animé (SVG compressé via gzip), il peut être plus intéressant de laisser le serveur compresser via brotli (Nginx, Apache) ou de pré-compresser (.br) Il est bien supporté par les navigateurs
* 6114 octets (6,1 Ko) en SVG, sortie optimisée Inkscape (basée sur Scour), on peut encore gagner, aujourd’hui si l’option de précision du nombre de chiffres après la virgule est inférieure à 3, elle reste à 3. Dans les parties animation non gérées on se retrouve à six 0 (1.000000 ou 0.000000). On peut encore l’optimiser à la main en attendant de l’intégrer (voir les sed plus bas), soit :
* 5827 octets (5,8 Ko) en SVG, retravaillé un peu à la main.
* 5559 octets (5,5 Ko) en supprimant des groupes intermédiaires inutiles (attention à ne pas tout casser, tester groupe par groupe) et en remplaçant 1.0 par 1


Un des principaux problèmes à la sortie optimisée de SVG depuis Glaxnimate est que Lottie est basés sur une forte utilisation des groupes, tandis-que SVG permet d’effectuer de nombreuses opérations équivalentes dur les objets eux-mêmes. Ainsi les matrices de transformation sont situées dans des groupes contenant les objets. Voir l’affichage XML d’Inkscape ci-contre. Cela demande donc aujourd’hui du travail manuel sur les fichiers. Il doit être possible d’automatiser ça.

Il semble que SVGO ai d’autres méthodes encore plus efficaces, mais basé sur du node.js, mais il casse complétement les animations. Je n’ai pas trop confiance, en raison de beaucoup de mauvaises habitudes autour de Node. Et le plugin Inkscape, inkscape-svgo ne déroge pas à ses nouvelles habitudes, si l’on essaie de le compiler avec le Makefile inclus, pas de test d’installation existante, récupération forcée de node 11 (x86_64, perd le multi-architecture), et recompilation de toutes les dépendances. On se retrouve une fois de plus avec une extension énorme de dizaines de méga-octets (75 Mo, contre 145 Mo pour Inkscape et 5 Mo pour la bibliothèque SVGO elle même), alors que ça devrait faire que quelques Ko grand maximum.

Continue reading

Nettoyer les taupes Android avec « /system/app mover »

L’application /system/app mover permet de déplacer les applications sous Android entre les applications système et les application utilisateur. Il faut cependant l’utiliser avec précaution et savoir ce que l’on fait, afin de ne pas risquer de bloquer les fonctionnalités de base de son téléphone. Le téléphone doit être administrable/déprisonné (rooted/jailbreaked).

M.A.J. : Voir aussi suppression depuis des APK en utilisant adb depuis un ordinateur (pas besoin de rooter le téléphone).

Quelle est la différence entre ces deux modes ?

Google Voice en application utilisateur, prête à être supprimée

Google Voice en application utilisateur, prête à être supprimée

Les applications utilisateurs peuvent être supprimées, pas les applications système. Au passage, il est toujours possible de bloquer leur démarrage à l’aide de l’application autoStart.

Il faut donc, pour pouvoir supprimer ces applications, les déplacer avec /system/app mover :
* À chaque application, la confirmation sera demandée. Accepter
* À chaque application, le redémarrage sera demandé pour que ce soit appliquer. Il vaut mieux en grouper quelques unes avant de redémarrer.

Une fois redémarré. Les applications seront disponible dans :
* Paramètres =>
:* Général =>
::* Gestionnaire d’applications =>
:::* Onglet Téléchargé (normalement affiché par défaut).

Il n’y a plus qu’a appuyer sur l’item de l’application, puis sur le bouton Désinstaller (en haut à droite à priori).
Continue reading

Créer des partitions disque alignées pour améliorer les performances, et réduit l’usure des SSD

Aligner les partitions d’un disque sur ses cylindres, c’est, sachant que les données les plus fréquentes tiennent sur un cylindre :

* Éviter de lire deux cylindres lorsqu’un seul est utile => gain de temps à la lecture, réduction de l’utilisation inutile des caches, gain de bande passante.
* Éviter d’écrire deux cylindres lorsqu’un seul est suffisant => gain de temps, réduction de l’utilisation inutile des caches, gain de bande passante et moins d’usure
* Pour la raison précédente, permet de prolonger grandement la vie d’un SSD (le nombre de cycle est limité sur un SLC, encore plus sur un MLC, et beaucoup plus sur un TLC, mais le prix de ce dernier est le plus bas au Go).

Un moyen simple de savoir si vos partitions sont alignés sur les cylindres

Lancer cfdisk sur le disque qui doit être optimisé (remplacez /dev/sda, par le disque à optimiser : /dev/sdb, /dev/sdc…) :

cfdisk /dev/sda

Si vous voyez une astérisque (ou étoile) tout à fait à droite, la partition n’est pas alignée sur les cylindres. Dans mon cas, ce SSD est à refaire complètement (sauf sda3) :

                           cfdisk (util-linux 2.20.1)

                           Unité disque : /dev/sda
                   Taille : 240057409536 octets,  240.0 Go
          Têtes : 255   Secteurs par piste : 63  Cylindres : 29185

    Nom         Ind.       Partition  S. Fic.          [Étiq.]        Taille (Mo
)------------------------------------------------------------------------------
                            Pri/Log   Espace libre                         1,05*
    sda1        Amorçage    Primaire  ext4                             51158,98*
                            Pri/Log   Espace libre                         1,22*
    sda2        Amorçage    Primaire  ext4                             53686,01*
                            Pri/Log   Espace libre                         0,41*
    sda3                    Primaire  ext4                            135207,16
                            Pri/Log   Espace libre                         2,62*





     [   Aide   ]  [ Nouvelle ]  [ Afficher ]  [ Quitter  ]  [ Unités  ]
     [ Écrire  ]

           Créer une nouvelle partition à partir de l'espace libre

Comment crée une seule partition, utilisant tout le disque, et bien alignée

Grâce à des anciens mode de fonctionnement de fdisk. J’ai trouvé l’astuce sur une doc d’ubuntu.

Remplacer /dev/sdX par le disque sur lequel vous désirez créer la partition alignée :

fdisk /dev/sdX
c
u
p
n
[touche entrée]
[touche entrée]
[touche entrée]
[touche entrée]
w

Et voilà, vous verrez le beau résultat sur cfdisk

Pour créer plusieurs partitions alignées : Choisissez les bonnes options où j'ai mis quatre fois [touche entrée] et recommencer n à chaque partition.

Cubieboard2, ordinateur compact, pas cher et très faible consommation

Cubieboard2, ordinateur compact, pas cher et très faible consommation

Ceci est un article sur la présentation, dans un prochain article sur la Cubieboard2, que je vais tenter de publier cette semaine, je parlerais de mes premiers essais.

La Cubieboard2, dans sa boite officielle ouverte et le cable (USB=>série) de contrôle à distance de la console (NE PAS BRANCHER LE CABLE ROUGE).
Cubieboard2 avec cable serie
Continue reading