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
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:
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.
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:
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
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?
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:
Windows tiene una serie de comandos para administrar nuestro equipo: Consola de Administración de Microsoft (MSC, en inglés). A continuación, pongo una lista de estos y qué nos pueden ofrecer.
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:
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.
A veces ocurre que queremos reusar un fichero antiguo (en mi caso una plantilla de un informe) y no queremos que aparezca la fecha de creación de hace 15 años. En Windows 10, podemos solucionarlo con este sencillo comando: