Información de mi sistema nada más empezar el día

Comienzo la mañana abriendo una terminal en la que proceder a actualizar mi sistema operativo Linux Mint 20.3 una, para después sincronizar mis carpetas en el disco duro externo que hace de espejo (parcial y supervisado por mí) del interno.

Es una tontería a la que no dedico más de unos 5 minutos cada día, amén de no demorarme en visualizar, por mucho que me guste, la información que me desvela esta aplicación que tengo instalada para mostrarme datos relevantes que suelo olvidar, como la versión de gestor de ventanas que uso, la fuente que tengo por defecto en el sistema, o los «themes» que tengo configurando el aspecto de la interfaz gráfica de este PC en el que escribo.

Año Cúbico

Me ha dejado sorprendidísimo no haberme dado cuenta de que el 2025 es un año cúbico.

2025 = 13 + 23 + 33 + 43 + 53 + 63 + 73 + 83 + 93

Suelo estar atento a las curiosidades del año que entra, como su factorización en números primos, así que este peculiar número es bastante factorizable:

2025 = 34 x 52

Lo que le convierte en un cuadrado perfecto, pues su raíz cuadrada sería, obviamente, 32 x 5 = 45.

Sin embargo, no ha sido hasta esta mañana echando un vistazo a las redes sociales que me he dado cuenta de esa maravillosa propiedad de descomposición en potencias cúbicas. Para más inri, de todos los dígitos del 0 al 9 (es decir, todos los dígitos).

No podía dejar de realizar un par (al menos) de aproximaciones programáticas a esta peculiaridad:

 

#include <math.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    int i, suma=0;
    
    for (i=0; i<10; i++) {
        suma += pow(i,3);
    }	
    printf("Feliz Año %d\n", suma);
    return 0;
}

 

También realicé un pequeño programita en Python, para el que tuve que mirar la documentación:

 

sum=0
for i in range(10):
    sum+=i**3
print "Feliz Año",sum

 

Ahora me he quedado algo más satisfecho, aunque quedaría pendiente hacer versiones con recursividad, tanto para la potencia, por ejemplo, como para la suma.

El utilizar la función «pow()» en C me dejó algo desconsolado, porque realmente era mucho más sencillo un simple i*i*i, pero menos elegante, de alguna manera. Así que terminé por usar la potencia que tiene C, para lo que hay que incluir math.h. Siempre he sido reacio a incluir más cabeceras de las estrictamente necesarias.

Además, hube de compilar indicando que el gcc de mi linux supiese que estaba incluyendo librerías matemáticas, lo que me resulta bastante absurdo. Pero ese es otro tema que prefiero no tocar en estas fechas navideñas…

En resumen;

FELIZ
MMXXV

Raíz Cuadrada

He tenido que volver a aprender este algoritmo que me parece monstruoso.

En realidad no resulta un método más sencillo que ir haciendo iteraciones a partir de aproximaciones sucesivas, así que lo tengo que explicar a un alumno jovencito y no sé cómo justificar que lo tiene que aprender. Es verdad que, al menos, le ha sorprendido que la palabra algoritmo la hayamos usado para algo más que para las malditas redes sociales y su manejo de información y gran cantidad de datos.

Quizá, aunque sólo sea por eso, haya merecido la pena.

Maldito htaccess

Toquitear este archivito clave en un servidor web es un infierno en vida.
A la mínima te cargas lo que no está escrito.

Es una pesadilla sobre la que he tenido que aprender algo para que estas webs que manejo desde hace décadas dejen de dar problemas en el «rating» de webs sospechosas.

Ahora tengo esta versión instalada que no tengo muy claro que sea la que tengo que tener, pero al menos es funcional (aunque todas las webs parecen ir más lentas), además de tener mejor fama (Rating A) según https://securityheaders.com/

 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

