Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Entorno de desarrollo para R RStudio y RStudio server en Debian

Imago voragine.net
• Por

RStudio es el entorno de desarrollo más extendido para programar con R. Me cuesta usar un entorno de desarrollo que no sea vim pero parece ser que en el caso de R merece la pena, así que lo he instalado en mi Debian Buster.

He aprovechado para instalar y probar RStudio Server, así que en este pequeño manual lo cuento también, y cómo hacer las configuraciones básicas. RStudio Server permite usar RStudio desde cualquier máquina cliente a través de un navegador.

Redes sociales verticales open source

Imago voragine.net
• Por

Las redes sociales verticales o redes sociales de nicho son aquellas que están limitadas a un contexto temático, geográfico... Suelen ser cerradas, accesibles bajo registro. Academia.edu para académicos, Github para programadores, Doximity para médicos y otros profesionales de la salud en Estados Unidos.

Estamos montando la infraestructura de la Civic Innovation School (CIS), el entorno colaborativo de aprendizaje de Civicwise. Uno de sus espacios será una red social vertical que funcione como lugar de encuentro e intercambio de toda la red en torno a la CIS.

Queremos una solución que sea de código abierto, fácilmente accesible desde dispositivos móviles y que no requiera una inversión de trabajo muy grande para ponerla en marcha o mantenerla. A continuación algunas opciones que barajamos.

pass, el gestor de contraseñas de línea de comandos

Imago voragine.net
• Por

pass es un gestor de contraseñas de línea de comandos. Sigue la filosofía UNIX, toda una cultura y unos valores surgidos alrededor del desarrollo del sistema operativo UNIX: minimalismo, modularidad, facilidad de reutilización del código. En la práctica este tipo de desarrollo produce programas que hacen una sola cosa muy bien, programas que se pueden combinar de la misma manera que se usan las bibliotecas en diferentes entornos de programación, programas que utilizan archivos de texto para guardar la información y configuración. Son valores que Linux ha heredado.

El funcionamiento de pass es simple: guarda cada contraseña en un archivo de texto encriptado bajo una clave GPG. La base de datos de contraseñas es a su vez un repositorio git en el que cada nueva contraseña o modificación de una existente se añade mediante un commit que realiza automáticamente pass.

La estructura de archivos de texto hace que interactuar con pass sea muy sencillo, así que hay multitud de clientes que permiten acceder a la base de datos de contraseñas desde navegadores, editores, entornos de programación...

A continuación explico brevemente cómo instalar y configurar pass en Linux Debian, y cómo instalar la extensión passff para acceder a la base de datos de contraseñas desde Firefox.

Incluir tipos de contenido personalizado (custom post types) en el feed principal de un sitio web WordPress

Por omisión en el feed principal de un sitio que funciona con WordPress se muestran las entradas del tipo de contenido post. Para incluir otros tipos de contenidos se puede usar el siguiente código, añadiéndolo al archivo functions.php:

add_filter( 'pre_get_posts', 'prefix_custom_feed' );
function prefix_modify_feed( $query ) {
        if ( $query->is_feed() )
            $query->set( 'post_type', array( 'post', 'link' ) ); 
        return $query;
}

También se puede obtener un feed combinado modificando los parámetros de la URL del feed, de la siguiente manera:

https://voragine.net/feed?post_type[]=post&post_type[]=link

Cómo limpiar el caché de apt de un sistema Linux

El gestor de paquetes apt guarda una lista de paquetes para no tener que descargarla cada vez. Cuando una instalación Linux llega a una cierta edad el caché de apt puede ocupar varias decenas de gigabytes. apt no limpia el caché automáticamente, así que puede contener en el listaod paquetes obsoletos que ya no se pueden instalar. Se puede comprobar el tamaño del caché de apt con el siguiente comando:

sudo du -sh /var/cache/apt

Si el tamaño excede los 3GB, probablemente el caché de apt contiene paquetes obsoletos. Se puede limpiar el caché con la opción autoclean:

sudo apt-get autoclean

Si se quiere eliminar completamente el caché:

sudo apt-get clean
Contexto

Paginar un listado de entradas en una page template usada como portada en WordPress

Para paginar un loop en una page template usada como portada en WordPress se puede usar el mismo procedimiento que para un loop en cualquier otra plantilla. Lo único que hay que cambiar el el nombre de la variable, que en este caso no se llama paged sino page. Una de estas cosas que te pueden hacer perder medio día hasta que des con ello.

Entonces, para mostrar las entradas de la página actual de un loop paginado dentro de una plantilla de página (page template) en la portada (front page):

$paged = ( get_query_var('page') ) ? get_query_var('page') : 1;
$query = new WP_Query( array( 'paged' => $paged ) );

Todo está documentado en el codex de WordPress.

La infraestructura para la colaboración de Civicwise

Imago voragine.net
• Por

How we work at Civicwise

Formo parte de la red internacional Civicwise, una estructura distribuida en decenas de países. Desde Civicwise desarrollamos proyectos siguiendo unos determinados modos de hacer y metodologías de colaboración para intervenir en el territorio. Varias personas me han preguntado cómo hacemos en Civicwise para organizarnos, comunicarnos y producir de manera colaborativa entre personas que estamos en zonas horarias diferentes, con ritmos vitales diferentes, con niveles de implicación diferentes. Al final del post hay una lista de herramientas pero antes quiero escribir algunas ideas que nos permiten funcionar de la manera que lo hacemos, más allá de las herramientas concretas que usamos.

Cómo solucionar el error ‘File not found’ en WordPress Multisite funcionando con Apache 2.4 y PHP-FPM 5.6

Imago voragine.net
[actualizado el ] • Por Enlace permanente

Las instalaciones de WordPress Multisite que estén configuradas para mostrar los sitios como subdirectorios pueden dar error en un servidor funcionando con Apache 2.4 y PHP-FPM 5.6. Cuando se visita el panel de administración de cualquier sitio que no sea el principal: File not found.

Si se consulta el log de FPM se verán multitud de respuestas 404. Y si se consulta el log de Apache se encontrarán errores de este tipo: Got error 'Primary script unknown'

Para solucionarlo hay que modificar ligeramente la configuración de Apache. La siguiente línea configura la conexión con FPM:

ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/ruta/hasta/el/php5-fpm.socket.sock|fcgi://localhost/ruta/hasta/el/hroot/

Hay que añadir otra regla (antes que la anterior) para cubrir el caso de los sitios secundarios del Multisite:

ProxyPassMatch ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes)/.*\.php(/.*)?)$ unix:/ruta/hasta/el/socket.sock|fcgi://localhost/ruta/hasta/el/hroot/$2

Aunque esta solución funciona sigue arrojando los mismos errores, así que yo prefiero eliminar la configuración de FPM mediante ProxyPassMatch e incluir un handler dentro del entorno Directory. Así:

<Directory "/ruta/hasta/el/hroot">
  # otras configuraciones
   <FilesMatch \.php$>
      SetHandler "proxy:unix:/ruta/hasta/el/socket.sock|fcgi://localhost"
   </FileMarch>
</Directory>