domingo, 24 de octubre de 2021

¿Cómo grabo la terminal ANSI en Ubuntu?

Juan Perón explica la necesidad del proselitismo y enseña cómo utilizar el grabador de terminal y plataforma de difusión ASCIInema en Ubuntu.

¡Trabajadores!

Nuestro Movimiento no puede quedarse inexpresivo, y eso lo entendemos todos. Desde aquel diáfano 17 de octubre, supimos que todo movimiento popular ha de contar no solo con banderas, divisas y sanas consignas, sino liturgia y la parafarnalia que puede proveer un bombo y una manguera.

El sentido no es simplemente hacer bochinche, sino propalar en todo el alcance territorial que ocupan nuestros cuerpos, el sentir de nuestras ideas.

En un sistema informático también ha de hacerse lo mismo. Muchas veces me han preguntado cómo podremos hacer ello utilizando la terminal, cuando esta puede parecer - a primera vista - un elemento poco expresivo y para nada gráfico.

Indudablemente que quien así piense no está más que confundido por un mensaje tan contumaz como el Libro Azul de ese tondo de Braden. A ese opusimos el Libro Celeste y Blanco de Perón, y en los sistemas GNU con Linux bien podremos emplear un grabador de terminal, como ASCIInema.


Este nos permite contar con un grabador que capture lo que reproduce nuestra terminal, a la vez que nos provee una plataforma en internet capaz de reproducirla y compartirla, localizada en https://asciinema.org. Bien podremos darnos de alta allí únicamente requiriendo un correo electrónico, lo que avala gran pseudoanonimato.

Contaremos con varias maneras de instalar el grabador ASCIInema en nuestro sistema. La manera más simple consiste en instalarlo a través del repositorio de Ubuntu. Para ello abrimos una terminal con Ctrl+Alt+t e ingresamos el siguiente comando de organización:

sudo apt install asciinema

Opcionalmente, podríamos querer instalarlo a través del repositorio de terceros (PPA) de ASCIInema. Este cuenta con la última versión empaquetada, y podríamos realizarlo con:

sudo apt-add-repository ppa:zanchey/asciinema
sudo apt-get update
sudo apt-get install asciinema

Finalmente, si somos programadores bien podríamos querer instarlo ejecutando su código fuente escrito en Python 3.

cd ~
git clone https://github.com/asciinema/asciinema.git
mv ~/asciinema/ ~/.asciinema/
cd ~/.asciinema/
python3 -m asciinema --version

Pues bien señores, como todo programa Unix que se precie, ASCIInema consta de de múltiples opciones par sus comandos. Si en la terminal ingresamos asciinema a secas, recibiremos las opciones posibles para el mismo.

Las opciones del comando son:

Para grabar el contenido de la terminal y subirlo automáticamente a la plataforma asciinema.org:

asciinema rec

La grabación comenzará inmediatamente. Una vez concluida la sesión del intérprete de comandos, podremos detener la grabación de la salida de terminal medioante Ctrl+d.

Si deseamos grabar la salida de la terminal en un fichero local podremos usar:

asciinema rec archivo.cast

También podríamos guardar la salida de terminal y una vez concluida su grabación, subirla a asciinema.org, especificándole un título. Esto se hará con:

asciinema rec -t "Sesión de terminal Peronista"

Si iniciamos una subida de una captura de terminal a la plataforma y no hemos registrado el dispositivo, se nos proveerá un URL que podremos introducir en un navegador. Esto nos permitirá o bien asociar la grabación a un usuario previamente existente (si lo tuviésemos), o bien a un correo electrónico que deseemos asignar al usuario de asciinema e iniciar el proceso de registro. En caso de ser la primerqa vez haremos esto, pues consiste en aceptar el enlace que nos llegue por correo electrónico, lo cual adosará un token a nuestro usuario y subirá la captura de terminal asociándolo al mismo. Podríamos asociar o revocar tokens (útil en caso de tener varios dispositivos).

