jueves, 30 de julio de 2020

¿Cómo instalo una configuración para Emacs?

En 1967 el Justicialismo apuntaba a vencer electoralmente en las primeras lides disputadas sin el oprobioso paraguas proscriptivo. Desde la residencia de Jorge Antonio en el madrileño Paseo de la Castellana, Juan Perón otorga una entrevista al semanario Confirmado, donde analiza el quehacer político argentino y explica cómo agregar una configuración personalizada al editor GNU Emacs.

(...)
La historia tiene su lógica inexorable, y el porvenir pertenecerá, tarde o temprano, a quienes entiendan las premisas básicas. Desde mis comienzos como oficial del Ejército me he dedicado al estudio de la historia, comprobando la decadencia del demoliberalismo y la íntima relación de éste con el comunismo. Las estructuras deben cambiar. La opción es entre una socialización de contenido nacional, humanista y cristiana, y el socialismo internacionalista marxista.

El gobierno y sus puntos de comité creyeron que podían dividir al movimiento. Para lograrlo, recibieron la ayuda de los neos, de los frentistas trasnochados y del embajador de Estados Unidos, Edwin Martin, quien parece no recordar cómo una vez Braden metió el dedo en el ventilador. Pero la cosa no caminó, y la estantería se les vino abajo.

El ministro Palmero debiera ahora mirar con cuidado hacia adelante. Pero es demasiado viejo para poder hacerlo, y, habiendo comprobado la imposibilidad de dividir al movimiento, se dedica a organizar fraudes constitucionales, seguramente mediante una reforma que le permita alejar las elecciones de 1967 en la provincia de Buenos Aires. Intentarán presentar este fraude como una exigencia del Ejército, para enfrentarlo con el Pueblo. Estoy seguro de que los militares advertirán la necesidad de un cambio de estructuras con la colaboración del Pueblo, como mejor método en la lucha contra el comunismo. No olvidemos que la misma revolución que asaltó los gremios, marxistizó las universidades. Hace poco, un cuñado de la señora de Illia vino a pedir mi bendición para un acuerdo con el comunismo. Era inevitable que así ocurriera.

La ausencia de unidad y solidaridad interna sería la única debilidad frente al enemigo. Creo que la Delegada Superior debe esperar ciertas renuncias. Si no, es lógico que se produzcan algunas expulsiones. Todo se pondrá en caja, atendiendo al imprescindible trasvasamiento generacional. Es necesario superar a los dirigentes burocratizados que, enquistados, pierden sensibilidad.

El Conductor debe aplicar toda la fuerza en el lugar y momento oportunos, actuar solamente en la oportunidad indicada. Es lo que he hecho en los últimos acontecimientos. Si Dios bajara a la Tierra, todo el mundo le perdería el respeto, y algún tonto querría en seguida ocupar su lugar.

La doctrina del movimiento es permanente. Aspiramos a una comunidad organizada según la concepción filosófica humanista y cristiana, pero la técnica para lograr esa comunidad varía según las circunstancias; el movimiento, por ello, debe estar siempre atento a la actualización doctrinaria. Si hoy nos preguntáramos qué hacer en el país, diría que el movimiento debe estar alerta a todo el ciclo económico de la producción, transformación, distribución y consumo. Porque el movimiento debe ser un punto fundamental en la lucha por sacar al país del pantano en que está. Frente al país debe haber una persona capaz de exigir y ser obedecido y, el único milagro económico que necesitamos es el de trabajar.

No guardo rencores contra nadie. Estoy dispuesto a contribuir a una salida de la crisis. El problema no son los pactos, y los pactos no me asustan, sean con quien sean. Lo importante son los hechos, y el Movimiento estará en todo lo que constructivamente signifique un cambio de estructuras para el país, para la creación de un país moderno, con sentido popular, nacional, cristiano y humanista.
En su software también se producirá una actualización que ponga al mismo a tono con la libertad del Pueblo. Han de saber que, como editor básico prefiero al justicialista GNU Nano, y como editor de textos al Minimun Profit Text Editor.

Sin embargo, también existe el consabido GNU Emacs, un editor de macros de fundamental utilización en el medio. Esta versión libre del desarrollada por Richard M. Stallman sin duda es uno de las grandes ramas del árbol de los Editores. Sin duda su condición mayor son las numerorísimos módulos o macros que es capaz de utilizar, lo cual suele provocar que quien lo use, deba "tunear" su Emacs según su preferencia personal.
 
En mi caso puedo hacerlo descargando un fichero simple personalizado, con:
 
cd ~ ;
cp ~/.emacs.el ~/.emacs.el.bak ;
wget https://texto-plano.xyz/~peron/pub/emacs.el ;
mv emacs.el ~/.emacs.el
 
Esta personalización es básica para edición de texto UTF-8, que es lo que suelo proveer. Pero en caso de configuraciones más específicas para programación general, la configuración puede ser bastante más compleja. Dar con una puede tornarse tedioso y requerir algo de tiempo, pero en este caso os mostraré la labor de José Massón, quien ha compartido su propia configuración de Emacs llamada pepe-emacs-config, con el Pueblo. Inspirado por la obra de J.P. Fisanotti y su excelente fisa-vim-config, en este caso ha puesto bajo el alcance universal sus preferencias a la hora de utilizar Emacs.

Esta configuración está orientada al desarrollo de programas en lenguaje PHP, pero muchas de sus características también se presentarán útiles para otros lenguajes de programación o tareas generales de edición.

Esta configuración de Emacs incorpora los siguientes módulos : adoc-mode, company, dumb-jump, emacs code browser (ecb), flycheck, geben, iedit, js2-mode, magit, magit-gitflow, markdown-mode, markdown-toc, neo-tree, password-store, php-mode, powerline, projectile, smarty-mode, sqlformat, yasnippet, y muchos más.

Se haya preparada para el Emacs 25.2.2, pero bien podría operar en versiones anteriores. Para hacerla efectiva requerimos que nuestra carpeta ~/.emacs esté vacía. Por tal motivo, si ya usamos Emacs y contamos con una configuración, podríamos querer renombrarla o moverla a una localización diferente para conservarla. También podríamos querer renombrar nuestro fichero de configuración actual ~/.emacs para conservarlo como respaldo también.

Para ello abrimos una terminal con Ctrl+Alt+t e ingresamos los siguientes comandos de organización:

cd ~
mv .emacs.d .emacs.d.respaldo
mv .emacs .emacs.respaldo

En cambio, si no tenemos Emacs instalado en nuestro sistema aún, podremos instalarlo desde la terminal, con los siguientes comandos de organización:

sudo apt install emacs exuberant-ctags git ripgrep silversearcher-ag pylint pep8 php-pear python3-pip

sudo pear channel-update pear.php.net

sudo pear install PHP_CodeSniffer

sudo pip3 install sqlparse

Ahora clonamos el repositorio de la configuración pepe-emacs-config en el directorio de configuración de emacs. Ello lo haremos mediante el siguiente Comando de Organización:

git clone https://github.com/Abuelodelanada/pepe-emacs-config ~/.emacs.d

Acto seguido, ejecutamos Emacs, y este continuará la instalación por sí mismo, instalando los paquetes a través de los repositorios melpa.org y elpa.org. En mi caso, la descarga ha durado unos tres minutos.
 
