viernes, 8 de agosto de 2025

Cambiar las cuerdas del tendedero

Las cuerdas del tendedero se van deteriorando hasta llegar a partirse por lo que cada cierto tiempo hay que cambiarlas, estos días en los que estamos muchos de vacaciones es un buen momento para hacerlo, vamos a ver una manera sencilla de cambiarlas usando la cuerda de al lado como apoyo:

Supongamos que tenemos un tendedero con varias cuerdas que están para cambiar como éste:
 

Un truco sencillo es retirar una cuerda y amarrar la que se va a poner a la contigua, hay que seguir los siguientes pasos:
  1. Pasamos la cuerda por una de las ruedas de arrastre.
  2. Deslizamos la cuerda contigua de manera que el nudo de unión esté junto a la rueda de arrastre por la que hemos pasado la cuerda que vamos a poner.
  3. Hacemos un nudo para unir provisionalmente la cuerda, hay que hacerlo de manera que al mover la cuerda de apoyo se desplace la cuerda que queremos poner.
  4. Una vez que la cuerda nueva llegue a la otra punta  deshacemos el nudo con cuidado de no perder la punta de la cuerda.
  5. Pasamos cuerda por la rueda de arrastre, de manera que si esa parte de la cuerda pasó por debajo en la rueda de enfrente así debemos ponerla (o por arriba en caso contrario.
  6. Volvemos a anudar y ahora arrastramos la cuerda en sentido contrario hasta volver a la rueda de arrastre inicial.
  7. Anudamos los dos extremos cuidando que quede bien tensa.
  8. Según el tipo de cuerda puede que se destense con el tiempo y tengamos que deshacer el nudo y volverla a tensarla. Ni se os ocurra usar cuerdas de cáñamo, como la lluvia se tensan tanto que destrozan las ruedas de arrastre.
¿Y como cambio la primera?

Pues el procedimiento es similar solo que en lugar de apoyarte en la otra cuerda habrá que ir pasándola por la ventana, lo puede hacer una sola personal pero es más cómodo con la ayuda de otra.



Algunas cuerdas se dan de sí con el tiempo y es posible que tengas que re-tensarlas, pero NO uses nunca cuerdas de cáñamo, se tensan tanto al mojarse que rompen las ruedas del tendedero.

viernes, 1 de agosto de 2025

Emular el Commodore 128 con 80 columnas con VICE

VICE es un emulador libre y multiplataforma de la amplia gama de ordenadores Commodore que no eran ni Amiga ni PCs.
Hace tiempo expliqué como instalarlo y añadirle todo lo necesario para hacerlo funcionar, aunque si no te quieres compilar también se puede instalar con RetroMultiInstaller.

Hoy vamos a ver como emular el Commodore 128, un ordenador de 8 bits, muy potente pero como otros llegó tarde, todas sus mejoras las podéis ver en su artículo en la wikipedia pero aquí lo que vamos a destacar es su capacidad para usar dos monitores a la vez, uno conectado por vídeo compuesto de 40 columnas y otro por RGBI de 80 columnas.

En un Commodore 128 real podríamos activar un monitor u otro pulsando una tecla "40/80 DISPLAY".
El monitor activo es el que muestra el prompt READY y donde aparecen los comandos que tecleamos y el resultado de la ejecución de los mismos.

Los que no tenemos la suerte de tener uno de estos ordenadores lo podemos emular con vice, para lo cual ejecutamos el comando:

x128

Se nos abrirán dos ventanas mostrando los dos monitores.


En principio aparecerá el promp Ready en el monitor compuesto de 40 columnas que es donde aparecerá todo lo que escribamos, mientras que el monitor RGBI de 80 aparecerá con la pantalla negra, pero si tecleamos el comando:

GRAPHIC 5

Aparecerá el prompt ahora en el monitor de 80 columnas, si queremos volver al monitor de vídeo compuesto tecleamos:

GRAPHIC 0

Si queremos que al cambiar borre la pantalla a la que transferimos el control deberíamos pasarle un segundo parámetro con valor 1, es decir, para cambiar y borrar las pantallas de 40 o la de 80 columnas tendríamos que teclear respectivamente:

GRAPHIC 0,1

GRAPHIC 5,1

De esta manera se podría utilizar en un programa ambas pantallas de manera alternativa, incluso se puede dejar un mensaje en la pantalla que no va a estar activa para avisar al usuario que use la otra, con un programa similar a este:

10 GRAPHIC 0,1
20 PRINT "ENCIENDE LA PANTALLA DE 80 COLUMNAS"
30 GRAPHIC 5,1
40 PRINT "SALUDOS EN EL MONITOR DE 80 COLUMNAS"

Este programa lógicamente devolvería el prompt en el monitor RGB.

En el caso del software comercial específico del C128 éste debería usar el monitor correcto para el funcionamiento deseado.

 

¿Y que pasa si quiero ejecutar CP/M a 80 columnas?

Sí, efectivamente, otra de las características que incorporaba del C128 era un procesador Z80 para ejecutar CP/M sin cartuchos adicionales pero si lo ejecutamos con el anterior comando lo veríamos a 40 columnas, lo que es un problema para los programas que requieren más columnas ya que para iniciarlo hay que introducir el disco de CP/M y reiniciar la máquina, con lo que no tendríamos acceso a los comandos de Basic antes descritos.

El emulador VICE también permite ejecutar por defecto el monitor RGBI de 80 columnas pero para ello hay que lanzarlo pasándole un parámetro tal que así:

x128 -80

De esta manera si cargamos CP/M y reiniciamos lo hacemos con 80 columnas de ancho y por tanto podríamos disfrutar de programa como el remake de Gorilla.BAS del que ya comenté las versiones de CPC y PCW en un reciente artículo de AUA.


En el caso de Windows posiblemente tendréis que crear un acceso directo con un comando similar a este:

x128 /80col

Este juego os lo podéis descargar de la página del autor, que incluye entre otras, una versión para el C128 con el autoarranque de CP/M preparado.

 

Fuente: Using 80 Columns in VICE Commodore 128 Emulator.

 

viernes, 25 de julio de 2025

Instalar VirtualBox en Debian con extension pack

VirtualBox es un software de virtualización muy fácil de instalar y desinstalar que no requiere licencias para su uso, aunque tiene una parte que no es libre llamada extesion pack que se puede usar para fines educativos y es necesaria si se quiere tener acceso a cosas como impresoras, portapapeles compartido, etc... 

Para instalar correctamente VirtualBox con Extension Pack en Debian 12 hay que seguir los siguientes pasos: 

  1. Si tenemos una versión previa de Virtual Box HAY QUE DESINSTALARLA o nos dará un error.
  2. Descargar VirtualBox, para lo cual debemos ir a la página de descargas de las versiones para GNU/Linux y elegir la correspondiente a Debian 12, o bien descargarla directamente desde consola, con un comando similar a este (el nº. de versión puede cambiar):
    wget https://download.virtualbox.org/virtualbox/7.1.12/virtualbox-7.1_7.1.12-169651~Debian~bookworm_amd64.deb
  3. Instalar VirtualBox:
    sudo dpkg -i virtualbox-7.1_7.1.12-169651~Debian~bookworm_amd64.deb
  4. Instalar dependencias si sale un error solicitándolas:
    sudo apt install -f
  5. Nos descargamos la versión correspondiente de VirtualBox extensión pack a esta versión de VB haciendo clic en el botón de "Accept and download", o si lo prefieres descargarlo desde la consola:
    wget https://download.virtualbox.org/virtualbox/7.1.12/Oracle_VirtualBox_Extension_Pack-7.1.12.vbox-extpack
  6. Ejecutamos la instalación del extension pack arrastando el archivo al VirtualBox arrancado, o desde consola:
    virtualbox Oracle_VirtualBox_Extension_Pack-7.1.12.vbox-extpack
  7. Nos pedirá aceptar la licencia educativa para poder instalar al ser esta parte del virtualizador no libre. 

 
Y listo, ya puedes disfrutar de tus máquinas virtuales.


¿Y para Debian 13 que sale la versión estable en un par de semanas? 

Lo mismo, solo que tendrás que bajarte la versión para esa versión en concreto y suele tardar algo más en estar disponible, así que si vas a necesitar VirtualBox mejor espera a que esté disponible para hacer la actualización y ya lo tienes sólido como una roca ;-)

