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.
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:
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.
Normalmente uso git como herramienta de control de código fuente. Por lo general el escenario que me he encontrado es una única cuenta en mi equipo. Ya que en equipo personal hago mis pruebas con bitbucket y en el trabajo con el servidor GIT que ponga a mi disposición la empresa.
En la actualidad, trabajo con un servidor GIT centralizado pero algunas entidades con las que colaboramos en el trabajo tienen sus propios servidores GIT. Esto plantea un escenario nuevo. Ya que si usas git sobre protocolo HTTP te da igual pero hoy en día por cuestiones de seguridad es muy recomendable SSH y en este caso es donde aparece el “problema”.
No es un problema, claro, pero para poder trabajar contra varios servidores con claves de acceso RSA para SSH diferentes es necesario configurar un poco el equipo. El siguiente ejemplo lo he hecho en Windows 10 con Git Bash pero en un shell de GNU/Linux o macOS sugpongo que irá igual (o muy parecido).
Supongamos que queremos descargar un contenido WEB. Por ejemplo, en la siguiente imagen vemos un caso real de unos XML modelo publicados por la administración pública (pero podría ser una página HTML con sus imágenes, etc.):
Con esto, se crea una carpeta con el nombre del dominio y la estructura de carpetas publicadas en el servidor y todos los documentos referendo los enlaces disponibles desde la ruta indicada.
NOTA: Para poder usar WGET con SSL (https) leer mi post anterior.
Hace unos días, instalé el pluigin subeclipse para integrar SVN en Aptana Studio. Después de probarlo quedé contrariado al detectar que tiene un problema con el sistema de claves de gnome y no hacía más que darme problemas. Decidí seguir usando svn en consola y desinstalarlo. ¿Pero cómo hacerlo definitivo?
$ cd APTANA_INSTALL_DIR/plugins
$ ls |grep org.tigris.subversion
org.tigris.subversion.clientadapter_1.6.12.jar org.tigris.subversion.subclipse.doc_1.3.0.jar org.tigris.subversion.subclipse.tools.usage_1.0.1.jar
org.tigris.subversion.clientadapter.javahl_1.6.15.jar org.tigris.subversion.subclipse.graph_1.0.9.jar org.tigris.subversion.subclipse.ui_1.6.17.jar
org.tigris.subversion.subclipse.core_1.6.17.jar org.tigris.subversion.subclipse.mylyn_3.0.0.jar
$ ls |grep org.tigris.subversion|xargs rm