viernes, 26 de febrero de 2021

SplitPather: buscar todos los archivos con una extensión a partir de un directorio y copiarlos en otro en subdirectorios sucesivos con sus primeras letras

He creado un nuevo script al que le he puesto de nombre SpitPather para que me copie todos los archivos que tenga con una extensión determinada en el árbol de un determinado directorio a otro directorio donde creará un nuevo árbol cuyo primer nivel será el primer carácter del archivo, el segundo la segunda letra y así sucesivamente hasta el nivel de profundidad que defina.

Y te preguntarás, ¿qué utilidad tiene este script? Pues bastante para quien tiene un aparatito en el que tengas que seleccionar uno entre miles de archivos pequeñitos, esta estructura de directorio te facilita la navegación minimizando el número de veces que hay que darle a los botones.

En mi caso me va a venir de perlas para poder navegar por las imagenes de disco que guarde en el pendrive que tengo enganchada a la gotek de mi Amstrad CPC (archivos dsk).

De hecho, los usuarios de este tipo de artilugios para cargar desde pendrives o memorias en ordenadores de los 80 van a poder sacar partido al script y llenar sus dispositivos con las imágenes correspondientes organizadas de la manera más óptima para la posterior navegación.

También le he metido cierta normalización extra para que no tenga problemas al copiar los archivos en un pendrive con FAT32 sobre todo (todo en minúsculas, guiones bajos por espacios, solo tener en cuenta letras y números para componer los subdirectores).

Un ejemplo: supón el archivo 3D Grand Prix.DSK, se copiaría en la ruta destino en la siguiente subruta si elegimos la profundidad por defecto de 3 niveles:

3/d/g/3d_gran_prix.dsk
Además así evitamos duplicidades si tenemos ese mismo archivo en otra ubicación dentro del directorio orígen o con alguna letra cambiada mayúsculas por minúsculas o viceversa.

Es ideal para emuladores de disquetera, de cartucho o de cassette (cpcduino, tzxduino, tapuino, casduino), etc...

Descarga

Lo podéis descargar aquí y por comodidad le daría permisos de ejecución y lo copiaría en la carpeta /usr/local/bin.

chmod +x splipather


Uso

El nuevo comando de linux splitpather se ejecuta en consola pasándole 2 parámetros obligatorios y otros dos opcionales:

  1. Ruta de origen donde empezar la búsqueda de archivos.
  2. Ruta de destino donde copiaremos los archivos.
  3. Extensión de los archivos, no es sensible a mayúsculas (por defecto es dsk).
  4. Nivel de profundidad de los subdirectorios (por defecto es 3).

Si escribis el comando splitpather sin parámetros os informará de como usarlo:

splitpather START_PATH DESTINATION_PATH [EXT] [DEPTH]

Un ejemplo de uso real sería algo así:

splitpather "/media/miPC/MIDISCO/emuladores/amstrad_cpc" "/media/miPC/MIDISCO/emuladores/gotek" dsk 3

Le estamos diciendo que:

  • Empiece a buscar los archivos en la ruta:
    /media/miPC/MIDISCO/emuladores/amstrad_cpc
  • Que cree la nuestra estructura en la ruta:
    /media/miPC/MIDISCO/emuladores/gotek
  • Que solo tenga en cuenta los archivos con extensión 'dsk'.
  • Que cree una estructura de directorios a partir de la ruta indicada con un nivel de profundidad 3.

La estructura de subdirectorios a partir del directorio de destino quedaría más o menos como en la imagen de la derecha.

 

Mejoras para el futuro

El desarrollo del script no termina aquí, va a seguir mejorando, añadiendo mejoras y puliendo errores.

Por ejemplo, en las últimas revisiones los archivos se guardan siempre en minúsculas evitando duplicidades y que no detecten algunos aparatos extensiones que estén en mayúsculas.

No descarto en un futuro hacer un frontend gráfico.

Si detectáis algún problema ponedlo aquí en los comentarios o en la sección de issues del repositorio.

