miércoles, 29 de enero de 2025

¿Cómo instalo DeepSeek R1 en Ubuntu?

En su La Hora de los Pueblos, Juan Perón explica las necesidades de la independencia continental, a la vez que explica cómo instalar el bot libre de inteligencia artificial DeepSeek R1 localmente en Ubuntu.

Para nosotros, los latinoamericanos, nada sería más placentero que unos Estados Unidos evolucionados, fuertes y ricos, encabezando al Nuevo Continente por derecho propio, siempre que ello se realizara sin detrimento de los demás, sin métodos imperialistas de dominio y explotación, sin insidiosos procedimientos y sin la prepotencia del avasallamiento. En tales condiciones, la defensa solidaria del Continente sería un hecho y hasta se justificaría - en cierta medida - la Doctrina de Monroe. Pero nadie podrá imaginar semejante conducta en países sojuzgados y menos aún para “atacar a Cuba”, “ocupar la República Dominicana” o cooperar en el genocidio de Vietnam del Norte.

Si Roma, en la época de la carreta, tardó más de un siglo en derrumbarse y desaparecer, los imperialismos modernos, en los tiempos del cohete hipersónico, están ante un proceso más peligrosamente rápido. 


Y tal predicamento lo vemos con el motor de inteligencia artificial DeepSeek, desarrollado en la China de Mao.

Vean señores, este motor no ha hecho más que poner en duda la hegemonía yanqui, al consagrar un modelo de código abierto disponible para los Pueblos del Tercer Mundo, quienes son ahora capaces de instalarlo localmente. Tal es así que, al instante de publicado, este bot de inteligencia artificial ha sido capaz de suplantar otros maniatados bajo las pesadas cadenas de un imperialismo norteamericano, taales como ChatGPT o OpenAI, . 

Rotas estas cadenas merced de la generosidad y sapiencia oriental, y el poderío y fortaleza que nos da el software libre GNU, nuestro deber como Argentinos es ser capaces de instalar para nuestro Pueblo, este sistema de Inteligencia Artificial, para que el gozo sea de todos.

Como Conductor, he intercambiado frondosa correspondencia de Revolucionario a Revolucionario con el camarada Mao, a quien considero mi compañero, y gracias a ello os enseñaré sobre estas propuestas de aprendizaje automático y modelos de altos lenguajes-máquina. Particularmente, os enseñaré cómo instalar y ejecutar el modelo DeepSeek R1 localmente en una computadora de escritorio potente munida de GNU con Linux

Para aquellos de ustedes que no están familiarizados con los modelos de lenguaje grandes, DeepSeek R1 pertenece a la clase de los modelos de razonamiento maquinal. Dichos modelos de razonamiento operan mejor en problemas y tareas de razonamiento profundo en comparación con los modelos de lenguaje grandes clásicos.  

Los problemas de razonamiento profundo son problemas que aparecen en las ciencias del cómputo, la matemática y la programación. Según la información proporcionada en la página de GitHub de DeepSeek R1, el rendimiento de dicho modelo se observa comparable al rendimiento del modelo OpenAI 01. No obstante, DeepSeek R1 "destilado" ha sido liberado bajo Licencia MIT, lo que significa que también puede usar este modelo en un entorno comercial. 

Explicaremos qué son los modelos destilados. Para ejecutar el modelo de Inteligencia Artificial completo de DeepSeek R1 localmente, se requieren más de 400 gigabytes de espacio en disco, junto con una cantidad significativa de recursos de CPU, GPU y RAM. Estos requerimientos tornan alrededor de un pequeño centro de datos comercial, e incluso resultar prohibitivo para el hardware de nivel de descamisado. 

Sin embargo, DeepSeek ha demostrado que es posible reducir el tamaño del modelo original de Deepseek R1 preservando al mismo tiempo gran parte del rendimiento del modelo original. El rendimiento no se conservará al completo, natural, pero se ha demostrado posible ejecutar un modelo de tamaño reducido sacrificando una mera parte del rendimiento.

En consecuencia, DeepSeek ha lanzado una serie de modelos comprimidos o destilados para el Pueblo, como a ellos gustan llamarlo. Su tamaño fluctúa entre los de 1,5 a 70 gigaparámetros. Esto nos implica que, a fin de instalar un modelo de estos, necesitaremos disponer de entre 1 a 40 GB de espacio en disco, lo cual está al alcance de cualquier compañero.

La potencia de CPU y GPU varía en consecuencia, pero deberíamos poder afrontar los casos más reducidos. En este tutorial, explicaremos cómo instalar y ejecutar modelos simplificados de Deepseek R1 en mi computadora Ubuntu. Mi computadora un microprocesador Intel i9, una placa de video Nvidia 3090 con GPU, 128 GB de RAM, y Ubuntu Mate 24.04LTS, y destinaré una partición de disco SSD de 1TB.

En apretada síntesis, el procedimiento de instalación involucra:
  1. Descargar e instalar todo Ollama;
  2. Usar Ollama para descargar uno de los modelos de IA;
  3. Usar Ollama y la línea de comandos para ejecutar el modelo de IA localmente en nuestra PC.

Para todo esto, recurriremos a la Terminal. Abrimos una con Ctrl+Alt+t e ingresamos los siguientes Comandos de Organización:

sudo apt update ;
sudo apt upgrade -y ;
sudo apt install curl

y abrimos el puerto TCP requerido por Ollama, con:

sudo ufw allow 11434/tcp ;

Hemos de comprender que no estamos abriendo un firewall ni eliminando el firewall en sí, solo permitiendo conexiones internas a este puerto ya que Ollama la requiere.

Acto seguido, instalaremos Ollama descargando su script de instalación del sitio oficial y ejecutándolo en nuestro sistema GNU con Linux:

curl -fsSL ollama.com/install.sh | sh

Naturalmente, esto puede demorar varios minutos dependiendo de qué tan rápida sea vuestra conexión a Internet, y a lo expedito del sitio oficial, por lo debemos hacer gala de paciencia.

El siguiente paso es descargar uno de los modelos DeepSeek-R1. Para referenciar los mismos, podemos ir a la Web de Ollama y buscar "DeepSeek-R1".


En primer lugar, veremos listados distintas versiones de modelos paramétricos de IA en la web: las versiones 1.5b, 7b, 8b hasta 671b.

Todo este concepto de ejecutar modelos de lenguaje grandes puede parecer un poco confuso al neófito que no está familiarizado con los modelos de lenguajes portentosos, y al aprendizaje-máquina automático, por lo que ofreceré cierta información que se hace relevante para la Liberación de nuestras mentes artificiales.

Por supuesto, a todos nos gustaría instalar el modelo más portentoso, el 671b (llamado así por contar con casi 700 mil millones de parámetros). Indudablemente esto no es coser y cantar, y tiene el precio del oligarca. Observemos en apretada síntesis, los requerimientos de disco necesario para cada modelo en su conjunto::

deepseek-r1:1,5b   1.1Gb
deepseek-r1:7b      4,7gb
deepseek-r1:8b      4,9gb
deepseek-r1:14b    9,0Gb
deepseek-r1:32b    20Gb
deepseek-r1:70b    43Gb
deepseek-r1:671b  404Gb

Hemos de notar que - además de dicho espacio en disco - la cantidad de memoria RAM solicitaada se incrementará, y de no tenerla, tendremos penalización en uso de CPU/GPU y velocidad. En síntesis, para el modelo más grande necesitamos un maquinón más parecido a un server grande empresarial. Pero los más chicos pueden funcionar en una laptop con 8 GB, así que apuntemos a esos. 