viernes, 18 de julio de 2025

¿Cómo configurar dos VirtualHost en Apache2 con diferentes versiones de PHP?

Hace poco vimos como instalar y usar dos versiones distintas de php, ahora vamos a afinar más y vamos ha hacer que cada virtualHost de Apache2 use una versión distinta de PHP (por ejemplo, PHP 7.4 y PHP 8.3) en Debian 12, la forma más robusta y recomendada es usar PHP-FPM junto con el módulo proxy_fcgi de Apache. Así, cada sitio web puede ejecutar su propia versión de PHP de manera simultánea e independiente.

Pasos para la configuración:

  1. Instala y habilita los módulos necesarios de Apache:
    sudo a2enmod proxy_fcgi setenvif
    sudo systemctl restart apache2
  2. Asegúrate de tener instalados y activos los servicios PHP-FPM para cada versión
    Por ejemplo:
    sudo systemctl enable php7.4-fpm
    sudo systemctl start php7.4-fpm

    sudo systemctl enable php8.3-fpm
    sudo systemctl start php8.3-fpm
    Verifica que los sockets existan en /run/php/ (por ejemplo, php7.4-fpm.sock y php8.3-fpm.sock).

  3. Configura los archivos de VirtualHost
    Ejemplo para PHP 7.4
    Archivo: /etc/apache2/sites-available/site1.tu_dominio.conf
    <VirtualHost *:80>
        ServerAdmin admin@site1.tu_dominio
        ServerName site1.tu_dominio
        DocumentRoot /var/www/site1.tu_dominio

        <Directory /var/www/site1.tu_dominio>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>

        <FilesMatch \.php$>
            SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
        </FilesMatch>

        ErrorLog ${APACHE_LOG_DIR}/site1_error.log
        CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
    </VirtualHost>
    Ejemplo para PHP 8.3
    Archivo: /etc/apache2/sites-available/site2.tu_dominio.conf
    <VirtualHost *:80>
        ServerAdmin admin@site2.tu_dominio
        ServerName site2.tu_dominio
        DocumentRoot /var/www/site2.tu_dominio

        <Directory /var/www/site2.tu_dominio>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>

        <FilesMatch \.php$>
            SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost"
        </FilesMatch>

        ErrorLog ${APACHE_LOG_DIR}/site2_error.log
        CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
    </VirtualHost>

  4. Habilita los sitios y recarga de Apache:
    sudo a2ensite site1.tu_dominio.conf
    sudo a2ensite site2.tu_dominio.conf
    sudo systemctl reload apache2

En conclusión:

  • Cada VirtualHost especifica su versión de PHP mediante la directiva SetHandler apuntando al socket de PHP-FPM correspondiente.
  • Puedes tener tantos sitios como necesites, cada uno con su propia versión de PHP, sin conflictos.
  • Esta configuración es válida tanto para entornos de desarrollo como de producción y es la más flexible y mantenible

.

viernes, 11 de julio de 2025

M2000: emulador Phillips P2000

M2000 es un emulador libre de ordenadores Philips P2000, uno de los primeros ordenadores domésticos de 1981 que, heredero de las consolas Videopac, funcionaba con cartuchos y minicassettes. NO ES UN MSX.

El mismo autor incluye en otro repositorio software de ejemplo para el M2000.

Uno de sus cartuchos incluía un Microsoft Basic muy limitado pero con el que se podían hacer algunas cosas y que probarlo es un buen ejercicio para conocer los inicios de la informática de consumo. También traía cartuchos de Pascal y procesador de textos, estando disponibles otros incluso con CP/M.


Para quien simplemente quiera instalarlo y echarle un vistazo sin complicaciones, ya se puede instalar desde el script RetroMultiInstaller y no necesita leer el siguiente apartado del artículo.


Compilar M2000

Para quien prefiera compilarlo por si mismo debe ejecutar los siguientes comandos:

sudo apt install git build-essential liballegro5-dev
git clone https://github.com/p2000t/M2000
cd M2000
make allegro

Dentro de esta carpeta tendremos un archivo ejecutable llamado M2000 que debemos ejecutar con el comando;

./M2000

Para mayor comodidad recomiendo crear un acceso directo en el escritorio o en los menús, por ejemplo.

Por cierto, funciona perfectamente en PC con distros de 64 y 32 bits, pero también en todos los modelos de raspberry pi y similares.


Enlaces de interés

Para quien quiera saber más sobre este ordenador y su funcionamiento hay varios artículos sobre la serie Phillips P2000:

viernes, 4 de julio de 2025

RetroMultiInstaller: los menús solo muestran apps compatibles con el ordenador que lo ejecuta (e instalación desatendida)

RetroMultiInstaller, el script facilitador de instalaciones tenía el defecto de ofrecerte todos los scripts de instalación en sus menús, aunque no fueran compatibles con tu hardware, así por ejemplo, si lo ejecutabas en una Raspberry Pi podrías terminar instalando un programa que no fuera compatible con ARM y que por tanto no iba a funcionar.

También se ha corregido la instalación por lotes desatendida y ya aparecen solo los programas ordenados para la arquitectura actual.
 
Recuerda que, si ya tienes instalado RMI, lo puedes actualizar seleccionando las opciones:
Update ► update own
 

¿Como lo he hecho y como puedes añadir más instaladores?

Para solucionar esto he incluido un nuevo mecanismo que mira las arquitecturas declaradas en los archivos menu/*.txt de tal manera que la definición de cada línea de script quedaría ahora con esta estructura:
arquitecturas etiqueta definición
  • Las arquitecturas se ponen una detrás de otra separadas por el carácter tubería "|" por ejemplo, NUNCA ESPACIOS NORMALES.
  • La etiqueta sigue siendo el identificador del script.
  • La definición tampoco permite ESPACIOS NORMALES pero sí espacios duros.
Algunos ejemplos, que podemos encontrar casi todos en el archivo menus/multisystem.txt:
  • Si ponemos como arquitectura 'all' no filtrará, es decir, mostrará el script del menú independientemente del hardware desde el que ejecutemos RMI:
    all ZEsarUX ZEsarUX multi emulator
  • Podemos poner una sola arquitectura, en la siguiente línea tenemos un script que solo se mostraría en Raspberry pi OS de 32 bits:
    armv7l Retropie Multi Emulationstation Enviroment
  • Un ejemplo de un script que se ejecutaría en varias arquitecturas, en este caso solo para Intel de 32 o 64 bits o Raspberry pi OS de 64 bits.
    x86|x86_64|aarch64 RetroVM Retro Virtual Machine
  • Las opciones para abrir otro menú o salir del actual deben tener la etiqueta menu para no aparecer en las opciones de la instalación desatendida:
    menu Exit Return to Main Menu
  • Si en un momento un script dejara de funcionar ya no teníamos que borrarlo podemos dejarlo para arreglarlo más adelante y en el menú poner como arquitectura algo así como 'none' o 'disabled':
    none oldgame Old Game
 

He encontrado un programa que NO funciona, ¿qué hago?

Ahora queda la ardua tarea de ir comprobando que las arquitecturas definidas en cada script se corresponden con los programas que se pueden ejecutar en cada arquitectura, como seguro se me van a pasar muchos necesitaré vuestra ayuda en los comentarios para que me indiquéis los que no funcionan.
 
Aunque si abrís una incidencia en el propio gitlab me resultará más fácil tener el seguimiento de lo que está pendiente de arreglar. ;-)



Instalación desatendida por lotes (batch)

viernes, 27 de junio de 2025

Instalar dos versiones distintas de php en Debian

Para instalar varias versiones de PHP, por ejemplo, 7.4 y 8.3 en Debian 12 , podemos usar el repositorio de Ondřej Surý, que es la fuente recomendada y más actualizada para múltiples versiones de PHP en Debian. Aquí tienes la guía paso a paso:

  1. Actualizamos el sistema:
    sudo apt update
    sudo apt upgrade -y
  2. Instalamos las dependencias que vamos a necesitar:
    sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common curl wget
  3. Agremos el repositorio de Ondřej Surý:
    sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
    echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
    sudo apt update
  4. Instalamos php 7.4 y sus módulos necesarios:
    sudo apt install -y php7.4 php7.4-cli php7.4-fpm php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-zip
  5. Instalamos php 8.3 y sus módulos necesarios:
    sudo apt install -y php8.3 php8.3-cli php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip
  6. Comprobamos las instalaciones:
    php7.4 -v
    php8.3 -v
  7. Podemos cambiar la versión activa de php manualmente desde la línea de comandos:
    sudo update-alternatives --set php /usr/bin/php7.4
    O para PHP 8.3:
    sudo update-alternatives --set php /usr/bin/php8.3
  8. O Habilitar y arrancar PHP-FPM para cada versión:
    sudo systemctl enable php7.4-fpm
    sudo systemctl start php7.4-fpm
    O para PHP 8.3:
    sudo systemctl enable php8.3-fpm
    sudo systemctl start php8.3-fpm

Esta metodología es segura y ampliamente usada en entornos de producción y desarrollo.


Configuración extra para Moodle

Para usar con Moodle hay que instalar también los siguientes paquetes:

sudo apt install php7.4-intl php7.4-xmlrpc php7.4-soap

Y

sudo apt install php8.3-intl php8.3-xmlrpc php8.3-soap 

En los archivos  /etc/php/X.Y/fpm/php.ini hay que añadir o cambiar en la sección correspondiente:

max_input_vars = 5000 

Y reiniciamos los servicios php-fpm

sudo systemctl restart php7.4-fpm

sudo systemctl restart php8.3-fpm



¿Qué diferencia, ventajas e inconvenientes, hay entre usar update-alternatives o php-fpm?

update-alternatives y PHP-FPM cumplen funciones distintas en la gestión de PHP en sistemas Debian:

  • update-alternatives: Herramienta del sistema para seleccionar la versión de un ejecutable por defecto en la línea de comandos (CLI), como php, phar, etc.
  • PHP-FPM: Gestor de procesos FastCGI para PHP, diseñado para servir aplicaciones web de alto rendimiento, gestionando pools de procesos PHP que atienden peticiones web a través de sockets o puertos TCP.

Cuadro comparativo:

Característicaupdate-alternativesPHP-FPM
PropósitoSelección de versión de ejecutable CLIProcesamiento eficiente de peticiones web PHP
ÁmbitoLínea de comandos y scripts del sistemaServidores web (Apache, Nginx, etc.)
Cambio de versiónAfecta solo a la CLI (no al servidor web)Cada pool puede usar una versión diferente
ConcurrenciaNo aplicaManeja múltiples peticiones concurrentes
PersonalizaciónLimitada a la selección de ejecutablePools configurables por usuario, dominio, etc.

 

Consideraciones:

  • Cambiar la versión de PHP con update-alternatives solo afecta a la CLI, no a los sitios web servidos por PHP-FPM.
  • Para que un servidor web use una versión específica de PHP-FPM, debes apuntar el socket o puerto correspondiente en la configuración del servidor web.
  • No puedes tener un único socket genérico para alternar versiones de PHP-FPM sin perder la posibilidad de ejecutar varias versiones simultáneamente.
  • PHP-FPM es imprescindible para entornos web modernos y de alto tráfico, mientras que update-alternatives es útil para scripts y tareas del sistema.

También hay un artículo para usar distintas versiones de php en distintos virtualhost con Apache.


viernes, 20 de junio de 2025

Copiar archivos clave de un Batocera a otro

Imagina que un amigo te ha pasado una imagen para raspberry pi, ya preparada con una colección estupenda de roms y bios de libre difusión para raspberry pi 3+ pero tu tienes una raspberry pi 2, una 4 o una 5, por supuesto no te funciona, ¿qué haces?

Pues lo más sencillo es bajarse la versión para tu modelo concreto de la página oficial de Batocera y copiarte los directorios roms y bios de la imagen de tu amigo a tu tarjeta, pero ¿cómo?

Hay varias maneras de conseguir esta "proeza", hoy voy a explicar la más evidente, copiar el contenido de la carpeta /share de una imagen de batocera a otra, al menos los subdirectorios roms y bios completos.

Para complicarnos lo mínimo vamos a "tostar" la imagen que nos ha pasado nuestro amigo a un pendrive que tenga como mínimo el tamaño de la imagen,  con el tamaño suficiente y conectarlo a un puerto USB.

La imagen microSD que hemos tostado de la página oficial de batocera la conectaríamos al PC, si usamos GNU/Linux bastaría con ejecutar mc como administrador (root) y copiar el contenido de cada carpeta del pendrive a la microSD.

Pero... ¿y si usamos Windows?

Hay soluciones para leer particiones de GNU/Linux, como ext4, desde el ventanucos pero son bastante inestables y nos pueden dar algún disgusto, así que la solución correcta es hacerlo de manera nativa.

Simplemente, nos creamos un pendrive de autoarranque con alguna distribución live sencillota, por ejemplo Linux Mint Mate que ya incluye mc (aunque si usamos otra la podíamos instalar en el live temporalmente) y seguir los mismos pasos que si tuvieramos un GNU/Linux nativo. Así ni siquiera tocamos el sistema que trae el ordenador y no lo comprometemos con software experimental y puede que hasta de dudosa procedencia.

viernes, 13 de junio de 2025

Lo mínimo para hacer un video con presentación una sola persona con un móvil y edición básica con GNU/Linux

Este experimento lo hice para crear el vídeo sobre como resetear un Android TV.

En esta ocasión usé dos programas, ffmpeg y vlc, que si no los tienes instalados ya estás tardando. 

sudo apt install ffmpeg vlc

Vamos al lío:
  • introduccion.mp4En la primera parte de vídeo aparezco en mi cuarto de ordenadores con algunos equipos de fondo, este trozo lo grabé yo mismo con el móvil haciendo un "video selfie", pero como en todos los selfies la imagen sale como si te miraras en un espejo, por tanto este trozo requería un efecto de espejo horizontal, para ello usé el siguiente comando de ffmpeg:

fmpeg -i introduccion.mp4 -vf "hflip" introduccion_corregida.mp4

 

  • video_principal.mp4Después grabé en otro archivo todo lo que fue la operación de wipe con la cámara normal del móvil, aquí el problema era hacerlo todo con una sola mano, pero por lo demás fue un vídeo que no requirió modificaciones.

  • video_final.mp4Así que ya solo me quedaba unir los dos trozos, en esta ocasión usé VLC en modo CLI, es decir, un comando de consola:

vlc introduccion_corregida.mp4  video_principal.mp4 --sout "#gather:std{access=file,dst=video_final.mp4}" --sout-keep


Resumiendo: 

introduccion_corregida.mp4 +  video_principal.mp4 = video_final.mp4

Y ya está, terminado y listo para subir :-D

viernes, 6 de junio de 2025

Script bash para comprimir cada directorio de la ruta actual en un archivo zip independiente

Supongamos que tenemos, en una ruta determinada de nuestro disco, varias carpetas cada una con los archivos correspondientes a un determinado programa y queremos que el contenido de cada una se guarde en un archivo zip independiente, lo podíamos hacer con un script como éste:

#!/bin/bash
for dir in */; do
    dirname=$(basename "${dir}")
    cd ${dir}
    zip -r "../${dirname}.zip" .
    cd ..