viernes, 19 de febrero de 2021

Game Play Football en Ubuntu 20.04

Game play football es un juego de fútbol de software libre con unos gráficos espectaculares como podéis ver en las siguientes capturas.


Eso sí, antes de seguir te aviso que este juego requiere que tu tarjeta gráfica soporte versiones recientes de OpenGL, pero la mayoría de tarjetas con menos de 10 años lo soportan, incluso las de gama baja.
 

Compilación e instalación

Instalamos las librerías necesarias presentes en los repositorios:
sudo apt install git cmake build-essential libgl1-mesa-dev libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-gfx-dev libopenal-dev libboost-all-dev libdirectfb-dev libst-dev mesa-utils xvfb x11vnc python3-pip

Descargamos e instalamos el juego propiamente dicho:

git clone https://github.com/vi3itor/GameplayFootball.git gameplayfootball

Compilamos e instalamos:

cd gameplayfootball cp -R data/. build
cd build
cmake ..
make -j$(nproc)

El ejecutable ./gameplayfootball lo tendremos dentro de la carpeta build

Ahora ya podéis echar partidos de fútbol espectaculares en GNU/Linux.


viernes, 12 de febrero de 2021

Desactivar el repositorio de Microsoft en Raspberry PI OS

Estos días Raspberry Pi OS nos ha hecho una jugarreta que mina la confianza en el sistema, nos ha instalado un repositorio firmado sin nuestro consentimiento, en concreto para facilitar la instalación de Microsoft Visual Studio Code, sobre la polémica dejo al final unos cuantos enlaces.

La solución más sensata va a ser cambiar a otra distro distinta a la oficial, pero si todavía te fías de Raspberry Pi OS tienes que borrar dos archivos:

sudo rm -f /etc/apt/trusted.gpg.d/microsoft.gpg
sudo rm -f /etc/apt/sources.list.d/vscode.list

Lógicamente, en futuras actualizaciones Raspberry Pi OS puede volver a añadir estos repositorios (¿u otros?), una solución parcial es actualizar con el script de actualización que hice hace tiempo al que hay que añadir estas dos líneas antes del poweroff... ¡y permanecer vigilantes!

La jugada le puede salir cara a la Fundación porque hay alternativas y la confianza ya está rota, ahora tendrán que volver a ganársela.

 

Enlaces a la polémica

jueves, 4 de febrero de 2021

Raspberry Pi OS: la solución precisa a los problemas de overscan/underscan

Un problema habitual en Raspberry Pi OS (y otros sistemas) es que la imagen no quepa en la pantalla (overscan) o sea más pequeña y deje unos antiestéticos bordes negros, como ha pasado en mi caso (underscan) al cambiar la resolución a HD Ready para mi viejo televisor Sony Bravia:


La solución que en muchos sitios recomiendan es simplemente deshabilitar el overscan, algo que se puede hacer tanto desde consola editando el archivo /boot/config.txt como de manera gráfica, sin embargo esto lo que suele provocar es convertir un problema de underscan en otro de overscan.

 


Para conseguir una solución precisa volvemos otra vez a habilitar el overscan y volvemos a editar el archivo /boot/config.txt y cambiamos las líneas que comienzan por overscan_, dándole valores positivos si queremos aumentar la imagen en esa esquina o negativos si lo que queremos es aumentarla añadiendo las siguientes líneas:

overscan_left=-16
overscan_right=-16
overscan_top=-40
overscan_bottom=-40

En esta imagen podemos ver donde se deberían añadir, he optado por mantener las originales comentadas por si hay que volver atrás.


Los valores que vienen bien a cada televisor se consiguen mediante prueba y error.

Cada vez que los cambias hay que reiniciar para ver el resultado.

Aunque es improbable que ocurra, especialmente si uno no pone valores muy exagerados, es conveniente tener activo ssh y vnc por si termináramos con una configuración que no fuera visible o manejable.