Bpytop – Un top fácil de entender ¡y lindo!

Todos seguramente conocen la herramienta de monitoreo top, la cual es una gran ayuda cuando tenemos que depurar un problema con algún proceso que consume demasiados recurso en gnu/linux y su hermano mayor htop, el cual mejora bastante la interfaz del primero, haciéndolo más configurable y entendible, sobre todo para los administradores de sistemas que recién comienzan.

Pero encontré un monitor muchísimo más sencillo, configurable y además lindo de ver: bpytop. Su interfaz sencilla es lo que más me impresionó, pero además cuenta con varias configuraciones que ayudan a ver los procesos y uso de recursos “a primera vista” sin tener que estar recordando mucha cantidad de acrónimos como con top.

Captura de pantalla de bpytop

Lo malo de esta herramienta es que no se encuentra en el gestor de paquetes del asesinado por RedHat CentOS 7. De todas forma su instalación es muy sencilla, solo hay que ejecutar los siguientes comandos:

sudo yum install python3-pip -y && sudo pip3 install pip --upgrade && sudo pip install bpytop

Luego solo hay que ejecutarlo usando el comando, obviamente, bpytop

 

F*ck nvidia & F*ck manjaro!

Linux Torvals coursing nVidia

Tal como dijo el Jefe.

En un anuncio oficial de manjaro linux hace unos días, se hizo saber a todos los indeseables que utilizamos una tarjeta de video nVidia vieja como la mía, que nos íbamos a joder porque manjaro no solo no iba a proporcionar los controladores para los kernels mayores al 5.7 ¡sino que los iba a retirar de los repositorios!

Estaba posponiendo la solución para esto lo más posible, no actualizando el kernel (estaba usando el 5.7) pero también, por alguna razón que desconozco, ya éste no estaba soportado y el último habilitado con drivers para mi vieja placa era el 5.4… pero bueno, esto es otro tema. La cosa es que tuve que realizar la instalación manual, cuando para probar, desinstalé los controladores para los kernels anteriores.

Si bien la solución está clara en el anuncio del foro de manjaro, uno siempre busca una forma más sencilla para resolverlo que estar descargando las fuentes directo de los repositorios e instalando todo de forma manual. Pero lamentablemente, no le encontré otra vuelta. La cosa es sencilla y paso a transcribir la solución de manjaro:

sudo pacman -S git base-devel
sudo pacman -S $(mhwd-kernel -li | grep '*' | cut -d ' ' -f5 | awk '{print $0,"-headers"}' | sed s'/ //'g)
git clone https://gitlab.manjaro.org/packages/extra/nvidia-340xx-utils.git
git clone https://gitlab.manjaro.org/packages/multilib/lib32-nvidia-340xx-utils.git
git clone https://github.com/philmmanjaro/nvidia-340xx-dkms.git
cd nvidia-340xx-utils && makepkg -si
cd ../lib32-nvidia-340xx-utils && makepkg -si
cd ../nvidia-340xx-dkms && makepkg -si

Hago un par de puntualizaciones a los comandos anteriores, para aquellos que como yo, se quedaron sin escritorio y solo tienen un gran monitor negro con letras grandes y pixeladas:

  • El paquete base-devel lo vas a tener instalado, seguramente, porque lo has usado al descargar desde AUR con yay.
  • La segunda línea lo que hace es extraer el nombre de los headers del kernel, por ejemplo
    linux510-headers, si ya sabés para qué versión del kernel vas a instalar el driver, no te gastes en copiar a mano la línea y solo hacé sudo pacman -S linux510-headers
  • El resto de las líneas no te las puedo resumir. Lamento.

Después de esto, hacemos un hermoso <reboot y tendremos manjaro nuevamente con entorno gráfico.

Conectarse a una VPN L2TP con IPSec en Linux (manjaro/arch)

Hoy necesitaba conectarme a un servidor remoto al cual necesitaba acceder mediante una VPN usando L2TP con IPSec. De forma predeterminada Network Manager no tiene esta opción disponible cuando queremos agregar una conexión de red, por lo menos en Manjaro Cinnamon.

Luego de googlear bastante encontré la solución completa para hacer que esta conexión funcionara. Espero que esto le ahorre este tiempo a alguien más.

Es necesario instalar un par de paquetes:

yay -S networkmanager-strongswan networkmanager-l2tp

Después de tener estos paquetes instalados, ya podemos configurar la VPN desde la interfaz gráfica de Network Manager, que seguramente se encuentra en la bandeja del sistema (cerca del reloj) con un ícono similar a un enchufe y seleccionamos Network Settings (o Ajustes de red):

 

Luego vamos al signo de + y elegimos la opción Layer 2 Tunneling Protocol (L2TP).

A continuación ingresamos las información de la conexión: le damos un nombre identificatorio a la VPN, colocamos la dirección o gateway, las credenciales (nombre de usuario y la contraseña) y por último, para configurar IPSec presionamos el botón IPSec Settings (o Ajustes IPSec):

Habilitamos la casilla de verificación Enable IPsec tunnel to L2TP host (habilitar tunel IPsec al anfitrión L2TP) e ingresamos la preshared key (o clave previamente compartida).

Listo. Luego, cuando activemos la conexión, se modificará el ícono del Network Manager que pasará a tener un candadito y un tooltip que dirá Connected to the VPN (o Conectado a la VPN).

Actualizar automáticamente Powerlevel10k (como oh-my-zsh)

Quienes usan el excelente framework para la shell zsh Oh-my-zsh, saben que éste se actualiza automáticamente en el período determinado en su archivo de configuración. En mi caso, cada 7 días export UPDATE_ZSH_DAYS=7.

 

Captura de imagen de oh my zsh usando powerlevel10k

Oh my zsh con el tema powerlevel10k

 

El problema es que el tema que utilizo –Powerlevel10K– no se actualiza automáticamente. Para solucionar este inconveniente, agregué un pequeño código que puede servirles también a ustedes. Al final del archivo de configuración ~/.zshrc inserté el siguiente snippet:

 

# Updates p10k automatically
n=$(date '+%j');
if [ expr $n % $UPDATE_ZSH_DAYS -eq 0 ]
then
        git -C ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k pull
fi

 

Cómo hacer un tema hijo de WordPress

Child Theme en WordPress

Voy a describir brevemente y sin demasiada explicación los pasos que se deben seguir para crear un tema hijo de WordPress. ¿Para qué lo hago de forma esquemática? Porque en general me como algún paso al hacerlo y quería crear un ayuda-memoria para tenerlo a mano.

Espero que les sirva y, en caso de que quisieran profundizar en el tema, les recomiendo que miren en YouTube el curso de WordPress desde cero de Daniel Sánchez.

Esquema

Los pasos son:

    1. Abrir el directorio de los temas de WordPress, que se encuentra en una ruta similar a la siguiente: /public_html/wp-content/themes/
    2. Crear un nuevo directorio con el nombre que se nos antoje, por ejemplo: awesome-tree-child
    3. Dentro de este directorio crear los archivos index.php y style.css.
    4. Copiar los comentarios del encabezado del archivo style.cssdel tema padre al mismo archivo del tema hijo.
    5. En dichos comentarios hay que agregar la opción Template: con el nombre del directorio del tema padre y luego de los comentarios también la importación de la URL del tema padre. Un ejemplo de este archivo podría ser el siguiente:
      /*
        Theme Name: awesome-tree-child
        Theme URI: http://themes.mauriciolopez.ml
        Description: Tema hijo personalizado del tema de WordPress Awesome Tree WordPress
        Author: Mauricio López Coria
        Author URI: http://mauriciolopez.ml/
        Version: 1.0
        Template: awesome-tree
        Text Domain: awesome-tree
        Domain Path: /languages
        
        License: GNU General Public License
        License URI: https://www.gnu.org/licenses/gpl-3.0.txt
      
        Tags: two-columns, custom-background, threaded-comments, translation-ready, custom-menu
      */
      
      @import url('../awesome-tree/style.css');
    6. Copiar el archivo index.phpdel tema padre en el mismo archivo del tema hijo.
    7. Opcionalmente, se puede crear también el archivo functions.php para agregar funcionalidad personalizada al tema hijo, pero esto no es imprescindible para que el tema hijo funcione.

Cambiar nombre de archivos recursivamente

Aunque es una tarea sencilla y hay múltiples métodos que se pueden usar, siempre que necesito renombrar de una gran cantidad de archivos tengo que recurrir a San Google para hacerlo. Por esto prefiero dejar este artículo como recordatorio para mi y para algún otro despistado como yo.

En general me pasa con archivos de imagen, como jpg. Las cámaras, celulares y otros generadores de imágenes se empeñan en utilizar mayúsculas para las extensiones de los archivos de fotos y, aunque debe ser un TOC ¡me molesta! Por eso, para hacer cambiar recursivamente todas las extensiones de .JPG a .jpg podemos usar:

for file in *.JPG; do mv "${file}" "${file/.JPG/.jpg}"; done

Del mismo modo, podemos cambiar una parte del nombre que queramos, por ejemplo si hubiésemos hecho una conversión de extensión bmp a jpg con la utilidad convertde ImageMagick con el comando:

find . -name "*.bmp" -type f -exec convert '{}' '{}'.jpg \;

nos habrán quedado archivos con nombres que incluyen ambas extensiones, algo como imagen.bmp.jpg. Para eliminar la cadena .bmp del nombre de todos los archivos afectados podemos ejecutar:

for file in *; do mv "${file}" "${file/.bmp/}"; done

 

Ocultar archivo debug.log en WordPress

Una opción que puede ayudar a visualizar errores o advertencias en el código de WordPress es la del registro de depuración o debug log que le indica a la aplicación generar un log que puede mostrado en las páginas o guardado en un archivo. Para habilitar este registro es necesario incluir en el archivo de configuración de WordPress wp-config.php el siguiente código:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

La primera línea habilita el registro de depuración, la siguiente activa la creación del archivo de registro debug.log que se situará dentro del directorio wp-content, mientras que la tercera opción especifica que estas advertencias no sean mostrados en las páginas del sitio.

El problema es que, de manera predeterminada, este archivo es visible públicamente. Lo que implica que cualquiera podría escribir la dirección http://midominio.com/wp-content/debug.log y visualizar el contenido del archivo exponiendo información sensible de nuestro sitio web, lo que supone un problema de seguridad.

Para evitar este acceso existe una manera muy sencilla: para el caso de que usés Apache como servidor web solo tenés que crear un archivo .htaccess, o agregar al existente, lo siguiente:

# Bloquear acceso a debug.log
<Files "debug.log">
    Order Allow,Deny
    Deny from all
</Files>

Agregar un ecualizador gráfico de sonido en Manjaro

Aunque es algo muy común y que debería incluirse de forma predeterminad

 

a en la instalación de Manjaro Linux, el ecualizador gráfico es un paquete de software que muchas veces da problemas de configuración si no lo instalamos correctamente.

Me ha pasado personalmente de experimentar problemas de sonido como ruidos, dificultad para controlar el volumen o directamente quedarme sin sonido en la computadora al intentar instalar un ecualizador para mejorar el sonido.

 

PulseAudio Equalizer

 

De todas maneras la solución es súmamente sencilla, basta con instalar un paquete que se configura automáticamente y listo, podemos empezar a ajustar las 15 bandas para ecualizar nuestra música preferida.

El paquete en cuestión es el Pulse Audio Equalizer y se instala utilizando pacman o yay de la siguiente manera:

 

yay -S pulseaudio-equalizer-ladspa

Permitir comunicación entre una máquina virtual y el hipervisor con KVM

Entre las distintas opciones de virtualización para un entorno de desarrollo, como Docker, VirtualBox, etc. podemos elegir KVM. Esta excelente herramienta nos permite tener servidores completos corriendo como máquina virtual, emulando completamente un servidor de producción, lo que permite tener un escenario casi idéntico al que tendremos en el momento del deployment.

El problema es que dependiendo la configuración, es posible que no tengamos acceso de red a las VMs (máquinas virtuales) desde el hipervisor, lo que hace las máquinas virtuales totalmente inútiles como entorno de desarrollo . Esto me ha implicado horas de googleo, lectura de documentación y foros y experimentación infructuosa hasta que dí con la solución.

Lo primero que hay que hacer es crear una red aislada con libvirt, a través de un archivo XML con la configuración de la red, como en el siguiente ejemplo.

1.- Crear un archivo /tmp/isolated.xml con el contenido:

<network>
  <name>isolated</name>
  <ip address='192.168.254.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.254.2' end='192.168.254.254' />
    </dhcp>
  </ip>
</network>

Si ya estás usando la red 192.168.254.0/24, podés usar otra.

2.- Definir la red con el comando virsh net-define /tmp/isolated.xml.

3.- Establecer el inicio automático de la red en virsh usando virsh net-autostart isolated.

4.- Iniciar la red virsh net-start isolated.

5.- Editar la configuración de cada VM que use macvtap para su conexión de red y agregar una nueva <interface> en la sección <devices>, parecido a lo siguiente:

<interface type='network'>
  <source network='isolated'/>
  <model type='virtio'/>
</interface>

6.- Apagar y prender las VMs.

Ahora ya se puede “ver” la VM desde el hipervisor sin problemas.

vm-hypervisor-screenshot

 

Fuente: RedHat documentation

Instalar o actualizar ImageMagick en CentOS 7 (remi repo)

En las últimas versiones WordPress presenta una nueva funcionalidad llamada Salud del sitio la cual realiza un chequeo general del sitio, generando un informe con consejos y advertencias para poder mejorar el rendimiento, la escalabilidad y la seguridad del sitio y el servidor. En uno de los sitios el informe aconsejaba instalar el módulo de php imagick (ImageMagick). El servidor de alojamiento de este sitio usa CentOS 7 con php 7.3 para el cual instalé el repositorio de Remi Collet.

Para instalar el paquete php-pecl-imagick para php73 es necesario actualizar también el paquete de ImageMagick ya que el que viene con CentOS es antiguo e incompatible con php 7.3.

(más…)

Alojado por ProNetHosting.uy