Una vez que haya finalizado, podremos reiniciar el programa para poderutilizar la nueva configuración.

Ahora tendremos Emacs configurado de la manera deseada. Por ejemplo, podremos contar con autocompletar, iedit, y magit, complementos útiles para la programación de cadenas repetitivas tan comunes en PHP.

Entre las configuraciones descargadas encontraremos varias útiles que cambiarán la estética de Emacs, pero también propondrán un funcionamiento remozado en lo que hace a las funcionalidades de base.

El complemento Neotree se encargará de proveernos un árbol de ramas colapsables para estructurar nuestro código fuente a compartir con el Pueblo Libre.
La funcionalidad que provee el complemento ECB (navegador de código de Emacs) es precisamente permitinos desplazarnos por la estructura maestra del código fuente de una manera sencilla.
La funcionalidad Tabbar permite crear barra de etiquetas coloreadas adecuadamente, que quedarán dispuestas en la parte superior de nuestro editor favorito y nos permitirán editar múltiples buffers en Emacs.

El complemento Company también está incluido.

Atajos
Como toda configuración de Emacs que se precie, esta nos permite una lista de Atajos que la harán especialmente bien pensada para el uso de sus macros asociados. Entre ellos encontramos:
  • %: va a paréntesis asociada
  • F7: conmuta ecb (emacs code browser)
  • F8: conmuta neotree
  • F12: conmuta modo de barra de menú
  • C-;: activa iedit-dwim
  • C-c C-k: copiar línea
  • C-c C-w: copiar palabra
  • C-c C-z: detener subtrabajo de terminal
  • C-c TAB: formatear sql
  • C-c c: comentar región
  • C-c down: flycheck error siguiente
  • C-c u: descomentar región
  • C-c flecha arriba: flycheck error previo
  • C-d: duplica línea actual
  • C-l: va a línea
  • C-t: crea ctags
  • C-x g: status de magit
  • C-x p: corre phpcbf --standard=PSR2 en el buffer actual
  • C-M-flecha izquierda: retrocede en la barra de tabs
  • M-flecha arriba : comienzo del buffer
  • M-down: end-of-buffer
  • C-M-flecha derecha: tabbar-forward
  • S-M-flecha abajo : agranda ventana
  • S-M-flecha izquierda: agranda ventana horizontalmente
  • S-M-flecha derechat: achica ventana horizontalmente
  • S-M-flecha arriba: achica ventana
  • S-flecha abajo: mueve ventana abajo
  • S-flecha izquierda: 'mueve ventana a izquierda
  • S-flecha derecha: mueve ventana a derecha
  • S-flecha arriba: mueve ventana a arriba

martes, 28 de julio de 2020

¿Cómo soluciono el error "NVRM: GPU 0000:01:00.0: GPU has fallen off the bus." en Ubuntu 20.04LTS?

Reunido en la Confederación General del Trabajo, Juan Perón expone sobre los peligros que supone una desconsideración humana sobre los factores ecológicos en su evolución, toda vez que explica cómo solucionar el problema del cuelgue de la gráficas 3D de las placas de video nVidia en Ubuntu.

(...)
Frente al imperativo de la evolución, nosotros debemos pensar que quizás antes del año 2000 - en el que se doblará la actual población de la tierra y disminuirá a la mitad la materia prima para seguir viviendo - se va a tener que producir indefectiblemente la integración universal. Es decir, que los hombres se pongan de acuerdo en la defensa total de la tierra, y en la utilización de la tierra como hermanos y no como enemigos unos de otros.

Además de eso será necesario que se satisfaga la solución a esa superpoblación. Cuando en la tierra ha habido superpoblación - porque eso se ha producido ya en algunas regiones, ya que obedece no al número de habitantes solamente, sino a la desproporción entre el número de habitantes y los medios de subsistencia - las soluciones han sido siempre de dos naturalizas.

Uno es la supresión biológica, es decir matar gente, de lo que se encargan las guerras, las pestes y el hambre, que es la enfermedad que más mata en la tierra. El otro es el reordenamiento geopolítico, que permite una mayor producción y una mejor distribución de los medios de subsistencia.

Si el hombre - en esto que resta hasta ese momento del año 2000 y comienzos del siglo XXI - no ha resuelto el problema por la vía geopolítica produciendo más y distribuyendo con mayor justicia lo que el hombre necesita para subsistir, no quedará otro remedio que lanzar en masa la bomba atómica, que también puede ser una solución si la insensatez de los hombres no ha utilizado el camino constructivo y se ha decidido por el destructivo.

Nuestro sistema opera por designio - a todas las luces similar. Veamos un ejemplo, los cuales suelen explicarlo todo.
En mi sistema dispongo de una placa madre ESC H57H-Mus, cuya electrónica principal sirve de base para un microprocesador Intel i7, 16 GB de memoria RAM, y varios discos de estado sólido que utilizo como almacenamiento. Este equipo no es ya lo más moderno que dispone la técnica, pero al satisfacer mis necesidades computacionales, lo he mantenido remozado como corresponde, por ejemplo con una adaptadora de video nVidia GTX 750 Ti. A este hardware veterano he instalado nuevo software, de excelencia, el Ubuntu Mate 20.04LTS.

Lamentablemente, las nuevas iteraciones del Kernel Linux hacen amplio uso de excelentes condiciones de suspensión y ahorro energético para varios subsistemas (sonido, video, etcétera). Estas características nuevas del software, sin embargo, no son tratadas de forma reticente por la veterana placa madre, y suelen presentar errores bajo diferentes situaciones.

En particular, utilizo el el controlador de video nVidia 440.10 x64 junto con el Kernel 5.4.0-42-generic de Ubuntu Mate. Bajo condiciones de uso de escritorio y aplicaciones 3D con sonido, el sistema gráfico se interrumpe y congela, sin que se cuelgue todo el sistema. Esto se produce sobre todo al utilizar durante un tiempo aplicaciones de escritorio con sonido y efectos de video tridimensional. En tales casos no podremos utilizar el escritorio, y la única forma de recuperar control es resetear el sistema.

Afortunadamenet, al no colgarse completamente, si el sistema cuenta con un servicio SSH será posible ingresar al mismo desde otro equipo en la red, y así será posible realizar algunos chequeos de lo que ha causado el error. Mediante el comando dmesg podremos revisar el status del sistema, y encontramos el siguiente error: "GPU 0000:01:00.0: GPU has fallen off the bus" ("la Unidad de Procesamiento gráfico xxx se ha desconectado del bus").

[26959.161910] NVRM: GPU at PCI:0000:01:00: GPU-2f0e77b9-a938-5e53-1b55-f5b4ab0ad918
[26959.161922] NVRM: Xid (PCI:0000:01:00): 79, pid=1373, GPU has fallen off the bus.
[26959.161929] NVRM: GPU 0000:01:00.0: GPU has fallen off the bus.
[26959.161948] NVRM: A GPU crash dump has been created. If possible, please run
               NVRM: nvidia-bug-report.sh as root to collect this data before
               NVRM: the NVIDIA kernel module is unloaded.


También podríamos ejecutar el programa de reporte de bugs, con:

sudo ./usr/bin/nvidia-bug-report.sh

El problema de desconexión microtemporal de la GPU del resto del bus de control se debe a la funcionalidad de ahorro energético. Esta es capaz de pone en espera o"StandBy" a los clientes gráficos, pero el bus gráfico de la placa madre no lo vuelve a encender con la prontitud suficiente y provoca el cuelgue gráfico.

Para solucionar el problema, necesitaremos activar el Modo Persistencia. El Modo Persistencia es un control interno que activa ("Enabled") o desactiva ("Disabled") esta operatoria en la GPU de nuestra placa de video. Cuando el Modo de Persistencia está activado, el controlador nVidia permanecerá cargado en memoria incluso cuando no existan programas activos que lo usen (tal como el servidor gráfico X11, escritorios gráficos, o el programa nvidia-smi). Lograremos así disminuir la latencia de carga del controlador asociada con la ejecución de varias aplicaciones gráficas tridimensionales dependientes del mismo.

Para verificar el estado actual del Modo de Persistencia de nuestro controlador nVidia e, abrimos una terminal con Ctrl+Alt+t e ingresamos el siguiente Comando de Organización:

sudo /usr/bin/nvidia-smi -q | grep -i Persistence

...el sistema nos devolverá el estado del mismo, que en este caso debería ser Disabled, por "desactivado":

Persistence Mode  : Disabled

Para activar el Modo de Persistencia desde la línea de comandos, podremos ingresar lo siguiente:

sudo /usr/bin/nvidia-smi -pm 1

Nuestro GNU con Linux nos solicitará nuestra contraseña para hacerlo efectivo. Conforme la hayamos ingresado, debería activarse, lo cual quedará indicado con el siguiente mensaje:

Enabled persistence mode for GPU 00000000:01:00.0.
All done.


El problema de esta solución radica en que su acción sólo será temporal, y se revertirá toda vez que reiniciemos nuestro sistema. Nuestro Movimiento es uno que debe propender a lograr soluciones permanentes para los problemas de los argentinos. Por tal motivo, si quisiéramos que el Modo de Persistencia sea realmente persistente en el tiempo, podríamos hacer que este comando que lo active se ejecute automáticamente toda vez que se inicie el sistema, y antes de comenzar el despliegue gráfico. Como ventaja añadida, esto no requerirá que se ingrese la contraseña de Conductor.

Para ello es necesario activar y usar el método tradicional de autoejecución en GNU, el fichero /etc/rc.local. Este se encuentra desactivado en Ubuntu 18.04LTS y superiores, pero podrán activarlo siguiendo estos pasos generales que os he indicado.

Una vez realizado dicho procedimiento, quedará presente el fichero rc.local, y por lo tanto podremos editarlo para que cumpla esta tarea fundamental a fin de que no se cuelgue nuestro video nVidia. Podremos hacerlo ingresando el siguiente comando:

sudo nano /etc/rc.local

...lo cual abrirá el editor GNU Nano con el fichero /etc/rc.local. Debemos pegamos las siguientes líneas antes de la última línea del archivo, la cual debe ser siempre "exit 0":

## Agregado para activar el modo de persistencia
## del controlador NVIDIA.
/usr/bin/nvidia-smi -pm 1

Guardamos con Ctrl+o y salimos del editor con Ctrl+x. Le asignamos permisos de ejecución con:

sudo chmod +x /etc/rc.local

...y finalmente reiniciamos el sistema con:

sudo reboot

A la vuelta, hemos de comprobar que el Modo Persistencia esté activado. Para ello ingresamos nuevamente:

/usr/bin/nvidia-smi -q | grep -i Persistence

...a lo cual ahora el sistema debería devolvernos:

Persistence Mode  : Enabled

Y ya no se debería colgar más la instancia gráfica, a coste de un lógico mayor consumo de recursos computacionales por parte de las aplicaciones gráficas no cerradas que hagan uso de nuestra GPU en Linux.

lunes, 20 de julio de 2020

¿Cómo instalo el controlador de video AMD Radeon en Ubuntu 18.04.4HWE?

En el volúmen Doctrina Justicialista, Filosófica, Política y Social, Juan Perón detalla los pormenores que debe contemplar el Movimiento en condiciones complejas del quehacer político, en tanto que explica cómo instalar los controladores de video AMD y Vulkan SDK bajo Ubuntu 18.04LTS y 20.04LTS.

Yo digo siempre que el hombre es un animal pequeño, y sería extraño que un ser imperfecto no se aferrara a las cosas nimias que nos da la vida. 

Observarán con certeza que cuando un individuo es llevado a una guardia de emergencias habiendo sufrido una fractura expuesta de tibia y peroné, le grita al médico "¡no me corte el pantalón!"... Ante este desatinado, el galeno obrará atemperando al vacuo y presentándole la verdadera elección de circunstancias: "¿gamba o trapo?". Y bueno... ahí se entenderá nuestro afectado de la realidad que sufre.

En la informática suele pasar más o menos lo mismo: nuestro objetivo será convertirnos en peritos a fin de reconocer cuál es la necesidad imperiosa que tenemos, y poder así escoger entre dos elecciones.

Podríamos encontrarnos con con hardware que - por diseño de software privativo - está limitado en sus funcionalidades completas.Esta forma de operar es absolutamente inconveniente, puesto que nos somete a la dependencia comercial y tecnológica.

Mi consejo indubitable es evitar este tipo de hardware. Sin embargo, en casos donde no podamos evitarlo, o bien sea imperioso hacerlo funcionar a cualquier coste, habremos de optar entre dos malas opciones, que implique el verdadero mal menor, y no aferrarenos a un trapo poco útil que sólo nos sirva para declamar.

No es secretos para nadie que - de un tiempo a esta parte - los adaptadores de video AMD (ex-ATI) se han visto beneficiados con un enorme avance en sus características técnicas y de desempeño. Lejos han quedado los días en donde las adaptadoras de video munidas de Unidades de Procesamiento Gráfico (GPU) ATI Radeon ofrecían una respuesta burda con Ubuntu. En estos tiempos, gobernar es crear trabajo y operar con video AMD...

Pues bien señores, han de saber que los núcleos del sistema (Kernels) más actuales utilizados en Ubuntu 20.04LTS (de la rama 5.4 y superior) disponen ya de las facilidades necesarias para disfrutar de video 3D acelerado con AMD sin muchos inconvenientes. Es por tal motivo que recomiendo especialmente esta versión del sistema si su adaptador de video es de dicha marca.

Sin embargo, esta acción no siempre guardó tan altas cimas de facilidad y operatividad. Hasta hace unos pocos meses - y mientras se ponían a punto las nuevas versiones del kernel y del controlador - los incordios de operar con AMD fueron inconmensurables, requiriendo emparchados y especial cuidado con el versionado de las librerías de compilación, y demás inconveniencias en el andamiaje técnico de nuestro sistema GNU con Linux.

En Ubuntu 18.04 y anteriores es complejo hacer funcionar adecuadamente las arquitecturas de hardware de video AMD más modernas. Precisamente, porque se decidió abandonar hasta ultimo momento la puesta a punto de dichos controladores, esperando al nuevo lanzamiento de la versión 20.04LTS de Ubuntu y sus nuevos kernels de versión 5.4 y superior.

Esto sin duda ha complicado a quienes por designio no han podido o querido actualizar, por cualquier motivo que haya sido, su sistema Ubuntu u otros GNU con Linux.

En el Justicialismo decimos: ningún hombre ha de hacer lo que no quiere hacer, salvo trabajar por el bien común. Esto mismo lo replicamos en nuestros sistemas de cómputo.

Es por ello que si contamos con Ubuntu 18.04LTS, el cual al momento todavía cuenta con vida útil de soporte, y a su vez nuestro hardware de video responde a una AMD Radeon de las últimas arquitecturas, recién ahora habremos de poder hacer una instalación correcta de controladores de video AMDGPU.
Un ejemplo suele aclararlo todo, como decía Napoleón. En este caso particular cuento con un adaptador de video de arquitectura AMD Radeon Vega, de buen desempeño, pero en el caso de Ubuntu 18.04LTS no opera sin más. Debemos instalar una versión anterior del controlador AMDGPU.

Afortunadamente, para evitar conflictos raros, AMD ha sabido proveer junto con este último fichero de controlador de versión 20.10, a las veresiones 19.10 y anteriores que necesitaremos si usamos Ubuntu 18.04LTS.

Para instalar este controlador AMDGPU, debemos primero descargarlo desde la web oficial.

Podrán descargarlo haciendo uso de su navegador mientras hacen clic aquí. En este caso selecciono el hardware necesario en la instalación, una AMD Radeon RX Vega de vieja generación.

Tras unos momentos que dependen de nuestra velocidad de conexión, debería descargarse los 320MB del fichero. Acto seguido podremos tomar en nuestras manos la acción de instalarlo desde la terminal.

Para ello ingresamos nos dirigimos a la carpeta donde hubiésemos descargado el controlador AMDGPU-Pro:

cd ~/Descargas/
tar -Jxvf amdgpu-pro-20.20-1089974-ubuntu-18.04
cd ~/Descargas/amdgpu-pro-20.20-1089974-ubuntu-18.04/

Nota: Naturalmente que si utilizamos Ubuntu 20.04LTS los comandos variarán en consecuencia con el controlador diferente, en tal caso similares a:

cd ~/Descargas/amdgpu-pro-20.20-1098277-ubuntu-20.04.tar.xz
tar -Jxvf amdgpu-pro-20.20-1098277-ubuntu-20.04.tar.xz
cd ~/Descargas/amdgpu-pro-20.20-1098277-ubuntu-20.04/

Cualquiera sea nuestra versión de Ubuntu, en este punto podremos ejecutar el instalador ingresando:

sudo ./amdgpu-pro-install

Nuestro sistema nos solicitará nuestra Contraseña de Conductor y ejecutará el guión de instalación. Este realizará el procedimiento necesario para nuestro hardware de video.

Es normal que el instalador descargue paquetería oficial de Ubuntu, y nos solicite responder cómo queremos instalar la implementación OpenCL. Esto refiere al soporte que tendrá el software gráfico bajo nuestro sistema. La opción PAL proveerá soporte a la arquitectura Vega 10 y superior, en tanto que la opción Legacy nos dará soporte al hardware más antiguo que el Radeon RX Vega 10 (escencialmente, todos los adaptadores de video video AMD utilizados con anterioridad a los sistemas Ryzen 7 lanzados desde finales de 2017). Normalmente recomiendo esto.

Si quisiéramos instalar todo sin que nos hiciera preguntas usaríamos el comando:

./amdgpu-install -y

El programa detectará nuestra versión de Kernel y adaptará el controlador según sea necesario, ahorrándonos pasados dolores de cabeza con el emparchado del kernel.

Una vez realizado el ajuste, podremos reiniciar el sistema operativo.
Vulkan SDK
Es interesante saber que si deseamos, opcionalmente podríamos querer instalar el el Vulkan SDK para Linux, una suite de desarrollo que hace uso de la GPU de las placas de video AMD para tareas de procesamiento general. Esta suite está destinada a programadores que anhelen hacer uso de las características avanzadas de las GPU AMD en sus programas.

Instalar Vulkan desde Repositorio PPA

La manera más sencilla de instalar Vulkan SDK consiste en hacerlo desde el repositorio oficial para Ubuntu 18.04. Para ello, tras instalar el controlador AMDGPU y reiniciar nuestro equipo, podríamos ingresar los siguientes Comandos de Organización:

wget -qO - http://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add -
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-bionic.list http://packages.lunarg.com/vulkan/lunarg-vulkan-bionic.list
sudo apt update
sudo apt install vulkan-sdk

Instalar Vulkan SDK con el paquete instalador

Otra forma de instalarla, es haciendolo mediante el método antiguo, descargando el controlador desde la web oficial de Vulkan SDK:
En este caso de ejemplo se ha descargado la versión 1.2.141.2. Una vez descargado el programa, lo instalaremos con los siguientes comandos:

sudo apt update

sudo apt install libglm-dev cmake libxcb-dri3-0 libxcb-present0 libpciaccess0 libpng-dev libxcb-keysyms1-dev libxcb-dri3-dev libx11-dev g++ gcc g++-multilib libmirclient-dev libwayland-dev libxrandr-dev libxcb-ewmh-dev git python3 bison libx11-xcb-dev liblz4-dev libzstd-dev

sudo apt install qt5-default qtwebengine5-dev

Luego instalamos Vulkan SDK haciendo caso a la versión que hayamos descargado. Por ejemplo:

cd ~/Descargas/
tar xvzf vulkansdk-linux-x86_64-1.2.141.2.tar.gz
cd ~/Descargas/1.2.141.2/
sudo ./vulkansdk
source setup-env.sh

Para que las variables de ambiente de Vulkan SDK continúen funcionando al reinciar el sistema, debemos agregarlas a nuestro fichero .profile. Para ello ingresamos:

nano ~/.profile

Y le agregamos el siguiente contenido:

## Variables de Ambiente agregadas para que funcione
## Vulkan SDF toda vez que se inicia el sistema.
export VULKAN_SDK=~/Descargas/1.2.141.2/x86_64
export PATH=$VULKAN_SDK/bin:$PATH
export LD_LIBRARY_PATH=$VULKAN_SDK/lib:$LD_LIBRARY_PATH
export VK_LAYER_PATH=$VULKAN_SDK/etc/vulkan/explicit_layer.d
(naturalmente, adaptaremos la variable VULKAN_SDK si hubiésemos utilizado otro directorio). Luego guardamos el fichero .profile con Ctrl+o y salimos del editor Nano con Ctrl+x.


Vulkan SDK es compatible con:

AMD Radeon™ RX 5700/5600/5500 Series GraphicsAMD Radeon™ Pro WX-series​
AMD Radeon™ VII Series Graphics​ AMD Radeon™ Pro WX 9100
AMD Radeon™ RX Vega Series Graphics​ AMD Radeon™ Pro WX 8200
AMD Radeon™ Vega Frontier Edition ​AMD FirePro™ W9100
AMD Radeon™ RX 550/560/570/580/590 Series Graphics AMD FirePro™ W8100
AMD Radeon™ RX 460/470/480 Graphics ​​AMD FirePro™ W7100
AMD Radeon™ Pro Duo AMD FirePro™ W5100
AMD Radeon™ R9 Fury/Fury X/Nano Graphics AMD FirePro™ W4300
AMD Radeon™ R9 380/380X/390/390X Graphics
AMD Radeon™ R9 285/290/290X Graphics
AMD Radeon™ R7 240/350
​​AMD Radeon™ R9 360 Graphics