En mi modesta opinión, por este motivo quizá sea Ollama el enfoque más simple para ejecutar modelos de lenguaje localmente, puesto que resultará muy útil para comprobar rápidamente modelos IA siguiendo un predicamento escalar: tras comprobar el funcionamiento de un modelo pequeño en nuestro hardware, podríamos emprender un "Gran Salto Adelante" comprobando luego un modelo más potente.

En fin, este ejemplo, nos decantaremos por el modelo "descamisado", el de la versión 1,5b. De esta forma intentaremos ejecutar en nuestra máquina un modelo con 1,5 mil millones de parámetros que "solo" consume 1,1 GB en mi disco. Otra cosa importante a tener en cuenta es que está extremadamente cuantificado, por eso es el más pequeño.

Su rendimiento es inferior a los modelos mayores No obstante ello, su tamaño es sensiblemente menor y podremos correrlo localmente en nuestra computadora. Esto a su vez nos proporcionará la independencia económica y tecnológica que anhela el Pueblo Argentino, y constituye - además - una potente piña a la ingle de los intereses tecnológicos foráneos de las GAFAM. 

Bajemos el modelo "descamisado", para probar (si ustedes cuentan con las ganas y la potencia, vayan por un modelo mas grande como el deepseek-r1:8b o mayores, claro).

ollama pull deepseek-r1:1.5b

La descarga del modelo "descamisado" demorará aproximadamente entre 6 y 10 minutos en una conexión popular de internet. (recordemos que estamos descargando 1,1 GB del sitio web de ollama). En mi computadora, la descarga de todo tomó alrededor de 10 minutos. 

A continuación verificamos que el modelo se haya descargado. Escribimos:

ollama list

y verás el modelo:

NAME                ID         SIZE     MODIFIED
deepseek-r1:1.5b    xxxxxxx    1,1Gb    2 Minutes ago

Como en toda tarea de alto cómputo, antes de ejecutar el modelo, será necesario poder dar con instancias de monitoreo de harware (es útil contar con un medidor de uso de CPU o de temperatura activado, y un medidor de uso de la CPU como htop). En mi caso, al contar con adaptador de video nVidia, me aseguro de monitorear el uso de mi GPU. Para hacer eso, necesito ejecutar este comando:

watch -n 1 nvidia-smi

El nvidia-smi me permite monitoreando el uso de mi GPU, es decir, la energía y otras cosas con un período de refresco de 1 segundo:


Podemos dejarlo abierto, monitoreando (llegado el caso, se cierra con Ctrl+c).

Ahora regresemos a esta terminal y ejecutamos el modelo descargado:. En nuestro caso, esto lo haremos con:

ollama run deepseek-r1:1.5b

Tras iniciarse el motor de IA DeepSeek, recibiremos en la terminal el prompt de preguntas de DeepSeek, nomenclado con tres signos >:

>>> Send a Message (/? for Help)

A su vez, en la terminal de nvidia-smi comprobarás un incremento en el uso de GPU y memoria de video destinado al cálculo de IA. Todos estos son parámetros importantes para monitorear el comportamiento del modelo en tu sistema, lo cual es muy importante.

Intentemos una pregunta en el idioma de Braden:

>>> How are you? 

Tras presionar la tecla Intro para darle entrada a la interrogante, la máquina de inteligencia artificial del Comunismo intentará obtener una respuesta destilada, la cual nos irá prsentando en la terminal. Traducida al vernacular, veremos algo algo como:

>>> Quiacé grone! Soy DeepSeek-R1, un asistente de inteligencia artificial creado por DeepSeek. Estoy al servicio del Pueblo y me encantaría ayudarte para lo que gustes mandar.

Naturalmente, ustedes podrán pedirle lo que quieran siguiendo la castellana consigna de evitar "pedirle peras al olmo".

Como el buen maquinista Savio - quien siempre iba relojeando los manómetros y termómetros de  su locomotora Pacific PS10 "La Emperatriz" - todo aquel que ejecute un programa de alto cómputo en su máquina debe ir midiendo las temperaturas, consumos de memoria y disco. Claro que si estamos ejecutando un modelo de IA de 32 GB o más, contaremos con 32 mil millones de parámetros en el horno, y esto elevará la temperatura y consumo de GPU, CPU, RAM y disco. Si lo vemos que llega a niveles peligrosos, en la emergencia "tiramos de la palanca" y lo interrumpiríamos con Ctrl+c.

Por ejemplo de esto, hagamos una pregunta real, bastante más compleja:

>>> How do I create a truco card game with trick and bluffing capabilities using Python?

El modelo funcionará al palo y podremos comprobar entonces el uso de la GPU y CPU al mango. Revisemos la temperatura de la CPU sin dejar que supere la temperatura de diseño (nunca más de 100°c en verano!). Ahora el modelo realmente está tratando de resolverlo. Probablemente esté usando un método de sección transversal, y esto es realmente, realmente alentador, tras lo cual nos entregará un portentoso código en Python.

Todo será respondido según les dé el cuero a su CPU, GPU, RAM y modelo instalado. Recuerden que - en cualquier caso - obrarán combatiendo al Capital, pues todo desarrollo que contribuyamos a los de Mao es una rueda que le pinchamos al Tío Sam(uel).

Mi sugerencia es que revisen estos modelos y encuentres aquél que les responda mejor según un compromiso armónico entre la velocidad de ejecución y el rendimiento.  

Si se juntan entre muchos, incluso pueden probar el modelo más grande en una Supercomputadora del Pueblo o en una VPN con la fuerza de la CGT.

lunes, 20 de enero de 2025

¿Cómo instalo Compiz en Ubuntu Mate 24.04LTS Noble Numbat?

Reunidos con dirigentes obreros en Puerta de Hierro, Juan Perón expone las necesidades de amoldar los distintos sectores al ímpetu revolucionario, a la vez que instruye cómo instalar el Cubo de Compiz en Ubuntu Mate 24.04LTS Noble Numbat.

(...)

Los procesos históricos son inexorables. No se puede ignorarlos. Sí se los puede retrasar o apresurar. Si se los retrasa, no pasará nada más que eso. Si se los ayuda, la historia lo reconocerá. Porque ella tiene lugar solo para aquéllos que colocan sus acciones al servicio de su necesidad de abrirse paso.

La historia crea a los hombres responsabilidades individuales. Se puede ser eslabón fundamental de la cadena de los acontecimientos.

Las revoluciones nacionales en Latinoamérica son un hecho irreversible. El actual equilibrio será roto. Es imposible superar sin revolución las resistencias de la oligarquía y de los monopolios inversionistas del imperialismo.

Es indudable que las transformaciones revolucionarias chocan con las posiciones de los monopolios y con la dependencia existente en el nivel que ha alcanzado el régimen capitalista mundial, y no existe posibilidad de concesiones por parte del sistema.

Estos gobiernos instalados no van a resolver los problemas nacionales. No responden a los intereses nacionales.

Terminada en forma oficial la experiencia kennediana en la reunión de Punta del Este, ahora la cuestión es quién se pondrá en la vanguardia. La historia es inflexible y sólo reconocerá a aquellos que se ponen a la cabeza del proceso. Lo que uno no haga —pudiendo hacerlo— de todos modos se hará.

Las expresiones revolucionarias verbales no basten, hay que programar estrategias y tácticas que hagan posible la revolución en la Argentina y en todo el Tercer Mundo.

El problema creado al país por la dictadura es de tal gravedad, que un solo partido puede resultar impotente para resolverlo. Yo no tengo la menor duda sobre la necesidad actual de conformar un gran frente nacional de oposición en el que deben entrar todas las fuerzas y todos los hombres que, como nosotros, anhelen soluciones para el futuro. Creo que ha llegado el momento de comenzar una acción decisiva de conjunto.

Nuestra “pampa húmeda” necesita, por lo menos, un millón de propietarios más. En esto está implícita la necesidad de la Reforma Agraria. De una reforma agraria por la cual ya clama el país. La imperiosa necesidad del desarrollo industrial independiente, de la industria pesada. El avance general sobre la base del ahorro interno. La política de Estado de protección de la economía nacional y el comando en manos de este mismo Estado de los sectores fundamentales de la economía: petróleo, siderurgia, transportes, etcétera. Ello infiere la necesidad de alcanzar un gobierno de cooperación total, sin oposiciones negativas, en el cual todos podamos poner algo de nuestra parte.

El rompimiento con los organismos de crédito mundiales como el Fondo Monetario Internacional (cuyo acuerdo fue firmado por la Argentina sólo después de la caída del gobierno peronista) y el control de las exportaciones, son temas que considero base fundamental de la revolución. 

Pues bien señores, ha llegado el momento de organizar al pueblo argentino y a su clase trabajadora. A los dirigentes que están especulando con la camiseta del peronismo, hay que arrancársela. Hay que marcar a los traidores.

No se puede vacilar, porque en la historia quedan aquellos que hacen de la necesidad su propia conciencia. Lo que no haga uno mismo, otros lo harán.

Ha llegado el momento, pero con organización. Con organización al nivel de las bases, con criterio amplio, de coordinación de los distintos sectores que quieren la revolución nacional, el socialismo, ese socialismo que ya proclaman todos los sectores, inclusive la Iglesia posconciliar. En esta circunstancia histórica se puede ser Hamlet, Tshombe, Alvarado, Mao o Lumumba. Todo consiste en saber elegir. En este aspecto, es de suma importancia a la acción de la Iglesia Posconciliar y a las ideas de la Populorum Progressio, tardío reconocimiento de la línea impulsada por el peronismo desde el gobierno.

Esperamos obtener no sólo la unidad del Justicialismo, sino también la creación de un gran movimiento nacional, nuevo, distinto, en el cual participen otras fuerzas nacionales en igualdad de condiciones y posibilidades de acuerdo con la gravitación de cada una.

En la mayoría de los sectores políticos del país hay gente honesta, revolucionaria. Seguramente, en la mayoría de aquéllos habrá desplazamientos, convergencias, hacia ese movimiento nacional imparable que apartará todo lo que es antinacional y gorila, para producir nuestra revolución, para acceder al poder. 

Las formas de revolución nacional son lo suficientemente amplio: Que cada uno haga la suya, no importa el sello que esta tenga. La Argentina tendrá, cuanto menos, el sello de la doctrina justicialista. 

En este gobierno de múltiples caras, qué mejor que el Cubo de Compiz para mostrarle a cada uno la que más le guste. Cuando vienen ustedes les muestro una, cuando vienen los montos, les muestro otra. Compiz a todos persuade.

A mi me dijeron que Compiz no se puede usar con Ubuntu 24.04 porque "se rompe todo".

Vean señores, eso lo dicen los contreras. Podremos volver a utilizar Compiz con el cubo que hacía la felicidad de todos nosotros, en Ubuntu MATE 24.04LTS Noble Numbat. Sabíamos que antes que llegara esta dictadura canalla, toda la vida significó instalar Compiz (junto con algunos plug-ins extras) y el administrador CompizConfig Settings Manager.

Sin embargo, para que este predicamento funcione adecuadamente en Ubuntu Mate 24.04LTS Noble Numbat, habremos de desactivar el gestor gráfico de ventanas Picom, el cual se activa al inicio en Ubuntu Mate 24.04LTS por defecto. 

Llevar a cabo la desactivación de Picom nos ahorrará problemas de interoperatividad gráfica entre Compiz y Picom, tales como pantalla negra al inicio, o bien ventanas huérfanas sin los botones de control superior. Esto se logra llendo a Sistema / Preferencias / Personal / Aplicaciones al Inicio, y en la solapa Programas al inicio del cuadro Preferencias de las Aplicaciones al inicio buscamos la entrada  Picom, la destildamos, y presionamos el botón Cerrar.

Instalar Compiz

Hecho esto primero, ahora podremos abrir una terminal con Ctrl+Alt+T e ingresar el siguiente Comando de Organización:

sudo apt-get install compiz compiz-plugins compizconfig-settings-manager

...el sistema nos solicitará nuestra contraseña y comenzaba a descargar la paquetería y se instalaba.

Activar Compiz

Tras instalar el paquete de Compiz y desactivar el inicio de Picom, debemos activar Compiz para que opere como gestor de escritorio en lugar del Marco que viene por defecto.

Tenemos dos maneras de hacerlo. La más sencilla sería cerrar nuestra sesión de usuario actual (Sistema / Cerrar Sesión de Usuario) y volver a ingresar a nuestra sesión gráfica, y luego podremos abrir Sistema / Preferencias / Aspecto y Comportamiento / MATE Tweak y ahora deberíamos poder encontrar bajo el apartado Windows, la opción Gestor de Ventanas "Compiz (efectos avanzados de escritorio acelerados con GPU)", la cual deberíamos poder activar.
La otra forma de activar Compiz con Mate es hacerlo desde la Terminal, la cual puede sernos útil si por algún motivo no pudiésemos hacer uso del activador gráfico en MATE Tweak. Para ello abrimos una terminal con Ctrl+Alt+T, e ingresamos el siguiente comando de organización:

sudo gsettings set org.mate.session.required-components windowmanager compiz

Cualquiera de los métodos que utilicemos debería ofrecernos el gestor Compiz con una configuración mínima operativa.

Activar campana en Compiz

Para que suene la campana en Compiz en Ubuntu 24.04LTS contareamos con la dificultad adicional de que el servidor de audio Pulseaudio que lo hacía, ha sido relegado en discha distribución. Sin embargo, se puede instalar opcionalmente.

Una vez instalado Pulseaudio en Ubuntu 24.04LTS, debemos hacer que dicho servidor de sonido tome el control del evento de campana  X11. Para ello debemos ejecutar el siguiente comando una vez que la sesión X11 se inicie. Esto se puede lograr de varias maneras. Una forma de hacerlo es agregando las siguientes líneas al fichero ~/.xprofile

$ pactl upload-sample /usr/share/sounds/freedesktop/stereo/bell.oga bell-window-system
$ pactl load-module module-x11-bell display=$DISPLAY

...o alternativamente, podremos usar los ficheros de configuración de sistema /etc/pulse/default.pa.d o bien el fichero de configuración de usuario ~/.config/pulse/default.pa:

.include /etc/pulse/default.pa

# campana audible
load-sample-lazy bell-window-system /usr/share/sounds/freedesktop/stereo/bell.oga
load-module module-x11-bell

La campana deberá sonar ahora con Compiz (por ejemplo, al abrir un terminal y presionar Ctrl+g). Si deseamos configurar el volumen del evento de sonido asignado a la campana X11, podremos recurrir al paquete xorg-xset, y agregar a las configuraciones anteriores un comando del estilo:

xset b 100

...siendo 100 el porcentaje de volumen.

Activar cubo y efectos de Compiz

Naturalmente, podríamos configurar de forma avanzada el funcionamiento general de Compiz utilizando el programa CompizConfig Settings Manager. Al acceder al mismo desde el menú Sistema / Preferencias / Aspecto y Mantenimiento / CompizConfig Settings Manager), se nos mostrará una ventana de advertencia, la cual nos indica que tengamos cuidado.
Esto es así pues lamentablemente, a veces configurar Compiz es algo complejo y puede ser propenso a errores que dificulten y en el peor de los casos imposibiliten la ejecución del escritorio gráfico.

Al iniciar, Compiz tendrá un perfil de configuración básica, pero podremos importar un perfil de Compiz más avanzado con el Cubo ya configurado. Para importar estos perfiles, debemos ir a Sistema / Preferencias / Aspecto y Comportamiento / Compiz Config Settings Manager y presionamos el botón Importar, con el cual cargamos el perfil deseado.

Tras cargar el perfil, deberían poder hacer uso del cubo 3D. Para ello deben llevar la flecha del ratón hacia uno de los bordes de la pantalla, y presionar y mantener presionada la rueda de scroll del ratón. Luego podrán girar el cubo moviendo hacia un lado o el otro para ver los cuatro escritorios, y soltar la rueda de scroll del ratón para dejar de mover el cubo:
También podrían utilizar las combinaciones de teclas Ctrl+Alt+Flecha de Cursor derecho y Ctrl+Alt+Flecha de cursor Izquierdo para rotar entre las caras del cubo.
 
En mi caso, yo prefiero una pirámide triangular (solo asigno tres caras, que me alcanzan para la mayoría de los casos).
 

También podremos hacer zoom en el escritorio con Super+z y quitar zoom con Super+x. O conmutar entre aplicaciones del escritorio activo con Alt+Tab o entre todas las aplicaciones en los distintos escritorios con Ctrl+Alt+Tab.

...y presionamos el botón Ejecutar. La pantalla debería parpadear y comenzar a ejecutar el gestor de ventanas con efectos Compiz. Podremos por ejemplo, contemplar si pasamos ahora entre escritorios con el Cubo, presionando Ctrl+Alt+Flecha izquierda o Ctrl+Alt+Flecha derecha.

Con un poco de práctica, podremos activar el cubo, o como también me gusta a mí, el cilindro - puesto que tiene forma de bombo- junto con los vistosos efectos de ventanas que nos permite Compiz y el Justicialismo:

martes, 31 de diciembre de 2024

¿Cómo instalo Mined para editar en UTF-8 en Ubuntu?

Reunido con visitantes en su Quinta 17 de Octubre, Juan Perón explica cómo instalar el editor Mined en Ubuntu, el editor especializado en texto codificado Unicode para la terminal.

(...)

Como podrá imaginar tuve que renunciar a muchas pasiones juveniles… Es difícil olvidar que uno ha sido boxeador, futbolista, rugbier, polista, jugador de básquet y maestro esquiador. De todas maneras, reconozco que esa experiencia me permite sobrellevar mis años de un modo bastante envidiable.

Mi receta es muy simple. Ciento cinco miligramos de hormona de potro todas las semanas. Yo no me tiño el cabello, ¿Sabe usted? Esa fórmula sirve para todo…

Cuando me pongo a la máquina, tengo que hacerlo pensando sobre todo a quienes me leerán en la Argentina, pero también en todos lados del mundo. Es por eso que para comunicarme, utilizo GNU con Linux. Y entre ellos múltiples editores, de entre los cuales me he favorecido por Mined.

Basicamente, Mined es un editor a medida para edición confiable y eficiente de documentos de texto plano y programas, con funcionalidades cómodas e intuitivas, comportamiento interactivo diseñado para este propósito. Se trata de un poderoso editor de texto con una interfaz amplia pero concisa y fácil de utilizar, que soporta los paradigmas de interacción más modernos, y presenta un comportamiento veloz y liviano. 

Mined soporta control completo de ratón, y un sistema de menúes en terminales de texto plano (siendo el primer editor en suportar Unicode en Xterm). Mined ofrece a todos un conjunto completo de funciones de manejo de texto y ficheros, como prevención de pérdida de datos (cuenta con respaldos automáticos opcionales configurables, archivos de recuperación, y bloqueo de archivos interoperables con otros editores, y monitoreo de cambio de ficheros), y un selector interactivo de ficheros, y un conmutador de ficheros.

Para instalarlo debemos descargar su código fuente y compilarlo en nuestro sistema GNU con Linux. En el caso de Ubuntu podremos hacerlo abriendo una terminal con Ctrl+Alt+T e ingresando el siguiente Comando de Organización:

cd /tmp ;
wget http://towo.net/mined/download/mined-2022.27.tar.gz ;
tar xvjf mined-2022.27.tar.gz ;
cd /tmp/mined-2022.27/ ;
make ;
sudo make install

Una vez compilado el programa, podremos ejecutarlo desde la terminal con:

mined fichero.txt

o bien recurriendo a su versión gráfica, mediante

xmined fichero.txt

Tras iniciar nos encontraremos con un editor de pantalla compatible con mouse, y si bien consta de una interfaz bastante convencional provista de barras de desplazamiento, es totalmente programable. Lo primero que llamará la atención es una barra de menúes desplegables, activable mediante la tecla F10.

Mediante esta tecla podremos acceder a los menúes "Archivo", "Edición", "Búsqueda/Ir", "Párrafo" y "Opciones". Sin embargo, usando las flechas del cursor izquierda/derecha, podremos acceder a otros menúes adicionales que aparecen abreviados: "Info Display", "Encomillado", "Codificación", "Combinación", "Texto", "Buffer de Pegado", "Indentado/Tabulado", "Justificado".

Con F3 podremos abrir un fichero, y con Alt+F3 podremos conmutar entre varios ficheros abiertos (presentables en solapas). 

Mined siempre está en modo de inserción, con lo cual podemos comenzar a escribir sin mas. Podremos escoger un word wrap (corte de línea) relativo (ajustable al ancho de terminal, o ajustable a un ancho de corte alertado predeterminado, por ejemplo de 72 caracteres) o bien duro, que genera líneas de manera automática al llegar a tal borde.


Los comandos son caracteres de control simple, comandos de dos teclas que comienzan con la tecla Escape, mas una colección de teclas de función (para distintos teclados y terminales). Especialmente se debe notar la "tecla salto" (normalmente el 5 del teclado numérico o Ctrl+Barra Espaciadora), que expande los efectos de ciertos comandos "de la manera obvia"; esto permite editar sin tener que recordar demasiadas teclas.

Por defecto, Mined usa el teclado de desplazamiento para las siguientes funciones:

Ins: Pegar
Supr: Borrar/Cortar
Inicio: Comienzo de Línea
Fin: Final de Línea
RePág: ídem
AvPág: ídem

Las funciones del teclado numérico tienen otros significados, que pueden ser alterados con la tecla salto:

Teclado Numérico 7/Inicio: Marcar Inicio de Seleccion. Ir a marca.
Teclado Numérico 8/Arriba: Arriba. Parte superior de la pantalla.
Teclado Numérico 9/RePág: Previo. Comienzo del archivo.
Teclado Numérico 4/Izquierda: Izquierda. Comienzo de línea.
Teclado Numérico 5: Tecla Salto
Teclado Numérico 6/Derecha: Derecha. Fin de línea.
Teclado Numérico 1/Fin: Copiar. Agregar.
Teclado Numérico 2/Abajo: Abajo. Parte inferior de la pantalla.
Teclado Numérico 3/AvPág: Siguiente. Final del archivo.
Teclado Numérico 0/Ins: Pegar. Pegado entre ventanas.
Teclado Numérico ./Supr: Suprimir/Cortar Agregar+.

