Mi primer proyecto Rust!

He decido empezar este proyecto porque buscaba explorar las mejoras de este lenguaje que ofrece la velocidad de C++ pero con la seguridad de memoria que evita esos errores catastróficos de segmentación (segmentation fault!!!) . Rust no tiene recolector de basura (garbage collector), lo que lo hace muy eficiente, y su sistema de tipos es como tener un mentor revisando tu código en tiempo real: compila, seguramente funciona.

Instalar Rust

En cualquier Linux:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

O, en fedora:

sudo dnf install -y rust cargo

Instalar Rust en cualquier Linux:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Esto entre otras cosas te instalará cargo. Cargo: la herramienta de Rust para compilar y gestionar paquetes. Cuando instalas Rustup también obtienes la última versión estable de la herramienta de compilación y gestión de paquetes de Rust, conocida como Cargo. Cargo hace un montón de cosas:

  • construye tu proyecto con cargo build
  • ejecuta tu proyecto con cargo run
  • ejecuta los tests de tu proyecto con cargo test
  • genera la documentación de tu proyecto con cargo doc
  • publica una biblioteca en crates.io con cargo publish

Construir Hola Mundo

Vamos a ver fácil como crear, compilar y ejecutar Hola Mundo:

cargo new hello-world
cd hello-world

si miramos src/main.rs:

fn main() {
 println!("Hello, world!");
}

Ejecutamos y listo:

$ cargo run
 Compiling hello-world v0.1.0 (/home/slimbook/proyectos/Formacion/101-rust/hello-world)
 Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.23s
 Running `target/debug/hello-world`
Hello, world!

ENLACES
https://rust-lang.org/es/learn/get-started/

Utilizar diferentes Java JDK (o JREs) en Ubuntu

Problema

El problema es típico y sencillo de arreglar: Trabajar en Ubuntu y desarrollas en Java pero tienes proyectos que utilizan diferentes JDKs (o JREs). ¿Cómo arreglarlo de forma fácil? Primero vamos a suponer que tienes 3 versiones de la JDK, yo los he instalado con estos comandos:

sudo apt install -y openjdk-8-jdk-headless
sudo apt install -y openjdk-17-jdk-headless
sudo apt install -y openjdk-21-jdk-headless

Por defecto y de forma automática tendremos disponible la última versión.

$ java -version
openjdk version "21.0.10" 2026-01-20

$ javac -version
javac 21.0.10

¿Cómo cambiar la versión predeterminada?

Para cambiar la versión “seleccionada” por el sistema podemos usar el comando update-alternatives. Con el siguiente comando podemos ver todos los comandos referentes a java:

sudo update-alternatives --get-selections | grep java

Ejecuta los siguientes comandos y seleccionamos el número de la versión deseada (tanto para java y javac):

$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-21-openjdk-amd64/bin/java      2111      auto mode
  1            /usr/lib/jvm/java-17-openjdk-amd64/bin/java      1711      manual mode
  2            /usr/lib/jvm/java-21-openjdk-amd64/bin/java      2111      manual mode
  3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode

Press  to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/java to provide /usr/bin/java (java) in manual mode

$ java -version
openjdk version "17.0.18" 2026-01-20
OpenJDK Runtime Environment (build 17.0.18+8-Ubuntu-124.04.1)
OpenJDK 64-Bit Server VM (build 17.0.18+8-Ubuntu-124.04.1, mixed mode, sharing)

$ sudo update-alternatives --config javac
There are 3 choices for the alternative javac (providing /usr/bin/javac).

  Selection    Path                                          Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-21-openjdk-amd64/bin/javac   2111      auto mode
  1            /usr/lib/jvm/java-17-openjdk-amd64/bin/javac   1711      manual mode
  2            /usr/lib/jvm/java-21-openjdk-amd64/bin/javac   2111      manual mode
  3            /usr/lib/jvm/java-8-openjdk-amd64/bin/javac    1081      manual mode

Press  to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/javac to provide /usr/bin/javac (javac) in manual mode

$ javac -version
javac 17.0.18

Y ya está, hay más formas como usar jEnv o SDKMAN, pero eso lo dejo para otra entrada.

¡Espero que sea de ayuda!

Conectar a host remoto con Oracle SQL*Plus

