Continuando la entrada Utilizar diferentes Java JDK (o JREs) en Ubuntu (aunque en esta entrada se instalaba JRE/JDK en Ubuntu) vamos a ver cómo añadir de forma elegante varias versiones de maven al sistema.
Continue readingMi 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!
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 readingModificar fecha de modificación fichero en Windows
Siguiendo el artículo “Modificar fecha de creación fichero en Windows” continuamos con esta temática:
¿Qué pasa si queremos modificar la fecha de modo:
(Get-ChildItem -Path informe.docx).LastWriteTime='2023-05-20 08:30:00'
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:
- Cambiar el autor del último commit
- Cambiar el autor de uno o varios commits más atrás del HEAD
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.
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
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