Linux: Ejecutar comandos desde el historial con el operador !

El operador ! en la consola de Linux además de ser el operador lógico de negación también nos permite ejecutar comandos que hayamos llamado previamente desde el historial.

Por un lado podemos hacerlo en base a su número en el historial. Si ejecutas el comando history verás una lista de los comandos ejecutados y su número. Si después ejecutas ! seguido del número ejecutará de nuevo ese comando. Por ejemplo, si quieres usar de nuevo el comando que en el historial tiene el número 1501

!1501

Otra posibilidad es ejectuar los comandos seleccionando en orden inverso de ejecución. Si al comando ! le pasamos un número negativo ejecutará el comando que ejecutamos hace ese número de comandos. Me estoy liando al explicarlo, así que os pongo tres ejemplos. El primero es ejecutar el último comando que ejecutamos previamente:

!-1

¿Y si queremos ejecutar el penúltimo?

!-2

¿Y si queremos ejecutar el sexto por la cola?

!-6

Finalmente tenemos la opción de usar !! para lanzar el último comando que ejecutamos pero modificando parámetros. Imagina que tienes que ejecutar un comando muy largo como root pero te has olvidado de loguearte como tal. Pues podrías hacer lo siguiente y no tendrías que volver a escribir todo el comando:

su -c !!

Configuración de la tarjeta de red en Virtual Box

Una máquina virtual de Virtual Box nos permite configurar hasta 8 tarjetas de red distintas. Desde el entorno gráfico podremos configurar hasta cuatro, necesitando usar línea de comandos para configurar la otra mitad.

Por defecto el hardware virtualizado será una tarjeta AMD PCNet FAST III, aunque también tenemos la opción de cambiarlo por un adaptador de la familia Intel PRO/1000 si fuera necesario por temas de drivers en nuestro sistema operativo invitado. La lista de tarjetas disponibles sería esta:

  • AMD PCNet PCI II (Am79C970A)
  • AMD PCNet FAST III (Am79C973)
  • Intel PRO/1000 MT Desktop (82540EM)
  • Intel PRO/1000 T Server (82543GC)
  • Intel PRO/1000 MT Server (82545EM)
  • Paravirtualized network adapter (virtio-net)

Desde ese panel también podremos cambiar la MAC, lo que nos resultará útil para realizar tests de seguridad o para usar el Team Viewer de forma indefinida sin pagar licencia (me han contado, señoría, yo nunca selojuro…). Basta con pulsar el botón de recargar al lado de la dirección MAC y nos asignará una nueva.

En cuanto al modo de conexión hay seis opciones:

  • No Conectado: Simplemente emula el comportamiento del equipo si la tarjeta de red estuviera presente pero con el cable desconectado.
  • NAT: En modo NAT, Virtual Box emulará un router entre el exterior y el sistema operativo invitado. Este poseerá un servidor DHCP sirviendo hacia el invitado y mapeando el tráfico de la máquina virtual de forma transparente para el usuario. Cada máquina en modo NAT tiene su propio router por lo que estarán en redes aisladas: las máquinas con tarjetas en NAT no se pueden ver entre si.
  • NAT Network: Funciona de forma similar al modo NAT con la diferencia de que Virtual Box en este caso emulará un mismo router para todas la máquinas, lo que implica que podrán verse entre sí como si estuvieran todas en la misma red.
  • Bridged: El modo Briged, o puente, simula que la tarjeta virtual está conectada a la misma red que la tarjeta del equipo anfitrión, por lo que ambas se verán como si fuesen miembros de la misma red física.
  • Red Interna: Este modo nos permite configurar una red aislada de máquinas virtuales, que en principio no tendría salida hacia el exterior. Para poder conectar esta red a internet tendríamos que configurar en algún equipo una segunda tarjeta en modo NAT o Bridged para que disponga de salida a través del anfitrión.
  • Solo Anfitrión: El último modo nos permite configurar una red aislada similar al modo Red Interna pero con la salvedad de que en este modo el equipo anfitrión también formaría parte de la red.

Existe un modo más, definido como Generic Driver que nunca he utilizado. Creo que permite cargar drivers de algunos packs de expansión.

Dedominiopublico: Web con material cultural de dominio público

Una web que ya lleva unos años desarrollando una actividad muy interesante pero que yo no había conocido hasta hace unas semanas es Dedominiopublico.org, un proyecto que se dedica a recopilar materiales culturales para su consumo online que han pasado a ser de dominio público o que son ofrecidos de forma gratuita a través de medios oficiales.

Principalmente la web recopila cine, aunque también tiene secciones de series, música, libros, tebeos o videojuegos. También tiene un pequeño blog donde explican un poco la labor que realizan.

Musiqueando 14 (20191109)

Si en la entrega 13 iba buscando que el postureo normie me llamase “Elitista” en el Twitter esta semana voy a buscar que los metalfrikis me llamen pacazo y los clasicotes del metal me tachen de modernillo. Vamos con el Musiqueando 14 y arrancamos con un tema de Gary Moore, que estoy muy volcado estos días con el Celtic de Glasgow.

Algunos dicen que Baby Huey, cuyo verdadero nombre era James Ramey, es la mayor estrella del soul que nunca llegó a saber que lo era. Su único disco de estudio se publicó de forma póstuma tras su muerte: The Baby Huey Stroy: The Living Legend. El título ya es una despedida en sí. Huey tenía un talento descomunal pero se cuidaba poco, la suma de sus excesos con el alcohol y la heroína junto a un marcado sobrepeso hicieron fallar su corazón con solo 26 años, privándonos de un excepcional registro vocal, de una garganta que era un verdadero huracán. En su único LP, grabado durante 1970 y publicado en febrero de 1971,cuatro meses después de su muerte, realizó una de las mayores obras del soul psicodélico, incluyendo un par de versiones: una psicodélica y estremecedora revisión de A Change It’s Gonna Come del malogrado Sam Cooke y una revisión del mítico California Dreamin’ que popularizarían The Mammas and the Papas, además de un par de temas propios y varias composiciones de Curtis Mayfield, productor del disco y principal valedor de Baby Huey en el mundillo musical, el único loco decidido a apostar por un músico empeñado en autodestruise. El disco tuvo poco éxito, pues no había mucho interés por parte del sello en invertir dinero para promocionar a un músico ya fallecido del que no podría sacar futuros réditos, pero con el paso del tiempo se convirtió en un trabajo de culto que sería redescubierto por diversas generaciones a través de diversos músicos de hip hop y R&B que utilizaron samplers de sus temas.

Un amigo mío abría el otro día en Facebook un debate curioso, coincidiendo con el 39 aniversario de la publicación del Heaven and Hell de Black Sabbath: ¿preferís el Blizzard of Ozz de Ozzy o el Heaven and Hell de Black Sabbath? Había que razonar la respuesta pero llegué a la conclusión de que es imposible hacerlo. Sopesemos: ambos son dos discos de heavy metal melódico y clásico publicados en 1980, ambos cuentan con una buena producción y un buen puñado de temas icónicos. Uno nos presenta a unos Black Sabbath menos oscuros, influenciados por una naciente NWOBHM, más épicos, casi poniendo la primera piedra de lo que derivará en el género epic doom unos años más adelante, con la dupla Iommi/Geezer en plena forma y con el cambio radical que supone incorporar la voz de un Dio en estado de gracia a la banda. El otro nos trae a un Ozzy que también se aleja del sonido oscuro de los Sabbath clásicos pero virando hacia un sonido más americanizado, más hard & heavy, con músicos estadounidenses, con sus líneas de voz más trabajadas y presentando en la guitarra al Randy Rhoads más pirotécnico. Desde otra óptica también podría decirse que aunque ambos son dos discos sobresalientes y excelentes ninguno de ellos es un disco especialmente rompedor, ninguno marcaría un punto de inflexión en el heavy metal que nos permitiera darle un mayor valor histórico que al otro. Así que razonando la respuesta la única respuesta racional es que no hay respuesta racional posible, la elección recae en las tripas y el corazón y para mí ahí no hay duda: cuando tenía 14-15 años el Long Live Rock and Roll de Rainbow y el Heaven and Hell de Black Sabbath eran mi banda sonora, me los sabía de memoria. Por puro sentimentalismo gana el Heaven & Hell.

Volemos ahora a la ciudad italiana de Parma, capital del histórico Ducado de Parma, situada en un bello paraje de la Emilia-Romagna. Abramos un espumoso Lambrusco y sirvamos una copa mientras ponemos el disco debut de AyahuascA, un trabajo que se publicó el pasado día de difuntos. Se trata de un disco conceptual publicado por el sello australiano Salty Dog Records titulado Naad, donde se nos explica qué es Naad: una entidad antropomórfica que representa el aparato auditivo del universo y la capacidad de escuchar nuestras propias emociones. La voz de Domiziana Pritchard nos irá conduciendo por ese viaje de descubrimiento a través de sonidos psicodélicos durante 10 cortes de inspiración sesentera y cabaretera deudora de gente como The Doors.

Hace unos días, el 25 de octubre, los madrileños Grim Comet publicaban su nuevo trabajo: Afterlife, así que lo he celebrado comprándome toda su discografía en Bandcamp. Siguen mostrando una evolución que los aleja del sonido más doom metal de sus inicios y los acerca a sonoridades más rockeras. En este nuevo trabajo abren ya con un riff crudo decorado con toques de slide sureño y bluesero que no puede sino evocar al gran Billy Gibbons de ZZ Top y si bien hay guiños durante todo el LP a los Corrosion of Conformity más rockeros o a los Metallica en su etapa Load/Reload, el disco parece por momentos querer incorporar elementos del hard rock más crudo y de la depresión grunge noventera, con detalles donde parecen lanzar guiños a bandas tan diversas como Soundgarden, Candlebox, Pearl Jam, Bush o hasta Chris Rea. Con todo se trata de un trabajo muy variado en el que se han dado el gustazo de experimentar en muchas direcciones musicales.

Y a Vigo nos vamos para cerrar la entrega de esta semana con Mano de Piedra, que también han publicado largo debut estos días (previamente habían sacado un EP hace como cosa de dos años). Algunos les han catalogado como la resurrección de los míticos Supa Scoopa por la presencia de su guitarrista Mano, pero aunque molaría tener a otros Supa Scoopa no será en este proyecto donde vayas a encontrarlos pues Mano de Piedra tienen un sonido mucho más brutote y metalero. Today’s Ashes navega más por las aguas de un sludge metal  que no hace ascos a tomar prestados elementos del death ‘n roll, el metalcore o del doom. Un disco de metal agresivo y contemporáneo con una gran producción de Iago Alonso que les sitúa como una de las bandas más interesantes que seguir en el cercano 2020.

La instrucción With…End With de Visual Basic

Unas de las cosas más cómodas de la sintaxis de Visual Basic es la instrucción WITH…END WITH que, básicamente, nos permite acceder a los miembros de un objeto sin repetir su nombre constantemente.

La sintaxis básica sería la siguiente:

WITH Objeto
'lo que vayamos a hacer
'con sus miembros
END WITH

Dicho así no se entiende bien, pero con un ejemplo lo vemos claro. Tenemos aquí un objeto Mensaje y sus miembros son los valores que necesitamos para enviar un email:

 With Mensaje
   Set .Configuration = iConf
       .To = "correo@gmail.com"
       .From = "Donnie"
       .Subject = "Ejemplo with"
       .HTMLBody = correoHTML
       .Send
End With

Como podéis ver esta sintaxis nos ahorra escribir la referencia al objeto Mensaje antes de cada uno de sus elementos. Es a su vez cómodo para escribir y para leer el código.

Es posible anidar una sentencia WITH dentro de otra para acceder a un objeto interno, pero esto puede hacer nuestro código más difícil de leer.

With obVentana
    With .Etiqueta
        .Mensaje= "Esto es un aviso."
        .Fondo = Brushes.DarkSeaGreen        
    End With

    .Titulo = "VENTANA DE AVISO"
    .Show()
End With

Expresión regular en PHP para validar todo tipo de urls

Esta es una expresión regular que me he encontrado hoy modificando un antiguo proyecto en PHP y que podemos usar para validar tanto direcciones de email como direcciones url, recurriendo a la función preg_match() de PHP.

/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/

Investigando un poco he dado con el autor, o al menos con quien parece ser la primera fuente en publicar dicha expresión: Matthew O’Riordan. Aquí un link al hilo de StackOverflow donde lo explica.

¿Qué significa que un teléfono o tablet es IP68 o IP69K?

Me preguntaba un amigo el otro día que significaba IP68 porque le habían ofrecido un teléfono Ulefone que en su descripción destacaba esa característica. IP será la abreviatura de Ingress Protection, protección de entrada en castellano y se trata de un estándar internacional para medir y certificar la resistencia de un dispositivo electrónico ante cuerpos extraños. Este estándar es definido y regulado por la normativa IEC 60529 (equivalente a la EN 60529 de la Unión Europea).

El primer número define el nivel de resistencia ante intrusiones o cuerpos sólidos:

  • X: Implica que no hay datos disponibles
  • 0: No hay ningún tipo de protección ante el acceso o el contacto con cuerpos sólidos
  • 1: Protección contra cuerpos mayores de 50 milímetros de diámetro.
  • 2: Protección contra cuerpos mayores de 12.5 milímetros de diámetro y 80mm de longitud. Por ejemplo, un dedo podría penetrar dentro del dispositivo
  • 3: Protección contra cuerpos mayores de un diámetro de 2.5 milímetros. El dispositivo podría ser penetrado por algunas herramientas o cuerpos de más de ese tamaño.
  • 4: Protección contra cuerpos sólidos de más de un milímetro de diámetro. El dispositivo solo podría ser penetrado con algún tipo de hilo o con herramientas de precisión.
  • 5: Protección contra polvo grueso, arena, etc. Puede entrar una cantidad de polvo en el dispositivo pero no suficiente para dañarlo.
  • 6: Dispositivo totalmente estanco al polvo.

El segundo número lo que marcaría es su nivel de estanqueidad ante el agua:

  • 0: Sin protección.
  • 1: Protegido contra la condensación
  • 2: Protección contra gotas de agua que caen con un ángulo de 15º sobre la posición normal del dispositivo, testeado con cuatro ejes.
  • 3: Protección contra gotas de agua que caen con un ángulo de 60º sobre la posición normal del dispositivo, testeado con cuatro ejes y con agua vertida en forma de spray.
  • 4: Protegido contra salpicaduras en cualquier dirección
  • 5: Protegido contra chorros en cualquier dirección.
  • 6: Protegido contra chorros y olas.
  • 7: Protegido contra una inmersión total durante un corto espacio de tiempo.
  • 8: Protegido contra una inmersión total durante un largo espacio de tiempo. Generalmente es testeado de 3 a 1.5 metros de profundidad durante 30 minutos.

¿Y la IP69K?

Pues en este caso iría un paso más allá en cuanto a estanqueidad. Fue regulada originalmente por el estándar alemán DIN 40050-9, que posteriormente sería substituído por la normativa ISO 20653. En el estándar EN 60529 sería IPX9.

Básicamente IP69K testearía la resistencia del dispositivo ante líquidos a alta presión y alta temperatura, con agua a 80 grados, a una presión de entre 80 y 100 bares a una distancia de 10 o 15 centímetros desde cuatro ángulos distintos, aplicando 30 segundos por cada ángulo.

Así que si necesitas un equipo electrónico para trabajar en condiciones duras, de polvo extremo, humedad extrema, arena, etc… buscar un dispositivo que cumpla estos estándares sería una buena idea.