Esta entrada es un rápido recordatorio sobre cómo usar SQL*Plus el cliente CLI de Oracle para acceder a BD mediante su TNS o los parametros de una conexión JDBC.

Con TNS adhoc:

sqlplus user/pass@"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myhostname)(PORT=1530))(CONNECT_DATA=(SERVICE_NAME=serviceName)))"

O usando el formato easy connect:

sqlplus user/pass@myhostname:1530/serviceName

Crear proyecto python desde cero (venv)

¿Alguna vez te has preguntado cómo empiezan los proyectos de python? ¿Creo una carpeta? ¿Uso cualquier IDE? ¿Uso pip install y ya …?

No todo es siempre un IDE, a veces, la base de todo está en la consola. En python existe el concepto de “entorno virtual” esto es que para un proyecto dado guarda las bibliotecas o paquetes necesarios para este proyecto. La idea es similar a quien conozca npm de Node.js.

La cosa es que en python con pip podemos instalar paquete usando:

pip install <nombre_paquete>

Pero por defecto python lo instala de forma global para el interprete de python (en la carpeta lib donde tengas instalado python). Entonces: ¿Qué pasa si en un proyecto necesito Pandas 2.3 y en otro 1.4 y en el interprete global tengo instalado Pandas 2.2. Pues por defecto se usará la versión 2.2, para evitar estos problemas, existe venv.

Continue reading

Modificar el author de un comit (git)

El problema es conocido, a veces, al hacer un commit, se nos olvida configurar bien nuestro usuario o simplemente usamos la cuenta equivocada (si usamos varios login, o servers para git).

Corregir esto en git es muy sencillo, teniendo en cuenta dos escenarios diferentes:

  1. Cambiar el autor del último commit
  2. Cambiar el autor de uno o varios commits más atrás del HEAD
Continue reading

Git Hash Commit, identificando commits

¿Qué es un hash de un commit? Cuando haces un commit en Git, se guarda una instantánea del estado de nuestro proyecto en ese mismo momento. Para identificar ese commit de forma única, Git genera un código hash, que es una especie de “huella digital” del commit. Algunas características de este código hash son:

  • Es una cadena de caracteres generada con el algoritmo SHA-1.
  • Representa de forma única el contenido del commit (incluyendo archivos, autor, fecha, mensaje, etc.).
  • Sirve para referenciar ese commit en el historial.

Por ejemplo, un hash “largo” tiene la forma: e3a1b2c4d5f67890123456789abcdef123456789.

Continue reading

DosBox: Cómo corregir que el ratón se mueven MUY rápido

El problema

Estás jugando a un juego de MS-DOS o usando un programa TUI tipo QBasic u otro que tenga soporte para ratón, pero …. el ratón súper rápido: el mínimo movimiento produce un desplazamiento del ratón bestial de extermo a extermo de la pantalla y lo hace inmanejable.

Solución

Hay que ajustar la sensibilidad del ratón, por defecto DosBox la pone al 100%. Podemos poner un valor entre 0 y 100. En mi caso probé a bajarlo al 50% y me lo solucionó.

En el fichero dosbox.conf editar la secciçon [sdl] y modificar sensitivity, su valor por defeto es 100 bajaro a 50:

sensitivity=50

Para más información consultar [1]. (esto no lo he probado pero lo dejo aquí anotado por si es de ayuda) Otras opciones serían ajustar en tiempo real DosBox usando shortcuts de teclado. Presiona:

  • Ctrl + F10 → captura/libera el ratón.
  • Ctrl + F11 / Ctrl + F12 → bajan o suben la velocidad de emulación (afecta todo, no solo el ratón).
  • Ctrl + F8 / Ctrl + F7 (según versión) → pueden ajustar la sensibilidad del mouse directamente.

¡Espero haber sido de ayuda!

REFERENCIAS

  1. Configuración del SQL en DosBox

Mockear un API con json-server

json-server es una herramienta NodeJS que nos permite prototipar o mockear un API REST de forma muy rápida. Ya sea para empezar un desarrollo Frontend si esperar al desarrollo del BackEnd o porqué necesitamos mockear el BackEnd por el motivo que sea.

Una vez definido el API a usar es muy rápido y sencillo usar cualquier petición HTTP con los métodos GET, POST, PUT, PATCH, DELETE …

Continue reading