Asciinema: O elenco contém um comando de saída indesejado

Criado em 24 fev. 2018  ·  3Comentários  ·  Fonte: asciinema/asciinema

Olá,

Eu me perguntei por que um exit é impresso após pressionar CTRL + D para terminar o gesso usando rec .

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

Um elenco gerado por asciinema 1.xx parece bom - eu gostaria de me livrar dele novamente.

Antes

Before

Depois de

After

Comentários muito úteis

Ao lançar o 2.0, eu estava ciente dessa regressão, mas não queria bloquear o lançamento por causa disso. Mas agora é um bom momento para discutir isso.

Esta é sua impressão de shell exit quando você pressiona ctrl + d btw :)

A versão anterior do asciinema mantinha a gravação inteira na memória antes de salvá-la para o arquivo, e era fácil detectar a "saída" no último quadro gravado e jogá-la fora (porque asciinema sabia que era o último quadro). Com a nova versão, veio um novo formato de arquivo, que é mais em tempo real, amigável para streaming e grava em disco em tempo real. Por isso, quando a sessão de gravação termina, a "saída" já foi gravada em um arquivo. E não podemos simplesmente jogar fora qualquer "saída" impressa em um terminal, podemos apenas remover a final, porque você poderia ter sessões bash aninhadas e esta "saída" pode ser uma informação útil para quem está observando que você saiu do shell interno .

Existem várias soluções possíveis para isso:

  1. ao gravar, mantenha o último quadro na memória e grave-o no disco quando o novo chegar, tornando-o um buffer de 1 quadro - a desvantagem aqui é que pode causar perda de dados no travamento / fechamento do terminal (apenas 1 quadro),
  2. após fechar o arquivo no final da sessão, poderíamos reabri-lo e filtrar a "saída" final - precisaria ser feito em um modo de streaming (para não carregar tudo no mem), de forma semelhante à solução 1. ,
  3. filtrar no tempo de reprodução em vez de tempo de rec - isso exigiria alguma forma de leitura antecipada para asciinema play .... no terminal, mas pode ser feito facilmente no web player, que armazena toda a gravação no mem (que é um tópico, de preferência, gostaria de não exigir gravação inteira em navegadores da web mem)

Em geral, prefiro não modificar os dados de origem durante a gravação (alterar o texto, alterar o tempo, remover quadros). Remover a "saída" final é remover dados do fluxo, no entanto, não é algo que o usuário realmente deseja, então, posso me livrar disso.

A Solução 2. parece a mais simples para mim no momento.

Todos 3 comentários

Ao lançar o 2.0, eu estava ciente dessa regressão, mas não queria bloquear o lançamento por causa disso. Mas agora é um bom momento para discutir isso.

Esta é sua impressão de shell exit quando você pressiona ctrl + d btw :)

A versão anterior do asciinema mantinha a gravação inteira na memória antes de salvá-la para o arquivo, e era fácil detectar a "saída" no último quadro gravado e jogá-la fora (porque asciinema sabia que era o último quadro). Com a nova versão, veio um novo formato de arquivo, que é mais em tempo real, amigável para streaming e grava em disco em tempo real. Por isso, quando a sessão de gravação termina, a "saída" já foi gravada em um arquivo. E não podemos simplesmente jogar fora qualquer "saída" impressa em um terminal, podemos apenas remover a final, porque você poderia ter sessões bash aninhadas e esta "saída" pode ser uma informação útil para quem está observando que você saiu do shell interno .

Existem várias soluções possíveis para isso:

  1. ao gravar, mantenha o último quadro na memória e grave-o no disco quando o novo chegar, tornando-o um buffer de 1 quadro - a desvantagem aqui é que pode causar perda de dados no travamento / fechamento do terminal (apenas 1 quadro),
  2. após fechar o arquivo no final da sessão, poderíamos reabri-lo e filtrar a "saída" final - precisaria ser feito em um modo de streaming (para não carregar tudo no mem), de forma semelhante à solução 1. ,
  3. filtrar no tempo de reprodução em vez de tempo de rec - isso exigiria alguma forma de leitura antecipada para asciinema play .... no terminal, mas pode ser feito facilmente no web player, que armazena toda a gravação no mem (que é um tópico, de preferência, gostaria de não exigir gravação inteira em navegadores da web mem)

Em geral, prefiro não modificar os dados de origem durante a gravação (alterar o texto, alterar o tempo, remover quadros). Remover a "saída" final é remover dados do fluxo, no entanto, não é algo que o usuário realmente deseja, então, posso me livrar disso.

A Solução 2. parece a mais simples para mim no momento.

Obrigado pela sua explicação.

Eu vi casts onde as pessoas estão usando exit sobre CTRL+D e isso está causando duas saídas sendo impressas. No entanto, espero que seja um bug válido e que alguém o conserte em breve.

Alguma atualização sobre isso? Estou enfrentando o mesmo problema.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

sickill picture sickill  ·  50Comentários

karelbilek picture karelbilek  ·  9Comentários

bashfulrobot picture bashfulrobot  ·  11Comentários

maphew picture maphew  ·  12Comentários

ethanboxx picture ethanboxx  ·  6Comentários