Una opción muy interesante que tiene ASCIInema es la de limitar el tiempo inactivo de la terminal, evitándolo si supera un período determinado. Por ejemplo, para limitar el tiempo máximo inactivo a 1,5 segundos, podríamos utilizar

asciinema rec -i 1.5 archivo.cast

Reproducción de la captura de terminal

Indidablemente contaremos con las opciones de reproducción de lo capturado por asciinema. Por ejemplo, podríamos reproducir el fichero archivo.cast con:

asciinema play archivo.cast

En tanto, si quisiéramos reproducir un fichero almacenado en la plataforma asciinema.org, podríamos ingresar:

asciinema play https://asciinema.org/a/difqlgx86ym6emrmd8u62yqu8

También es posible presentar concatenado en pantalla todo el archivo.cast, podríamos hacerlo con:

asciinema cat archivo.cast

Siempre podrá detener la reproducción con Ctrl+z.

Compartir un enlace

Podremos obtener un enlace para compartir para la tarnsmisión ASCII específica haciendo clic en el enlace "Share" en la página de la transmisión ASCII..

Cualquiera de las opciones listadas en la sección “Personalizando la reproducción” puede agregarse a la URL de la transmsión ASCII como los parámetros de la misma. Por ejemplo:

https://asciinema.org/a/14?t=25&speed=2&theme=solarized-dark

De esta manera, al visitar este enlace se comenzará la reproducción a los 25 segundos y se reproducirá al doble de velocidad, utilizando el tema de terminal Solarized Dark.

Pegar enlace de imagen

En los lugares donde no se permiten los guiones, podremos pegar en enlace como si se tratara de un enlace de imágen. Por ejemplo, en un fichero README.

Podremos incluso incrustar fracciones de un asciicast específico presionando el botón "Share" en la página de ASCIIcast.

Esto es como aparecerán para asciicast 14:

HTML:

<a href="https://asciinema.org/a/14"><img src="https://asciinema.org/a/14.png" width="836"/></a>

Markdown:

[![asciicast](https://asciinema.org/a/14.png)](https://asciinema.org/a/14)

A su vez, podremos pasar opciones extra (listadas en la sección "personalizar el reproductor") a la URL enlazada como parámetros agregados. Por ejemplo, para iniciar la reproducción automáticamente al abrir el enlace de asciicast, hemos de agregando la cadena ?autoplay=1 a la URL dentro del atributo href indicado, de esta forma:

<a href="https://asciinema.org/a/14?autoplay=1"><img src="https://asciinema.org/a/14.png" width="836"/></a>

Incrustar el Enlace de Reproductor

Si deseamos incrustar el widget del reproductor en nuestra propia página o en un sitio que permite el etiquetado de guiones, podremos hacer clic en el enlace "Embbed" de la página del asciicast.

Se nos presentará un código con una apariencia similar a la siguiente:
<script src="https://asciinema.org/a/14.js" id="asciicast-14" async></script>

Como vemos, el widget del reproductor Java (.js) aparecerá justo en el lugar donde se pegó el guión. Por ejemplo, consideremos el siguiente código markup:

<p>Este es un texto.</p>
<script src="https://asciinema.org/a/14.js" id="asciicast-14" async></script>
<p>Este es otro texto.</p>

En este caso, el reproductor aparecerá entre los dos párrafos de texto, tal como un elemento div con clase “asciicast”.

El guión adosado podrá recibir varias personalizaciones. Cualquiera de estas personalizaciones se puede agregar simplemente incorporándolas como atributo data-option-name=”valor a la etiqueta del guion.

Un ejemplo suele aclararlo como decía Napoleón. Por ejemplo, para hacer que un reproductor comience automáticamente su reproducción al cargarse, y a la vez utilizar una fuente de gran tamaño, hemos de usar un guión similar al siguiente:

<script src="https://asciinema.org/a/14.js" id="asciicast-14" async data-autoplay="true" data-size="big"></script>

Personalizar el reproductor

El reproductor soporta varias opciones que controlar su comportamiento y apariencia. Estas pueden agregarse a la URL (?speed=2&theme=tango) o configurados como atributos de datos en el guion adosado (data-speed="2" data-theme="tango").

Tiempo

La opción ?t nos permite especificar el tiempo en el cual dará inicio la reproducción. Indudablemente, por defecto será t=0 (o sea, se arrancará desde el comienzo).

Formatos aceptados: ss, mm:ss, hh:mm:ss.

Han de saber que cuando se especifica t, se asume un autoplay=1. Para impedir que el reproductor arranque automáticamente al configurar un valor t es que debe establecerse explícitamente un autoplay=0.

Autoreproducir

La opción ?autoplay en tanto controla si el reproductor debe arrancar automáticamente cuando se carga el widget. Los valores aceptados son:

  • 0 / false - No inicia la autorreproducción (por defecto)
  • 1 / true - Inicia la autorreproducción automáticamente.

Precargar

La opción ?preload controla si el reproductor debe comenzar a realizar la captura y grabación inmediatamente.

  • 0 / false - No precarga la grabación, y espera que el usuario haga algo para iniciarla.
  • 1 / true -Precarga la grabación.

Por defecto se usa 1 para las URLs de asciinema.org y 0 en los guiones incrustados.

Bucle

La opción ?loop permite hacer un bucle de reproducción para repetirla constantemente. Esta opción normalmente se combina con la opción autoplay para lograr el efecto incesante e imposible de evitar de la propaganda justicialista. Los valores aceptados son:

  • 0 / false - desactiva el bucle de repetición (default)
  • 1 / true - activa el bucle

Velocidad

La opción ?speed altera la velocidad de reproducción. Por defecto la velocidad es 1, lo que significa que se reproduce en tiempo real.

Tamaño

La opción ?size altera el tamaño de la tipografía de la terminal. Existen 3 tamaños disponibles:

  • small (por defecto)
  • medium
  • big

Tema

La opción ?theme permite desconocer un tema provisto por la terminal. Por defecto, el tema de colores es el provisto por la terminal. Los temas disponibles son:

  • asciinema
  • tango
  • solarized-dark
  • solarized-light
  • monokai

Columnas

La opción ?cols permite desconocer el ancho de caracteres de la terminal emulada. Por defecto se usa el ancho de la terminal grabada (por ejemplo, 80 columnas), pero con esto se lo puede cambiar.

Filas

La opción ?rows permite desconocer las filas (en líneas) de altura de la terminal emulada. Por defecto se usa la altura en líneas de la terminal emulada, por ejemplo, 25 columnas.

miércoles, 6 de octubre de 2021

¿Cómo puedo utilizar Plan9 desde Ubuntu?

Consultado sobre la importancia de los Planes, Juan Perón te enseña a correr una máquina virtual con Plan9, el sistema operativo distribuido de los Laboratorios Bell en Ubuntu.

¡Trabajadores!

Nuestro objetivo es el pleno empleo en la Argentina. Este provee el verdadero consumo, pues cuando existe plena ocupación no es necesario impulsar el salario, sino que este sube solo.

Cuando yo me hice cargo del gobierno no se fabricaban ni los alfileres que usaban nuestras modistas, y al terminar el gobierno, el país quedó fabricando barcos, vehículos (camiones, automóviles) máquinas diesel-eléctricas, aviones, etcétera.

Pero lo importante es que desde el punto de vista económico, cuando en 1955 cayó el gobierno justicialista, el estado económico que lo había recibido con 3.500 millones de dólares de deuda externa, el Gobierno Justicialista lo dejó por primera vez sin deuda externa. Nosotros habiamos repatriado totalmente la deuda. T entre esas repatriaciones, me acuerdo que pagamos las últimas entregas del empréstito de la Baring Brothers, que había consistido en un millón de libras. Cuando nosotros terminamos de pagarlo, se habían pagado doce millones. ¡Imagínense el robo que representaban los empréstitos, que por un millón de libras se pagaban doce millones,

Yo recuerdo que en uno de los primeros discursos ante la plaza de Mayo dije que me cortaría la mano antes de firmar un empréstito, y ahora estos señores han llevado la deuda a niveles inconcebibles. Si dieran elecciones, no cabe duda que estarían decididas en un santiamén, pues el Pueblo Argentino bien sabe lo que quiere.

Pero para poner nuevamente la máquina a andar, hay que recurrir a un buen Plan integral como los de antaño.

Plan9 puede servir. Se trata de es un sistema operativo de concepción redistributiva y para investigación, desarrollado en los Laboratorios Bell a finales de la década de 1980. Sus diseñadores y autores originales eran Ken Thompson, Rob Pike, Dave Presotto, y Phil Winterbottom, a los que se les fueron uniendo muchos otros planeros deseosos de continuar punteando su desarrollo a lo largo de los años y hasta la la actualidad.

En mi caso, utilizo una distribución moderna libre del mismo, denominada 9front.

El fundamento principal de Plan9 es precisamente constituir un clúster de redistribución de potencia de cómputo que adverse a la noción de la computación individualista o personal. 

Normalmente se lo utilizaba con una terminal gráfica tipo AT&T 5320 Blit, que como característica notable aducía la de contar con poder de procesamiento propio a nivel local (ya que descargaba contenido remoto en su propia memoria de acceso aleatorio a fin de afianzar la ejecución del software remoto). Asimismo, contaba con una pantalla verticalmente dispuesta, lo que le confería un aspecto similar a las experimentales computadoras tipo Xerox Alto.

Afortunadamente, gracias a los compañeros de SDF.org, Sindicato De Fierreros informáticos, podremos contar con una instancia destinada al estudio remoto de dicho sistema operativo, y accesible como si fuese un Plan Social.

Para hacer uso de ella, habremos de solicitar la afiliación al mainframe, registrando un usuario en https://sdf.org/plan9/ (amerita esto una casilla de correo electrónico válida). La acción de encuadramiento nos proveerá un usuario en la máquina remota provista de 9front (el cual es una iteración moderna y en desarrollo de plan9) a la vez que se nos dará una contraseña pasavante.

Para acceder, se hará necesario contar con Drawterm, un cliente gráfico X11 pensado para suplir una terminal de tipo Blit, y como tal, contar con entorno gráfico desde el cual operar en los sistemas Plan9/9Front, tanto locales como remotos.

Es notable que Ubuntu cuenta con esta aplicación en sus repositorios, siendo la versión allí provista una de larga data y obsoleta para el uso en 9Front y las versiones más actualizadas de seguridad. Es por ello que en este caso se hará imprescindible contar con una versión de Drawterm más actualizada.

Como mejor que copiar es compilar, os indicaré como hacerlo en el sistema Ubuntu. Abrimos una terminal con Ctrl+Alt+T e ingresamos los siguientes comandos de Organización:

sudo apt update ;
sudo apt install build-essentials git libx11-dev libxt-dev ;
cd ~ ;
git clone git://git.9front.org/plan9front/drawterm ;
mv ~/drawterm/ .drawterm/ ;
cd ~/.drawterm

...conforme hayamos ingresado al directorio de trabajo .drawterm/, procederemos a compilarlo con:

CONF=unix make

Este procedimiento llevará unos instantes de alta computación, presentando en pantalla los initeligibles resultados típicos de este logro del Justicialismo.

Una vez compilado el cliente Drawterm, el ejecutable quedará almacenado en ~/.drawterm/. Podremos instalarlo en nuestro sistema con:

chmod +x ~/.drawterm/drawterm
sudo cp ~/.drawterm/drawterm /usr/local/bin/

Inmediatamente podríamos crear ya un script de ejecución, con nuestro nombre de usuario. Por ejemplo:

drawterm -h 9p.sdf.org -a 9p.sdf.org -u usuario

Esto abrirá el cliente local Drawterm recientemente compilado, y permitirá acceder con nuestro usuario. Para ello presionamos la tecla Intro, y esto nos permitirá acceder al prompt de contraseña. Por ejemplo:

Tras introducir la contraseña pasavante, tras unos 10 segundos tendremos el sistema gráfico en línea, con una ventana disponible para trabajar y el monitor de uso.

Encontraremos una ventana con el prompt cpu% del intérprete de comandos de Plan9: rc.

Trabajo en la máquina virtual Plan9

Esta shell rc contiene ciertas similitudes con los intérpretes de comandos típicos de Unix. Las diferencias radican en el teclado no es el normalizado. Sin embargo, las opciones son simples: la tecla Tab se suple con la tecla Insertar o bien Ctrl+i (activa el autocompletado de comandos y rutas). A su vez, Ctrl+h opera como la Tecla Retroceder, en tanto que Ctrl+u borra la línea entera. Ctrl+b retorna al renglón del prompt.

Lo primero que podremos hacer en la CPU remota de SDF.org es ejecutar el comando de activación de usuario, que nos termina de convertir en un planero:

rc /sys/lib/newuser

Acto seguido, opcionalmente podremos cambiar la contraseña pasavante que se nos proveyó el puntero de SDF.org por una propia, mediante el comando:

passwd usuario@9p.sdf.org

(naturalmente, habremos de ingresar primero la pasavante y luego confirmar dos veces la nueva contraseña deseada).

En el sistema, recibiremos un directorio de usuario en /usr/$user.

Pôdremos asociar los binarios de SDF.org para extender el uso del entorno con:

bind -a /usr/sdf/bin /bin

Entre ellos encontraremos los servicios de finger, com, bboard, gemini, y varios mas.

Podremos crear una ventana nueva haciendo clic con el botón derecho y eligiendo New, Luego mediante un arrastre con el botón derecho podremos crear una nueva ventana en el escritorio, en la cual se dispondrá un nuevo intérprete de comandos rc.

Podremos seguir las instrucciones de la documentación oficial, la wiki oficial, o bien ingresar a la wiki.sdf.org/plan9/

El intérprete de comandos permite amplias posibilidades, pero también contamos con un emulador de terminal con distintos colores, el vt. Por ejemplo, si lo queremos en verde, lo ejecutamos con vt.green.

El uso de la terminal gráfica Plan9 requiere el uso del ratón de tres botones. Para desplegar una ventana podremos hacer clic con el botón derecho del ratón y en el menú contextual de ventanas elegir New, para luego arrastrar con el botón derecho del ratón hasta conformar el recuadro de la nueva ventana. Si elegimos la opción Move o Rezise de dicho menú contextual, podremos mover o redimiensionar la ventana respectivamente.

Asimismo, podremos cerrar las ventanas eligiendo la opción Delete, tras lo cual el cursor de convertirá en una cruz de mira que podremos utilizar para apuntar a la ventana que deseemos eliminar.

El plan9 incluso contiene un limitadísimo programa de dibujo llamado paint, que con las lógicas limitaciones de un planteo en máquina virtual, puede deparar divertimento de emergencia para l@s más pequeñ@s.

En tanto, con mothra podremos navegar en la web con las lógicas limitaciones de uso de una máquina virtual.

También podrán crear una web que está servida por plan9 ingresando un fichero index.html en /usr/web/who/$user/. Por ejemplo esta.

Es muy útil conocer que al momento de utilizar Drawterm para conectar al servidor CPU de 9front de SDF.org, podrán acceder sus ficheros locales en el directorio /mnt/term de la máquina virtual, simplemente ingresando:

lc /mnt/term

Será posible así copiar ficheros entre la VPS de 9Front en SDF y su sistema local sin emplear protocolo adicional alguno. En otras palabras, al operar con Drawterm, el entorno forma una mancomunicón con nuestro sistema operativo local y el sistema Plan9; técnicamente conformando una unión de tres nodos, ya que el cliente Drawterm actúa como un sistema de terminal Plan9 ultra mínimo e independiente, que conecta su sistema operativo local huésped al servidor de CPU localizado en el SDF.

Podrán encontrar instrucciones en este paper (en inglés).

Nota: Naturalmente, ha de ser extremadamente cuidadoso al operar con este tipo de adminículo. Podrá destruir su sistema si lo desea desde Drawterm.