Asciinema: Cast enthält unerwünschten Exit-Befehl

Erstellt am 24. Feb. 2018  ·  3Kommentare  ·  Quelle: asciinema/asciinema

Hallo,

Ich habe mich gefragt, warum ein exit ausgegeben wird, nachdem CTRL + D gedrückt wurde, um die Besetzung mit rec zu beenden.

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

Ein von asciinema 1.xx generierter Cast sieht gut aus - ich würde ihn gerne wieder loswerden.

Vor

Before

Nach

After

Hilfreichster Kommentar

Bei der Veröffentlichung von 2.0 war mir dieser Rückschritt bewusst, wollte aber die Veröffentlichung deswegen nicht blockieren. Aber jetzt ist ein guter Zeitpunkt, um darüber zu diskutieren.

Dies ist Ihre Shell, die exit druckt, wenn Sie Strg+D drücken :)

Die vorherige Version von Asciinema behielt die gesamte Aufnahme im Speicher, bevor sie in einer Datei gespeichert wurde, und es war einfach, "Exit" im letzten aufgenommenen Frame zu erkennen und zu verwerfen (weil Asciinema wusste, dass es der letzte Frame war). Mit der neuen Version kam ein neues Dateiformat, das Echtzeit- und Streaming-freundlicher ist und in Echtzeit auf die Festplatte schreibt. Aus diesem Grund wurde nach Beendigung der Aufnahmesitzung der "Exit" bereits in eine Datei geschrieben. Und wir können nicht einfach jeden "Exit" wegwerfen, der auf einem Terminal gedruckt wird, wir können nur den letzten entfernen, weil Sie verschachtelte Bash-Sitzungen haben könnten und dieser "Exit" kann eine nützliche Information für jemanden sein, der beobachtet, dass Sie die innere Shell verlassen haben .

Hierfür gibt es mehrere mögliche Lösungen:

  1. Behalten Sie bei der Aufnahme den neuesten Frame im Speicher und schreiben Sie ihn auf die Festplatte, wenn der neue kommt, wodurch er zu einem Puffer mit der Größe von 1 Frame wird - der Nachteil hier kann zu Datenverlust beim Absturz / Schließen des Terminals führen (allerdings nur 1 Frame),
  2. Nachdem wir die Datei am Ende der Sitzung geschlossen haben, können wir sie erneut öffnen und den endgültigen "Exit" herausfiltern - müsste im Streaming-Modus erfolgen (um das Ganze nicht in Mem zu laden), ähnlich wie bei Lösung 1. ,
  3. filtern Sie es zur Wiedergabezeit anstelle der Aufnahmezeit heraus - dies würde eine Art Vorauslesen für asciinema play .... im Terminal erfordern, kann aber sehr einfach im Webplayer durchgeführt werden, der die gesamte Aufnahme im Mem puffert (das ist ein separates Thema, idealerweise möchte ich nicht die gesamte Aufnahme im Webbrowser-Mem benötigen)

Im Allgemeinen ziehe ich es vor, die Quelldaten bei der Aufnahme nicht zu ändern (Text ändern, Timing ändern, Frames entfernen). Das Entfernen des letzten "Exit" bedeutet, dass Daten aus dem Stream entfernt werden, aber der Benutzer möchte dies nicht wirklich, daher ist es in Ordnung, wenn ich es loswird.

Lösung 2. erscheint mir im Moment am einfachsten.

Alle 3 Kommentare

Bei der Veröffentlichung von 2.0 war mir dieser Rückschritt bewusst, wollte aber die Veröffentlichung deswegen nicht blockieren. Aber jetzt ist ein guter Zeitpunkt, um darüber zu diskutieren.

Dies ist Ihre Shell, die exit druckt, wenn Sie Strg+D drücken :)

Die vorherige Version von Asciinema behielt die gesamte Aufnahme im Speicher, bevor sie in einer Datei gespeichert wurde, und es war einfach, "Exit" im letzten aufgenommenen Frame zu erkennen und zu verwerfen (weil Asciinema wusste, dass es der letzte Frame war). Mit der neuen Version kam ein neues Dateiformat, das Echtzeit- und Streaming-freundlicher ist und in Echtzeit auf die Festplatte schreibt. Aus diesem Grund wurde nach Beendigung der Aufnahmesitzung der "Exit" bereits in eine Datei geschrieben. Und wir können nicht einfach jeden "Exit" wegwerfen, der auf einem Terminal gedruckt wird, wir können nur den letzten entfernen, weil Sie verschachtelte Bash-Sitzungen haben könnten und dieser "Exit" kann eine nützliche Information für jemanden sein, der beobachtet, dass Sie die innere Shell verlassen haben .

Hierfür gibt es mehrere mögliche Lösungen:

  1. Behalten Sie bei der Aufnahme den neuesten Frame im Speicher und schreiben Sie ihn auf die Festplatte, wenn der neue kommt, wodurch er zu einem Puffer mit der Größe von 1 Frame wird - der Nachteil hier kann zu Datenverlust beim Absturz / Schließen des Terminals führen (allerdings nur 1 Frame),
  2. Nachdem wir die Datei am Ende der Sitzung geschlossen haben, können wir sie erneut öffnen und den endgültigen "Exit" herausfiltern - müsste im Streaming-Modus erfolgen (um das Ganze nicht in Mem zu laden), ähnlich wie bei Lösung 1. ,
  3. filtern Sie es zur Wiedergabezeit anstelle der Aufnahmezeit heraus - dies würde eine Art Vorauslesen für asciinema play .... im Terminal erfordern, kann aber sehr einfach im Webplayer durchgeführt werden, der die gesamte Aufnahme im Mem puffert (das ist ein separates Thema, idealerweise möchte ich nicht die gesamte Aufnahme im Webbrowser-Mem benötigen)

Im Allgemeinen ziehe ich es vor, die Quelldaten bei der Aufnahme nicht zu ändern (Text ändern, Timing ändern, Frames entfernen). Das Entfernen des letzten "Exit" bedeutet, dass Daten aus dem Stream entfernt werden, aber der Benutzer möchte dies nicht wirklich, daher ist es in Ordnung, wenn ich es loswird.

Lösung 2. erscheint mir im Moment am einfachsten.

Danke für Ihre Erklärung.

Ich habe Casts gesehen, bei denen Leute exit über CTRL+D und dies führt dazu, dass zwei Ausgänge gedruckt werden. Ich hoffe jedoch, dass dies ein gültiger Fehler ist und dass ihn bald jemand beheben wird.

Irgendwelche Updates dazu? Ich stehe vor dem gleichen Problem.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

Bux42 picture Bux42  ·  9Kommentare

dlintw picture dlintw  ·  11Kommentare

SR-Lut3t1um picture SR-Lut3t1um  ·  3Kommentare

Edo78 picture Edo78  ·  5Kommentare

yuvalif picture yuvalif  ·  10Kommentare