Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Por qué usar nvm para configurar un entorno de desarrollo y ejecución Node.js en Linux Debian

Imago voragine.net
• Por
En Linux Debian, no se pueden instalar paquetes con npm globalmente en el sistema (npm install -g) sin usar sudo. Es una medida de seguridad necesaria que puede provocar problemas de permisos para usuarios sin permisos sudo cuando algún paquete se instala globalmente usando sudo, o que implica tener que instalar cada paquete como dependencia de cada repositorio. Esto puede tener sentido con dependencias del proyecto que se está desarrollando, pero no tanto con paquetes del entorno de desarrollo que se usan en todos los proyectos (linters, revisores de código, typescript...). Esto se soluciona usando nvm que permite crear un entorno Node.js específico para cada usuario del sistema, de manera que los paquetes instalados globalmente son globales para el usuario que los instala. nvm se puede instalar sin usar sudo, así que un usuario no necesita contactar al administrador del sistema.

Cómo filtrar las funciones previous_post_link y next_post_link de WordPress usando un custom field

Imago voragine.net
• Por

En WordPress previous_post_link() y next_post_link() permiten enlazar, en la plantilla de una entrada, la anterior y la siguiente entrada respectivamente. Estas entradas vienen definidas por unos parámetros por omisión que definen una petición a la base de datos que hace la función get_adjacent_post(). Estos parámetros definen que el criterio para seleccionar la entrada anterior y posterior sea la fecha de publicación.

Afortunadamente get_adjacent_post() dispone de tres hooks donde añadir filtros para modificar los parámetros de la petición a la base de datos para modificar las entradas previa y siguiente: get_{$adjacent}_post_join, get_{$adjacent}_post_sort y get_{$adjacent}_post_where. $adjacent puede tomar los valores previous y next.

Escribo a continuación el código necesario para cambiar el criterio para obtener la entrada previa y siguiente en base a un campo (custom field) numérico que haya servido para ordenar ascendentemente las entradas en la plantilla de archivo.

La propiedad scroll-margin de CSS

Imago voragine.net
• Por

La propiedad scroll-margin de CSS es una de esas en las que he pensado desde hace años como una que debería existir. Y no sé cómo no he dado con ella hasta ahora, a pesar de que está disponible desde el lanzamiento de CSS3. Gran descubrimiento, aunque sea tardío.

scroll-margin permite definir el margen de un elemento respecto a los límites relativos del elemento que los contiene. Quién no ha necesitado esto cuando se utilizan anchors y se crea un menú con enlaces que llevan a distintas secciones --distintas alturas en el scroll-- de la página actual.

Crear tipografías para web desde la línea de comandos: generar woff, woff2 y eot a partir ttf

Imago voragine.net
• Por
Existen multitud de conversores de tipografías de escritorio (formatos TTF y OTF) a tipografías web (formatos WOFF, WOFF2, EOT...). Consisten en aplicaciones web a los que se envían las tipografías de escritorio y que devuelven las tipografías web, e incluso la hoja de estilos CSS que permiten usarlas en cualquier página web. ¿Por qué usar entonces la línea de comandos para generar tipografías web? Por dos razones: la primera es la automatización: con la línea de comandos se puede automatizar este proceso. Pero la más importante para mí es que no tengo manera de saber lo que esas aplicaciones web están metiendo en esos archivos que me descargo y que luego subo a los servidores web en los que funcionarán las páginas web que estoy desarrollando. Unas veces porque el código de esas aplicaciones no está disponible para estudiarlo, otras porque aunque lo esté yo no tengo el tiempo de estudiarlo.

Entorno de desarrollo en local para WordPress con Varying Vagrant Vagrants

Imago voragine.net
[actualizado el ] • Por

Varying Vagrant Vagrants (VVV) es una de las maneras recomendadas por la comunidad que desarrolla WordPress para poner en marcha un servidor de desarrollo en local.

VVV es un entorno de desarrollo para WordPress que usa Vagrant, una herramienta pensada para montar entornos de desarrollo. Vagrant usa máquinas virtuales para ello. Al usar Vagrant se puede elegir el sistema de virtualización. VVV recomienda Virtualbox. Vagrant añade al sistema de virtualización, por ejemplo Virtualbox, una capa que facilita la automatización a la hora de crear y gestionar las máquinas virtuales usadas en el entorno de desarrollo.

VVV viene listo para comenzar inmediatamente el desarrollo, equipado con todo lo necesario en un entorno de desarrollo incluyendo herramientas específicas de WordPress como wp-cli.

Instalar composer 2 en Debian Buster

En Debian Buster la versión disponible de composer es la 1.8.4, en el momento de escribir este artículo:

skotperez@debian-buster:~$ sudo apt-cache policy composer
composer:
  Instalados: 1.8.4-1+deb10u1
  Candidato:  1.8.4-1+deb10u1
 Tabla de versión:
 *** 1.8.4-1+deb10u1 500
        500 http://deb.debian.org/debian buster/main amd64 Packages
        500 http://security.debian.org/debian-security buster/updates/main amd64 Packages
        100 /var/lib/dpkg/status

Cada vez más aplicaciones PHP que funcionan por ejemplo con Symfony, necesitan composer versión 2. Aunque composer 2 no está disponible en los repositorios oficiales de Debian se puede instalar fácilmente. En realidad basta con descargarlo y moverlo a una ubicación apropiada:

skotperez@debian-buster:~$ curl -sS https://getcomposer.org/installer | php
skotperez@debian-buster:~$ sudo mv composer.phar /usr/local/bin/composer2

Visto en DeveLike.

Principales comandos para mantener un sistema de certificados Let’s Encrypt

Imago voragine.net
[actualizado el ] • Por

Escribí hace un tiempo sobre Let's Encrypt, la primera organización de certificación que emite certificados gratuitos y de manera automática. Contaba entonces cómo obtener certificados Let's Encrypt. Desde entonces la manera de obtener certificados ha cambiado: ahora es más sencillo obtenerlos, renovarlos, anularlos... Hago un repaso aquí de los comandos necesarios para mantener certificados Let's Encrypt.

Captura de pantalla de https://certbot.eff.org/

Para instalar cerbot, la Electronic Frontier Foundation pone a disposición una herramienta web en la que, eligiendo el sistema operativo y el servidor web usado, devuelve la versión de certbot y las instrucciones precisas para instalarla y su uso básico.

Git: hacer un merge a master sobrescribiendo archivos si es necesario

Imago voragine.net
• Por
Una manera rápida de hacer un merge a la rama master de un repositorio git resolviendo los conflictos automáticamente. Con el siguiente método lo único que hay que decidir es si prevalece la rama que se fusiona o la rama master. Para ello usamos el parámetro -X con el valor ours si se debe dar prioridad a la rama master o theirs si se debe dar prioridad a la rama que se fusiona en master.

Sistema seguro de registro y conexión de usuarios en PHP: password_hash, password_verify, cookie de sesión y el concepto de pepper

Imago voragine.net
• Por

La mayoría de las veces que se necesita un sistema de usuarios, se usa el del CMS o framework que se esté usando para desarrollar. Para las pocas veces que no sea el caso, o que sencillamente se quiera aprender cómo funciona un sistema de registro e inicio de sesión de usuarios a más bajo nivel, aquí algunas pistas de cómo hacerlo de manera segura usando PHP.

En este caso lo voy a hacer usando las funciones password_hash y password_verify.