Podremos encontrar la documentación en línea aquí.

Si quisiéramos desinstalar Vulkan SDK, podríamos ingresar en la terminal los siguientes Comandos de Organización:

sudo apt purge vulkan-sdk
sudo apt autoremove

sábado, 18 de julio de 2020

¿Cómo instalo Minimun Profit Text Editor para programar en Ubuntu?

En el discurso ante los obreros de la Carne, Juan Perón expone las necesidades de la remuneración por el trabajo, y enseña cómo instalar el editor de texto Minimun Profit para la terminal de Ubuntu.

(...)
¡Trabajadores!

Al crear la Secretaría de Trabajo y Previsión, dijimos: "se inicia la era de la Política Social Argentina". A un año de existencia venimos a reafirmar cuanto dijimos, y seguir haciendo en vez de decir, y a seguir realizando, en vez de prometer.

Algunos malos políticos que se creen honrados y valerosos después de haber huido al extranjero porque se investigaba su conducta, han intentado defenderse acusándonos de demagogos. Si demagogia es defender sincera y lealmente a los que sufren y trabajan, si demagogia es impedir efectivamente la explotación del hombre por el hombre, si demagogia es evitar en los hechos la injusticia social y buscar la verdadera unión de los argentinos detrás de su bandera, si demagogia es impedir la lucha y odio entre hermanos para reemplazarla por la cooperación y el amor, ¡yo soy demagogo!

Así como los hombres carecen de valor cuando no poseen principios y convicciones, cuando son hombres sin ideales, las organizaciones políticas no tienen valor si no poseen también un alma colectiva e ideales colectivos. Esa alma colectiva se alcanza por la penetración de la Doctrina, y la Doctrina no es más ni menos que la representación de la aspiración suprema de esta alma colectiva.

El individuo se hace interesante en función de su participación en el Movimiento Social, y son las características evolutivas de éste las que reclaman atención preferente. Para derribar las defectuosas concepciones de la etapa de los privilegios, fue necesario un desdoblamiento implacable del individuo. Pero apresurémonos a reconocer que tal mutación debe considerarse precedida de una larga etapa teórica. La práctica corresponde a nuestro siglo y está en sus comienzos.

Vean señores, la comunidad nacional como fenómeno de masas aparece en las postrimerías de la democracia liberal. Ha desbordado los límites del ágora política ocupada por unas minorías incapaces de comprender la novedad de los cambios sociales de nuestros días. El Siglo XIX descubrió la Libertad, pero no pudo idear que ésta tendría que ser ofrecida de un modo general, y que para ello era absolutamente imprescindible la igualdad de su disfrute.

La República Argentina ha seguido un desenvolvimiento natural dentro del campo de la evolución del Siglo XIX y del Siglo XX. Dentro de esa situación, la masa de la población argentina ha sido - como la de gran cantidad de países latinoamericanos - una masa totalmente sumergida, es decir, gente que en su medio de vida no ha tenido nunca lo suficiente para subsistir en estado de felicidad y de salud. Esa es una realidad que ningún argentino puede negar cuando ha visto, como hemos visto nosotros y como todavía existen en el interior del país, masas profundamente sumergidas.

Cada Siglo tiene su conquista, y a la altura del actual debemos reconocer que - así como el pasado se limitó a obtener la Libertad - el nuestro debe proponer la Justicia.

El mal y más grande error que cometió el Capitalismo en los Siglos XIX y XX ha sido, casualmente, el oponerse al sindicalismo organizado. Porque el sindicalismo es una fuerza colosal. Soy de los que piensan que el sindicalismo es una organización de derecho natural como la familia, porque no hay nada más lógico desde que la Humanidad es Humanidad, que los mejores compañeros sean aquellos que han derramado el sudor, juntos, en una tarea común. Ellos re reúinen por derecho natural, como la familia.

Para nosotros, el problema social se resuelve de una sola manera: obrando realísticamente para buscar una perfecta regulación entre las clases trabajadora, media y capitalista; procurando una armonización perfecta de fuerzas, donde la riqueza no sea perjudicada; propendiendo por todos los medios a crear un bienestar social, sin lo cual la riqueza es un verdadero fenómeno de espejismo que puede romperse de un momento a otro. Una riqueza sin estabilidad social puede parecer poderosa, pero será siempre frágil, y ése es el peligro que - viéndolo - trata de evitar por todos los medios la Secretaría de Trabajo y Previsión.

El Justicialismo ha destruido el derrotismo de los que dicen que no hay que producir ni trabajar. Mediante el sistema justicialista, el obrero argentino trabaja para sí, porque si produce más puede exigir más paga. Si no produce, arruina al patrón, pero en el fondo, se arruina a sí mismo.

De su paga brotará su ahorro. La Nación necesita del ahorro de todos sus habitantes por modestos que sean. En su conjunto, el pequeño ahorro popular constituye una fuerza pujante y vigorosa, en cuya substancia se alimentan los procesos de producción y el trabajo, públicos o privados. La potencia creadora del ahorro, que ha sido puesta de relieve de múltiples formas, está expresada en la obra de la civilización humana.

Indudablemente que si de su paga un porcentaje se destina al ahorro social, podría parecer que nuestros obreros disponen de una ganancia mínima. Sin embargo, la potencia creadora del ahorro - que ha sido puesta de relieve de múltiples formas - está expresada en la obra de la civilización humana. Es esta ganancia mínima la que lo permite.

Las naciones más adelantadas de la tierra han sentido devoción por el ahorro y por el trabajo creador, que es un aliado inseparable, y por ello exhortamos al pueblo, a esta nueva era de la vida, para que siga por los derroteros que señalan estos pensamientos como una contribución singularmente significativa en favor de la obra en que estamos empeñados.
En pos del mismo no hemos más que proporcionar los justos paquetes de software que de él guardan dependencia. Uno de ellos alaba fundamentalmente esta ganancia mínima. Se trata del Minimun Profit Text Editor, un luminoso ejemplo. Consiste en un editor de texto multiidioma destinado a programadores, y ha sido liberado al dominio público por  su creador Ángel Ortega.

Para instalar Minimun Profit Text Editor en nuestro sistema debemos descargar el código fuente del mismo y sus dependencias, compilarlas e instalarlo en nuestro sistema. Este procedimiento, que parecería complejo es sumamente sencillo en Ubuntu. Consiste en abrir una Terminal con Ctrl+Alt+T e ingresar los siguientes Comandos de organización:

Primero instalamos las dependencias:

sudo apt install git

El sistema nos solicitará nuestra contraseña de Conductor. Una vez instaladas las mismas, podremos llevar a cabo el resto del procedimiento pegando en la terminal el siguiente bloque de comandos, y presionando Enter.

cd ~ ;
git clone https://github.com/ttcdt/mp-5.x/ ;
cd mp-5.x/
./config.sh ;
make ;
sudo make install

Si todo va bien, deberían haber quedado instalado el editor. Podremos ahora y toda vez que lo deseemos, ejecutarlo desde Aplicaciones / Programación / Minimun Profit Text Editor, o bien desde la terminal mediante mp-5.

