Asciinema: Cast contient une commande de sortie indésirable

Créé le 24 févr. 2018  ·  3Commentaires  ·  Source: asciinema/asciinema

Bonjour,

Je me suis demandé pourquoi un exit est imprimé après avoir appuyé sur CTRL + D pour terminer le casting en utilisant rec .

redaxmedia<strong i="10">@redaxmedia</strong>:~$ exit
asciinema: recording finished
asciinema: press <enter> to upload to asciinema.org, <ctrl-c> to save locally

Un casting généré par asciinema 1.xx a l'air bien - j'aimerais m'en débarrasser à nouveau.

Avant

Before

Après

After

Commentaire le plus utile

Lors de la sortie de la version 2.0, j'étais au courant de cette régression, mais je ne voulais pas bloquer la sortie à cause de cela. Mais c'est le bon moment pour en discuter.

C'est votre shell qui imprime exit lorsque vous appuyez sur ctrl+d d'ailleurs :)

La version précédente d'asciinema gardait tout l'enregistrement en mémoire avant de l'enregistrer dans un fichier, et il était facile de détecter la "sortie" dans la dernière image enregistrée et de le jeter (car asciinema savait que c'était la dernière image). Avec la nouvelle version est venu un nouveau format de fichier, qui est plus en temps réel, plus convivial pour le streaming, et il écrit sur le disque en temps réel. Pour cette raison, lorsque la session d'enregistrement se termine, la "sortie" a déjà été écrite dans un fichier. Et nous ne pouvons pas simplement jeter toute "sortie" imprimée sur un terminal, nous ne pouvons supprimer que la dernière, car vous pourriez avoir des sessions bash imbriquées et cette "sortie" peut être une information utile pour quelqu'un qui regarde que vous avez quitté le shell interne .

Il existe plusieurs solutions possibles pour cela :

  1. lors de l'enregistrement, conservez la dernière image en mémoire et écrivez-la sur le disque lorsque la nouvelle arrive, ce qui en fait une mémoire tampon de 1 image - l'inconvénient ici pourrait entraîner une perte de données lors de la fermeture du crash/terminal (seulement 1 image cependant),
  2. après avoir fermé le fichier à la fin de la session, nous pourrions le rouvrir et filtrer la "sortie" finale - cela devrait être fait en mode streaming (pour ne pas tout charger dans la mémoire), de la même manière que la solution 1. ,
  3. le filtrer au moment de la lecture au lieu du moment de la rec - cela nécessiterait une certaine forme de lecture anticipée pour asciinema play .... dans le terminal, mais peut être très facilement fait dans le lecteur Web, qui met en mémoire tampon tout l'enregistrement dans la mémoire (c'est un sujet, idéalement, j'aimerais ne pas avoir besoin d'une rec entière dans les navigateurs Web)

En général, je préfère ne pas modifier les données sources lors de l'enregistrement (changer le texte, changer la synchronisation, supprimer les images). La suppression de la "sortie" finale supprime les données du flux, mais ce n'est pas quelque chose que l'utilisateur veut vraiment, donc c'est bien pour moi de m'en débarrasser.

La solution 2. me semble la plus simple pour le moment.

Tous les 3 commentaires

Lors de la sortie de la version 2.0, j'étais au courant de cette régression, mais je ne voulais pas bloquer la sortie à cause de cela. Mais c'est le bon moment pour en discuter.

C'est votre shell qui imprime exit lorsque vous appuyez sur ctrl+d d'ailleurs :)

La version précédente d'asciinema gardait tout l'enregistrement en mémoire avant de l'enregistrer dans un fichier, et il était facile de détecter la "sortie" dans la dernière image enregistrée et de le jeter (car asciinema savait que c'était la dernière image). Avec la nouvelle version est venu un nouveau format de fichier, qui est plus en temps réel, plus convivial pour le streaming, et il écrit sur le disque en temps réel. Pour cette raison, lorsque la session d'enregistrement se termine, la "sortie" a déjà été écrite dans un fichier. Et nous ne pouvons pas simplement jeter toute "sortie" imprimée sur un terminal, nous ne pouvons supprimer que la dernière, car vous pourriez avoir des sessions bash imbriquées et cette "sortie" peut être une information utile pour quelqu'un qui regarde que vous avez quitté le shell interne .

Il existe plusieurs solutions possibles pour cela :

  1. lors de l'enregistrement, conservez la dernière image en mémoire et écrivez-la sur le disque lorsque la nouvelle arrive, ce qui en fait une mémoire tampon de 1 image - l'inconvénient ici pourrait entraîner une perte de données lors de la fermeture du crash/terminal (seulement 1 image cependant),
  2. après avoir fermé le fichier à la fin de la session, nous pourrions le rouvrir et filtrer la "sortie" finale - cela devrait être fait en mode streaming (pour ne pas tout charger dans la mémoire), de la même manière que la solution 1. ,
  3. le filtrer au moment de la lecture au lieu du moment de la rec - cela nécessiterait une certaine forme de lecture anticipée pour asciinema play .... dans le terminal, mais peut être très facilement fait dans le lecteur Web, qui met en mémoire tampon tout l'enregistrement dans la mémoire (c'est un sujet, idéalement, j'aimerais ne pas avoir besoin d'une rec entière dans les navigateurs Web)

En général, je préfère ne pas modifier les données sources lors de l'enregistrement (changer le texte, changer la synchronisation, supprimer les images). La suppression de la "sortie" finale supprime les données du flux, mais ce n'est pas quelque chose que l'utilisateur veut vraiment, donc c'est bien pour moi de m'en débarrasser.

La solution 2. me semble la plus simple pour le moment.

Merci pour votre explication.

J'ai vu des distributions où les gens utilisaient exit sur CTRL+D et cela provoque l'impression de deux sorties. Cependant, j'espère que c'est un bogue valide et que quelqu'un va le corriger bientôt.

Des mises à jour à ce sujet ? Je suis confronté au même problème.

Cette page vous a été utile?
0 / 5 - 0 notes