done

El script hace lo siguiente:

  1. Recorre la lista de nombres de directorios
  2. Nos cambia a la ruta
  3. Comprime el contenido en un archivo zip con el mismo nombre que el directorio y guardándolo en un nivel inferior de la ruta, es decir, donde ejecutamos el script.
  4. Vuelve a la ruta original, bajando un nivel.

Este script lo copiaría con el nombre dir2zip en la ruta /usr/local/bin para que esté disponible desde cualquier lugar de nuestro disco, ya que debe ejecutarse desde el mismo directorio.

Se puede mejorar fácilmente para que haga otras cosas:

  • Pasar la ruta opcionalmente como parámetro.
  • Comprimir solo un nivel e ir ejecutándose recursivamente, si esa es nuestra necesidad.
  • Borrar la carpeta después de una compresión exitosa.

Si se te ocurre maneras de mejorar en el script exponlas en los comentarios y así seguimos aprendiendo entre todos.

Quien sabe lo mismo me animo y explico más adelante como hacer el script contrario: zip2dir.

viernes, 30 de mayo de 2025

Usar impresora Epson WorkForce WF-2835 en Debian GNU/Linux

Estos días un compañero del trabajo me ha regalado esta multifunción Epson WorkForce WF-2835.

 


Se trata de una multifunción, con alimentador de hojas, Wi-Fi y muchas de esas cosas modernas que tienen los aparatos de ahora, ¿podré echarla a andar en mi Debian GNU/Linux?

La podemos conectar con el tradicional cable USB pero ya que tenemos, vamos a...

Configurar la Wi-Fi 

Me ha sorprendido la facilidad para configurar la Wi-Fi:

  1. Eliges el SSID de tu Wi-Fi
  2. Tecleas la contraseña, bien usando el teclado virtual o con el teclado tipo móvil del panel.
  3. Pulsar OK

Compruebo si mi i7 con Debian ha detectado la impresora en red directamente sin hacer nada más, para ello me voy a las opciones del menú:

Sistema ► Administración ► Configuración de Impresión
Y efectivamente, ya aparece entre las impresoras configuradas en mi ordenador:


Pero si no es así toca instalar...

Los drivers

Hay que instalarse tanto el driver para impresora como el driver y utilidad para el escaner,  en el caso de Debian, el de impresora lo tenemos en los repositorios, así que simplemente hay que ejecutar:

sudo apt install epson-inkjet-printer-escpr epson-printer-utility sane-airscan escputil

El driver para el scanner NO lo tenemos ni en los repositorios ni en la página oficial de Epson, así que hay que descargárselos de freeprinterdriverdownload.

Hay que instalarse el driver para impresora como para el escaner, y que vienen como paquetes deb, tanto para 64 bits como para 32 bits, en mi caso instalo los de 64 bits y arreglo dependencias al final:

wget   https://download2.ebz.epson.net/epsonscan2/common/deb/x64/epsonscan2-bundle-6.6.42.0.x86_64.deb.tar.gz

tar -zxvf epsonscan2-bundle-6.6.42.0.x86_64.deb.tar.gz

cd epsonscan2-bundle-6.6.42.0.x86_64.deb

./install.sh


Uso de Epson Scan 2

Para acceder a este programa de escaneo por red nos vamos a las opciones de menú:

Aplicaciones ► Graficos ► Epson scan 2

La primerz vez nos pedirá la dirección IP, pero nosotros mejor le ponemos el nombre cualificado para que no nos lo cambie el router, que puede ser algo así como EPSON161EB9.local (*)

Le damos a aceptar, lo busca y ya tenemos operativo el escáner inalámbrico:


Si los conectamos por cable como siempre tendremos disponible el escaner por el programa estándar de escaneado de GNU/Linux.

 (*) El nombre cualificado del dispositivo lo podemos obtener con aplicaciones como AngryIPScanner o comandos de red de consola para descubrir los dispositivos conectados a nuestra Intranet.


viernes, 23 de mayo de 2025

Pysol Fan Club Edition, el juego definitivo de cartas es software libre

Pysol Fan Club Edition, es una alucinante colección de juegos de cartas que instalamos en un solo paquete:

sudo apt install pysolfc

Incluye la friolera de alrededor de ¡1200 juegos de cartas! organizados por categorías.


Permite cambiar algunas reglas y la baraja que queremos usar, incluso cierta personalización como descargar conjuntos de cartas.

Os animo a que lo instaléis y lo probéis, ya que si os gustan los juegos de cartas no os vais a aburrir.

viernes, 16 de mayo de 2025

¿Cómo quitar peso a una imagen con GIMP?

GIMP, aparte de ser un gran programa de retoque fotográfico también es capaz de hacer operaciones tanto operaciones complejas como algunas tan sencillas como bajar el peso de una imagen, es decir, el tamaño de archivo y lo que ocupa en nuestro disco, evitando problemas de carga en páginas web, libros electrónicos, dispositivos de almacenamiento limitado, etc...

El primer paso es, evidentemente abrir la imagen que abriremos como abrimos cualquier archivo en cualquier programa.


Una vez abierto hay diversas estrategias para bajar el tamaño del archivo:

  • Limpiar la imagen: mediante filtros o incluso aplanado manual se puede bajar muchísimo el peso de la imagen.
  • Reducir el tamaño: ya sea reduciendo el cuadro o reescalando.
    En el menú 'Imagen' puedes explorar las opciones 'Tamaño del lienzo...' y 'Escalar la imagen...'
  • Reducir la cantidad de colores.
    La manera más sencilla es ir a las opciones:
    Colores ► Posterizar
    y vamos aumentando uno a uno el valor de 'Niveles de posterización', es decir, el número de colores, hasta que la imagen se vea razonablemente bien.

Para guardarlo, nos vamos a las opciones Archivo y Exportar, ya que si vamos a guardar lo salvará como un archivo nativo de GIMP, algo muy interesante para editarlo por capas por ejemplo, pero en este caso no nos interesa ya que lo que queremos es que siga con el mismo formato y menos tamaño.

Probamos a grabarla con la extensión .png si se trata de una imagen generada por ordenador o con transparencias.

Si es una fotografía seguramente obtendremos mejores resultados con la extensión .jpg.

¡Ojo! jpg es un formato con pérdidas mientras que png no tiene pérdidas, solo comprime la imagen. 

¿Conoces más trucos para reducir el peso de imágenes con GIMP? Compártelos en los comentarios.

viernes, 9 de mayo de 2025

El poder de lo analógico (y de lo que no precisa Internet)

A estas alturas seguro que te has enterado de lo nos ha pasado hace dos lunes en la Península Ibérica, incluso si no vives en este país.

Un apagón que nos tuvo a muchos sin electricidad, ni internet, ni agua... para algunos casí un día en el siglo XIX.

Recuerdo hace no muchos años cuando se quería enterrar definitivamente la radio convencional de la que se quería hacer un apagón como se hizo con la tele análogica primero y con la TDT normal después, para que nos gastáramos un buen dinero en la radio digital, ya que de todas formas "nadie escuchaba la radio en la radio". Esta vez no coló y la rueda de la obsolescencia programada no dio esta vuelta de tuerca, afortunadamente para todos.

Como aficionado a la retroinformática, ya estoy acostumbrado a que me diga gente ignorante que tire esos cacharros viejos, pues esta vez un cacharro viejo ha sido mi principal fuente de información.


Algo poco conocido es que la mayoría de los móviles ya tienen radio, ya vimos la semana pasada como hacerlo.

Para salir del paso puede estar bien, el problema es que agotará la batería antes que la pilas un transistor o un walkman usando solo la radio, y el móvil puede que lo necesitemos cargado más adelante.

Para controlar el tiempo, mi Casio con años de autonomía, no se va a necesitar ser cargado todos los días como un smartwatch.


En otras ocasiones hemos tenido incidencias en los que "solo" nos hemos quedado sin Internet o bien no hemos podido acceder a un servicio que necesitamos por temas de violación de la soberanía tecnológica o incluso bloqueo de otros países. En estos casos es mejor que todo lo que se ejecute esté en tu ordenador, incluido por supuesto la validación, por lo que las credencias siempre deben estar en nuestro ordenador.

Por poner algunos ejemplos:

  • Si usas Chrome OS y no puedes acceder a Google en un momento determinado ya que te validas con tus credenciales del correo, es decir, no puedes usar tu ordenador.
  • Si usas Office 365 y no puedes acceder a Microsoft no vas a poder abrir la hoja de cálculo para entregar el informe ni escribir una simple carta. Tampoco podrías acceder al sistema si usas credenciales de Microsoft para abrir tu Windows.
  • La gente que usa plataformas que requieren conexión para ejecutar programas, como los juegos igualmente tampoco podrán disfrutar de ellos.

Ya se que es difícil de dejar de depender de la "droga de la nube", pero mejor irnos quitando porque no hay que olvidar que la nube es solo el hardware de otro.

Y desde luego hay que tomar nota y no pasar por cualquier aro que nos haga pasar la industria, ya se llame DRM, TPM, ataques a la soberanía tecnológica, electrodomésticos que no arrancan o casi sin Wi-Fi, etc...

Sobre el dinero, hasta hace poco querían acabar con el dinero efectivo y quienes lo usábamos eramos casi sospechosos por usarlo, campaña orquestada una oligarquía bancaria que quiere más y más poder y los que hacen "ingeniería financiera", de las estafas piramidales que se presentan como "alternativa", solo recordar que no han inventado nada: antes fueron la filatelia, multipropiedad, vendedores de pócimas milagrosas, vendedores de humo de toda la vida... y a los que piquen les recuerdo que está próximo el centenario del crack del 29, ahí lo dejo.