Con F11 y F12 podremos achicar o agrandar la tipografía.

Para invocar la compilación de un proyecto, podremos utilizar la función Build (presionando F2), Si existiese un fichero makefile en el directorio actual, todos los objetos serán extraídos de él y quedarán listados para que seleccionemos uno. El elegido será ejecutado con make, y el resultado aparecerá en la pantalla en un documento de solo lectura para ser analizada. También aparecerían posibles errores y advertencias de compilación, en las cuales podremos navegar con F3 (para avanzar) y Ctrl+F3 (para retroceder).

Una de las características fundamentales es su ayuda contextual para la programación. Para activarla presionamos F1.

Entre las características fundamentales del Minimun Profit encontraremos quecuenta con remarcado de sintaxis para muchos lenguajes de programación populares, como C. C++, Perl, Ruby, HTML, Python, PHP, guiones de intérprete de comandos, etcétera.

Puede editar múltiples ficheros al mismo tiempo, y los bloques de código puede copiarse y pegarse entre ellos. Si iniciamos el editor desde la terminal de texto se utilizará la versión escrita en curses. También podríamos forzar el inicio de dicha versión mediante:

mp-5 -txt

Hace un uso creativo de etiquetas creadas por la utilidad externa ctag, que son usados para mover instantáneamente funciones o variables dentro de nuestro código fuente, y completado por símbolos para evitar tener que tipear nuestros propios nombres de funcines una y otra vez.

Minimun Profit Text Editor dispone de tres diferentes Modos de Selección de Texto: "Movimiento", "Bloque" y "Vertical".

El modo "Movimiento" es la manera convencional de seleccionar texto. Al presionar Mayúsculas, y usar cualquiera de las combinaciones de teclas de desplazamiento (izquierda, cursor derecha, palabra a la derecha y palabra a la izquierda, arriba, abajo, avanzar página o retroceder página, comienzo de línea, final de línea, comienzo del documento y final del documento) o bien haciendo clic con botón izquierdo del ratón y arrastrar el mismo. Adicionalmente, podremos usar clic con botón derecho del ratón y arrastrar para ampliar la selección. Una vez que el bloque de texto haya sido resaltado, cualquier tecla de movimiento lo deseleccionará. Si tipeamos algo, esto reemplazará lo que antes estaba seleccionado. Al presionar Supr o Retroceder, se borrará el texto seleccionado. Aunque este modo Movimiento es lo que un usuario no iniciado esperaría, su operatividad no es efectiva en interfases de texto devido al soporte defectivo o faltante de las librerías de programación o sistemas de base.

Por lo tanto también incorpora el modo de selección de "bloque". Al repsionar la tecla F9, podremos indicar el comienzo y el final de una cadena texto a seleccionar. La selección sobrevivirá a cualquier movimiento de cursor (de hecho, es la única manera de marcar otro lugar es desplazarnos a otro lugar del texto y marcar otro final). Podremos extender el bloque arriba o abajo tanto como queramos. Reemplazas y borrar operarán de una manera lógica. Además, el resto de las operaciones como Búsqueda, Reemplazar, etcétera, se aplicarán unicamente en la región seleccionada (si es que elegimos una). La selección sólo desaparecerá cuando copiemos, borremos, reemplacemos, hagamos clic con el ratón, o deseleccionemos (presionando la tecla F8).

El modo de selección "Vertical" también funciona marcando el comienzo o final del bloque de selección, pero la selección tomará forma de un cuadrado (de x1,y1 hasta x2,y2) en lugar de una selección por líneas. Esto se realiza por defecto utilizando Ctrl+b. La selección también podrá extenderse repetidamente. De manera similar a cuando nos hayamos en el Modo de selección "bloque", el texto marcado quedará desactivado una vez que lo copiemos, o al presionar F8.

Las combinaciones de teclas, menúes, y colores son totalmente configurables. Así como las plantillas de texto pueden ser fácilmente definidas y accedidas.
Es capaz de operar en múltiples plataformas, utilizando caracteres ANSI o Curses, y soporte en QT4/QT5, GTK+, KDE, tanto en ventana

Asimismo, contaremos con toda una serie de atajos que facilitan el arte de escribir código. Entre ellos encontramos:

Alt+a abre la barra de menúes
Ctrl+a abre la barra de menúes en la versión de terminal.
Ins Conmuta entre el modo de inserción o el modo sobreescribir.
Cltr+z Deshacer.
Alt+Flecha arriba: Desplaza la pantalla hacia arriba
Alt+Flecha Abajo: Desplaza la pantalla hacia abajo
Alt+Flecha izquierda indenta el bloque de texto.
Alt+Flecha Derecha desindenta el bloque de texto.
Ctrl+k: Activa la división de palabras.
Ctrl+Flecha Derecha: Avanza a la siguiente palabra.
Ctrl+Flecha izquierda: Retrocede a la siguiente palabra.
Ctrl+Inicio: Desplaza al principio del archivo.
Ctrl+Fin: Desplaza al final del archivo.
Ctrl+d: Lista las secciones.
Ctrl+Flecha arriba: Se mueve a la sección de arriba.
Ctrl+Flecha abajo: Se mueve a la sección de abajo.
Ctrl+y: Borra línea.
Ctrl+w: Cierra ventana
Ctrl+q: Sale
F1: Ayuda.
F2: Build.
F3: Busca siguiente.
F4 ajusta las palabras del párrafo.
F5: Busca palabra con error otrográfico.
F6: Busca palabra repetida.
F7: Ejecuta Macro.
F8/F9: Marca/Desmarca Etiqueta
F10: Graba Macro.
F11 y F12 disminuyen o aumentan el tamaño del tipo de letra (sólo en terminales gráficas).

viernes, 10 de julio de 2020

¿Cómo administro las actualizaciones de Snaps en Ubuntu?

Durante su cátedra Filosofía Peronista, Juan Perón expone sobre las concepciones cósmicas en el quehacer humano, así como detalla cómo definir las actualizaciones de paquetes Snaps en Ubuntu.

(...)
El software responde - por designio - a un ciclo que podremos encontrar en todos los órdenes de la vida. Sabemos que en el microcosmos la célula habita y se organiza por un instinto que creemos programado. En nuestro ambiente diremos que los hombres nos organizamos en tribus y Movimientos, que también creemos programados. Y en el macro cosmos - donde a una escala mayor - los cuerpos operan en el mismo sentido y regidos por la misma programación natural, que es en definitiva aquella que lo rige todo.

Decía entonces que el software debe oficiarse en lo mismo que la célula, los hombres, o las galaxias: ha de actualizarse en su descendencia, so pena de envejecer y desaparecer. A menudo estas actualizaciones traen mejoras, o parches de seguridad vital. Pero al no ser creación divina sino obta de los hombres, ¡ay! a veces portarán errores de origen que son importantes de minimizar y evitar.

Solo un tonto sometería un ambiente de misión crítica a la actualización a la pavota. En tales sistemas es importante lograr un alto grado de supervisión y precisión, y de ello seremos los encargados como Conductores de Sistema.