<IfModule mod_headers.c>
    # Tell the browser to attempt the HTTPS version first
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"

    ## Cabecera X-XSS-Protection para evitar ataques XSS en IE y Chrome
    Header set X-XSS-Protection "1; mode=block"

    ## Cabecera X-Frame-Options para mejorar la seguridad
    # X-Frame-Options
    Header set X-Frame-Options "SAMEORIGIN"

    ## Cabecera X-Content-Type-Options para evitar que se carguen hojas de estilo o scripts maliciosos
    # X-Content-Type-Options
    Header set X-Content-Type-Options "nosniff"

    # Control Cross-Domain Policies
    # Header set X-Permitted-Cross-Domain-Policies "master-only"

    ## Cabecera Content-Security-Policy
  	# Header set Content-Security-Policy "script-src 'self'"

    # Referrer-Policy
    Header set Referrer-Policy "same-origin"

    # Features-Policy
    # Header set Feature-Policy "geolocation 'self'; vibrate 'none'"
    # Permissions-Policy
    Header set Permissions-Policy "camera=(), microphone=(), geolocation=(), fullscreen=()"
</IfModule>

# Disable server signature
Header set ServerSignature "Off"
Header set ServerTokens "Prod"

 

Ahora ha dejado de funcionar todo lo relacionado con Piwigo, pero ya no sé si quiero arreglarlo o mandarlo a la mierda.

screenfetch

Uso con frecuencia la terminal de linux (iba a escribir unix, así de antiguo soy) y me apetecía tener esta tontería de comando en mi .bashrc

if [ -f /usr/bin/screenfetch ]; then screenfetch; fi

De modo que cuando abro una terminal me informa de algunas cositas interesantes de mi sistema operativo. La verdad es que me resulta muy cookie esta tontería que, entre otras cosas, ralentiza unos milisegundos mi operativa, pues tiene que ejecutarse y mostrar un montón de información que, después, procedo a eliminar con un comando «clear» para que no me dé la lata tanto texto.

El fondo semitransparente de la terminal, junto con una bonita fotografía (tomada por mí) que funge como fondo de escritorio hace que el aspecto de la ventana sea casi podría decirse que bonito.

Warning: Key is stored in legacy trusted.gpg keyring

Es cansado cuando aparece este texto tras unas actualizaciones en la línea de comandos de Linux, porque siempre toca ver qué es lo que ha pasado (es sólo un warning, pero yo suelo atenderlos y resolverlos porque en caso contrario me estresa cada vez que tengo que hacer una nueva actualización).

El domingo, actualizando la RaspBerry en la que guardo una copia de respaldo de mi blog, volví a encontrarme con este estúpido mensaje que bien podía haberse arreglado con algún «fixer» incluido en el sistema operativo, derivado de que es él quien ha decidido que una aplicación como apt-key se haya quedado obsoleta o deprecated.

Afortunadamente, encontré una muy buen página que ayudó muchísimo con este pequeño, pero molesto, problema tecnológico. Me resultó gracioso, eso sí, que tuviera un TLD (Top Level Domain) de .guru

Me guardo, con permiso de la web en cuestión y mi agradecimiento particular, los pasos a seguir, por si vuelvo a necesitarlos y esa página ha dejado de existir, cosa que pasa cada vez con más frecuencia.


Pasos de la solución

Fuente: https://pilas.guru/20240311/warning-key-is-stored-in-legacy-trusted-gpg-keyring/

1. Extraer la llave del archivo /etc/apt/trusted.gpg

$ sudo apt-key list
/etc/apt/trusted.gpg
--------------------
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb)
sub rsa4096 2017-02-22 [S]

$ sudo apt-key export 0EBFCD88 | gpg --dearmor -o /tmp/docker.gpg

La llave se exporta en un temporal para evitar que el siguiente paso la borre del llavero.

2. Borrar la clave del antiguo llavero

$ sudo apt-key del 0EBFCD88
OK

3. Incluir la llave exportada en el actual sistema

$ sudo mv /tmp/docker.gpg /etc/apt/keyrings/

Indicar en el repositorio la clave a utilizar

$ sudo cat /etc/apt/sources.list.d/docker.list

deb [arch=arm64 signed-by=/etc/apt/keyrings/docker.gpg] http...

La indicación signed-by le permite al comando apt encontrar qué nombre se le puso al archivo de la llave que validará el repositorio de paquetes y a su vez, permite colocar los archivos en cualquier lugar (Debian ofrece la carpeta /etc/apt/keyrings/ para este fin)

AI AI AI AI

Tarde o temprano me tenía que aparecer publicidad en el muro de facebook que me animase a usar la inteligencia artificial para que escribiese.

El anuncio no tiene desperdicio:

ChatGPT has made the process of writing a best-selling book easy.
But once the book is written how do you get it published and selling?
Designrr has unleashed a software that allows you take your ChatGPT content, blogs, word docs, etc and with lightning fast speed and customizable templates convert them into stunning ebooks.
Once published, simply upload it to Amazon and start selling!
You can have your ebook written by ChatGPT and published to Amazon faster than it takes your competitors to even think of a topic to write about.
Start monetizing what you know… or should we say what ChatGPT knows!
Get Designrr today!

Las negritas (mías) lo dejan bien claro: esta propuesta no le sirve de nada a quien quiere escribir, a quien necesita escribir. Esto es útil, o puede serlo, para quien quiere VENDER.

No digo con esto que no esté bien vender, ni que lo que vaya a crear (aunque esta palabra es otra cosa distinta a lo que se propone y yo usaría un mucho más «humilde» hacer) sea malo per se, pero lo que sí digo es que esto no tiene nada que ver con la creación, con el placer o el dolor que quien lo realiza (o lo vive) experimenta.

Pone sobre el tablero el debate ya casi olvidado de qué es la creatividad, pero sigo siendo admirador de las palabras de Isidoro Valcárcel Medina, quien habla no tanto de «creatividad» como de actitud creativa, es decir, de vivir de manera creativa, actuando creativamente.

El mensaje publicitario no miente: afirma claro y distinto en su penúltima frase: Empieza a ganar dinero con lo que sabes… o lo que ChatGPT sabe.

Quizá por eso no acabo de verle el interés (ni simple ni compuesto) al uso de esta herramienta, que me consta que otras personas sí están usando para ayudarles en su experimentación creativa.

Burlando restricciones…

Me gusta sentirme casi un hacker por hacer algo tan básico como explorar el código de una página web que visito y de la que no puedo hacerme con algún contenido, como por ejemplo esta fotografía que se usaba como «background» en un carrusel de imágenes y que aparentemente no podía descargarse.

Para ello la acción es tan simple como pinchar con el botón derecho sobre cualquier parte y elegir la opción «Inspeccionar» para ver el código fuente o un cachito específico del mismo.

A partir de ahí, encontrar el enlace a la imagen, en este caso:
https://laterrazadelsantodomingo.es/sites/default/files/styles/background_home/public/sd-255_1.jpg
y llevárselo a una pestaña nueva del navegador en cuestión.

Y, como dice mi hermana, pues ya estaría. 🙂

«Phising» cada vez más peligroso

Constantemente llegan mensajes, correos electrónicos, llamadas… que loo único que pretenden es que «piquemos» como los pececitos que somos, pero es que cada día es menos obvio que eso en lo que vamos a picar es un anzuelo mortífero.

Es muy complicado evitarlo. Mucho más que los antiguos ataques de «Troyanos» que con evitar descargarlos se resolvía. Amén de que a quienes usamos Linux no nos afectaba generalmente pues no eran ejecutables en nuestros sistemas operativos.

Sin embargo, ataques a los navegadores son terribles porque cada día tenemos más información online y menos en los PC. Es difícil evitarlos sin perder usabilidad diaria en multitud de sitios.

Hoy ha sido este mensaje y estaba claro que era un ataque pues intentaba dirigirme a una web que no tenía nada que ver con la Agencia Tributaria, además de estar dirigido a poesia@clave53.org, que es una dirección que no uso en absoluto para darle a ningún organismo oficial.

Pero pasar sobre el enlace y mostrar la URL sin pincharlo y ser dirigido a ella es algo que habría que enseñar, directamente, en el Telediario cada día o en el colegio e institutos.

Van a ser un aluvión de desdichas los tiempos venideros.

Sé que puede ser oportunidad de negocio (seguridad informática), pero a pesar de mi background, no es algo que me parezca sencillo ofrecer ni me apetezca cobrar. Pero…

¿Cómo funcionará en HTML un «sup» dentro de un «sup»?

Quiero probar una absoluta tontería probando cómo funciona elevar un número a otro, y el resultado a un tercero, pero todo en HTML con las etiquetas básicas «sup»

XXX

Seguramente me decepcionará porque no creo que esté pensado para esto, pero lo voy a publicar sea lo que sea… Sin hacer, ni siquiera, una prueba previa ni, por supuesto, pedirle a una IA que lo haga por mí. ¡Qué aburrido lo de las inteligencias artificiales!

y rizando el rizo…

2222

Esto no es una broma