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 readingCategory Archives: Programación
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!
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 readingMockear 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 readingApache Maven: Comandos utiles
Apache Maven es una herramienta de gestión de proyectos que automatiza la construcción, informe y documentación de software. Usa un archivo POM (Project Object Model) basado en XML para definir cómo se construye un proyecto, sus dependencias y cómo se empaqueta. Esto estandariza el proceso, permitiendo que cualquier desarrollador compile, pruebe y empaquete un proyecto de forma consistente.

Conocer los comandos de Maven es clave porque te da control total sobre el ciclo de vida de tu proyecto. Te permite automatizar tareas, gestionar dependencias, depurar problemas de construcción y personalizar el proceso. Dominar estos comandos te hará más productivo y autónomo al manejar proyectos de software.
Continue readingBorrar todos los directorios target en maven
Todo desarrolldor Java conoce Maven. Una herramienta que funciona igual que en su día ant o Gradle. La idea es teer una herramienta que en base a la configuración del proyecto (ficheros pom.xml) sabe cómo compilar, en qué orden y qué dependencis tiene (además de resolverlas e instalarlas si puede).
Normalmente se compila usando un comando como mvn compile o mvn package, el resultado se generar e un subdirectorio llamado target. Para limpiar el proyecto y borrar todo el contenido generado se usa el comando mvn clean.
Cuando tenemos un proyecto con subproyectos (submodulos, en maven) si es muy complicado puede volverse loco y no hacerlo bien. En Bash tenemos un truco para borrarlos de forma recursiva, con el comando (ejecutado en el raíz del proyecto):
for f in $(find . -type d -name target -exec echo {} \;); do rm -rf $f; done
Podemos ver el tamáño del directorio con:
du -h -d1
Por ejemplo, si comparamos un proyecto antes y después de hacer esto:

Una diferenci de 9 GB !!!
Carpetas compatidas en VirtualBox
Introducción
El problema es conocido: crear una máquina virtual y disponer de un mapeo entre carpetas de la máquina que aloja al virtualizador (host) y otra en el máquina huesped (guest) De este modo tenemos una ruta donde leer o escribir ficheros, y el sistema debería mapear permisos de usuario de forma bidireccional.
Guía paso a paso
Crear una carpeta en tu equipo (donde tiene el software de virtualización). En caso de Windows, por ejemplo: C:\temp\CompartidoVirtualBox
Y en Virtual Box debemos abirr la configuración de la máquina virtual, ir a la sección de compartidos y poner esta información (o la que cada cual haya querido):

– Arranca la máquina virtual
– Ir a: Devices > Insert Guest Additions CD image…
– Si no se monta de forma automática la imgen de CD usar el comando: sudo mount /dev/cdrom /media/cdrom
– Instalar paquetes adicionales: sudo apt-get install make gcc linux-headers-$(uname -r)
– Instalar Guest Additions: sudo /media/cdrom/VBoxLinuxAdditions.run
IMPORTANTE: Debemos añadir el usuario que va a usar el recurso compartido al grupo vboxsf.
sudo usermod -aG vboxsf $(whoami)
Reinciar, el punto de montaje debe estar disponble.
Crear proyecto Java con maven en CLI
Hoy en día, lo normal es crear nuestros proyectos Java desde nuesto IDE (editor) pero en ocasiones, nos va bien o porqué no tenemos un IDE hacerlo en consola (CLI). Como regla general podemos usar este comando:
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Esto nos genera el proyecto sin preguntar nada. También podemos simplificar el comando:
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart
Que nos preguntará por el groupId, artifactId, etc:
Define value for property 'groupId': com.severoochoa.programacion
Define value for property 'artifactId': tarea3
Define value for property 'version' 1.0-SNAPSHOT: :
Define value for property 'package' com.severoochoa.programacion: :
Confirm properties configuration:
groupId: com.severoochoa.programacion
artifactId: tarea3
version: 1.0-SNAPSHOT
package: com.severoochoa.programacion
Y: : y
Y obtenemos lo mismo que en el primer caso.
GIT Cómo hacer un parche de un commit(s) dado
Introducción
Relacionado: GIT: Cómo hacer un parche con los cambios actuales
El caso en esta entrada puede ser conocido por muchos usurios veteranos de git y por los nóveles que no hayan conocido cómo solucionarlo.
En nuestro trabajo diario, tenemos que compartir uno o varios cambios que están en el histórico de git o en una rama local de trabajo y queremos compartir esos combios ya sea como solución a un problema o para pasarle una tarea a un compañero o lo que sea, ¿cómo lo hacemos?
Añadir origen de nuget por defecto
Problema
Recientemente he tenido que reinstalar mi equipo de trabajo, y comprobando que la nueva instalación funcionaba como la anterior me he encontrado que al recompilar un proyecto hecho con .NET5 no compilaba (le falta encontrar los origenes de Nuget), dando el siguiente mensaje: