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.
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.
En el trabajo usamos un proxy como en muchas grandes empresas. Uno de los diferentes editores que so es Atom (https://atom.io/). Y el problema es para instalar cualquier nueva características como un paquete, tema, etc.
Al acceder al gestor de paquetes (pulsar CTRL + COMA) y buscar un paquete no podremos instalarlo. En ese caso obtendremos el error:
tunneling socket could not be established, cause=connect ETIMEDOUT 192.169.35.2:3000
Solución
Para solucionarlo debemos configurar el gestor de paquetes de atom (APM) y esto sólo se puede hacer desde consola:
apm config set proxy "http://localhost:3128"
apm config set https_proxy proxy "http://localhost:3128"
¿Qué ocurre si instalas un servidor MySQL y no recuerdas al password del usuario root? O mejor aún, ¿y si te descargas una aplicación que preinstala un WAMP o XAMP y no te indica cual es el password de root?
Bueno, es un contratiempo pero no está todo perdido, si trabajamos en un entorno Unix podemos hacer los siguiente:
La primera opción sirve para deshabilitar los permisos sobre las tablas y todos los usuarios pueden acceder a todas las tablas
La segunda acción deshabilita el servidor sobre TCP, de modo que el servidor sólo funciona de forma local (es una forma algo segura de manejar el servidor “a prueba de fallos” evitando que nadie desde la red se encuentre manipulando tablas o bases de datos que no debería tocar.
3. Iniciar el cliente CLI (TUPASWORD es la cadena de contraseña a elegir, además ver que se debe cifrar con PASSWORD() que es la función de cifrado para contraseñas por defecto de MySQL)
$ mysql -uroot
mysql> use mysql;
mysql> update user set passoword=password('TUPASSWORD') where user='root';