Por defecto, en Mined la selección de textos se hace marcando el inicio del sector seleccionado con la tecla Inicio, y el Final del sector seleccionado con la tecla Final (y uno se desplaza al principio de línea con Mayúsculas+Inicio y al final de línea con Mayúsculas+Fin). Este comportamiento simula en cierta medida el de el clásico editor de texto privativo PC-Write para DOS.

Sin embargo, este comportamiento puede ser alterado para seleccionar "al estilo Window$", en que se recurre a combinaciones con Mayúsculas+Flechas del Cursor.

En este caso, configuramos la opción de teclado de selección con Mayúsculas, las funciones son más convencionales, como las siguientes:

Mayúscula-Izq Selecciona caracter a la izquierda
Mayúscula-Der Selecciona caracter a la derecha
Mayúscula-Control-Izq Selecciona palabra a la izquierda
Mayúscula-Control-Der Selecciona palabra a la derecha
Mayúscula-Arriba selecciona línea arriba
Mayúscula-Abajo selecciona línea abajo
Mayúscula-Ctrl-Arriba selecciona hasta el comienzo del párrafo anterior
Mayúscula-Ctrl-Abajo selecciona hasta el comienzo del párrafo siguiente
Mayúscula-Inicio selecciona al comienzo de la línea
Mayúscula-Fin selecciona al final de la línea
Mayúscula-Control-Inicio selecciona hasta el comienzo del texto
Mayúscula-Control-Fin selecciona hasta el final del texto
Mayúscula-RePag selecciona página previa
Mayúscula-AvPag selecciona página siguiente
Mayúscula-5 (en teclado numérico) copia el texto seleccionado para pegar al búfer

Para pegar entre ventanas podemos usar Ctrl+G, Ctrl+P.

Un aspecto que puede resultar importante y en el que destaca Mined es el uso de métodos de entrada alternativos, adecuados para escribir en griego, cirílico, arábico, hebreo, kazajo, etíope, amhárico, y esperanto. También cuenta con las múltiples variaciones de entrada para la escritura de los pueblos chinos y coreanos (pinyín, cangjie, WuBi, Boshiami, escritura de radicales y pinceladas, escritura de 4 bordes, Bopomofo), así como el hiragana y katakana del Japón. Es de destacar que contamos con un traductor de ideogramas (sólo al inglés).

En particular presenta su sapiencia es el soporte Unicode UTF8 y CJK (para idiomas de asia oriental, Chino, Japonés y Coreano). Esto avala cubrir aspectos que otros editores no son tan capaces o halagüeños - como funcionalidades de autodetección y manejo automático de variaciones de terminal, y la información de los caracteres Han. Gracias a ello, puedo comunicarme con el chino Mao, que siempre me escribe...

Pero además de hacer caso a los caracteres del Asia, permite funcionar completamente bien con las condificación universal y otras anteriores. Esta compatibilidad lo vuelve adecuado para enfrentar la edición de texto para distinto tipo de máquinas.

Si bien podremos alterar el funcionamiento de Mined a través de los menúes respectivos, sus aspectos principales pueden alterarse de forma más permanente modificando su completo y guiado archivo de configuración ~/.minedrc.

En la web oficial podremos encontrar el manual en línea de Mined (en inglés)

jueves, 5 de diciembre de 2024

¿Cómo convierto imagenes de mapa de bits a trazados SVG en Ubuntu?

Reunido con las trabajadoras del Sindicato de Obreros Gráficos, Juan Perón expone cómo convertir imágenes de mapas de bits a trazados SVG escalables en Ubuntu.

 

¡Trabajadoras!

Donde existe una necesidad nace un derecho. Esto es un dogma que hemos escrito en el frontispicio de nuestras instituciones, y al cual nos adherimos con el quehacer diario.

En este caso las muchachas peronistas nos aproximan con un problema a resolver para lograr una impresión DTF (directo a film) para adherir térmicamente a tela. Esta técnica nos permite un resultado superior al impreso de vinilo para corte por termoadhesión, el cual tiene como inconveniente la imposibilidad de recurrir a líneas finas, y necesita amplias zonas de impresión para ser efectivo.

Naturalmente, ante estas nuevas técnicas, el software libre cuenta con las herramientas para suplirlas de contenido. Veamos el caso de recurrir a una imagen para hacerla por medio de DTF e imprimirlas en camisetas de algodón o algodón-poliéster.

Un uso típico es crear gráficos vectoriales a partir de una imágen escaneada (logotipos, escritura manuscrita. El problema es que al usar estas imágenes, podremos encontrar con efectos tipo "serrucho", la más de las veces indeseados.

Pues bien señores, para evitarlo, habremos de convertir imágenes de referencia de linearsts en formato raster (en este caso BMP), a los mucho más cómodos trazados SVG. En tal caso, la imagen resultante no es "irregular" como un mapa de bits, sino suave. Luego se puede renderizar en cualquier resolución.

Para hacer la conversión recurriremos a uno de los mejores programas de terminal encargados de esto: el potrace, que opera desde la línea de comandos. Este nos presentará el aliciente de poder lograr nuestro cometido sin tener que recurrir a software privativo alguno (tal los arteros Adobe Illustrator o Corel Draw.

Intentaremos lo propio con una imagen especialmente pixelada, obtenida a través de la pantalla inicial del popular juego de MS-DOS "Truco Arbiser". Se trata de un lineart de sólo 320x200 pixels, representativo de un autóctono gaucho con una inempardable mano de truco consistente en el ancho de espadas, el macho de bastos, y un siete que - a pesar de no verse entero - bien podría ser el de espadas. Esta es una imagen de arte de línea que sigue la vieja norma CGA a cuatro colores (ante un fondo negro, se delinea en blanco y se suman detalles estridentes en cian y magenta, típicos de esta antediluviana placa de video).

Para instalarlo en nuestro sistema GNU con Linux simplemente abrimos una Terminal. En el caso de Ubuntu podremos recurrir al siguiente Comando de Organización:

sudo apt install potrace

 
potrace se revela como excepcional herramienta para trazar un mapa de bits, es decir, transforma la imagen de mapa de bits en una imagen de trazado matemático, normalmente suave y escalable.
 
Es capaz de funcionar con imágenes de origen en mapas de bits que sigan los siguientes formatos: PBM, PGM, PPM (conocidos colectivamente como PNM, así como BMP (formatos de mapa de bits de Windows y OS/2).

Si a cualquiera de estas la queremos convertir específicamente en una imagen de trazado vectorial en formato SVG, utilizamos la opción -s, de la siguiente manera

potrace -s archivo.bmp

Por defecto, esto nos generará automáticamente un resultado de salida en blanco y negro con el mismo nombre del fichero de entrada, o sea archivo.svg, con la ventaja que este será completamente escalable.

Aunque este blanco y negro es particulamente efectivo para logotipos y obtener base de trabajo, en este caso particular deseamos realizar una reproducción escalable que sume los colores a 4 bits de profundidad de color. Por tal motivo, habremos de enfrascarnos en dividir el mapa de bits en las componentes de los canales magenta, cian y blanco (esto podremos hacerlo con cualquier programa con selector de color).

Como la imagen CGA sólo contiene dos colores (además del blanco y negro que pueden representar el campo principal y el fondo respectivamente), la selección puede realizarse fácilmente en GIMP con la herramienta Selector por Color (Mayúsculas+O). Con solo hacer clic en un pixel del color anhelado, podremos seleccionar todo, copiarlo y pegarlo en un documento nuevo, y exportarlo de forma independiente.

Cada uno de los dos colores - en este caso - representan otro fichero BMP, al cual convertimos a SVG con potrace.

Hechos con las tres capas (blanco, cian y magenta), bien podremos utilizar Inkscape, LibreOffice Draw -o cualquier otro programa de dibujo vectorial compatible con SVG- para abrirlas, seleccionarlas y pegarlas (de forma combinada y superpuesta) en un único fichero SVG. 

Asimismo, el uso de SVG independientes nos permitirá la facilidad de poder hacer no solo impresiones DTF a film, sino trazados con una cortadora de vinílicos, pues estas máquinas son capaces de utilizar archivos SVG como indicador escalable de corte. Esto nos permitiría realizar logotipos plenos (aunque no linearts de trazo fino), y adherirlos térmicamente.

En cualquiera de los casos, ambos resultados - sumado al fondo de una camiseta negra - nos otorgará el resultado deseado, como expresión de Justicia Social adherida a una tela.

Es bueno mencionar que si bien  prefiero operar con el viejo y peludo GIMP ara este menester, si recurrimos al escritorio KDE, podríamos querer compilar una antigua herramienta que oficia de interfaz gráfica para Potrace, el potracegui.

Para hacer esto desde nuestra terminal ingresamos:

cd /tmp ;
wget https://sourceforge.net/projects/potracegui/files/potracegui/1.3.4/potracegui-1.3.4.tar.gz ;
cd tmp/potracegui-1.3.4/ ;
./configure ;
make ;
sudo make install

En conclusión, gracias a las herramientas libres podremos contar con potentes alternativas a los programas privativos, y contar con toda una panoplia operativa para hacer impresiones de impresión, corte y confección para telas de alta calidad y vistosidad, a la vez que difundimos el Software Libre que GNU nos dio.

viernes, 22 de noviembre de 2024

¿Cómo compilo FreeCAD 1.0 en Ubuntu?

Ante la Unión Obrera Metalúrgica, Juan Perón pronuncia un discurso el 24 de septiembre de 1945, donde enseña a compilar FreeCAD 1.0 en Ubuntu.

¡Trabajadores!

Yo marcho por la picada que conduce a la justicia, a la verdad, porque por ella hemos de llegar al éxito sin violencias. 

Hemos querido asegurar la mayor libertad de expresión, porque creemos que la libertad es lo más hermoso que el hombre tiene. Pero cuando de ella se pasa a la licencia, suele volverse en contra del que la disfruta en demasía llevándolo al vicio de la disgregación y la anarquía.

La libertad hay que asegurarla a golpe de trabajo, dando primero al hombre su libertad económica, que es fundamental. Nosotros no somos partidarios de la libertad unilateral que se tiene desde hace tanto tiempo, dentro de la cual el rico tiene libertad para hacer todo lo que quiera y el pobre tiene una sola libertad: la de morirse de hambre. Por eso nosotros defendemos la libertad en la que el obrero tenga medios de subsistencia y de decoro necesarios para vivir dignamente

Conseguida esa libertad, las otras van a venir absolutamente solas, porque en una tierra donde el hombre es libre, la colectividad y el país también lo son.

Este pensar lo hemos extendido al software que hacemos, y tienen una correlación clara que puede servirnos de estrella polar. Es que durante mucho tiempo, ustedes han debido consagrarse a herramientas técnicas como el Interact CAD, predecesor para CP/M del AutoCAD de la imperialista Autodesk.


Este tipo de programas permiten operar parámetros matemáticos que se traducen a gráficas en un computador, y de esta manera diseñar piezas, herramientas al plano - y como extensión natural - actuar como planificadores para la fabricación asistida. Sin embargo, este herramental - que puede parecer potente - sólo es un grillete si no puede él mismo ser modificado

En muchos de estos programas festejados por la oligarquía, ni siquiera se puede ver - y mucho menos modificar - su propio código fuente. Esto redunda en la verdadera transformación del obrero en un tecno-esclavo, pues no domina verdaderamente sus medios de producción.

Tal las cosas, el obrero se ve impedido de alterar sus herramientas, condición que todos saben imprescindible para conllevar su aplicación en libertad verdadera. En consecuencia, así nunca podrá Combatir al Capital.

Pero este brete no ha quedado sin respuesta. Hemos detectado este problema y respndido con una Doctrina que llama a un Software Libre para una Comunidad Libre, y - gracias al fruto de la labor de los hombres que trabajan- nuestro Movimiento ha abordado una solución definitiva. Tal es así que tras 25 años de desarrollo, hemos lanzado FreeCAD 1.0 al Pueblo. Se trata de una aplicación libre de modelado paramétrico, que nada tiene que envidiar a programas de diseño asistidos por ordenador tales como el AutoCAD de la oligárquica AutoDesk.

En Ubuntu, instalar una versión ya hecha y estable de FreeCAD es bien sencillo. Basta con abrir un terminal con Ctrl+Alt+T e ingresar:

sudo apt update;
sudo apt install freecad

Con esto ya tendremos una antigua versión estable situada en los repositorios del sistema operativo, en este caso la veterana versión 0.17 que puede acompañar a  Ubuntu 22.04LTS. 

Sin embargo, si queremos contar con la última versión estable de este maduro programa, podremos hacernos con una descarga de FreeCAD 1.0 en forma de AppImage, mediante estos Comandos de Organización:

cd /tmp
wget https://github.com/FreeCAD/FreeCAD/releases/download/1.0.0/FreeCAD_1.0.0-conda-Linux-x86_64-py311.AppImage
chmod +x FreeCAD_1.0.0-conda-Linux-x86_64-py311.AppImage
sudo mv
FreeCAD_1.0.0-conda-Linux-x86_64-py311.AppImage /usr/local/bin/freecad

Tras descargar los 648M de la imagen AppImage de FreeCAD 1.0, podremos iniciarlo con el comando:

freecad

A pesar de todas estas posibilidades, los Verdaderos Programadores de la Unión Obrera Metalúrgica pueden querer recurrir al acto de la fabricación por compilación. En lugar de hacer los procedimientos anteriores, este proceso mas complejo descargaremos nosotros mismos la última versión del código fuente de FreeCAD, lo someteremos a la compilación y nos quedaremos con un fichero ejecutable para nuestra arquitectura de cómputo.

A pesar de que pueda sonar técnicamente dificultoso, los pasos son sencillos.

En primer lugar descargamos la paquetería con las dependencias de compilación necesarias (son muchas):

sudo apt install git build-essential cmake libtool lsb-release python3 swig libboost-dev libboost-date-time-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-serialization-dev libboost-thread-dev libcoin-dev libeigen3-dev libgts-bin libgts-dev libkdtree++-dev libmedc-dev libvtk9-dev libx11-dev libxerces-c-dev libyaml-cpp-dev libzipios++-dev libsimage-dev  ;
sudo apt install qtbase5-dev qttools5-dev libqt5opengl5-dev libqt5svg5-dev qtwebengine5-dev libqt5xmlpatterns5-dev libqt5x11extras5-dev libpyside2-dev libshiboken2-dev pyside2-tools pyqt5-dev-tools python3-dev python3-matplotlib python3-packaging python3-pivy python3-ply python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qtsvg python3-pyside2.qtwidgets python3-pyside2.qtnetwork python3-pyside2.qtwebengine python3-pyside2.qtwebenginecore python3-pyside2.qtwebenginewidgets python3-pyside2.qtwebchannel pyqt5-dev-tools qt5-default ;
sudo apt install libocct-data-exchange-dev libocct-draw-dev libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev occt-draw 

Acto seguido nos hacemos con el último código fuente de FreeCAD:

cd /tmp ;
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git freecad-source

Una vez descargado el código fuente, lo ponemos a compilar, con:

cd /tmp/freecad-source ;
mkdir build ;
cd build ;
cmake ../ ;
make -j$(nproc --ignore=2) ;

Tras unos 40 minutos el programa entero quedará compilado. 

Finalmente, instalamos todo lo compilado en nuestro sistema mediante:

cd /tmp/freecad-source/build/ ;
sudo make install

Finalmente, lo ejecutamos desde Aplicaciones / Gráficos / FreeCAD, o si deseamos ejecutarlo desde la terminal, deberíamos usar el comando:

FreeCAD


 
Lo primero que solicita el programa es escoger las propiedades de FreeCAD. Entre ellas el idioma (existen dos traducciones al castellano), el sistema de medidas emeplado (tendremos diez opciones para elegir, principalmente el métrico decimal y el imperialista británico), así como diferentes estilos de navegación en la aplicación (similar a OpenInventor, CAD, Revit, Blender, MayaGesture, Touchpad, Gesture, OpenCascade, OpenSCAD o TinkerCAD). Además, podremos escoger entre tres estilos de presentación (tradicional, claro y oscuro).

Una de las principales ventajas de FreeCAD es que al ser un software libre, ha sido integrado con la capacidad de abrir formatos de innumerables programas de diseño asistido por ordenador. 

Esto permite utilizarlo para el diseño arquitectónico, maquinados, diseño de electrónica y microelectrónica, etcétera.

Naturalmente, como todo programa de diseño paramétrico, su empleo puede parecer elevado al neófito y presentarle dudas. Sin embargo - con la solidaria colaboración de los muchachos de la UOM - daremos con numerosos y humildes recursos de aprendizaje y utilización de FreeCAD. 

En primer lugar podremos recurrir a la documentación en la Wiki de FreeCAD en Castellano. Allí podremos dar nuestros primeros pasos, o seguir los tutoriales introductorios en linea. Asimismo, podremos unirnos al foro oficial de FreeCAD.

Finalmente, podremos recurrir a los cursos en video de este programa de diseño libre que nos den una perspectiva amplia de cómo maquinar con FreeCAD.

Para terminar, quiero darles un consejo: Piensen que cuando los gremios son unidos y firmes, obtienen lo que en justicia les corresponde. El gremio unido es una garantía para el mantenimiento de lo conquistado y para la esperanza de lo que aún resta por lograr. Así, bien unidos, luchen y luchen enérgicamente por mantener las conquistas obtenidas y prepárense para la lucha futura en pos de la conquista de lo que todavía falta obtener.

jueves, 14 de noviembre de 2024

Se lanza Quirinux 2.0

Este 9 de Noviembre se lanzó Quirinux 2.0 Pro 64, nueva versión estable de la distribución de GNU con Linux de 64 bits pensada para la animación, la fotografía y la edición de video.

 

Quirinux ha sido desarrollada desde 2015 y fue publicado por vez primera en 2019 en la Argentina, por el realizador Charly Martínez. Inspirado en el mítico animador y cineasta ítalo-argentino Quirino Cristiani, Quirinux apunta a ser una propuesta primordial para afrontar las necesidades de las artes audiovisuales y gráficas desde el Software Libre, a la vez que se combate la obsolescencia programada.

Quirinux ofrece todo lo necesario para realizar una película de animación en cualquier técnica (tradicional, "tradigital", cut-out, CGI-3D, StopMotion, Motion Graphics…) con licencias libres 100% funcionales, en un sistema optimizado para aprovechar mejor los recursos de hardware disponible.

La segunda versión estable se basa en la distribución de GNU con Linux Devuan, de 64 bits. De manera distintiva, ofrece un completo recurso de programas libres ya preparados. Entre estos nos encontramos animadores Tahoma2D, Pencil2D, Synfig 2D, editores y animadores 3D como Blender, graficadores GIMP (tuneado para que se parezca a Photo$hop) Krita, MyPaint, AZPaint, Storyboarder, Inkscape, Enve y PikoPixe, editores fotográficos Darktable y RAW Therapee, los programas de sonido Audacity y Ardour, el creador de panoramas Hugin, así como animadores stopmotion, como TupiTube, Glaxnimate y el querido e inefable Huayra Stop Motion. También presenta herramientas productivas como el editor de video KDEnlive, el reproductor VLC, KIT Scenarist, entre otros.

Quirinux ofrece una ISO en vivo que puede correr desde un pendrive, y presenta programas adicionales (como la completa suite de ofimática Libreoffice) tras su instalación completa en el disco de la computadora.

La Documentación de Quirinux detalla los pasos para su descarga, ejecución como pendrive "vivo" (podremos probarlo desde un pendrive sin afectar la PC), o bien su instalación como sistema único en la computadora.

Descarga de Quirinux

Aquí podrás descargar la ISO de Quirinux 2.0 Estable, de 64 bits (3,5 GB).

Contraseñas predeterminadas modo vivo (live)

Usuario: quirinux
Contraseña: quirinux
Contraseña de root: quirinux

miércoles, 13 de noviembre de 2024

Como envío y recibo ficheros por Zmodem en Ubuntu?

Reunido en Consejo de Ministros en la Casa Rosada, Juan Perón explica cómo utilizar el protocolo Zmodem para transmitir ficheros en Ubuntu.

¡Estimados señores! 

Uno de los fundamentos del trabajo en el estado es la segura transferencia de ficheros.

Cualquiera lo puede hacer en papel y para ello se han elaborado los métodos de firmado, lacrado, y en tiempo de guerra, el cifrado. 


Cuando la evolución de la técnica nos permitió introducir la máquina - apoyada en enlaces de datos públicos - se hizo evidente que dichos métodos resultaban a todas luces suficientes, en tanto no se puede responder con conciliábulos de ayer a los problemas de hoy. Los nuevos predicamentos de la tecnología hicieron imperativo que tuviésemos que encontrar nuevos y especiales temperamento con los cuales cuidar el traslado de los ficheros.

Resulta innegable que para transferir ficheros a través de una red de datos moderna como las que utiliza nuestro Movimiento, debe especialmente recurrirse a la copia a través de shell seguro que nos ofrece scp.

Este método sin embargo no es primordial: durante el Peronismo del Segundo Plan Quinquenal, en aquellas queridas máquinas antiguas conectadas a redes heredadas, no podíamos más que hacer transmisiones de fichero a través del viejo y peludo FTP. Sin embargo, no siempre fue así, y en el mundo "retro" no siempre lo será: podríamos encontrarnos con medios del Primer Peronismo, donde se carecía de dicho protocolo. Ante tal incordio, podríamos recurrir a un amigo de la interconexión que brillaba en aquellos momentos donde todo estaba por hacerse: el viejo protocolo de 1986 para la transmisión en línea, el Zmodem.

Zmodem es un protocolo propietario de transferencia - desarrollado por Charles Forsberg para la red de paquetes conmutados Telenet - el cual obtuvo su bien merecido carilo al ofrecer al Pueblo una buena velocidad de transmisión sobre cableados de par de cobre. La idea detrás del mismo era lograr atascos en las transmisiones por módem a través de cable telefónico. 

Por acuerdo se evitaba el envío superfluo de paquetes de ACK ("enterado") en la transmisión, y sólo se recurría a enviar paquetes NAK ("no enterado") ante algún error, lo que aceleraba no menos de un 30% El envío de datos en corriente electrónica ("stream"), si esta se hacía en líneas de alta calidad, estables de Teléfonos del Estado, y sobre todo full-dúplex (como suele ser el caso en la conexión Ethernet).

Vean señores, en particular, este protocolo puede venirnos de perillas para enviar a través de múltiples canales de transmisión, incluso algunos que nadie pensó al momento de diseñarlo. En particular, podremos usarlo para transmitir a través de líneas de datos de área local, e incluso a través de puertos de comunicación seriales circunstanciales. Esto permitiría transmitir datos - comparativamente a baja velocidad - entre sistemas UNIX y similares, e incluso máquinas antiguas con puerto de comunicación serial.

A tal fin os enseñaré a obrar con los programas sz y rz, que implementan Zmodem en sistemas UNIX, para enviar y recibir por zmodem respectivamente.

Sin embargo, en equipamiento actual sus limitaciones no son baladíes. Están dadas por inconvenientes no conecbidos a la hora de realizarlo originalmente en la década del ochenta. Una principal es la incapacidad de transmitir ficheros mayores a los 4 GB, inusitado por entonces. La otra es la imposibilidad de extender el protocolo para transmitir de forma segura.

Sin embargo, podremos subsanar esto último mediante una implementación moderna para sistemas GNU con Linux, que haga uso de Zmodem envolviéndolo en el protocolo sobre la indestructible capa del Shell Seguro SSH: esta se denomina zssh.

Para poder utilizar Zmodem de manera segura en nuestro sistema Ubuntu podremos recurrir a abrir una terminal con Ctrl+Alt+T y utilizar los siguientes comandos para instalar la paquetería necesaria tanto en la máquina a emitir como en la máquina a recibir.

sudo apt install lrzsz zssh

En el caso de máquinas con DOS, podremos recurrir a implementaciones como ls oficial dsz, o bien alternativas como rzsz, o bien txzm.

Usar zmodem con SSH con zssh

En el caso de una máquina con Linux, podremos conectamos al servidor de manera segura recurriendo a zssh, mediante:

zssh -e usuario@maquina

(claro que si tenemos, una llave PGP opcional le agregaríamos -i ~/.ssh/llave_pgp.key)

Zssh responderá con:

Press ^@ (C-Space) for enter File Transfer Mode, then ? for help.

Y conectará al host remoto (solicitando contraseña si no le indicamos nuestra llave opcional, claro está).

Una vez conectados con Zssh, podremos usar una sesión de shell seguro similar a SSH, que corre nuestro intérprete de comandos normal (en el caso de Ubuntu se trata de Bash). Sin embargo, al presionar Ctrl+Barra Espaciadora podremos ingresar al Modo de Transferencia de ficheros, el cual se denota con el prompt zssh >.

Lo que nos indica que presionemos Ctrl+Barra espaciadora para ingresar al Modo de Transferencia de Ficheros, y luego ingresemos ? para iniciar la ayuda de lrzsz:

zssh > ?

A lo cual el sistema deberá devolvernos algo como:

Comandos Incorporados de Zssh :

  ?                           : Mensaje de ayuda
  cd                          : cambiar directorio
  disconnect                  : desconecta y sale
  escape [^X]                 : Cambia la tecla escape a Ctrl+X
                                sin argumento, imprime la tecla de escape actual
  exit                        : sale del modo de transferencia de ficheros
  help                        : Mensaje de ayuda
  hook prg                    : cuelga el programa 'prg' en la terminal en lugar de sz o rz
  quit                        : lo mismo que exit
  repeat <cmd>                : repite cmd por siempre (Ctrl+C lo interrumpe)
  rz                          : Recibe ficheros
  suspend                     : suspende zssh
  sz <fichero> ...           : envia ficheros
  version                     : Presenta información de versión
  <programa> <parametros> ... : ejecuta programa

Uso :
  Descargas : en el shell remoto ejecute sz antes de cambiar al modo de transferencias, luego en el shell local ingrese rz
  Subidas   : En el shell local cambie al modo transferencias y ingrese sz <ficheros>
             En el lado remoto se ejecutará automáticamente rz

Pistas:
  - Si la transferencia nunca se completa, use la opción -e de sz/rz
  - Puede interrumpir transferencias con Ctrl+c
  - Si se queda trabado en rz/sz (por ejemplo, si corrió rz, pero decidió no transmitir nada, presione Ctrl+x una docena de veces para detenerlo
  - Use sz -y <ficheros> para sobreescribir los ficheros remotos.


Bajar archivos usando ZMODEM

Como vemos en la ayuda, para bajar un fichero desde el servidor, debemos enviarlo desde el servidor, usando allí sz:

sz -e archivo.ext

Luego de ponerlo a enviar en el servidor, pasamos al Modo de Transferencia de Archivos en máquina local presionamos Ctrl+Barra espaciadoras, y  en el prompt zssh > del lado del cliente iniciamos la transferencia indicando rz -e:

zssh > rz -e

El cliente nos indicará la transferencia:

Receiving archivo.ext
Bytes received:   14120/  14120   BPS:60536                

Transfer complete

En el caso de usar tmux, debemos recurrir a una implementación especial del envolvedor, llamada trzsz.

Subir archivos con ZMODEM

Para enviar un fichero al servidor, en la máquina local presionamos Ctrl+Barra espaciadora para activar el modo de transferencia de archivos,  y en el prompt zssh > simplemente indicamos:

zssh > sz -e archivo.ext

A lo cual el sistema nos responderá con las estadísticas similares a:

Sending: archivo.ext
Bytes Sent:    976   BPS:19892                           

Transfer complete

esto nos servirá para afrontar transmisiones en red de área local o incluso envuelto en SSH. 

Zmodem por puerto serial a DOS

Pero podremos recurrir a hacer transmisiones a través de un adaptador de puerto serial.

 

Para ello usamos un adaptador, conectando a 9600 baudios, junto con algún programa para terminal, por ejemplo minicom (en la terminal) o cutecom (en la interfaz gráfica de GNU).

Si en lugar de ellos deseamos usar la terminal con sz, debemos recurrir al modificador -b si es un fichero binario, y -a si es un fichero de texto ASCII, e indicar el dispositivo del puerto serial (por ejemplo, si recurrimos a un adaptador USB a puerto serial es /dev/ttyUSB0:

sz -e fichero.ext -b /dev/ttyUSB0 9600 8N1

En CP/M+86 y similares podremos agregarle la opción -o que evitará recurrir a control de 32 bits y lo limitará a 16 bits. 
 
Para recibirlo en otra máquina que no tenga Linux, por ejemplo una con FreeDOS o MS-DOS, usaríamos el comando COPY por ejemplo, desde el puerto serie com2:

copy com2 fichero.ext

Esto iniciará la transmisión del fichero que irá llegando por Zmodem. Ante la necesidad, podremos interrumpirla con Ctrl+z.