Extraer atributo de una etiqueta XML en lote

Tengo un directorio con ficheros XML, tienen etiquetas del tipo <process id="..." name="..." ....> y necesito extraer todos los valores del atributo name, Con Bash es muy sencillo usando este comando:

grep -oP ']*name="[^"]*"' *.xml | sed -E 's/.*name="([^"]*)".*/\1/'

Así obtenemos una salida con el valor del atributo name en cada linea del shelll

Borrar 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?

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

GIT: Cómo hacer un parche con los cambios actuales

Introducción

El caso por ver en esta entrada puede ser conocido por muchos usurios veteranos de git y por los nóveles que no hayan conocido cómo solucionarlo.

Estamos trabajando en una rama de trabajo, y queremos cambiar a la principal para hacer un pull, pero … no quermos perder o descartar los cambios, ¿qué hacer? Existen soluciones usar git stash o en IntelliJ hacer un shelf, pero cómo dice el título y si quiero almacenar TODOS los cambios que hay en el working tree en un fichero, un parche.

Continue reading