No es secreto para nadie que - de un tiempo a esta parte- Ubuntu ha adoptado junto con los paquetes de software Deb similares a los de Debian, los paquetes de software autocontenidos Snaps. Estos permiten operar en un sentido idealmente más estanco, al incorporar en sí mismos las dependencias de terceros paquetes de software.

Han de saber que no soy muy adepto a los mismos y los evito en Ubuntu todo lo que sea posible, prefiriendo versiones debianizadas. Algunos me han preguntado porqué no instalo directamente Debian en lugar de Ubuntu, y puedo responder que es una propuesta válida, pero sobre gustos no hay nada escrito, y los peronistas lo saben...

Aún así, los Snaps incluyen poco conocidos mecanismos de actualización automática. Mediante ellos, el residente de Snaps revisa la Tienda de Snaps para comprobar si se han lanzado nuevas versiones de las mismas. Lo típico es que esta revisión se produzca unas cuatro veces por día, y en la vasta mayoría de los casos, se llevará a cabo sin problemas.

Sin embargo, no podemos dejar de saber que en ciertos casos las actualizaciones de Snaps podrían tener que ser diferidas o pospuestas, o simplemente llevadas a cabo con un nivel de control más refinado y mayor. Existen varias maneras de hacer esto.

Control de Revisión de los Snaps


El tiempo de refresco en el cual se revisan las actualizaciones de los snaps es gobernado utilizando cuatro opciones de programación para todo el sistema. Estos opciones son:

  • Refresh.timer: Define la frecuencia de temporizador de actualización. Este parámetro puede usarse para definir cuándo se revisarán la disponibilidad de actualizaciones para los snaps, de manera tal que no entren en conflicto con otras actividades, tales como reuniones laborales, acciones de resguardo de datos o actividades críticas similares.
  • Refresh.hold: Pone en espera el siguiente revisión de actualizaciones hasta la hora y fecha definida. Esta opción de espera nos permitirá posponer las actualizaciones hasta por los siguientes 60 días. Podremos utilizarla en combinación con la configuración del temporizador para especificar una ventana de tiempo muy específica para que se produzca la actualización de snaps.
  • Refresh.metered: Permite pausar la revisión de actualizaciones toda vez que la conexión a la red esté medida. Vean señores, por defecto la revisión de snaps permanece activada aún sobre conexiones de red medidas. Sin embargo, podríamos querer conservar uso de transferencias de datos o costos en ciertas conexxiones, pausando las revisiones de actualización de snaps si estamos bajo tales condiciones.
  • Refresh.retain: Configura cuántas revisiones de un snap quedarán almacenadas y retenidas en el sistema. Lo normal es que se conserven las últimas versiones de los snaps instalados.
La combinación de estas cuatro configuraciones os permitirán una buena flexibilidad para controlar las actualizaciones de snaps de vuestro sistema. En particular, las opciones timer ("temporizador") y hold ("en espera") pueden usarse para crear la ventana temporal en la que quisiéramos realizar la actualización de paquetería snap. De esta forma podríamos preveer las tareas requeridas pre y post actualización (chequeos de funcionalidad, respaldo de datos críticos, etcétera).

Configuración del tiempo para Snaps


Observemos algunos ejemplos prácticos, pues suelen explicarlo todo, como decía Napoleón.

Supongamos que deseamos configurar nuestras actualizaciones de snaps para que se lleven a cabo únicamente durante los horarios de la noche, entre las 01:00 y las 2:00 de la mañana (en el formato de 24 horas). Esto lo definiríamos con un comando de organización:

sudo snap set system refresh.timer=01:00-02:00

Conforme hayamos configurado nuestra ventana horaria de actualización de snaps, podríamos también querer observar lo que nos reporta nuestro sistema. Para ello ingresamos:

snap refresh --time

...a lo cual nuestro GNU con Linux debería devolvernos algo como:

timer: 01:00-02:00
last: hoy a las 17:19 AR3
next: hoy a las 01:00 AR3

Existen algunas variaciones disponibles para este ordenamiento que podríamos considerar. Podríamos querer conservar la capacidad de configurar el horario de actualizado para horas específicas, o bien ventanas temporales para cada día de la semana. O bien podríamos querer omitir ciertos días, o plantear en qué semana particular de un mes querríamos realizar dichas actualizaciones de snaps. Para ello podremos usar los valores 1-4 para definir las semanas del mes. Ej, mon3 será el tercer lunes de cada mes, mientras que 5 denota la última semana del mes, ya que ningún calendario en la tierra actual cuenta con más de 31 días.

Al configurar el intervalo de espera requiere ingresar un formato de fecha específico que conforme el estándar RFC 3339. Esto puede sonar muy extremo, pero es una convención. Podrán utilizar los siguientes comandos de referencia para convertir las fechas deseadas al formato correcto:

date --date="TMZ AAAA-MM-DD HH:MM:SS" +%A-%m-%dT%H:%M:%S%:z

Por ejemplo:

date --date="AR3 2020-08-01 13:00:00" +%Y-%m-%dT%H:%M:%S%:z
2020-08-01T13:00:00+01:00

De esta manera podremos configurar el valor de refresco utilizando la siguiente cadena formateada de fecha:

sudo snap set system refresh.hold=2020-08-01T13:00:00+01:00

sudo snap get system refresh.hold
2020-08-01T13:00:00+01:00

Una vez que este tiempo en espera esté configurado, podremos revisar el horario de refresco nuevamente:

snap refresh --time

Temporizador: 01:00-02:00
last: hoy a las 17:19 AR3
hold: en 31 días, a las 13:00 AR3
next: mañana a las 01:00 AR3 (pero en espera)

Como es evidente, la información combina los parámetros tanto de las configuraciones del timer y hold. La siguiente actualización sería mañana a la 1PM, como se define por el temporizador, pero no se llevará a cabo (por 31 días) hasta que el período de actualización expire.

De manera similar, podremos configurar las actualizaciones sobre conexiones medidas. Al configurar el valor en "hold" ("en espera"), se impedirán las actualizaciones, mientras que el cambiar los valores a "null" ("nulo") permitirán que las actualizaciones se produzcan o continúen. Podremos entonces utilizar

sudo snap set system refresh.metered=hold

...o bien:

sudo snap set system refresh.metered=null

Indudablemente podremos combinar esta opción con la del temporizador o en espera para crear una rutina granular y precisa de actualización que no interferirá con las tareas críticas, y aseguren la consistencia máxima buscada. A la vez, también nos permitirán así recibir los parches funcionales y de seguridad que necesitemos.

Entonces, ocasionalmente podríamos querer revisar qué snaps se actualizarán durante la próxima refrescada. Esto nos dará una idea de la lista pendiente de nuevas revisiones de snaps que recibirá nuestro sistema.

snap refresh --list

Nombre     Versión    Rev Publicador Notas
lxd     4.3     16044 canonical/ -
snapcraft    4.1.1    5143 canonical/ classic

Ahora, la lista completa de los snaps instalados será mayor. Por ejemplo, el sistema actualmente tiene la versión 4.2 de lxd instalado:

snap list lxd

Nombre Versión Rev Rastreo Publicador Notas
lxd 4.2 15878 latest/stable canonical/ -

Noción de refresco


Esta es otra característica que podremos utilizar para controlar las actualizaciones. En algunos casos podríamos querer ejecutar una tarea vital que no debe ser interrumpida de manera alguna. Para tal fin, podremos utilizar la opción de noción de refresco para hacer que la aplicación no sea ejecutada mientras se ejecuta. Si intenta ejecutar una actualización manual del Snap mientras está en ejecución (y estamos usando esta funcionalidad), recibiremos un mensaje del sistema similar al siguiente:

snap refresh okular --candidate

error: cannot refresh "okular": snap "okular" has running apps (okular)

Como hemos visto, las actualizaciones automáticas no pueden considerarse una lista sábana a la cual podemos votar sin pensar. Esto es así pues los medios puestos a nuestra disposición requieren un estudio concienzudo. Los sistemas GNU con Linux para Escritorio, destinados a Servidor e bien dispositivos conectados, emanan requermientos y sensibilidades particulares que no podemos soslayar, y son estos los que motivan un mecanismo de actualizción bastante extenso y configurable.

La combinación práctica de poder disponer horarios de actualización, retrasar las mismas hasta por 60 días, sumadas a la funcionalidad de conexión de datos medidas, y noción de refresco e inhibición de actualización que tienen los snaps y un buen rango de opciones, nos permiten establecer una política pragmática de conducción, con la cual llevar a cabo un régimen de actualizaciones de software robusto y confiable.

lunes, 6 de julio de 2020

¿Cómo instalo AstroMenace en Ubuntu?

Avezado catredrático, Juan Perón se distinguió en las aulas de la Escuela Superior de Guerra en asignaturas como historia y filosofía. Es recordado su curso de Conducción destinado a la oficialidad, donde enseñó cómo instalar el videojuego de scroll espacial AstroMenace en Ubuntu.

(...)
El hombre es un animal que posee ante todo, imaginación. Esta es un
alto proceso creativo, ya que permite al individuo manipular información generada intrínsecamente con el fin de crear una representación percibida por los sentidos.

El ser humano no es un ser gregario, sino que está especialmente preparado para desarrollarse en Comunidad. Es este el motivo por el cual podemos decir sin temor a equivocarnos, que existe también una imaginación colectiva.

El Conductor ha de basarse en ella para crear: es él un meta-creador y un intérprete de la imaginación colectiva.

La imaginación colectiva da sustento a una particular cosmovisión, y esta a la cultura que emana de ella. No es secreto para nadie que las propias comunidades se han permitido imaginar figuras de hipercreación que las justifiquen: sus Divinidades.

Pues bien señores, nuestro Movimiento es una organización de creación Humana, y como tal no podemos pretender que lo formen héroes o dioses. Ya es bastante con que tengamos mujeres y hombres de bien. Pero esto no quita que reflejemos en ellos los viejos anhelos que nuestra especie destina como gran causa universal.

Desde tiempos milenarios los hombres han levantado suss ojos al cielo y al contemplar las estrellas se han preguntado qué era eso, y qué hay más allá. No podía ser para menos, el espacio representó siempre la Frontera Final. Pero como sucede con todo secreto, siempre hubo un tonto se que preguntaba si eso se podía comprar... Esta real fascinación se espeja en todo uso del software, que es también una herramienta nacida de la imaginación humana
Entre los primeros juegos electrónicos que empleaban técnicas de video para su desarrollo, siempre la temática espacial fue una de las primeras representadas. Encontramos así al Spacewar!, el clásico software libre peronista que corría en mainframes DEC PDP-1, e involucraba dos naves disparándose en el espacio sideral que rodeaba a un pulsar gravitacional.

Su desarrollo simplón esconde la necesidad técnica de contar con un equipamiento de hardware y software capaz de presentar en una pantalla de tubo de rayos catódicos a los llamados "sprites", elementos gráficos móviles que fungían de representaciones temáticas. Era un desarrollo consecuencia de la necesidad primaria de representar letras en un monitor.

Hubo de transcurrir un desarrollo mayor en estas tecnologías primigenias, pero una vez que fue posible direccionar en el banco de memoria de un sistema de cómputo una matriz destinada a la representación de puntos, y pudo hacerse esto con suficiente velocidad sobre una pantalla luminosa en contante refresco, se pudieron crear no solamente caracteres, sino también distintas representaciones gráficas o desplazamientos de los objetos ("scroll") en una pantalla de video. Pudo representarse así una imagen que oficiara de "telón de fondo", y otra imagen más pequeña capaz de desplazarse. Se producía así la ilusión de movimiento en un personaje relativamente estático.

Se logró así una dinámica típica para un videojuego, donde el software podría disponer el ritmo de juego, a la vez que el jugador debe interactuar adaptándose y reaccionando. Sumar sonido en conjunción con la imagen animada es otro requisito que se logró satisfactoriamente. En la práctica la mecánica  involucra nromalmente un personaje o vehículo en desplazamiento, capaz de sortear obstáculos o disparar contra amenazas. De acuerdo a la dirección del juego podíamos contar con scroll vertical o scroll horizontal.

Este este casi os ofreceré un juego que presenta un novedoso scroll en primera persona, desarrollado por Viewizard.

Se trata del AstroMenace.

Para ello abrimos una terminal con Ctrl+Alt+T e ingresamos el siguiente comando de organización:

sudo apt-get install astromenace

Para ejecutarlo, podremos ir a Aplicaciones / Juegos / AstroMenace.

Como en todo juego que se precie, nos encontraremos con una animación y con un menú principal destinado a definir la configuración del juego, las opciones de video y sonido, etcétera.
Para comenzar una nueva partida, podremos presionar el botón Start Mission.

Antes de comenzar una misión nos encontraremos con la ventana de armamento, que nos permite disponer los distintos sistemas de armas en los anclajes de nuestro vehículo.

Normalmente podremos elegir entre distintos tipos de armas lanzaproyectiles o lanzarrayos, así como armamento lanzable autoguiado, con distintos tipos de impulso.
La temática de este scroll en tercera persona se basa en enfrentar a tiro limpio distintas flotas de astronaves invasoras. Para ello debemos tener agilidad esquivando en vuelos sus maniobras en formación, toda vez que les disparamos.

Las amras menos consumen poca energía de nuestros reactores, pero las descargas de potencia pueden acabarse, por lo que debemos administrar hábilmente nuestro gatillo y en ciertos casos, economizar munición.

Confomre la dificultad va avanzando, los ataques del enemigo se hará mas agresivo, toda vez que podrán también dar empleo a sistemas de armas máss avanzados (misiles rastreadores, cohetes impulsados, minas espaciales, etcétera).

Cuando avanzamos un nivel, podremos reparar nuestra nave o recargar energía o munición para nuestras armas. Como cada modelo de nave presenta distintas configuraciones, dependiendo de la misión o amenazas podríamos querer variar la carga útil de la misma.
Si elegimos la opción Información podremos analizar todos los objetos, incluyendo los 22 tipos de naves que dispone el juego. Las mismas están categorizadas entre navez de caza, interceptores rápidos, potentes bombarderos lentos, así como  naves rápidas  de exploración. También se nos presentarán otros sistemas útiles, como interferidores para una determinada cantidad de misiles enemigos, escudos de energía, misiles perseguidores, etcétera.
La épica del juego se complementa con el aspecto sonoro, ya que incorpora una banda de sonido de buena calidad producida con software libre.