Mira por donde el cash es lo que salva el día cuando no hay electricidad.

Es hora de reivindicar el valor de lo analógico y rechazar lo que se conecte a una red sin ser realmente necesario.

viernes, 2 de mayo de 2025

Activar la radio en tu dispositivo móvil

No todo el mundo sabe que su móvil posiblemente tenga radio FM, algo que te pudo venir muy bien el lunes pasado si vivías en la península ibérica (aunque lo ideal es tener un transistor de toda la vida), y algunos saben que lo tienen pero no como ponerlo en marcha.

Vamos a explicar como activarlo:

  1. Desbloqueamos la pantalla de nuestro móvil, si lo tenemos configurado para manejo por gestos desplazamos, en la pantalla principal la flecha que hay encima de los iconos inferiores.

  2. Hacemos clic en el icono "Radio FM".


  3. Si tenemos Internet en el móvil o no es la primera vez que usamos la aplicación posiblemente nos aparecerán la parrilla de emisoras en el móvil, podemos hacer clic en el icono de la emisora deseada o hacer clic en el icono verde que aparece arriba a la derecha de 'Radio Local'.


  4. Sea cual sea nuestra elección nos aparecerá un aviso indicando que debemos poner los auriculares para que "hagan de antena", los enchufamos a nuestro jack y desaparecerá el mensaje al tiempo que podemos escuchar sonido a través de los mismos. No hay que pulsar ningún botón porque NO queremos escuchar ninguna radio online.


  5. Si hemos seleccionado una emisora de las ofrecidas nos aparecerá el logo de la misma, en caso contrario simplemente nos aparecerá la frecuencia de la emisora. En ambos casos podemos cambiar haciendo clic en los iconos derecha e izquierda que aparecen en la parte baja de la pantalla.


  6. Si queremos escuchar por el altavoz, pulsamos en el icono de los tres puntitos y seleccionamos "Cambiar al altavoz".

     
     

Recuerda que debes dejar puesto los auriculares o se desconectará la radio, ya que son la antena. 

Otras limitaciones que te puedes encontrar son que:

  • Solo radio FM, no hay onda corta.
  • Tu móvil no tiene conector jack o le han bloqueado el soporte a radio FM... mala suerte, ya sabes que es algo que debes tener en cuenta cuando compres el próximo móvil.
  • El uso de la radio va a disminuir la duración de la batería, si no vas a poder cargarla al menos puedes desactivar los datos, la wifi y el bluetooth.
     

jueves, 24 de abril de 2025

Chafa, espectacular visor de imágenes para consola

Chafa es una de esas aplicaciones de consola que no te puedes creer que sean una aplicación de consola, se trata de un visor de imágenes que muestra lo mejor que puede una imagen usando simplemente la consola de texto de GNU/Linux... y vaya sí que lo hace lo mejor que puede...


Para te genere la imagen basta con ejecutar:

chafa miimagen.png

Si le pasas un GIF animado te lo muestra en movimiento y no te devuelve el prompt hasta que tecleas CTRL y C

Si no la tienes instalada, la puedes instalar desde los repositorios oficiales de tu distro, en el caso de Debian y derivadas se podría instalar desde consola con el comando:

sudo apt install chafa

chafa permite definir el número de colores y el tamaño, si no intentará mostrar la imagen con el máximo espacio disponible.

¿Quién dice que la terminal es fea y aburrida?


Con Chafa un nuevo nivel de ASCII Art a todo color se abre ante tí.

viernes, 18 de abril de 2025

Agrupar varias fichas LDraw en una sola

Para explicar como y porqué hacer esto, voy a poner un ejemplo de una pieza que hice a partir de otras piezas para la librería de piezas: la "Rueda 21 lisa montada en jácena 2", nombre de archivo: rueruj2l.dat.


Para hacer la agrupación monte el conjunto como si fuera otro modelo de TENTE más con algunas peculiaridades:

  • Las piezas que tengan el color "Main color", es decir, el código de color 16, cambiarán al color que le asignemos a la pieza agrupada resultante.
    En MLCad aparece como color negro pero si seleccionamos la pieza y nos vamos a color personalizado podemos ver que el código de color es 16 y no 0.
  • El conjunto se debe guardar en la carpeta 'parts' dentro de la ruta donde tenemos las piezas de TENTE 3D con el nombre que acordamos 'rueruj2l.dat'.
  • Debemos cerrar MLCad y abrimos el archivo con editor de texto para programa, tipo jEdit o notepadpp, y le añadimos al principio unas líneas de cabecera que indicarán:
    • Nombre completo de la pieza | categorías en las que va.
    • Name: <nombre del archivo>
    • Author: <quién hace la pieza>
    • Indicar que es una ficha NO oficial de ldraw.org
    • BFC CERTIFY CCW
  • Volvemos a abrir MLCad y para que reconozca la pieza seleccionamos las opciones de menú:
    File ► Scan parts
    Si tenemos un modelo sin guardar nos preguntará si queremos guardarlo porque se cerrará al actualizar las piezas.

En este caso el archivo quedó así:

0 Rueda ruta 21 lisa montada en jacena2     |R:R
0 Name: rueruj2l.dat
0 Author: CPCBEGIN
0 !LDRAW_ORG Unofficial_Part
0 BFC CERTIFY CCW
1 383 0 16.5 0 1 0 0 0 1 0 0 0 1 eje28.dat
1 16 -21 24 20 1 0 0 0 1 0 0 0 1 llantrut.dat
1 256 -21 24 20 1 0 0 0 1 0 0 0 1 ruta21nm.dat
1 16 21 24 -20 -1 0 0 0 1 0 0 0 -1 llantrut.dat
1 256 21 24 -20 -1 0 0 0 1 0 0 0 -1 ruta21nm.dat
1 0 0 24 0 1 0 0 0 1 0 0 0 1 jacn2x2a.dat

Como podéis apreciar la cabecera está definida tal y como hemos indicado y la pieza es la agrupación de 6 piezas más pequeñas:

  • El eje de las ruedas (color plateado).
  • La jácena 2x2 agujereada (color negro).
  • 2 llantas (color variable).
  • 2 neumáticos (color negro).

Estas 6 piezas se corresponden con las 6 últimas líneas del archivo.

viernes, 11 de abril de 2025

Frozen Bubble: videojuego libre inspirado en Puzzle Bobble

Frozen Bubble era un juego libre inspirado en Puzzle Bobble que permite jugar en solitario, con otro amigo, ya sea en local o en red, local o internet, editor de niveles, etc... con la posibilidad de jugarlo en ventana o a pantalla completa.


Se llegó a hacer incluso una versión live con un GNU/Línux mínimo que solo lanzaba el juego, venía en distribuciones ya instaladas como en Max Linux, incluso se hicieron versiones portables para Windows, versiones en java...

Después salió Frozen Bubble 2 que mejoraba sustancialmente los gráficos.


Está disponible en los repositorios oficiales de la mayoría de las distros, en el caso de las derivadas de Debian podemos instalarla con un comando similar a este:

sudo apt install frozen-bubble

Es un juego muy adictivo, con una curva de dificultad bastante suave aunque requiere habilidad y rapidez para avanzar en la sucesivas pantallas.


Frozen Bubble fue creado en Perl por Guillaume Cottenceau usando la librería SDL (Simple DirectMedia Layer), incluye 100 niveles, incluido un editor de niveles.

jueves, 3 de abril de 2025

Retropixel 2025, el evento retro gratuito de Málaga es este fin de semana

Este  año el evento retro del año Retropixel 2025 se celebra los días 5 y 6 de abril, VIII Muestra de retroinformática y videojuegos, como siempre en el hall de la Facultad de Derecho con horario de 11:00 a 20:00


Este año se celebra:

  • 40 aniversario de Sega Master System, de hecho la portada de este año recuerda a las portadas de sus cartuchos con fondo de papel cuadriculado.

  • 25 aniversario de Sony Playstation 2.

  • Especial conmemorativo a la marca Commodore.
     


Habitualmente Retropixel se suele celebrar sobre el fin de semana siguiente a la Semana Santa, pero supongo que como este año va a ser tan tarde se va a celebrar este fin de semana, que es el anterior al viernes de Dolores.

Gracias a su ubicación el aparcamiento es más que suficiente para todos los asistentes. entre el que hay en la propia Facultad de Derecho y la explanada de enfrente entre Derecho y Letras.

También se puede llegar en autobús (líneas 8, 11, 18, 22 y 62) o metro (línea 1 conectada con la estación de trenes)... o andando :D

Para quien a estas alturas no haya oído hablar del evento tiene zonas de exposición de hardware, una amplia zona de juegos, conferencias en las aulas de la propia facultad, torneos y talleres.


Sobre las conferencias de las 5 programadas a fecha de hoy, más o menos la mitad tratan directamente sobre el Amstrad CPC:

También habrá el Taller Retro Gaming - Crea tu videojuego arcade en una tarde el sábado de 16:00 a 19:30. 

Y una exposición de retrocuevas de aficionados.

Os recomiendo mirar las páginas oficiales del evento para ampliar la información de estas conferencias, exposiciones, talleres y eventos, así como modificaciones de última hora que se puedan producir.

Como en años pasados, iré editando este artículo con más información que vaya obteniendo. ;-)

viernes, 28 de marzo de 2025

xgalaga, remake libre galaga para GNU/Linux

Xgalaga es un remake del clásico juego Galaga para GNU/Linux, un matamarcianos aún más trepidante y adictivo que el original, a pesar de que las pequeñas naves puedan hacernos pensar lo contrario.


Lo podéis instalar con el comando:

sudo apt install xgalaga

En realidad son dos versiones del mismo juego, xgalaga y xgalaga-hiperspace que tiene la peculiaridad que si te vas con la nave a una esquina apareces por la otra evitando que te acorralen las naves y los disparos.

Por defecto se ejecuta a pantalla completa, si queréis disfrutarlo en una ventana, tenéis que ejecutarlo desde consola con el modificador -window

xgalaga -window

xgalaga-hyperspace -window

También hay un fork del fork más estático y sencillo llamado xgalaga++ pero no es tan bueno:

sudo apt install xgalaga++

De hecho, es uno de los pocos juegos exclusivos para GNU/Linux, en realidad para el compositor clásico xorg, por lo que en teoría no debería funcionar en Wayland, aunque seguramente lo terminarán adaptando, ¿waylaga?

Los requerimientos son realmente ridículos, diría que funcionaría en cualquier ordenador que tenga menos de 20 o 25 años que pueda ejecutar cualquier distribución de GNU/Linux, incluso las más antiguas.

Se maneja con teclado o ratón, pulsando las teclas k y m respectivamente para iniciar la partida, una buena idea es mapear su teclado con antimicro y así disfrutarlo con un buen mando de juegos.