martes, 16 de noviembre de 2021

Guía para estudiantes del taller de BASH

Guía para estudiantes del taller de BASH.

 

Primera línea BASH:

#!/bin/bash

 

Borrar la pantalla:

clear


Echo y read:

read -p "Por favor, escribe tu nombre: " nom
echo "Hola, " $nom

 

Otro tipo de read (esperar por la pulsación de 1 sola tecla):

read -n1 -s tecla


Esperar 5 segundos:

sleep 5


Bucle infinito:

for (( ; ; ))                                     
do                                                     

     echo "Holaaaaaaaaaaa"

done                                              


Bucle infinito con contador:

for (( ; ; ))                                     
do

     cont=$((cont+1))

     echo $cont

done                                              



Colorear, efectos, posicionamiento Y X:

tput setaf 12 (active foreground o caracter)

tput setab 14 (active background o fondo)

tput blink (parpadeo del cursor)

tput cup 3 7 (poner al cursor en la posición Y3 X7)



Funciones (o "encapsulamiento de código"):

function pepito {

     echo "wenas!"

}

pepito


If - elif - else - fi:

if [[ $var == "sandía" ]];then                  
     echo "Tiene gusto dulce."                      
elif [[ $var == "limón" ]];then
     echo "Tiene gusto ácido."
else
     echo "Si no es sandía ni limón, no sé lo que es."                                      
fi



Azar o aleatoriedad (random):

minimo=1;maximo=10

azar=$((RANDOM*($maximo+1-$minimo)/32768+$minimo))

echo "El número generado es: " $azar

 

 

 

jueves, 4 de marzo de 2021

Guía para instalar VICE (emulador de Commodore) en Linux Mint Debian Edition (y Debian) y no morir en el intento.

 (P) Hugo Napoli, 2021 

Tuve la oportunidad de utilizar una Commodore 64 a temprana edad (¡gracias, "Albertito"!), y eso me cambió la vida. Pocas experiencias han sido tan gratificantes para mí, en mi vida de "ser tecnológico".

Desde niño (y hasta el día de hoy) continúo utilizando una Commodore 128 (real, la cual todavía poseo y funciona) y a la Commodore 64 y a sus demás "hermanas", las utilizo gracias a un recurso de la Commodore 128 (el clásico "GO 64") o a un fantástico emulador, llamado "VICE (VersatIle Commodore Emulator)".


Para los usuarios de Windows, casi siempre todo es más fácil: hay miles de soluciones al alcance de la mano, las soluciones llegan a través de programas y no de procedimientos -para lo cual no se necesita saber mucho de informática (ni de Windows siquiera)-, pero cuando llegamos al terreno Linux... Casi todo puede salir tan bien como mal, si no se sabe lo que se está haciendo.

Es por eso que escribí esta guía de "primeros, intermedios y últimos auxilios"... Para que tengas una referencia más a la hora de "volver a empezar" o "volver a creer", si las cosas se tornan complejas.

Solo una advertencia: estarás utilizando la terminal como superusuario. De este modo, puedes introducir un comando equivocado, o cometer un solo error, y eso podría llevarte a algo fatal a nivel de sistema. ¡Presta atención!

¡Manos a la obra! 



I. Desde el centro de software (por ejemplo, desde "Synaptic"), instala el emulador (se llama "vice") y ve directamente al punto II.

Si allí no lo encuentras, baja desde aquí el paquete "vice_3.3.0.dfsg-2_amd64.deb" e instálalo: https://pkgs.org/download/vice

II. Abre la terminal y prepárate para copiar y pegar comandos en ella.

Un método muy conveniente es seleccionar con el ratón los comandos que aquí dejo, y luego pulsar CTRL + C para guardarlos en memoria. Luego, sobre la terminal, pulsar CTRL + SHIFT + V para pegarlos.

Entonces, en la terminal, ejecuta
sudo su
e introduce la contraseña de root.

III. cd /usr/lib/vice

IV. mkdir temporal

V. cd temp*

VI. Desde aquí descarga (nuevamente) el emulador (en este caso, se llama "vice-3.5.tar.gz"):

VII. cp /hugo/home/Descargas/vice-3.5.tar.gz /usr/lib/vice/temporal
 
1. Sustituye "hugo" por el nombre del usuario que estés utilizando en Linux, y recuerda hacer esto siempre que aparezca la palabra "hugo" en esta guía.
 
2. La versión que empleo como ejemplo es la 3.5, pero en tu caso puede ser otra. De ser así, sustituye el "3.5" por lo que corresponda (siempre que aparezca el "3.5" en esta guía).

VIII. tar vzxf vice-3.5.tar.gz

IX.   cd /usr/lib/vice/temporal/vice-3.5/data/C64/

X.    cp basic chargen kernal /usr/lib/vice/C64/

XI.   cd /usr/lib/vice/temporal/vice-3.5/data/DRIVES/

XII.  cp d1541II d1571cr dos* /usr/lib/vice/DRIVES/

XIII. cd /usr/lib/vice/temporal/vice-3.5/data/PRINTER/

XIV. Ahora, debes ejecutar algunos pasos más para que funcionen también los emuladores de Commodore 128, Commodore VIC20 y Commodore Plus 4:

cd /usr/lib/vice/temporal/vice-3.5/data/C128/
cp basic64 /usr/lib/vice/C128/
cd /usr/lib/vice/temporal/vice-3.5/data/VIC20/
cp basic /usr/lib/vice/VIC20/
cd /usr/lib/vice/temporal/vice-3.5/data/PLUS4/
cp basic /usr/lib/vice/PLUS4/

XV. Desde aquí, descarga una versión más antigua del emulador, (para hacer funcionar también al emulador "Commodore Pet"): https://sourceforge.net/projects/vice-emu/files/old-versions/WinVICE-2.4-x86-r31615.zip/download

XVI. Descomprime el archivo ".zip" que has descargado.

XVII. cp /home/hugo/Descargas/WinVICE-2.4.29-x86/PET/* /usr/lib/vice/PET/

De nuevo: la versión que empleo como ejemplo es la 2.4.29, pero en tu caso puede ser otra. De ser así, sustituye el "2.4.29" por lo que corresponda. 
 
XVIII. Ve al panel de usuarios y agrégate al grupo "kmem"

XIX. En la terminal escribe 
exit
y pulsa ENTER (para salir del modo "superusuario").

XX: para iniciar...    ejecuta...   y pulsa...
    Commodore 64       x64          ENTER
    Commodore 128      x128         ENTER
    Commodore VIC20    xvic         ENTER
    Commodore Plus 4   xplus4       ENTER
    Commodore Pet      xpet         ENTER
    Commodore CBM-II   xcbm2        ENTER
(o ejecuta cada emulador desde el menú de inicio [todos están en la categoría "Otros"], con un simple clic).

SOLUCIONES A ERRORES MÁS COMUNES:

Si no funciona el emulador de "Commodore 128", sigue estos pasos:
Descarga desde aquí la última versión del emulador: https://sourceforge.net/projects/vice-emu/files/latest/download
Descomprime el paquete que has descargado.
En la terminal, ejecuta:
cp /home/hugo/Descargas/vice-3.5/data/C128/* /usr/lib/vice/C128/

Si no funciona el emulador de "Commodore Plus 4", sigue estos pasos:
Descarga desde aquí la última versión del emulador: https://sourceforge.net/projects/vice-emu/files/latest/download
Descomprime el paquete que has descargado.
En la terminal, ejecuta:
cp /home/hugo/Descargas/vice-3.5/data/PLUS4/* /usr/lib/vice/PLUS4/

Si no funciona el emulador de "Commodore CBM II", sigue estos pasos:
Descarga desde aquí la última versión del emulador: https://sourceforge.net/projects/vice-emu/files/latest/download
Descomprime el paquete que has descargado.
En la terminal, ejecuta:
cp /home/hugo/Descargas/vice-3.5/data/CBM-II/* /usr/lib/vice/CBM-II/

Si luego de haber seguido esta guía -al pie de la letra- no funciona ningún emulador, ve a la terminal y ejecuta la siguiente línea:

sudo apt install xa65 libreadline-dev libxaw7-dev libgtkmm-3.0-dev libpulse-dev

Y si aún así no funciona... ¡Instala OpenSuSE Linux, que con 2 clics de ratón, VICE queda instalado y funcionando!


Fuentes consultadas:



martes, 9 de febrero de 2021

Aleatoriedad en BASH.

 (P) Hugo Napoli, 2021 

Procedimiento para obtener un número aleatorio utilizando la función RANDOM% de BASH.
Explicación "paso a paso", utilizando la sintaxis necesaria para un programa para este lenguaje de programación.

Recuerda introducir la línea

#!/bin/bash

al inicio del script para que el mismo funcione. Si quieres, también puedes agregar (debajo del #!/bin/bash) el comando clear, para limpiar la pantalla y que tu programa luzca mejor.

# Preguntaremos al usuario cuáles serán los valores (mínimo y máximo) permitidos, y
# los guardaremos en las variables min y max, respectivamente.

read -p "Introduzca el valor mínimo: " min
read -p "Introduzca el valor máximo: " max

# Ahora, determinaremos cuántos números estarán involucrados en la generación
# del número aleatorio. Esto se logra restándole al máximo el mínimo. Si se busca
# hallar un número entre 50 y 100, estarán involucrados 50 números en el proceso
# 100 (valor máximo) - 50 (valor mínimo) = 50 números.

base=$(($max-$min))

# Sumaremos 1 al valor obtenido, para que el sistema de aleatoriedad interno de BASH
# no produzca valores a partir de 0, sino a partir de 1 (de este modo, en lugar de
# producirse valores entre 0 y 49, se producirán entre 1 y 50).

base=$((base+1))

# Generaremos un número aleatorio que tendrá como límite mayor el valor calculado
# hasta ahora. Si se buscaba un número entre el 50 y el 100, con este procedimiento,
# obtendremos, en realidad, un número del 1 al 50.

n_aleatorio=$(( RANDOM% $base ))

# Al valor aleatorio generado, debemos sumarle el mínimo, para ajustar los límites del
# número verdaderamente buscado. Recordemos que los límites, originalmente, eran
# 50 y 100, pero hubo que convertirlos en 1 (mínimo) y 50 (máximo) debido al
# funcionamiento interno de BASH para este tipo de procedimiento.

n_aleatorio=$((n_aleatorio+$min))

echo ""
echo "El número aleatorio resultante, es el siguiente:" $n_aleatorio
echo ""