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/

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

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

Apache 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 reading

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?

Continue reading

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:

Continue reading

Instalar Oh My Posh y personalizar el prompt del terminal

Introducción

Oh My Posh es un motor para el prompt del terminal de windows, que permite ser personalizado para cualquier shell que tenga la capacidad de ajustar la cadena de solicitud con una función o variable (usaremos powershell).

Es muy útil si programas y usas GIT porqué te muestra información útil, depende del tema que se use, pero si estás en un directorio en un repo git, la rama de trabajo, cuantos commits estás por detras del remote, cuantos ficheros pendietes de commit, si ha habido un error, y más …

El objetivo es tener un prompt (parecido, no esté en concreto necesariamente) como sl siguiente:

Continue reading

Cómo unir commits en git en uno sólo [ACTUALIZADO]

En ocasiones ocurre que necesitamos juntar varios commits the git. Casó típico: en tu trabajo diario con git vas cumpliendo poco a poco mini hitos que te pones, pero a la hora de compartir el trabajo o de enviar los cambios a un repositorio compartido sólo se permite enviar el trabajo en un único commit agrupado.

¿Cómo solucionarlo? La solución se llama hacer un squash de los commits.

Continue reading

Log de mensajes HTTP en Mule 4

Introducción

Mule es ESB (Enterprise Service Bus) Se usa para enviar/recibir mensajes heterogéneos entre diferentes productos/consumidores.

Admite muchos componentes de transporte y servicio como JMS, SOAP, JBI, BPEL, EJB, AS/400, HTTP, JDBC, TCP, UDP, SMTP, FILE, FTP y más.

Como en Internet el idioma padre es HTTP vamos a ver cómo hacer logging de las peticiones y respuestas HTTP que pasan por mule.

Continue reading